chillerlan/php-qrcode
Generate and read QR codes in PHP. Supports Model 2 QR codes (versions 1–40), ECC levels L/M/Q/H, mixed encoding modes, and multiple output formats. Includes a QR code reader based on a PHP port of ZXing.
Brand logos on QR Codes are a common sight and it's quite simple to produce them, however, there are some pitfalls to avoid in order to properly create branded QR Codes.
Logos are not part of any specification, instead, placing a logo on a QR symbol is merely abusing the error correction capacity and the symbol may become unreadable, especially in environments with chances to receive damage, such as prints (bug reports regarding unreadable logo QR Codes will not be accepted, you have been warned).
As a general rule, the ECC level should be set to H (30%) and a minimum version number of 7 or higher is recommended, even though the data would fit in a much smaller symbol:
$options = new QROptions;
$options->version = Version::AUTO;
$options->versionMin = 7;
$options->eccLevel = EccLevel::H;
For best results, the logo (-space) should not exceed 1/5 of the symbol width and height, excluding the quiet zone. Overwriting the function patterns should be avoided, however, overwriting one of the alignment patterns is almost inevitable (but also not much of an issue).
A logo space might not be necessary if the QR Code is rendered in a raster format via GD or ImageMagick, where a logo and a possibly required space can be added with the respective built-in functions. For vector/markup based formats it can be useful to prevent the rendering of modules in the area where the logo is supposed to be.
The QRMatrix instance offers a method to clear a rectangular space, that can be utilized from the options:
$options->addLogoSpace = true;
// either width or height must be given, if only one dimension is given, the space is assumed square
$options->logoSpaceWidth = 9;
$options->logoSpaceHeight = 9;
// the top left corner of the space, both values are optional
$options->logoSpaceStartX = 10;
$options->logoSpaceStartY = 10;
It's also possible to call QRMatrix::setLogoSpace() from within a custom output class, e.g. to dynamically scale the logo space:
$size = (int)ceil($this->moduleCount * $logoScale);
$this->matrix->setLogoSpace($size, $size);
Further, the QRMatrix instance can be modified from outside too:
$qrcode = new QRCode($options);
// create a matrix instance
$matrix = $qrcode
->addByteSegment('https://www.youtube.com/watch?v=dQw4w9WgXcQ')
->getQRMatrix();
// modify
for($y = $startY; $y < $endY; $y++){
for($x = $startX; $x < $endX; $x++){
$matrix->set($x, $y, false, QRMatrix::M_LOGO);
}
}
// render the QR Code
$out = $qrcode->renderMatrix($matrix);
uNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM2LjA1IDAuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzggMCBoMSB2MSBoLTFaIE0zOSAwIGgxIHYxIGgtMVogTTQwIDAgaDEgdjEgaC0xWiBNNDEgMCBoMSB2MSBoLTFaIE00MiAwIGgxIHYxIGgtMVogTTQzIDAgaDEgdjEgaC0xWiBNNDQgMCBoMSB2MSBoLTFaIE0wIDEgaDEgdjEgaC0xWiBNNiAxIGgxIHYxIGgtMVogTTguMDUgMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE05LjA1IDEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTEuMDUgMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMy4wNSAxLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE1LjA1IDEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTYuMDUgMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMC4wNSAxLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTIxLjA1IDEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjIuMDUgMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMy4wNSAxLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI1LjA1IDEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzEuMDUgMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMy4wNSAxLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM1LjA1IDEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzggMSBoMSB2MSBoLTFaIE00NCAxIGgxIHYxIGgtMVogTTAgMiBoMSB2MSBoLTFaIE0yIDIgaDEgdjEgaC0xWiBNMyAyIGgxIHYxIGgtMVogTTQgMiBoMSB2MSBoLTFaIE02IDIgaDEgdjEgaC0xWiBNOC4wNSAyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTkuMDUgMi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNS4wNSAyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE4LjA1IDIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjAuMDUgMi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMi4wNSAyLjUgYTA
uNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTIzLjA1IDIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjQuMDUgMi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yNS4wNSAyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI4LjA1IDIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjkuMDUgMi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNS4wNSAyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM4IDIgaDEgdjEgaC0xWiBNNDAgMiBoMSB2MSBoLTFaIE00MSAyIGgxIHYxIGgtMVogTTQyIDIgaDEgdjEgaC0xWiBNNDQgMiBoMSB2MSBoLTFaIE0wIDMgaDEgdjEgaC0xWiBNMiAzIGgxIHYxIGgtMVogTTMgMyBoMSB2MSBoLTFaIE00IDMgaDEgdjEgaC0xWiBNNiAzIGgxIHYxIGgtMVogTTEwLjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTEuMDUgMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMy4wNSAzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE0LjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTkuMDUgMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMS4wNSAzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTIzLjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjQuMDUgMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yNi4wNSAzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI3LjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjguMDUgMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSAzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMxLjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzIuMDUgMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNS4wNSAzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM2LjA1IDMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDA
gLTAuOSAwWiBNMzggMyBoMSB2MSBoLTFaIE00MCAzIGgxIHYxIGgtMVogTTQxIDMgaDEgdjEgaC0xWiBNNDIgMyBoMSB2MSBoLTFaIE00NCAzIGgxIHYxIGgtMVogTTAgNCBoMSB2MSBoLTFaIE0yIDQgaDEgdjEgaC0xWiBNMyA0IGgxIHYxIGgtMVogTTQgNCBoMSB2MSBoLTFaIE02IDQgaDEgdjEgaC0xWg0KTTkuMDUgNC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMC4wNSA0LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEyLjA1IDQuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTUuMDUgNC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xOC4wNSA0LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE5LjA1IDQuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjAgNCBoMSB2MSBoLTFaIE0yMSA0IGgxIHYxIGgtMVogTTIyIDQgaDEgdjEgaC0xWiBNMjMgNCBoMSB2MSBoLTFaIE0yNCA0IGgxIHYxIGgtMVogTTI1LjA1IDQuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjcuMDUgNC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSA0LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMwLjA1IDQuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzIuMDUgNC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMy4wNSA0LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM0LjA1IDQuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzUuMDUgNC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNi4wNSA0LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM4IDQgaDEgdjEgaC0xWiBNNDAgNCBoMSB2MSBoLTFaIE00MSA0IGgxIHYxIGgtMVogTTQyIDQgaDEgdjEgaC0xWiBNNDQgNCBoMSB2MSBoLTFaIE0wIDUgaDEgdjEgaC0xWiBNNiA1IGgxIHYxIGgtMVogTTguMDUgNS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMS4wNSA1LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEyLjA1IDUuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTYuMDUgNS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNy4
wNSA1LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE4LjA1IDUuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTkuMDUgNS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMCA1IGgxIHYxIGgtMVogTTI0IDUgaDEgdjEgaC0xWiBNMjYuMDUgNS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSA1LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMxLjA1IDUuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzIuMDUgNS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMy4wNSA1LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM4IDUgaDEgdjEgaC0xWiBNNDQgNSBoMSB2MSBoLTFaIE0wIDYgaDEgdjEgaC0xWiBNMSA2IGgxIHYxIGgtMVogTTIgNiBoMSB2MSBoLTFaIE0zIDYgaDEgdjEgaC0xWiBNNCA2IGgxIHYxIGgtMVogTTUgNiBoMSB2MSBoLTFaIE02IDYgaDEgdjEgaC0xWiBNOC4wNSA2LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEwLjA1IDYuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTIuMDUgNi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNC4wNSA2LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE2LjA1IDYuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTguMDUgNi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMCA2IGgxIHYxIGgtMVogTTIyIDYgaDEgdjEgaC0xWiBNMjQgNiBoMSB2MSBoLTFaIE0yNi4wNSA2LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI4LjA1IDYuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzAuMDUgNi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMi4wNSA2LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM0LjA1IDYuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzYuMDUgNi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zOCA2IGgxIHYxIGgtMVogTTM5IDYgaDEgdjEgaC0xWiBNNDAgNiBoMSB2MSBoLTFaIE00MSA2IGgxIHYxIGgtMVogTTQyIDYgaDEgdjEgaC0xWiBNNDMgNiBoMSB
2MSBoLTFaIE00NCA2IGgxIHYxIGgtMVogTTguMDUgNy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE05LjA1IDcuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTEuMDUgNy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMi4wNSA3LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEzLjA1IDcuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjAgNyBoMSB2MSBoLTFaIE0yNCA3IGgxIHYxIGgtMVogTTI2LjA1IDcuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjcuMDUgNy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSA3LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMwLjA1IDcuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzEuMDUgNy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNC4wNSA3LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM1LjA1IDcuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMi4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMuMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00LjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNi4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTguMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMC4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEyLjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTMuMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNS4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE3LjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjAgOCBoMSB2MSBoLTFaIE0yMSA4IGgxIHYxIGgtMVogTTIyIDggaDEgdjEgaC0xWiBNMjMgOCBoMSB2MSBoLTFaDQpNMjQgOCBoMSB2MSBoLTFaIE0yNS4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI3LjA
1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjguMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM0LjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzUuMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNi4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTM3LjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzguMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zOS4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTQyLjA1IDguNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNDMuMDUgOC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00NC4wNSA4LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE03LjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNOS4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTExLjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTIuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMy4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTE0LjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTkuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMS4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTIyLjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjYuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yNy4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTI4LjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzAuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDA
gYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMS4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTMzLjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzYuMDUgOS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00MS4wNSA5LjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTQ0LjA1IDkuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMy4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE01LjA1IDEwLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTYuMDUgMTAuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNOC4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMy4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNS4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNi4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xOC4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMC4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMy4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yNS4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yNi4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOC4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMy4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNC4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNS4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNi4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNy4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zOS4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC4
0NSAwIDEgMCAtMC45IDBaIE00My4wNSAxMC41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xLjA1IDExLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTIuMDUgMTEuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNC4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMC4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xMy4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0xNy4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yMy4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yOS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zMi4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNC4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zNi4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00MS4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00My4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE00NC4wNSAxMS41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0zLjA1IDEyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTQuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNS4wNSAxMi41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE02LjA1IDEyLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTkuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMTUuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDA
gLTAuOSAwWiBNMTcuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjMuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMjQuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzEuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzMuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMzQuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNDIuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNDMuMDUgMTIuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNMC4wNSAxMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE0yLjA1IDEzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTQuMDUgMTMuNSBhMC40NSAwLjQ1IDAgMSAwIDAuOSAwIGEwLjQ1IDAuNDUgMCAxIDAgLTAuOSAwWiBNNy4wNSAxMy41IGEwLjQ1IDAuNDUgMCAxIDAgMC45IDAgYTAuNDUgMC40NSAwIDEgMCAtMC45IDBaIE04LjA1IDEzLjUgYTAuNDUgMC40NSAwIDEgMCAwLjkgMCBhMC40NSAwLjQ1IDAgMSAwIC0wLjkgMFogTTEwLjA1IDEzLjUgYTAuNDUgMC40NSA...
How can I help you explore Laravel packages today?