File manager - Edit - /var/www/payraty/helpdesk/public/storage/branding_media/images/uid.zip
Back
PK ! VCX� MaxUlid.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; class MaxUlid extends Ulid { public function __construct() { $this->uid = parent::MAX; } } PK ! �!|FP P UuidV3.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A v3 UUID contains an MD5 hash of another UUID and a name. * * Use Uuid::v3() to compute one. * * @author Grégoire Pineau <lyrixx@lyrixx.info> */ class UuidV3 extends Uuid { protected const TYPE = 3; public function __construct(string $uuid) { parent::__construct($uuid, true); } } PK ! �ajl= = UuidV8.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A v8 UUID has no explicit requirements except embedding its version + variant bits. * * @author Nicolas Grekas <p@tchwork.com> */ class UuidV8 extends Uuid { protected const TYPE = 8; public function __construct(string $uuid) { parent::__construct($uuid, true); } } PK ! ~2�#p p Ulid.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A ULID is lexicographically sortable and contains a 48-bit timestamp and 80-bit of crypto-random entropy. * * @see https://github.com/ulid/spec * * @author Nicolas Grekas <p@tchwork.com> */ class Ulid extends AbstractUid implements TimeBasedUidInterface { protected const NIL = '00000000000000000000000000'; protected const MAX = '7ZZZZZZZZZZZZZZZZZZZZZZZZZ'; private static string $time = ''; private static array $rand = []; public function __construct(?string $ulid = null) { if (null === $ulid) { $this->uid = static::generate(); } elseif (self::NIL === $ulid) { $this->uid = $ulid; } elseif (self::MAX === strtr($ulid, 'z', 'Z')) { $this->uid = $ulid; } else { if (!self::isValid($ulid)) { throw new \InvalidArgumentException(sprintf('Invalid ULID: "%s".', $ulid)); } $this->uid = strtoupper($ulid); } } public static function isValid(string $ulid): bool { if (26 !== \strlen($ulid)) { return false; } if (26 !== strspn($ulid, '0123456789ABCDEFGHJKMNPQRSTVWXYZabcdefghjkmnpqrstvwxyz')) { return false; } return $ulid[0] <= '7'; } public static function fromString(string $ulid): static { if (36 === \strlen($ulid) && preg_match('{^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$}Di', $ulid)) { $ulid = uuid_parse($ulid); } elseif (22 === \strlen($ulid) && 22 === strspn($ulid, BinaryUtil::BASE58[''])) { $ulid = str_pad(BinaryUtil::fromBase($ulid, BinaryUtil::BASE58), 16, "\0", \STR_PAD_LEFT); } if (16 !== \strlen($ulid)) { return match (strtr($ulid, 'z', 'Z')) { self::NIL => new NilUlid(), self::MAX => new MaxUlid(), default => new static($ulid), }; } $ulid = bin2hex($ulid); $ulid = sprintf('%02s%04s%04s%04s%04s%04s%04s', base_convert(substr($ulid, 0, 2), 16, 32), base_convert(substr($ulid, 2, 5), 16, 32), base_convert(substr($ulid, 7, 5), 16, 32), base_convert(substr($ulid, 12, 5), 16, 32), base_convert(substr($ulid, 17, 5), 16, 32), base_convert(substr($ulid, 22, 5), 16, 32), base_convert(substr($ulid, 27, 5), 16, 32) ); if (self::NIL === $ulid) { return new NilUlid(); } if (self::MAX === $ulid = strtr($ulid, 'abcdefghijklmnopqrstuv', 'ABCDEFGHJKMNPQRSTVWXYZ')) { return new MaxUlid(); } $u = new static(self::NIL); $u->uid = $ulid; return $u; } public function toBinary(): string { $ulid = strtr($this->uid, 'ABCDEFGHJKMNPQRSTVWXYZ', 'abcdefghijklmnopqrstuv'); $ulid = sprintf('%02s%05s%05s%05s%05s%05s%05s', base_convert(substr($ulid, 0, 2), 32, 16), base_convert(substr($ulid, 2, 4), 32, 16), base_convert(substr($ulid, 6, 4), 32, 16), base_convert(substr($ulid, 10, 4), 32, 16), base_convert(substr($ulid, 14, 4), 32, 16), base_convert(substr($ulid, 18, 4), 32, 16), base_convert(substr($ulid, 22, 4), 32, 16) ); return hex2bin($ulid); } /** * Returns the identifier as a base32 case insensitive string. * * @see https://tools.ietf.org/html/rfc4648#section-6 * * @example 09EJ0S614A9FXVG9C5537Q9ZE1 (len=26) */ public function toBase32(): string { return $this->uid; } public function getDateTime(): \DateTimeImmutable { $time = strtr(substr($this->uid, 0, 10), 'ABCDEFGHJKMNPQRSTVWXYZ', 'abcdefghijklmnopqrstuv'); if (\PHP_INT_SIZE >= 8) { $time = (string) hexdec(base_convert($time, 32, 16)); } else { $time = sprintf('%02s%05s%05s', base_convert(substr($time, 0, 2), 32, 16), base_convert(substr($time, 2, 4), 32, 16), base_convert(substr($time, 6, 4), 32, 16) ); $time = BinaryUtil::toBase(hex2bin($time), BinaryUtil::BASE10); } if (4 > \strlen($time)) { $time = '000'.$time; } return \DateTimeImmutable::createFromFormat('U.u', substr_replace($time, '.', -3, 0)); } public static function generate(?\DateTimeInterface $time = null): string { if (null === $mtime = $time) { $time = microtime(false); $time = substr($time, 11).substr($time, 2, 3); } elseif (0 > $time = $time->format('Uv')) { throw new \InvalidArgumentException('The timestamp must be positive.'); } if ($time > self::$time || (null !== $mtime && $time !== self::$time)) { randomize: $r = unpack('n*', random_bytes(10)); $r[1] |= ($r[5] <<= 4) & 0xF0000; $r[2] |= ($r[5] <<= 4) & 0xF0000; $r[3] |= ($r[5] <<= 4) & 0xF0000; $r[4] |= ($r[5] <<= 4) & 0xF0000; unset($r[5]); self::$rand = $r; self::$time = $time; } elseif ([1 => 0xFFFFF, 0xFFFFF, 0xFFFFF, 0xFFFFF] === self::$rand) { if (\PHP_INT_SIZE >= 8 || 10 > \strlen($time = self::$time)) { $time = (string) (1 + $time); } elseif ('999999999' === $mtime = substr($time, -9)) { $time = (1 + substr($time, 0, -9)).'000000000'; } else { $time = substr_replace($time, str_pad(++$mtime, 9, '0', \STR_PAD_LEFT), -9); } goto randomize; } else { for ($i = 4; $i > 0 && 0xFFFFF === self::$rand[$i]; --$i) { self::$rand[$i] = 0; } ++self::$rand[$i]; $time = self::$time; } if (\PHP_INT_SIZE >= 8) { $time = base_convert($time, 10, 32); } else { $time = str_pad(bin2hex(BinaryUtil::fromBase($time, BinaryUtil::BASE10)), 12, '0', \STR_PAD_LEFT); $time = sprintf('%s%04s%04s', base_convert(substr($time, 0, 2), 16, 32), base_convert(substr($time, 2, 5), 16, 32), base_convert(substr($time, 7, 5), 16, 32) ); } return strtr(sprintf('%010s%04s%04s%04s%04s', $time, base_convert(self::$rand[1], 10, 32), base_convert(self::$rand[2], 10, 32), base_convert(self::$rand[3], 10, 32), base_convert(self::$rand[4], 10, 32) ), 'abcdefghijklmnopqrstuv', 'ABCDEFGHJKMNPQRSTVWXYZ'); } } PK ! ]!^ UuidV7.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A v7 UUID is lexicographically sortable and contains a 48-bit timestamp and 74 extra unique bits. * * Within the same millisecond, monotonicity is ensured by incrementing the random part by a random increment. * * @author Nicolas Grekas <p@tchwork.com> */ class UuidV7 extends Uuid implements TimeBasedUidInterface { protected const TYPE = 7; private static string $time = ''; private static array $rand = []; private static string $seed; private static array $seedParts; private static int $seedIndex = 0; public function __construct(?string $uuid = null) { if (null === $uuid) { $this->uid = static::generate(); } else { parent::__construct($uuid, true); } } public function getDateTime(): \DateTimeImmutable { $time = substr($this->uid, 0, 8).substr($this->uid, 9, 4); $time = \PHP_INT_SIZE >= 8 ? (string) hexdec($time) : BinaryUtil::toBase(hex2bin($time), BinaryUtil::BASE10); if (4 > \strlen($time)) { $time = '000'.$time; } return \DateTimeImmutable::createFromFormat('U.v', substr_replace($time, '.', -3, 0)); } public static function generate(?\DateTimeInterface $time = null): string { if (null === $mtime = $time) { $time = microtime(false); $time = substr($time, 11).substr($time, 2, 3); } elseif (0 > $time = $time->format('Uv')) { throw new \InvalidArgumentException('The timestamp must be positive.'); } if ($time > self::$time || (null !== $mtime && $time !== self::$time)) { randomize: self::$rand = unpack('n*', isset(self::$seed) ? random_bytes(10) : self::$seed = random_bytes(16)); self::$rand[1] &= 0x03FF; self::$time = $time; } else { // Within the same ms, we increment the rand part by a random 24-bit number. // Instead of getting this number from random_bytes(), which is slow, we get // it by sha512-hashing self::$seed. This produces 64 bytes of entropy, // which we need to split in a list of 24-bit numbers. unpack() first splits // them into 16 x 32-bit numbers; we take the first byte of each of these // numbers to get 5 extra 24-bit numbers. Then, we consume those numbers // one-by-one and run this logic every 21 iterations. // self::$rand holds the random part of the UUID, split into 5 x 16-bit // numbers for x86 portability. We increment this random part by the next // 24-bit number in the self::$seedParts list and decrement self::$seedIndex. if (!self::$seedIndex) { $s = unpack('l*', self::$seed = hash('sha512', self::$seed, true)); $s[] = ($s[1] >> 8 & 0xFF0000) | ($s[2] >> 16 & 0xFF00) | ($s[3] >> 24 & 0xFF); $s[] = ($s[4] >> 8 & 0xFF0000) | ($s[5] >> 16 & 0xFF00) | ($s[6] >> 24 & 0xFF); $s[] = ($s[7] >> 8 & 0xFF0000) | ($s[8] >> 16 & 0xFF00) | ($s[9] >> 24 & 0xFF); $s[] = ($s[10] >> 8 & 0xFF0000) | ($s[11] >> 16 & 0xFF00) | ($s[12] >> 24 & 0xFF); $s[] = ($s[13] >> 8 & 0xFF0000) | ($s[14] >> 16 & 0xFF00) | ($s[15] >> 24 & 0xFF); self::$seedParts = $s; self::$seedIndex = 21; } self::$rand[5] = 0xFFFF & $carry = self::$rand[5] + 1 + (self::$seedParts[self::$seedIndex--] & 0xFFFFFF); self::$rand[4] = 0xFFFF & $carry = self::$rand[4] + ($carry >> 16); self::$rand[3] = 0xFFFF & $carry = self::$rand[3] + ($carry >> 16); self::$rand[2] = 0xFFFF & $carry = self::$rand[2] + ($carry >> 16); self::$rand[1] += $carry >> 16; if (0xFC00 & self::$rand[1]) { if (\PHP_INT_SIZE >= 8 || 10 > \strlen($time = self::$time)) { $time = (string) (1 + $time); } elseif ('999999999' === $mtime = substr($time, -9)) { $time = (1 + substr($time, 0, -9)).'000000000'; } else { $time = substr_replace($time, str_pad(++$mtime, 9, '0', \STR_PAD_LEFT), -9); } goto randomize; } $time = self::$time; } if (\PHP_INT_SIZE >= 8) { $time = dechex($time); } else { $time = bin2hex(BinaryUtil::fromBase($time, BinaryUtil::BASE10)); } return substr_replace(sprintf('%012s-%04x-%04x-%04x%04x%04x', $time, 0x7000 | (self::$rand[1] << 2) | (self::$rand[2] >> 14), 0x8000 | (self::$rand[2] & 0x3FFF), self::$rand[3], self::$rand[4], self::$rand[5], ), '-', 8, 0); } } PK ! �ݔ�P P UuidV5.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A v5 UUID contains a SHA1 hash of another UUID and a name. * * Use Uuid::v5() to compute one. * * @author Grégoire Pineau <lyrixx@lyrixx.info> */ class UuidV5 extends Uuid { protected const TYPE = 5; public function __construct(string $uuid) { parent::__construct($uuid, true); } } PK ! �8� � MaxUuid.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; class MaxUuid extends Uuid { protected const TYPE = -1; public function __construct() { $this->uid = parent::MAX; } } PK ! $���& & UuidV1.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid; /** * A v1 UUID contains a 60-bit timestamp and 62 extra unique bits. * * @author Grégoire Pineau <lyrixx@lyrixx.info> */ class UuidV1 extends Uuid implements TimeBasedUidInterface { protected const TYPE = 1; private static string $clockSeq; public function __construct(?string $uuid = null) { if (null === $uuid) { $this->uid = strtolower(uuid_create(static::TYPE)); } else { parent::__construct($uuid, true); } } public function getDateTime(): \DateTimeImmutable { return BinaryUtil::hexToDateTime('0'.substr($this->uid, 15, 3).substr($this->uid, 9, 4).substr($this->uid, 0, 8)); } public function getNode(): string { return uuid_mac($this->uid); } public static function generate(?\DateTimeInterface $time = null, ?Uuid $node = null): string { $uuid = !$time || !$node ? uuid_create(static::TYPE) : parent::NIL; if ($time) { if ($node) { // use clock_seq from the node $seq = substr($node->uid, 19, 4); } elseif (!$seq = self::$clockSeq ?? '') { // generate a static random clock_seq to prevent any collisions with the real one $seq = substr($uuid, 19, 4); do { self::$clockSeq = sprintf('%04x', random_int(0, 0x3FFF) | 0x8000); } while ($seq === self::$clockSeq); $seq = self::$clockSeq; } $time = BinaryUtil::dateTimeToHex($time); $uuid = substr($time, 8).'-'.substr($time, 4, 4).'-1'.substr($time, 1, 3).'-'.$seq.substr($uuid, 23); } if ($node) { $uuid = substr($uuid, 0, 24).substr($node->uid, 24); } return $uuid; } } PK ! ��϶� � Factory/UlidFactory.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid\Factory; use Symfony\Component\Uid\Ulid; class UlidFactory { public function create(?\DateTimeInterface $time = null): Ulid { return new Ulid(null === $time ? null : Ulid::generate($time)); } } PK ! ���� Factory/TimeBasedUuidFactory.phpnu ȯ�� <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid\Factory; use Symfony\Component\Uid\TimeBasedUidInterface; use Symfony\Component\Uid\Uuid; class TimeBasedUuidFactory { /** * @var class-string<Uuid&TimeBasedUidInterface> */ private string $class; private ?Uuid $node; /** * @param class-string<Uuid&TimeBasedUidInterface> $class */ public function __construct(string $class, ?Uuid $node = null) { $this->class = $class; $this->node = $node; } public function create(?\DateTimeInterface $time = null): Uuid&TimeBasedUidInterface { $class = $this->class; if (null === $time && null === $this->node) { return new $class(); } return new $class($class::generate($time, $this->node)); } } PK ! F"VA A "