nB1j Lgc{K^XԱ5=!![SNGgOF|F/d{+D7Š;@]Z3a/ٱ6 +](*B]YtzҟG҆mZ"lٿP2 l-=,B#dI F5R'bx3 õɿ掊vmG0 i i~jh5CrwU7bTyYHT tnP'@Sb>{;Lhd3CLdE+dWjSʪ{+D'.*$1>yzW4]y H^(70?M3F&nJ bPSQAD8 v`t|)픵COUdX +DUsݾ4 ۠%zפySb@[ gp}rRC[$Bm6+ ۸q&^?P'N-s))|%d*D!(d\ɻ`}ެ|xN=QUmleLPo  x/{~Oz>agjD]_:ny _4vX:ޜO8<34ǀ!lw +kk`>)~X~^!I;|@rTXd4AʷM?,TyN&š1[ا5z=l{26=jП{ό# :NDmERbf. !Κ! ~Rk Ovǰ^bG'^_#+sMT/#OW +Պ|Rsf5qSRa nN75А\.lB}=Npf{f:;mE1./tf(/VYWKt[J#S tY{cu[8UV%,z;źnTķQpjQԏ#Mƫ5:x-^n|,wӎЅɓeE,^_yr4摌GJɽ{HBaNu]x k޾A_ Y7PY{UX~JlI"~d%7N2e֐,0 i貂Lz +a4JI(;.0:¹H2'X]skVj{zR^gI|Cd#Ze?"@8+ ]vEP/$U?9a]VQ/+yx~{zN V?&/>jAǤ2T@1-Ƒ{G,[L4 דIG%N!2H .Cy)EWU;GۿjZ'5Lg;C F_|;llĦ[CNO86Bbc˳ =RV@?h\$P nSeV?9̋e K|=³ۛ?%sSpd)42+]u1ẗ́dG Q1XX2-@wLF$ +^|%@6?Oy;8 X"r"K;FO=so\l&QP|]RPZ;]\rSe ydr9X{iW,P+*|?hZp8JA$}:YsA %$fC&pkBN9x#JP+$^%|{`MmѺ ;SZgYM5SάM+JV!;!y=^h0$B6}o= K]m,4rvT%|Kn ï,11 P(sp:Y,u" jJ5l pr}&@5qp }Ro2o􍘆Z h\ȷpDe!qs=SPh0$B6}o= K]m,4rvT%|Kn ïFx@C1E6JőFQ,u" jJ5l pr}&@5qp }Ro2o􍘆Z h\ȷ1'Za~රh0$B6}o= K]m,4rvT%|Kn ï?ex.9q-,u" jJlGP*7U-蛴wDupV?y~ jkQ*7`1]y6ggRŰ}tT6oAL2xi/} ,`=Ma"qBbu_X'jU[aZ:w%|DZ(6S ( '-+r?dE P3sǓwNgEtK|  /Dv 0 o; ~JF1gp6FFwXW(oo#"g4$-˓<Bh ڟ:f $bp)w'{6epOwUPD_* ? ^AM~$ѴF j(ɿ>Pi_xTpbӦ3Df͜KzAUfӌ#Aw޿-$ԅ`7Y:cW׎2cCrT ]BIƞݡ;Ȝ}MxGx4<1Ü%rsW0+2}o ̹?ܰ!(Ëf*v{:cs-A'?`GvI![ȆDUsݾ4 ۠ HVR#9.+ml!uEz~|%XV8T"h[i&Hgj$헯i绂+FdӔL %|2-(b0Ds `~|3)]Ne rNjBgLL(j꒚cNnI}\8"6[: .]U+uE:2[ R7f88MZ.nWK¢Xy[pIY{8cu-mC+lf[ӱ)˅,䃽1QTSJe-jH56 .\xʟ>k}߬.gM3I@]@W\|;;oy_Tyh;,=c{0nao~o+\% gGE)AyMkr# =,?4l߈CEm<U_T.J 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 ); } }