diff options
Diffstat (limited to 'srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common')
11 files changed, 0 insertions, 2435 deletions
diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitArray.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitArray.php deleted file mode 100644 index 158384f..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitArray.php +++ /dev/null @@ -1,372 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\InvalidArgumentException; -use SplFixedArray; - -/** - * A simple, fast array of bits. - */ -final class BitArray -{ - /** - * Bits represented as an array of integers. - * - * @var SplFixedArray<int> - */ - private $bits; - - /** - * Size of the bit array in bits. - * - * @var int - */ - private $size; - - /** - * Creates a new bit array with a given size. - */ - public function __construct(int $size = 0) - { - $this->size = $size; - $this->bits = SplFixedArray::fromArray(array_fill(0, ($this->size + 31) >> 3, 0)); - } - - /** - * Gets the size in bits. - */ - public function getSize() : int - { - return $this->size; - } - - /** - * Gets the size in bytes. - */ - public function getSizeInBytes() : int - { - return ($this->size + 7) >> 3; - } - - /** - * Ensures that the array has a minimum capacity. - */ - public function ensureCapacity(int $size) : void - { - if ($size > count($this->bits) << 5) { - $this->bits->setSize(($size + 31) >> 5); - } - } - - /** - * Gets a specific bit. - */ - public function get(int $i) : bool - { - return 0 !== ($this->bits[$i >> 5] & (1 << ($i & 0x1f))); - } - - /** - * Sets a specific bit. - */ - public function set(int $i) : void - { - $this->bits[$i >> 5] = $this->bits[$i >> 5] | 1 << ($i & 0x1f); - } - - /** - * Flips a specific bit. - */ - public function flip(int $i) : void - { - $this->bits[$i >> 5] ^= 1 << ($i & 0x1f); - } - - /** - * Gets the next set bit position from a given position. - */ - public function getNextSet(int $from) : int - { - if ($from >= $this->size) { - return $this->size; - } - - $bitsOffset = $from >> 5; - $currentBits = $this->bits[$bitsOffset]; - $bitsLength = count($this->bits); - $currentBits &= ~((1 << ($from & 0x1f)) - 1); - - while (0 === $currentBits) { - if (++$bitsOffset === $bitsLength) { - return $this->size; - } - - $currentBits = $this->bits[$bitsOffset]; - } - - $result = ($bitsOffset << 5) + BitUtils::numberOfTrailingZeros($currentBits); - return $result > $this->size ? $this->size : $result; - } - - /** - * Gets the next unset bit position from a given position. - */ - public function getNextUnset(int $from) : int - { - if ($from >= $this->size) { - return $this->size; - } - - $bitsOffset = $from >> 5; - $currentBits = ~$this->bits[$bitsOffset]; - $bitsLength = count($this->bits); - $currentBits &= ~((1 << ($from & 0x1f)) - 1); - - while (0 === $currentBits) { - if (++$bitsOffset === $bitsLength) { - return $this->size; - } - - $currentBits = ~$this->bits[$bitsOffset]; - } - - $result = ($bitsOffset << 5) + BitUtils::numberOfTrailingZeros($currentBits); - return $result > $this->size ? $this->size : $result; - } - - /** - * Sets a bulk of bits. - */ - public function setBulk(int $i, int $newBits) : void - { - $this->bits[$i >> 5] = $newBits; - } - - /** - * Sets a range of bits. - * - * @throws InvalidArgumentException if end is smaller than start - */ - public function setRange(int $start, int $end) : void - { - if ($end < $start) { - throw new InvalidArgumentException('End must be greater or equal to start'); - } - - if ($end === $start) { - return; - } - - --$end; - - $firstInt = $start >> 5; - $lastInt = $end >> 5; - - for ($i = $firstInt; $i <= $lastInt; ++$i) { - $firstBit = $i > $firstInt ? 0 : $start & 0x1f; - $lastBit = $i < $lastInt ? 31 : $end & 0x1f; - - if (0 === $firstBit && 31 === $lastBit) { - $mask = 0x7fffffff; - } else { - $mask = 0; - - for ($j = $firstBit; $j < $lastBit; ++$j) { - $mask |= 1 << $j; - } - } - - $this->bits[$i] = $this->bits[$i] | $mask; - } - } - - /** - * Clears the bit array, unsetting every bit. - */ - public function clear() : void - { - $bitsLength = count($this->bits); - - for ($i = 0; $i < $bitsLength; ++$i) { - $this->bits[$i] = 0; - } - } - - /** - * Checks if a range of bits is set or not set. - - * @throws InvalidArgumentException if end is smaller than start - */ - public function isRange(int $start, int $end, bool $value) : bool - { - if ($end < $start) { - throw new InvalidArgumentException('End must be greater or equal to start'); - } - - if ($end === $start) { - return true; - } - - --$end; - - $firstInt = $start >> 5; - $lastInt = $end >> 5; - - for ($i = $firstInt; $i <= $lastInt; ++$i) { - $firstBit = $i > $firstInt ? 0 : $start & 0x1f; - $lastBit = $i < $lastInt ? 31 : $end & 0x1f; - - if (0 === $firstBit && 31 === $lastBit) { - $mask = 0x7fffffff; - } else { - $mask = 0; - - for ($j = $firstBit; $j <= $lastBit; ++$j) { - $mask |= 1 << $j; - } - } - - if (($this->bits[$i] & $mask) !== ($value ? $mask : 0)) { - return false; - } - } - - return true; - } - - /** - * Appends a bit to the array. - */ - public function appendBit(bool $bit) : void - { - $this->ensureCapacity($this->size + 1); - - if ($bit) { - $this->bits[$this->size >> 5] = $this->bits[$this->size >> 5] | (1 << ($this->size & 0x1f)); - } - - ++$this->size; - } - - /** - * Appends a number of bits (up to 32) to the array. - - * @throws InvalidArgumentException if num bits is not between 0 and 32 - */ - public function appendBits(int $value, int $numBits) : void - { - if ($numBits < 0 || $numBits > 32) { - throw new InvalidArgumentException('Num bits must be between 0 and 32'); - } - - $this->ensureCapacity($this->size + $numBits); - - for ($numBitsLeft = $numBits; $numBitsLeft > 0; $numBitsLeft--) { - $this->appendBit((($value >> ($numBitsLeft - 1)) & 0x01) === 1); - } - } - - /** - * Appends another bit array to this array. - */ - public function appendBitArray(self $other) : void - { - $otherSize = $other->getSize(); - $this->ensureCapacity($this->size + $other->getSize()); - - for ($i = 0; $i < $otherSize; ++$i) { - $this->appendBit($other->get($i)); - } - } - - /** - * Makes an exclusive-or comparision on the current bit array. - * - * @throws InvalidArgumentException if sizes don't match - */ - public function xorBits(self $other) : void - { - $bitsLength = count($this->bits); - $otherBits = $other->getBitArray(); - - if ($bitsLength !== count($otherBits)) { - throw new InvalidArgumentException('Sizes don\'t match'); - } - - for ($i = 0; $i < $bitsLength; ++$i) { - $this->bits[$i] = $this->bits[$i] ^ $otherBits[$i]; - } - } - - /** - * Converts the bit array to a byte array. - * - * @return SplFixedArray<int> - */ - public function toBytes(int $bitOffset, int $numBytes) : SplFixedArray - { - $bytes = new SplFixedArray($numBytes); - - for ($i = 0; $i < $numBytes; ++$i) { - $byte = 0; - - for ($j = 0; $j < 8; ++$j) { - if ($this->get($bitOffset)) { - $byte |= 1 << (7 - $j); - } - - ++$bitOffset; - } - - $bytes[$i] = $byte; - } - - return $bytes; - } - - /** - * Gets the internal bit array. - * - * @return SplFixedArray<int> - */ - public function getBitArray() : SplFixedArray - { - return $this->bits; - } - - /** - * Reverses the array. - */ - public function reverse() : void - { - $newBits = new SplFixedArray(count($this->bits)); - - for ($i = 0; $i < $this->size; ++$i) { - if ($this->get($this->size - $i - 1)) { - $newBits[$i >> 5] = $newBits[$i >> 5] | (1 << ($i & 0x1f)); - } - } - - $this->bits = $newBits; - } - - /** - * Returns a string representation of the bit array. - */ - public function __toString() : string - { - $result = ''; - - for ($i = 0; $i < $this->size; ++$i) { - if (0 === ($i & 0x07)) { - $result .= ' '; - } - - $result .= $this->get($i) ? 'X' : '.'; - } - - return $result; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitMatrix.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitMatrix.php deleted file mode 100644 index 10bf8fe..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitMatrix.php +++ /dev/null @@ -1,313 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\InvalidArgumentException; -use SplFixedArray; - -/** - * Bit matrix. - * - * Represents a 2D matrix of bits. In function arguments below, and throughout - * the common module, x is the column position, and y is the row position. The - * ordering is always x, y. The origin is at the top-left. - */ -class BitMatrix -{ - /** - * Width of the bit matrix. - * - * @var int - */ - private $width; - - /** - * Height of the bit matrix. - * - * @var int - */ - private $height; - - /** - * Size in bits of each individual row. - * - * @var int - */ - private $rowSize; - - /** - * Bits representation. - * - * @var SplFixedArray<int> - */ - private $bits; - - /** - * @throws InvalidArgumentException if a dimension is smaller than zero - */ - public function __construct(int $width, int $height = null) - { - if (null === $height) { - $height = $width; - } - - if ($width < 1 || $height < 1) { - throw new InvalidArgumentException('Both dimensions must be greater than zero'); - } - - $this->width = $width; - $this->height = $height; - $this->rowSize = ($width + 31) >> 5; - $this->bits = SplFixedArray::fromArray(array_fill(0, $this->rowSize * $height, 0)); - } - - /** - * Gets the requested bit, where true means black. - */ - public function get(int $x, int $y) : bool - { - $offset = $y * $this->rowSize + ($x >> 5); - return 0 !== (BitUtils::unsignedRightShift($this->bits[$offset], ($x & 0x1f)) & 1); - } - - /** - * Sets the given bit to true. - */ - public function set(int $x, int $y) : void - { - $offset = $y * $this->rowSize + ($x >> 5); - $this->bits[$offset] = $this->bits[$offset] | (1 << ($x & 0x1f)); - } - - /** - * Flips the given bit. - */ - public function flip(int $x, int $y) : void - { - $offset = $y * $this->rowSize + ($x >> 5); - $this->bits[$offset] = $this->bits[$offset] ^ (1 << ($x & 0x1f)); - } - - /** - * Clears all bits (set to false). - */ - public function clear() : void - { - $max = count($this->bits); - - for ($i = 0; $i < $max; ++$i) { - $this->bits[$i] = 0; - } - } - - /** - * Sets a square region of the bit matrix to true. - * - * @throws InvalidArgumentException if left or top are negative - * @throws InvalidArgumentException if width or height are smaller than 1 - * @throws InvalidArgumentException if region does not fit into the matix - */ - public function setRegion(int $left, int $top, int $width, int $height) : void - { - if ($top < 0 || $left < 0) { - throw new InvalidArgumentException('Left and top must be non-negative'); - } - - if ($height < 1 || $width < 1) { - throw new InvalidArgumentException('Width and height must be at least 1'); - } - - $right = $left + $width; - $bottom = $top + $height; - - if ($bottom > $this->height || $right > $this->width) { - throw new InvalidArgumentException('The region must fit inside the matrix'); - } - - for ($y = $top; $y < $bottom; ++$y) { - $offset = $y * $this->rowSize; - - for ($x = $left; $x < $right; ++$x) { - $index = $offset + ($x >> 5); - $this->bits[$index] = $this->bits[$index] | (1 << ($x & 0x1f)); - } - } - } - - /** - * A fast method to retrieve one row of data from the matrix as a BitArray. - */ - public function getRow(int $y, BitArray $row = null) : BitArray - { - if (null === $row || $row->getSize() < $this->width) { - $row = new BitArray($this->width); - } - - $offset = $y * $this->rowSize; - - for ($x = 0; $x < $this->rowSize; ++$x) { - $row->setBulk($x << 5, $this->bits[$offset + $x]); - } - - return $row; - } - - /** - * Sets a row of data from a BitArray. - */ - public function setRow(int $y, BitArray $row) : void - { - $bits = $row->getBitArray(); - - for ($i = 0; $i < $this->rowSize; ++$i) { - $this->bits[$y * $this->rowSize + $i] = $bits[$i]; - } - } - - /** - * This is useful in detecting the enclosing rectangle of a 'pure' barcode. - * - * @return int[]|null - */ - public function getEnclosingRectangle() : ?array - { - $left = $this->width; - $top = $this->height; - $right = -1; - $bottom = -1; - - for ($y = 0; $y < $this->height; ++$y) { - for ($x32 = 0; $x32 < $this->rowSize; ++$x32) { - $bits = $this->bits[$y * $this->rowSize + $x32]; - - if (0 !== $bits) { - if ($y < $top) { - $top = $y; - } - - if ($y > $bottom) { - $bottom = $y; - } - - if ($x32 * 32 < $left) { - $bit = 0; - - while (($bits << (31 - $bit)) === 0) { - $bit++; - } - - if (($x32 * 32 + $bit) < $left) { - $left = $x32 * 32 + $bit; - } - } - } - - if ($x32 * 32 + 31 > $right) { - $bit = 31; - - while (0 === BitUtils::unsignedRightShift($bits, $bit)) { - --$bit; - } - - if (($x32 * 32 + $bit) > $right) { - $right = $x32 * 32 + $bit; - } - } - } - } - - $width = $right - $left; - $height = $bottom - $top; - - if ($width < 0 || $height < 0) { - return null; - } - - return [$left, $top, $width, $height]; - } - - /** - * Gets the most top left set bit. - * - * This is useful in detecting a corner of a 'pure' barcode. - * - * @return int[]|null - */ - public function getTopLeftOnBit() : ?array - { - $bitsOffset = 0; - - while ($bitsOffset < count($this->bits) && 0 === $this->bits[$bitsOffset]) { - ++$bitsOffset; - } - - if (count($this->bits) === $bitsOffset) { - return null; - } - - $x = intdiv($bitsOffset, $this->rowSize); - $y = ($bitsOffset % $this->rowSize) << 5; - - $bits = $this->bits[$bitsOffset]; - $bit = 0; - - while (0 === ($bits << (31 - $bit))) { - ++$bit; - } - - $x += $bit; - - return [$x, $y]; - } - - /** - * Gets the most bottom right set bit. - * - * This is useful in detecting a corner of a 'pure' barcode. - * - * @return int[]|null - */ - public function getBottomRightOnBit() : ?array - { - $bitsOffset = count($this->bits) - 1; - - while ($bitsOffset >= 0 && 0 === $this->bits[$bitsOffset]) { - --$bitsOffset; - } - - if ($bitsOffset < 0) { - return null; - } - - $x = intdiv($bitsOffset, $this->rowSize); - $y = ($bitsOffset % $this->rowSize) << 5; - - $bits = $this->bits[$bitsOffset]; - $bit = 0; - - while (0 === BitUtils::unsignedRightShift($bits, $bit)) { - --$bit; - } - - $x += $bit; - - return [$x, $y]; - } - - /** - * Gets the width of the matrix, - */ - public function getWidth() : int - { - return $this->width; - } - - /** - * Gets the height of the matrix. - */ - public function getHeight() : int - { - return $this->height; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitUtils.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitUtils.php deleted file mode 100644 index 0c575b4..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/BitUtils.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -/** - * General bit utilities. - * - * All utility methods are based on 32-bit integers and also work on 64-bit - * systems. - */ -final class BitUtils -{ - private function __construct() - { - } - - /** - * Performs an unsigned right shift. - * - * This is the same as the unsigned right shift operator ">>>" in other - * languages. - */ - public static function unsignedRightShift(int $a, int $b) : int - { - return ( - $a >= 0 - ? $a >> $b - : (($a & 0x7fffffff) >> $b) | (0x40000000 >> ($b - 1)) - ); - } - - /** - * Gets the number of trailing zeros. - */ - public static function numberOfTrailingZeros(int $i) : int - { - $lastPos = strrpos(str_pad(decbin($i), 32, '0', STR_PAD_LEFT), '1'); - return $lastPos === false ? 32 : 31 - $lastPos; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php deleted file mode 100644 index 6dfff17..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/CharacterSetEci.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\InvalidArgumentException; -use DASPRiD\Enum\AbstractEnum; - -/** - * Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 of ISO 18004. - * - * @method static self CP437() - * @method static self ISO8859_1() - * @method static self ISO8859_2() - * @method static self ISO8859_3() - * @method static self ISO8859_4() - * @method static self ISO8859_5() - * @method static self ISO8859_6() - * @method static self ISO8859_7() - * @method static self ISO8859_8() - * @method static self ISO8859_9() - * @method static self ISO8859_10() - * @method static self ISO8859_11() - * @method static self ISO8859_12() - * @method static self ISO8859_13() - * @method static self ISO8859_14() - * @method static self ISO8859_15() - * @method static self ISO8859_16() - * @method static self SJIS() - * @method static self CP1250() - * @method static self CP1251() - * @method static self CP1252() - * @method static self CP1256() - * @method static self UNICODE_BIG_UNMARKED() - * @method static self UTF8() - * @method static self ASCII() - * @method static self BIG5() - * @method static self GB18030() - * @method static self EUC_KR() - */ -final class CharacterSetEci extends AbstractEnum -{ - protected const CP437 = [[0, 2]]; - protected const ISO8859_1 = [[1, 3], 'ISO-8859-1']; - protected const ISO8859_2 = [[4], 'ISO-8859-2']; - protected const ISO8859_3 = [[5], 'ISO-8859-3']; - protected const ISO8859_4 = [[6], 'ISO-8859-4']; - protected const ISO8859_5 = [[7], 'ISO-8859-5']; - protected const ISO8859_6 = [[8], 'ISO-8859-6']; - protected const ISO8859_7 = [[9], 'ISO-8859-7']; - protected const ISO8859_8 = [[10], 'ISO-8859-8']; - protected const ISO8859_9 = [[11], 'ISO-8859-9']; - protected const ISO8859_10 = [[12], 'ISO-8859-10']; - protected const ISO8859_11 = [[13], 'ISO-8859-11']; - protected const ISO8859_12 = [[14], 'ISO-8859-12']; - protected const ISO8859_13 = [[15], 'ISO-8859-13']; - protected const ISO8859_14 = [[16], 'ISO-8859-14']; - protected const ISO8859_15 = [[17], 'ISO-8859-15']; - protected const ISO8859_16 = [[18], 'ISO-8859-16']; - protected const SJIS = [[20], 'Shift_JIS']; - protected const CP1250 = [[21], 'windows-1250']; - protected const CP1251 = [[22], 'windows-1251']; - protected const CP1252 = [[23], 'windows-1252']; - protected const CP1256 = [[24], 'windows-1256']; - protected const UNICODE_BIG_UNMARKED = [[25], 'UTF-16BE', 'UnicodeBig']; - protected const UTF8 = [[26], 'UTF-8']; - protected const ASCII = [[27, 170], 'US-ASCII']; - protected const BIG5 = [[28]]; - protected const GB18030 = [[29], 'GB2312', 'EUC_CN', 'GBK']; - protected const EUC_KR = [[30], 'EUC-KR']; - - /** - * @var int[] - */ - private $values; - - /** - * @var string[] - */ - private $otherEncodingNames; - - /** - * @var array<int, self>|null - */ - private static $valueToEci; - - /** - * @var array<string, self>|null - */ - private static $nameToEci; - - public function __construct(array $values, string ...$otherEncodingNames) - { - $this->values = $values; - $this->otherEncodingNames = $otherEncodingNames; - } - - /** - * Returns the primary value. - */ - public function getValue() : int - { - return $this->values[0]; - } - - /** - * Gets character set ECI by value. - * - * Returns the representing ECI of a given value, or null if it is legal but unsupported. - * - * @throws InvalidArgumentException if value is not between 0 and 900 - */ - public static function getCharacterSetEciByValue(int $value) : ?self - { - if ($value < 0 || $value >= 900) { - throw new InvalidArgumentException('Value must be between 0 and 900'); - } - - $valueToEci = self::valueToEci(); - - if (! array_key_exists($value, $valueToEci)) { - return null; - } - - return $valueToEci[$value]; - } - - /** - * Returns character set ECI by name. - * - * Returns the representing ECI of a given name, or null if it is legal but unsupported - */ - public static function getCharacterSetEciByName(string $name) : ?self - { - $nameToEci = self::nameToEci(); - $name = strtolower($name); - - if (! array_key_exists($name, $nameToEci)) { - return null; - } - - return $nameToEci[$name]; - } - - private static function valueToEci() : array - { - if (null !== self::$valueToEci) { - return self::$valueToEci; - } - - self::$valueToEci = []; - - foreach (self::values() as $eci) { - foreach ($eci->values as $value) { - self::$valueToEci[$value] = $eci; - } - } - - return self::$valueToEci; - } - - private static function nameToEci() : array - { - if (null !== self::$nameToEci) { - return self::$nameToEci; - } - - self::$nameToEci = []; - - foreach (self::values() as $eci) { - self::$nameToEci[strtolower($eci->name())] = $eci; - - foreach ($eci->otherEncodingNames as $name) { - self::$nameToEci[strtolower($name)] = $eci; - } - } - - return self::$nameToEci; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlock.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlock.php deleted file mode 100644 index a9a1d07..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlock.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -/** - * Encapsulates the parameters for one error-correction block in one symbol version. - * - * This includes the number of data codewords, and the number of times a block with these parameters is used - * consecutively in the QR code version's format. - */ -final class EcBlock -{ - /** - * How many times the block is used. - * - * @var int - */ - private $count; - - /** - * Number of data codewords. - * - * @var int - */ - private $dataCodewords; - - public function __construct(int $count, int $dataCodewords) - { - $this->count = $count; - $this->dataCodewords = $dataCodewords; - } - - /** - * Returns how many times the block is used. - */ - public function getCount() : int - { - return $this->count; - } - - /** - * Returns the number of data codewords. - */ - public function getDataCodewords() : int - { - return $this->dataCodewords; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlocks.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlocks.php deleted file mode 100644 index 172b5f2..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/EcBlocks.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -/** - * Encapsulates a set of error-correction blocks in one symbol version. - * - * Most versions will use blocks of differing sizes within one version, so, this encapsulates the parameters for each - * set of blocks. It also holds the number of error-correction codewords per block since it will be the same across all - * blocks within one version. - */ -final class EcBlocks -{ - /** - * Number of EC codewords per block. - * - * @var int - */ - private $ecCodewordsPerBlock; - - /** - * List of EC blocks. - * - * @var EcBlock[] - */ - private $ecBlocks; - - public function __construct(int $ecCodewordsPerBlock, EcBlock ...$ecBlocks) - { - $this->ecCodewordsPerBlock = $ecCodewordsPerBlock; - $this->ecBlocks = $ecBlocks; - } - - /** - * Returns the number of EC codewords per block. - */ - public function getEcCodewordsPerBlock() : int - { - return $this->ecCodewordsPerBlock; - } - - /** - * Returns the total number of EC block appearances. - */ - public function getNumBlocks() : int - { - $total = 0; - - foreach ($this->ecBlocks as $ecBlock) { - $total += $ecBlock->getCount(); - } - - return $total; - } - - /** - * Returns the total count of EC codewords. - */ - public function getTotalEcCodewords() : int - { - return $this->ecCodewordsPerBlock * $this->getNumBlocks(); - } - - /** - * Returns the EC blocks included in this collection. - * - * @return EcBlock[] - */ - public function getEcBlocks() : array - { - return $this->ecBlocks; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php deleted file mode 100644 index 9bbf440..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ErrorCorrectionLevel.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\OutOfBoundsException; -use DASPRiD\Enum\AbstractEnum; - -/** - * Enum representing the four error correction levels. - * - * @method static self L() ~7% correction - * @method static self M() ~15% correction - * @method static self Q() ~25% correction - * @method static self H() ~30% correction - */ -final class ErrorCorrectionLevel extends AbstractEnum -{ - protected const L = [0x01]; - protected const M = [0x00]; - protected const Q = [0x03]; - protected const H = [0x02]; - - /** - * @var int - */ - private $bits; - - protected function __construct(int $bits) - { - $this->bits = $bits; - } - - /** - * @throws OutOfBoundsException if number of bits is invalid - */ - public static function forBits(int $bits) : self - { - switch ($bits) { - case 0: - return self::M(); - - case 1: - return self::L(); - - case 2: - return self::H(); - - case 3: - return self::Q(); - } - - throw new OutOfBoundsException('Invalid number of bits'); - } - - /** - * Returns the two bits used to encode this error correction level. - */ - public function getBits() : int - { - return $this->bits; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/FormatInformation.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/FormatInformation.php deleted file mode 100644 index 53e3541..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/FormatInformation.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php -/** - * BaconQrCode - * - * @link http://github.com/Bacon/BaconQrCode For the canonical source repository - * @copyright 2013 Ben 'DASPRiD' Scholzen - * @license http://opensource.org/licenses/BSD-2-Clause Simplified BSD License - */ - -namespace BaconQrCode\Common; - -/** - * Encapsulates a QR Code's format information, including the data mask used and error correction level. - */ -class FormatInformation -{ - /** - * Mask for format information. - */ - private const FORMAT_INFO_MASK_QR = 0x5412; - - /** - * Lookup table for decoding format information. - * - * See ISO 18004:2006, Annex C, Table C.1 - */ - private const FORMAT_INFO_DECODE_LOOKUP = [ - [0x5412, 0x00], - [0x5125, 0x01], - [0x5e7c, 0x02], - [0x5b4b, 0x03], - [0x45f9, 0x04], - [0x40ce, 0x05], - [0x4f97, 0x06], - [0x4aa0, 0x07], - [0x77c4, 0x08], - [0x72f3, 0x09], - [0x7daa, 0x0a], - [0x789d, 0x0b], - [0x662f, 0x0c], - [0x6318, 0x0d], - [0x6c41, 0x0e], - [0x6976, 0x0f], - [0x1689, 0x10], - [0x13be, 0x11], - [0x1ce7, 0x12], - [0x19d0, 0x13], - [0x0762, 0x14], - [0x0255, 0x15], - [0x0d0c, 0x16], - [0x083b, 0x17], - [0x355f, 0x18], - [0x3068, 0x19], - [0x3f31, 0x1a], - [0x3a06, 0x1b], - [0x24b4, 0x1c], - [0x2183, 0x1d], - [0x2eda, 0x1e], - [0x2bed, 0x1f], - ]; - - /** - * Offset i holds the number of 1 bits in the binary representation of i. - * - * @var array - */ - private const BITS_SET_IN_HALF_BYTE = [0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]; - - /** - * Error correction level. - * - * @var ErrorCorrectionLevel - */ - private $ecLevel; - - /** - * Data mask. - * - * @var int - */ - private $dataMask; - - protected function __construct(int $formatInfo) - { - $this->ecLevel = ErrorCorrectionLevel::forBits(($formatInfo >> 3) & 0x3); - $this->dataMask = $formatInfo & 0x7; - } - - /** - * Checks how many bits are different between two integers. - */ - public static function numBitsDiffering(int $a, int $b) : int - { - $a ^= $b; - - return ( - self::BITS_SET_IN_HALF_BYTE[$a & 0xf] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 4) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 8) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 12) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 16) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 20) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 24) & 0xf)] - + self::BITS_SET_IN_HALF_BYTE[(BitUtils::unsignedRightShift($a, 28) & 0xf)] - ); - } - - /** - * Decodes format information. - */ - public static function decodeFormatInformation(int $maskedFormatInfo1, int $maskedFormatInfo2) : ?self - { - $formatInfo = self::doDecodeFormatInformation($maskedFormatInfo1, $maskedFormatInfo2); - - if (null !== $formatInfo) { - return $formatInfo; - } - - // Should return null, but, some QR codes apparently do not mask this info. Try again by actually masking the - // pattern first. - return self::doDecodeFormatInformation( - $maskedFormatInfo1 ^ self::FORMAT_INFO_MASK_QR, - $maskedFormatInfo2 ^ self::FORMAT_INFO_MASK_QR - ); - } - - /** - * Internal method for decoding format information. - */ - private static function doDecodeFormatInformation(int $maskedFormatInfo1, int $maskedFormatInfo2) : ?self - { - $bestDifference = PHP_INT_MAX; - $bestFormatInfo = 0; - - foreach (self::FORMAT_INFO_DECODE_LOOKUP as $decodeInfo) { - $targetInfo = $decodeInfo[0]; - - if ($targetInfo === $maskedFormatInfo1 || $targetInfo === $maskedFormatInfo2) { - // Found an exact match - return new self($decodeInfo[1]); - } - - $bitsDifference = self::numBitsDiffering($maskedFormatInfo1, $targetInfo); - - if ($bitsDifference < $bestDifference) { - $bestFormatInfo = $decodeInfo[1]; - $bestDifference = $bitsDifference; - } - - if ($maskedFormatInfo1 !== $maskedFormatInfo2) { - // Also try the other option - $bitsDifference = self::numBitsDiffering($maskedFormatInfo2, $targetInfo); - - if ($bitsDifference < $bestDifference) { - $bestFormatInfo = $decodeInfo[1]; - $bestDifference = $bitsDifference; - } - } - } - - // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits differing means we found a match. - if ($bestDifference <= 3) { - return new self($bestFormatInfo); - } - - return null; - } - - /** - * Returns the error correction level. - */ - public function getErrorCorrectionLevel() : ErrorCorrectionLevel - { - return $this->ecLevel; - } - - /** - * Returns the data mask. - */ - public function getDataMask() : int - { - return $this->dataMask; - } - - /** - * Hashes the code of the EC level. - */ - public function hashCode() : int - { - return ($this->ecLevel->getBits() << 3) | $this->dataMask; - } - - /** - * Verifies if this instance equals another one. - */ - public function equals(self $other) : bool - { - return ( - $this->ecLevel === $other->ecLevel - && $this->dataMask === $other->dataMask - ); - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Mode.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Mode.php deleted file mode 100644 index 51e6c9a..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Mode.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use DASPRiD\Enum\AbstractEnum; - -/** - * Enum representing various modes in which data can be encoded to bits. - * - * @method static self TERMINATOR() - * @method static self NUMERIC() - * @method static self ALPHANUMERIC() - * @method static self STRUCTURED_APPEND() - * @method static self BYTE() - * @method static self ECI() - * @method static self KANJI() - * @method static self FNC1_FIRST_POSITION() - * @method static self FNC1_SECOND_POSITION() - * @method static self HANZI() - */ -final class Mode extends AbstractEnum -{ - protected const TERMINATOR = [[0, 0, 0], 0x00]; - protected const NUMERIC = [[10, 12, 14], 0x01]; - protected const ALPHANUMERIC = [[9, 11, 13], 0x02]; - protected const STRUCTURED_APPEND = [[0, 0, 0], 0x03]; - protected const BYTE = [[8, 16, 16], 0x04]; - protected const ECI = [[0, 0, 0], 0x07]; - protected const KANJI = [[8, 10, 12], 0x08]; - protected const FNC1_FIRST_POSITION = [[0, 0, 0], 0x05]; - protected const FNC1_SECOND_POSITION = [[0, 0, 0], 0x09]; - protected const HANZI = [[8, 10, 12], 0x0d]; - - /** - * @var int[] - */ - private $characterCountBitsForVersions; - - /** - * @var int - */ - private $bits; - - protected function __construct(array $characterCountBitsForVersions, int $bits) - { - $this->characterCountBitsForVersions = $characterCountBitsForVersions; - $this->bits = $bits; - } - - /** - * Returns the number of bits used in a specific QR code version. - */ - public function getCharacterCountBits(Version $version) : int - { - $number = $version->getVersionNumber(); - - if ($number <= 9) { - $offset = 0; - } elseif ($number <= 26) { - $offset = 1; - } else { - $offset = 2; - } - - return $this->characterCountBitsForVersions[$offset]; - } - - /** - * Returns the four bits used to encode this mode. - */ - public function getBits() : int - { - return $this->bits; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php deleted file mode 100644 index a5aad0b..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/ReedSolomonCodec.php +++ /dev/null @@ -1,468 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\InvalidArgumentException; -use BaconQrCode\Exception\RuntimeException; -use SplFixedArray; - -/** - * Reed-Solomon codec for 8-bit characters. - * - * Based on libfec by Phil Karn, KA9Q. - */ -final class ReedSolomonCodec -{ - /** - * Symbol size in bits. - * - * @var int - */ - private $symbolSize; - - /** - * Block size in symbols. - * - * @var int - */ - private $blockSize; - - /** - * First root of RS code generator polynomial, index form. - * - * @var int - */ - private $firstRoot; - - /** - * Primitive element to generate polynomial roots, index form. - * - * @var int - */ - private $primitive; - - /** - * Prim-th root of 1, index form. - * - * @var int - */ - private $iPrimitive; - - /** - * RS code generator polynomial degree (number of roots). - * - * @var int - */ - private $numRoots; - - /** - * Padding bytes at front of shortened block. - * - * @var int - */ - private $padding; - - /** - * Log lookup table. - * - * @var SplFixedArray - */ - private $alphaTo; - - /** - * Anti-Log lookup table. - * - * @var SplFixedArray - */ - private $indexOf; - - /** - * Generator polynomial. - * - * @var SplFixedArray - */ - private $generatorPoly; - - /** - * @throws InvalidArgumentException if symbol size ist not between 0 and 8 - * @throws InvalidArgumentException if first root is invalid - * @throws InvalidArgumentException if num roots is invalid - * @throws InvalidArgumentException if padding is invalid - * @throws RuntimeException if field generator polynomial is not primitive - */ - public function __construct( - int $symbolSize, - int $gfPoly, - int $firstRoot, - int $primitive, - int $numRoots, - int $padding - ) { - if ($symbolSize < 0 || $symbolSize > 8) { - throw new InvalidArgumentException('Symbol size must be between 0 and 8'); - } - - if ($firstRoot < 0 || $firstRoot >= (1 << $symbolSize)) { - throw new InvalidArgumentException('First root must be between 0 and ' . (1 << $symbolSize)); - } - - if ($numRoots < 0 || $numRoots >= (1 << $symbolSize)) { - throw new InvalidArgumentException('Num roots must be between 0 and ' . (1 << $symbolSize)); - } - - if ($padding < 0 || $padding >= ((1 << $symbolSize) - 1 - $numRoots)) { - throw new InvalidArgumentException( - 'Padding must be between 0 and ' . ((1 << $symbolSize) - 1 - $numRoots) - ); - } - - $this->symbolSize = $symbolSize; - $this->blockSize = (1 << $symbolSize) - 1; - $this->padding = $padding; - $this->alphaTo = SplFixedArray::fromArray(array_fill(0, $this->blockSize + 1, 0), false); - $this->indexOf = SplFixedArray::fromArray(array_fill(0, $this->blockSize + 1, 0), false); - - // Generate galous field lookup table - $this->indexOf[0] = $this->blockSize; - $this->alphaTo[$this->blockSize] = 0; - - $sr = 1; - - for ($i = 0; $i < $this->blockSize; ++$i) { - $this->indexOf[$sr] = $i; - $this->alphaTo[$i] = $sr; - - $sr <<= 1; - - if ($sr & (1 << $symbolSize)) { - $sr ^= $gfPoly; - } - - $sr &= $this->blockSize; - } - - if (1 !== $sr) { - throw new RuntimeException('Field generator polynomial is not primitive'); - } - - // Form RS code generator polynomial from its roots - $this->generatorPoly = SplFixedArray::fromArray(array_fill(0, $numRoots + 1, 0), false); - $this->firstRoot = $firstRoot; - $this->primitive = $primitive; - $this->numRoots = $numRoots; - - // Find prim-th root of 1, used in decoding - for ($iPrimitive = 1; ($iPrimitive % $primitive) !== 0; $iPrimitive += $this->blockSize) { - } - - $this->iPrimitive = intdiv($iPrimitive, $primitive); - - $this->generatorPoly[0] = 1; - - for ($i = 0, $root = $firstRoot * $primitive; $i < $numRoots; ++$i, $root += $primitive) { - $this->generatorPoly[$i + 1] = 1; - - for ($j = $i; $j > 0; $j--) { - if ($this->generatorPoly[$j] !== 0) { - $this->generatorPoly[$j] = $this->generatorPoly[$j - 1] ^ $this->alphaTo[ - $this->modNn($this->indexOf[$this->generatorPoly[$j]] + $root) - ]; - } else { - $this->generatorPoly[$j] = $this->generatorPoly[$j - 1]; - } - } - - $this->generatorPoly[$j] = $this->alphaTo[$this->modNn($this->indexOf[$this->generatorPoly[0]] + $root)]; - } - - // Convert generator poly to index form for quicker encoding - for ($i = 0; $i <= $numRoots; ++$i) { - $this->generatorPoly[$i] = $this->indexOf[$this->generatorPoly[$i]]; - } - } - - /** - * Encodes data and writes result back into parity array. - */ - public function encode(SplFixedArray $data, SplFixedArray $parity) : void - { - for ($i = 0; $i < $this->numRoots; ++$i) { - $parity[$i] = 0; - } - - $iterations = $this->blockSize - $this->numRoots - $this->padding; - - for ($i = 0; $i < $iterations; ++$i) { - $feedback = $this->indexOf[$data[$i] ^ $parity[0]]; - - if ($feedback !== $this->blockSize) { - // Feedback term is non-zero - $feedback = $this->modNn($this->blockSize - $this->generatorPoly[$this->numRoots] + $feedback); - - for ($j = 1; $j < $this->numRoots; ++$j) { - $parity[$j] = $parity[$j] ^ $this->alphaTo[ - $this->modNn($feedback + $this->generatorPoly[$this->numRoots - $j]) - ]; - } - } - - for ($j = 0; $j < $this->numRoots - 1; ++$j) { - $parity[$j] = $parity[$j + 1]; - } - - if ($feedback !== $this->blockSize) { - $parity[$this->numRoots - 1] = $this->alphaTo[$this->modNn($feedback + $this->generatorPoly[0])]; - } else { - $parity[$this->numRoots - 1] = 0; - } - } - } - - /** - * Decodes received data. - */ - public function decode(SplFixedArray $data, SplFixedArray $erasures = null) : ?int - { - // This speeds up the initialization a bit. - $numRootsPlusOne = SplFixedArray::fromArray(array_fill(0, $this->numRoots + 1, 0), false); - $numRoots = SplFixedArray::fromArray(array_fill(0, $this->numRoots, 0), false); - - $lambda = clone $numRootsPlusOne; - $b = clone $numRootsPlusOne; - $t = clone $numRootsPlusOne; - $omega = clone $numRootsPlusOne; - $root = clone $numRoots; - $loc = clone $numRoots; - - $numErasures = (null !== $erasures ? count($erasures) : 0); - - // Form the Syndromes; i.e., evaluate data(x) at roots of g(x) - $syndromes = SplFixedArray::fromArray(array_fill(0, $this->numRoots, $data[0]), false); - - for ($i = 1; $i < $this->blockSize - $this->padding; ++$i) { - for ($j = 0; $j < $this->numRoots; ++$j) { - if ($syndromes[$j] === 0) { - $syndromes[$j] = $data[$i]; - } else { - $syndromes[$j] = $data[$i] ^ $this->alphaTo[ - $this->modNn($this->indexOf[$syndromes[$j]] + ($this->firstRoot + $j) * $this->primitive) - ]; - } - } - } - - // Convert syndromes to index form, checking for nonzero conditions - $syndromeError = 0; - - for ($i = 0; $i < $this->numRoots; ++$i) { - $syndromeError |= $syndromes[$i]; - $syndromes[$i] = $this->indexOf[$syndromes[$i]]; - } - - if (! $syndromeError) { - // If syndrome is zero, data[] is a codeword and there are no errors to correct, so return data[] - // unmodified. - return 0; - } - - $lambda[0] = 1; - - if ($numErasures > 0) { - // Init lambda to be the erasure locator polynomial - $lambda[1] = $this->alphaTo[$this->modNn($this->primitive * ($this->blockSize - 1 - $erasures[0]))]; - - for ($i = 1; $i < $numErasures; ++$i) { - $u = $this->modNn($this->primitive * ($this->blockSize - 1 - $erasures[$i])); - - for ($j = $i + 1; $j > 0; --$j) { - $tmp = $this->indexOf[$lambda[$j - 1]]; - - if ($tmp !== $this->blockSize) { - $lambda[$j] = $lambda[$j] ^ $this->alphaTo[$this->modNn($u + $tmp)]; - } - } - } - } - - for ($i = 0; $i <= $this->numRoots; ++$i) { - $b[$i] = $this->indexOf[$lambda[$i]]; - } - - // Begin Berlekamp-Massey algorithm to determine error+erasure locator polynomial - $r = $numErasures; - $el = $numErasures; - - while (++$r <= $this->numRoots) { - // Compute discrepancy at the r-th step in poly form - $discrepancyR = 0; - - for ($i = 0; $i < $r; ++$i) { - if ($lambda[$i] !== 0 && $syndromes[$r - $i - 1] !== $this->blockSize) { - $discrepancyR ^= $this->alphaTo[ - $this->modNn($this->indexOf[$lambda[$i]] + $syndromes[$r - $i - 1]) - ]; - } - } - - $discrepancyR = $this->indexOf[$discrepancyR]; - - if ($discrepancyR === $this->blockSize) { - $tmp = $b->toArray(); - array_unshift($tmp, $this->blockSize); - array_pop($tmp); - $b = SplFixedArray::fromArray($tmp, false); - continue; - } - - $t[0] = $lambda[0]; - - for ($i = 0; $i < $this->numRoots; ++$i) { - if ($b[$i] !== $this->blockSize) { - $t[$i + 1] = $lambda[$i + 1] ^ $this->alphaTo[$this->modNn($discrepancyR + $b[$i])]; - } else { - $t[$i + 1] = $lambda[$i + 1]; - } - } - - if (2 * $el <= $r + $numErasures - 1) { - $el = $r + $numErasures - $el; - - for ($i = 0; $i <= $this->numRoots; ++$i) { - $b[$i] = ( - $lambda[$i] === 0 - ? $this->blockSize - : $this->modNn($this->indexOf[$lambda[$i]] - $discrepancyR + $this->blockSize) - ); - } - } else { - $tmp = $b->toArray(); - array_unshift($tmp, $this->blockSize); - array_pop($tmp); - $b = SplFixedArray::fromArray($tmp, false); - } - - $lambda = clone $t; - } - - // Convert lambda to index form and compute deg(lambda(x)) - $degLambda = 0; - - for ($i = 0; $i <= $this->numRoots; ++$i) { - $lambda[$i] = $this->indexOf[$lambda[$i]]; - - if ($lambda[$i] !== $this->blockSize) { - $degLambda = $i; - } - } - - // Find roots of the error+erasure locator polynomial by Chien search. - $reg = clone $lambda; - $reg[0] = 0; - $count = 0; - $i = 1; - - for ($k = $this->iPrimitive - 1; $i <= $this->blockSize; ++$i, $k = $this->modNn($k + $this->iPrimitive)) { - $q = 1; - - for ($j = $degLambda; $j > 0; $j--) { - if ($reg[$j] !== $this->blockSize) { - $reg[$j] = $this->modNn($reg[$j] + $j); - $q ^= $this->alphaTo[$reg[$j]]; - } - } - - if ($q !== 0) { - // Not a root - continue; - } - - // Store root (index-form) and error location number - $root[$count] = $i; - $loc[$count] = $k; - - if (++$count === $degLambda) { - break; - } - } - - if ($degLambda !== $count) { - // deg(lambda) unequal to number of roots: uncorrectable error detected - return null; - } - - // Compute err+eras evaluate poly omega(x) = s(x)*lambda(x) (modulo x**numRoots). In index form. Also find - // deg(omega). - $degOmega = $degLambda - 1; - - for ($i = 0; $i <= $degOmega; ++$i) { - $tmp = 0; - - for ($j = $i; $j >= 0; --$j) { - if ($syndromes[$i - $j] !== $this->blockSize && $lambda[$j] !== $this->blockSize) { - $tmp ^= $this->alphaTo[$this->modNn($syndromes[$i - $j] + $lambda[$j])]; - } - } - - $omega[$i] = $this->indexOf[$tmp]; - } - - // Compute error values in poly-form. num1 = omega(inv(X(l))), num2 = inv(X(l))**(firstRoot-1) and - // den = lambda_pr(inv(X(l))) all in poly form. - for ($j = $count - 1; $j >= 0; --$j) { - $num1 = 0; - - for ($i = $degOmega; $i >= 0; $i--) { - if ($omega[$i] !== $this->blockSize) { - $num1 ^= $this->alphaTo[$this->modNn($omega[$i] + $i * $root[$j])]; - } - } - - $num2 = $this->alphaTo[$this->modNn($root[$j] * ($this->firstRoot - 1) + $this->blockSize)]; - $den = 0; - - // lambda[i+1] for i even is the formal derivativelambda_pr of lambda[i] - for ($i = min($degLambda, $this->numRoots - 1) & ~1; $i >= 0; $i -= 2) { - if ($lambda[$i + 1] !== $this->blockSize) { - $den ^= $this->alphaTo[$this->modNn($lambda[$i + 1] + $i * $root[$j])]; - } - } - - // Apply error to data - if ($num1 !== 0 && $loc[$j] >= $this->padding) { - $data[$loc[$j] - $this->padding] = $data[$loc[$j] - $this->padding] ^ ( - $this->alphaTo[ - $this->modNn( - $this->indexOf[$num1] + $this->indexOf[$num2] + $this->blockSize - $this->indexOf[$den] - ) - ] - ); - } - } - - if (null !== $erasures) { - if (count($erasures) < $count) { - $erasures->setSize($count); - } - - for ($i = 0; $i < $count; $i++) { - $erasures[$i] = $loc[$i]; - } - } - - return $count; - } - - /** - * Computes $x % GF_SIZE, where GF_SIZE is 2**GF_BITS - 1, without a slow divide. - */ - private function modNn(int $x) : int - { - while ($x >= $this->blockSize) { - $x -= $this->blockSize; - $x = ($x >> $this->symbolSize) + ($x & $this->blockSize); - } - - return $x; - } -} diff --git a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Version.php b/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Version.php deleted file mode 100644 index 917d048..0000000 --- a/srcs/phpmyadmin/vendor/bacon/bacon-qr-code/src/Common/Version.php +++ /dev/null @@ -1,596 +0,0 @@ -<?php -declare(strict_types = 1); - -namespace BaconQrCode\Common; - -use BaconQrCode\Exception\InvalidArgumentException; -use SplFixedArray; - -/** - * Version representation. - */ -final class Version -{ - private const VERSION_DECODE_INFO = [ - 0x07c94, - 0x085bc, - 0x09a99, - 0x0a4d3, - 0x0bbf6, - 0x0c762, - 0x0d847, - 0x0e60d, - 0x0f928, - 0x10b78, - 0x1145d, - 0x12a17, - 0x13532, - 0x149a6, - 0x15683, - 0x168c9, - 0x177ec, - 0x18ec4, - 0x191e1, - 0x1afab, - 0x1b08e, - 0x1cc1a, - 0x1d33f, - 0x1ed75, - 0x1f250, - 0x209d5, - 0x216f0, - 0x228ba, - 0x2379f, - 0x24b0b, - 0x2542e, - 0x26a64, - 0x27541, - 0x28c69, - ]; - - /** - * Version number of this version. - * - * @var int - */ - private $versionNumber; - - /** - * Alignment pattern centers. - * - * @var SplFixedArray - */ - private $alignmentPatternCenters; - - /** - * Error correction blocks. - * - * @var EcBlocks[] - */ - private $ecBlocks; - - /** - * Total number of codewords. - * - * @var int - */ - private $totalCodewords; - - /** - * Cached version instances. - * - * @var array<int, self>|null - */ - private static $versions; - - /** - * @param int[] $alignmentPatternCenters - */ - private function __construct( - int $versionNumber, - array $alignmentPatternCenters, - EcBlocks ...$ecBlocks - ) { - $this->versionNumber = $versionNumber; - $this->alignmentPatternCenters = $alignmentPatternCenters; - $this->ecBlocks = $ecBlocks; - - $totalCodewords = 0; - $ecCodewords = $ecBlocks[0]->getEcCodewordsPerBlock(); - - foreach ($ecBlocks[0]->getEcBlocks() as $ecBlock) { - $totalCodewords += $ecBlock->getCount() * ($ecBlock->getDataCodewords() + $ecCodewords); - } - - $this->totalCodewords = $totalCodewords; - } - - /** - * Returns the version number. - */ - public function getVersionNumber() : int - { - return $this->versionNumber; - } - - /** - * Returns the alignment pattern centers. - * - * @return int[] - */ - public function getAlignmentPatternCenters() : array - { - return $this->alignmentPatternCenters; - } - - /** - * Returns the total number of codewords. - */ - public function getTotalCodewords() : int - { - return $this->totalCodewords; - } - - /** - * Calculates the dimension for the current version. - */ - public function getDimensionForVersion() : int - { - return 17 + 4 * $this->versionNumber; - } - - /** - * Returns the number of EC blocks for a specific EC level. - */ - public function getEcBlocksForLevel(ErrorCorrectionLevel $ecLevel) : EcBlocks - { - return $this->ecBlocks[$ecLevel->ordinal()]; - } - - /** - * Gets a provisional version number for a specific dimension. - * - * @throws InvalidArgumentException if dimension is not 1 mod 4 - */ - public static function getProvisionalVersionForDimension(int $dimension) : self - { - if (1 !== $dimension % 4) { - throw new InvalidArgumentException('Dimension is not 1 mod 4'); - } - - return self::getVersionForNumber(intdiv($dimension - 17, 4)); - } - - /** - * Gets a version instance for a specific version number. - * - * @throws InvalidArgumentException if version number is out of range - */ - public static function getVersionForNumber(int $versionNumber) : self - { - if ($versionNumber < 1 || $versionNumber > 40) { - throw new InvalidArgumentException('Version number must be between 1 and 40'); - } - - return self::versions()[$versionNumber - 1]; - } - - /** - * Decodes version information from an integer and returns the version. - */ - public static function decodeVersionInformation(int $versionBits) : ?self - { - $bestDifference = PHP_INT_MAX; - $bestVersion = 0; - - foreach (self::VERSION_DECODE_INFO as $i => $targetVersion) { - if ($targetVersion === $versionBits) { - return self::getVersionForNumber($i + 7); - } - - $bitsDifference = FormatInformation::numBitsDiffering($versionBits, $targetVersion); - - if ($bitsDifference < $bestDifference) { - $bestVersion = $i + 7; - $bestDifference = $bitsDifference; - } - } - - if ($bestDifference <= 3) { - return self::getVersionForNumber($bestVersion); - } - - return null; - } - - /** - * Builds the function pattern for the current version. - */ - public function buildFunctionPattern() : BitMatrix - { - $dimension = $this->getDimensionForVersion(); - $bitMatrix = new BitMatrix($dimension); - - // Top left finder pattern + separator + format - $bitMatrix->setRegion(0, 0, 9, 9); - // Top right finder pattern + separator + format - $bitMatrix->setRegion($dimension - 8, 0, 8, 9); - // Bottom left finder pattern + separator + format - $bitMatrix->setRegion(0, $dimension - 8, 9, 8); - - // Alignment patterns - $max = count($this->alignmentPatternCenters); - - for ($x = 0; $x < $max; ++$x) { - $i = $this->alignmentPatternCenters[$x] - 2; - - for ($y = 0; $y < $max; ++$y) { - if (($x === 0 && ($y === 0 || $y === $max - 1)) || ($x === $max - 1 && $y === 0)) { - // No alignment patterns near the three finder paterns - continue; - } - - $bitMatrix->setRegion($this->alignmentPatternCenters[$y] - 2, $i, 5, 5); - } - } - - // Vertical timing pattern - $bitMatrix->setRegion(6, 9, 1, $dimension - 17); - // Horizontal timing pattern - $bitMatrix->setRegion(9, 6, $dimension - 17, 1); - - if ($this->versionNumber > 6) { - // Version info, top right - $bitMatrix->setRegion($dimension - 11, 0, 3, 6); - // Version info, bottom left - $bitMatrix->setRegion(0, $dimension - 11, 6, 3); - } - - return $bitMatrix; - } - - /** - * Returns a string representation for the version. - */ - public function __toString() : string - { - return (string) $this->versionNumber; - } - - /** - * Build and cache a specific version. - * - * See ISO 18004:2006 6.5.1 Table 9. - * - * @return array<int, self> - */ - private static function versions() : array - { - if (null !== self::$versions) { - return self::$versions; - } - - return self::$versions = [ - new self( - 1, - [], - new EcBlocks(7, new EcBlock(1, 19)), - new EcBlocks(10, new EcBlock(1, 16)), - new EcBlocks(13, new EcBlock(1, 13)), - new EcBlocks(17, new EcBlock(1, 9)) - ), - new self( - 2, - [6, 18], - new EcBlocks(10, new EcBlock(1, 34)), - new EcBlocks(16, new EcBlock(1, 28)), - new EcBlocks(22, new EcBlock(1, 22)), - new EcBlocks(28, new EcBlock(1, 16)) - ), - new self( - 3, - [6, 22], - new EcBlocks(15, new EcBlock(1, 55)), - new EcBlocks(26, new EcBlock(1, 44)), - new EcBlocks(18, new EcBlock(2, 17)), - new EcBlocks(22, new EcBlock(2, 13)) - ), - new self( - 4, - [6, 26], - new EcBlocks(20, new EcBlock(1, 80)), - new EcBlocks(18, new EcBlock(2, 32)), - new EcBlocks(26, new EcBlock(3, 24)), - new EcBlocks(16, new EcBlock(4, 9)) - ), - new self( - 5, - [6, 30], - new EcBlocks(26, new EcBlock(1, 108)), - new EcBlocks(24, new EcBlock(2, 43)), - new EcBlocks(18, new EcBlock(2, 15), new EcBlock(2, 16)), - new EcBlocks(22, new EcBlock(2, 11), new EcBlock(2, 12)) - ), - new self( - 6, - [6, 34], - new EcBlocks(18, new EcBlock(2, 68)), - new EcBlocks(16, new EcBlock(4, 27)), - new EcBlocks(24, new EcBlock(4, 19)), - new EcBlocks(28, new EcBlock(4, 15)) - ), - new self( - 7, - [6, 22, 38], - new EcBlocks(20, new EcBlock(2, 78)), - new EcBlocks(18, new EcBlock(4, 31)), - new EcBlocks(18, new EcBlock(2, 14), new EcBlock(4, 15)), - new EcBlocks(26, new EcBlock(4, 13), new EcBlock(1, 14)) - ), - new self( - 8, - [6, 24, 42], - new EcBlocks(24, new EcBlock(2, 97)), - new EcBlocks(22, new EcBlock(2, 38), new EcBlock(2, 39)), - new EcBlocks(22, new EcBlock(4, 18), new EcBlock(2, 19)), - new EcBlocks(26, new EcBlock(4, 14), new EcBlock(2, 15)) - ), - new self( - 9, - [6, 26, 46], - new EcBlocks(30, new EcBlock(2, 116)), - new EcBlocks(22, new EcBlock(3, 36), new EcBlock(2, 37)), - new EcBlocks(20, new EcBlock(4, 16), new EcBlock(4, 17)), - new EcBlocks(24, new EcBlock(4, 12), new EcBlock(4, 13)) - ), - new self( - 10, - [6, 28, 50], - new EcBlocks(18, new EcBlock(2, 68), new EcBlock(2, 69)), - new EcBlocks(26, new EcBlock(4, 43), new EcBlock(1, 44)), - new EcBlocks(24, new EcBlock(6, 19), new EcBlock(2, 20)), - new EcBlocks(28, new EcBlock(6, 15), new EcBlock(2, 16)) - ), - new self( - 11, - [6, 30, 54], - new EcBlocks(20, new EcBlock(4, 81)), - new EcBlocks(30, new EcBlock(1, 50), new EcBlock(4, 51)), - new EcBlocks(28, new EcBlock(4, 22), new EcBlock(4, 23)), - new EcBlocks(24, new EcBlock(3, 12), new EcBlock(8, 13)) - ), - new self( - 12, - [6, 32, 58], - new EcBlocks(24, new EcBlock(2, 92), new EcBlock(2, 93)), - new EcBlocks(22, new EcBlock(6, 36), new EcBlock(2, 37)), - new EcBlocks(26, new EcBlock(4, 20), new EcBlock(6, 21)), - new EcBlocks(28, new EcBlock(7, 14), new EcBlock(4, 15)) - ), - new self( - 13, - [6, 34, 62], - new EcBlocks(26, new EcBlock(4, 107)), - new EcBlocks(22, new EcBlock(8, 37), new EcBlock(1, 38)), - new EcBlocks(24, new EcBlock(8, 20), new EcBlock(4, 21)), - new EcBlocks(22, new EcBlock(12, 11), new EcBlock(4, 12)) - ), - new self( - 14, - [6, 26, 46, 66], - new EcBlocks(30, new EcBlock(3, 115), new EcBlock(1, 116)), - new EcBlocks(24, new EcBlock(4, 40), new EcBlock(5, 41)), - new EcBlocks(20, new EcBlock(11, 16), new EcBlock(5, 17)), - new EcBlocks(24, new EcBlock(11, 12), new EcBlock(5, 13)) - ), - new self( - 15, - [6, 26, 48, 70], - new EcBlocks(22, new EcBlock(5, 87), new EcBlock(1, 88)), - new EcBlocks(24, new EcBlock(5, 41), new EcBlock(5, 42)), - new EcBlocks(30, new EcBlock(5, 24), new EcBlock(7, 25)), - new EcBlocks(24, new EcBlock(11, 12), new EcBlock(7, 13)) - ), - new self( - 16, - [6, 26, 50, 74], - new EcBlocks(24, new EcBlock(5, 98), new EcBlock(1, 99)), - new EcBlocks(28, new EcBlock(7, 45), new EcBlock(3, 46)), - new EcBlocks(24, new EcBlock(15, 19), new EcBlock(2, 20)), - new EcBlocks(30, new EcBlock(3, 15), new EcBlock(13, 16)) - ), - new self( - 17, - [6, 30, 54, 78], - new EcBlocks(28, new EcBlock(1, 107), new EcBlock(5, 108)), - new EcBlocks(28, new EcBlock(10, 46), new EcBlock(1, 47)), - new EcBlocks(28, new EcBlock(1, 22), new EcBlock(15, 23)), - new EcBlocks(28, new EcBlock(2, 14), new EcBlock(17, 15)) - ), - new self( - 18, - [6, 30, 56, 82], - new EcBlocks(30, new EcBlock(5, 120), new EcBlock(1, 121)), - new EcBlocks(26, new EcBlock(9, 43), new EcBlock(4, 44)), - new EcBlocks(28, new EcBlock(17, 22), new EcBlock(1, 23)), - new EcBlocks(28, new EcBlock(2, 14), new EcBlock(19, 15)) - ), - new self( - 19, - [6, 30, 58, 86], - new EcBlocks(28, new EcBlock(3, 113), new EcBlock(4, 114)), - new EcBlocks(26, new EcBlock(3, 44), new EcBlock(11, 45)), - new EcBlocks(26, new EcBlock(17, 21), new EcBlock(4, 22)), - new EcBlocks(26, new EcBlock(9, 13), new EcBlock(16, 14)) - ), - new self( - 20, - [6, 34, 62, 90], - new EcBlocks(28, new EcBlock(3, 107), new EcBlock(5, 108)), - new EcBlocks(26, new EcBlock(3, 41), new EcBlock(13, 42)), - new EcBlocks(30, new EcBlock(15, 24), new EcBlock(5, 25)), - new EcBlocks(28, new EcBlock(15, 15), new EcBlock(10, 16)) - ), - new self( - 21, - [6, 28, 50, 72, 94], - new EcBlocks(28, new EcBlock(4, 116), new EcBlock(4, 117)), - new EcBlocks(26, new EcBlock(17, 42)), - new EcBlocks(28, new EcBlock(17, 22), new EcBlock(6, 23)), - new EcBlocks(30, new EcBlock(19, 16), new EcBlock(6, 17)) - ), - new self( - 22, - [6, 26, 50, 74, 98], - new EcBlocks(28, new EcBlock(2, 111), new EcBlock(7, 112)), - new EcBlocks(28, new EcBlock(17, 46)), - new EcBlocks(30, new EcBlock(7, 24), new EcBlock(16, 25)), - new EcBlocks(24, new EcBlock(34, 13)) - ), - new self( - 23, - [6, 30, 54, 78, 102], - new EcBlocks(30, new EcBlock(4, 121), new EcBlock(5, 122)), - new EcBlocks(28, new EcBlock(4, 47), new EcBlock(14, 48)), - new EcBlocks(30, new EcBlock(11, 24), new EcBlock(14, 25)), - new EcBlocks(30, new EcBlock(16, 15), new EcBlock(14, 16)) - ), - new self( - 24, - [6, 28, 54, 80, 106], - new EcBlocks(30, new EcBlock(6, 117), new EcBlock(4, 118)), - new EcBlocks(28, new EcBlock(6, 45), new EcBlock(14, 46)), - new EcBlocks(30, new EcBlock(11, 24), new EcBlock(16, 25)), - new EcBlocks(30, new EcBlock(30, 16), new EcBlock(2, 17)) - ), - new self( - 25, - [6, 32, 58, 84, 110], - new EcBlocks(26, new EcBlock(8, 106), new EcBlock(4, 107)), - new EcBlocks(28, new EcBlock(8, 47), new EcBlock(13, 48)), - new EcBlocks(30, new EcBlock(7, 24), new EcBlock(22, 25)), - new EcBlocks(30, new EcBlock(22, 15), new EcBlock(13, 16)) - ), - new self( - 26, - [6, 30, 58, 86, 114], - new EcBlocks(28, new EcBlock(10, 114), new EcBlock(2, 115)), - new EcBlocks(28, new EcBlock(19, 46), new EcBlock(4, 47)), - new EcBlocks(28, new EcBlock(28, 22), new EcBlock(6, 23)), - new EcBlocks(30, new EcBlock(33, 16), new EcBlock(4, 17)) - ), - new self( - 27, - [6, 34, 62, 90, 118], - new EcBlocks(30, new EcBlock(8, 122), new EcBlock(4, 123)), - new EcBlocks(28, new EcBlock(22, 45), new EcBlock(3, 46)), - new EcBlocks(30, new EcBlock(8, 23), new EcBlock(26, 24)), - new EcBlocks(30, new EcBlock(12, 15), new EcBlock(28, 16)) - ), - new self( - 28, - [6, 26, 50, 74, 98, 122], - new EcBlocks(30, new EcBlock(3, 117), new EcBlock(10, 118)), - new EcBlocks(28, new EcBlock(3, 45), new EcBlock(23, 46)), - new EcBlocks(30, new EcBlock(4, 24), new EcBlock(31, 25)), - new EcBlocks(30, new EcBlock(11, 15), new EcBlock(31, 16)) - ), - new self( - 29, - [6, 30, 54, 78, 102, 126], - new EcBlocks(30, new EcBlock(7, 116), new EcBlock(7, 117)), - new EcBlocks(28, new EcBlock(21, 45), new EcBlock(7, 46)), - new EcBlocks(30, new EcBlock(1, 23), new EcBlock(37, 24)), - new EcBlocks(30, new EcBlock(19, 15), new EcBlock(26, 16)) - ), - new self( - 30, - [6, 26, 52, 78, 104, 130], - new EcBlocks(30, new EcBlock(5, 115), new EcBlock(10, 116)), - new EcBlocks(28, new EcBlock(19, 47), new EcBlock(10, 48)), - new EcBlocks(30, new EcBlock(15, 24), new EcBlock(25, 25)), - new EcBlocks(30, new EcBlock(23, 15), new EcBlock(25, 16)) - ), - new self( - 31, - [6, 30, 56, 82, 108, 134], - new EcBlocks(30, new EcBlock(13, 115), new EcBlock(3, 116)), - new EcBlocks(28, new EcBlock(2, 46), new EcBlock(29, 47)), - new EcBlocks(30, new EcBlock(42, 24), new EcBlock(1, 25)), - new EcBlocks(30, new EcBlock(23, 15), new EcBlock(28, 16)) - ), - new self( - 32, - [6, 34, 60, 86, 112, 138], - new EcBlocks(30, new EcBlock(17, 115)), - new EcBlocks(28, new EcBlock(10, 46), new EcBlock(23, 47)), - new EcBlocks(30, new EcBlock(10, 24), new EcBlock(35, 25)), - new EcBlocks(30, new EcBlock(19, 15), new EcBlock(35, 16)) - ), - new self( - 33, - [6, 30, 58, 86, 114, 142], - new EcBlocks(30, new EcBlock(17, 115), new EcBlock(1, 116)), - new EcBlocks(28, new EcBlock(14, 46), new EcBlock(21, 47)), - new EcBlocks(30, new EcBlock(29, 24), new EcBlock(19, 25)), - new EcBlocks(30, new EcBlock(11, 15), new EcBlock(46, 16)) - ), - new self( - 34, - [6, 34, 62, 90, 118, 146], - new EcBlocks(30, new EcBlock(13, 115), new EcBlock(6, 116)), - new EcBlocks(28, new EcBlock(14, 46), new EcBlock(23, 47)), - new EcBlocks(30, new EcBlock(44, 24), new EcBlock(7, 25)), - new EcBlocks(30, new EcBlock(59, 16), new EcBlock(1, 17)) - ), - new self( - 35, - [6, 30, 54, 78, 102, 126, 150], - new EcBlocks(30, new EcBlock(12, 121), new EcBlock(7, 122)), - new EcBlocks(28, new EcBlock(12, 47), new EcBlock(26, 48)), - new EcBlocks(30, new EcBlock(39, 24), new EcBlock(14, 25)), - new EcBlocks(30, new EcBlock(22, 15), new EcBlock(41, 16)) - ), - new self( - 36, - [6, 24, 50, 76, 102, 128, 154], - new EcBlocks(30, new EcBlock(6, 121), new EcBlock(14, 122)), - new EcBlocks(28, new EcBlock(6, 47), new EcBlock(34, 48)), - new EcBlocks(30, new EcBlock(46, 24), new EcBlock(10, 25)), - new EcBlocks(30, new EcBlock(2, 15), new EcBlock(64, 16)) - ), - new self( - 37, - [6, 28, 54, 80, 106, 132, 158], - new EcBlocks(30, new EcBlock(17, 122), new EcBlock(4, 123)), - new EcBlocks(28, new EcBlock(29, 46), new EcBlock(14, 47)), - new EcBlocks(30, new EcBlock(49, 24), new EcBlock(10, 25)), - new EcBlocks(30, new EcBlock(24, 15), new EcBlock(46, 16)) - ), - new self( - 38, - [6, 32, 58, 84, 110, 136, 162], - new EcBlocks(30, new EcBlock(4, 122), new EcBlock(18, 123)), - new EcBlocks(28, new EcBlock(13, 46), new EcBlock(32, 47)), - new EcBlocks(30, new EcBlock(48, 24), new EcBlock(14, 25)), - new EcBlocks(30, new EcBlock(42, 15), new EcBlock(32, 16)) - ), - new self( - 39, - [6, 26, 54, 82, 110, 138, 166], - new EcBlocks(30, new EcBlock(20, 117), new EcBlock(4, 118)), - new EcBlocks(28, new EcBlock(40, 47), new EcBlock(7, 48)), - new EcBlocks(30, new EcBlock(43, 24), new EcBlock(22, 25)), - new EcBlocks(30, new EcBlock(10, 15), new EcBlock(67, 16)) - ), - new self( - 40, - [6, 30, 58, 86, 114, 142, 170], - new EcBlocks(30, new EcBlock(19, 118), new EcBlock(6, 119)), - new EcBlocks(28, new EcBlock(18, 47), new EcBlock(31, 48)), - new EcBlocks(30, new EcBlock(34, 24), new EcBlock(34, 25)), - new EcBlocks(30, new EcBlock(20, 15), new EcBlock(61, 16)) - ), - ]; - } -} |
