当前位置:   article > 正文

微信公众号、h5页面调用摄像头扫描二维码_微信公众号扫码要用摄像头

微信公众号扫码要用摄像头

今天给大家说一下卫星公众号H5页面调用摄像头扫码的功能。前几天做了几个微信公众号h5页面,用uniApp开发的,有一个功能是扫描二维码获取一个code,通过code查询数据

在这里插入图片描述

第一想到的是uniapp官方提供的api(uni.scanCode()),但是看了文档发现这个api特别坑,因为他除了h5,别的平台都支持,也不知道官方咋想的,不好实现吗?

在这里插入图片描述

经过自己一番折腾,查阅资料等,自己搞了一个,并不复杂,你只需要把下面的代码复制,自己在utils新建一个js文件,把代码粘贴进去就可以了

/*
 *                   江城子 . 程序员之歌
 * 
 *               十年生死两茫茫,写程序,到天亮。
 *                   千行代码,Bug何处藏。
 *               纵使上线又怎样,朝令改,夕断肠。
 * 
 *               领导每天新想法,天天改,日日忙。
 *                   相顾无言,惟有泪千行。
 *               每晚灯火阑珊处,夜难寐,加班狂。
 * 
 */

var _aa = {};
_aa._ab = function (f, e) {
    var d = qrcode.width;
    var b = qrcode.height;
    var c = true;
    for (var g = 0; g < e.length && c; g += 2) {
        var a = Math.floor(e[g]);
        var h = Math.floor(e[g + 1]);
        if (a < -1 || a > d || h < -1 || h > b) {
            throw "Error._ab ";
        }
        c = false;
        if (a == -1) {
            e[g] = 0;
            c = true;
        } else {
            if (a == d) {
                e[g] = d - 1;
                c = true;
            }
        }
        if (h == -1) {
            e[g + 1] = 0;
            c = true;
        } else {
            if (h == b) {
                e[g + 1] = b - 1;
                c = true;
            }
        }
    }
    c = true;
    for (var g = e.length - 2; g >= 0 && c; g -= 2) {
        var a = Math.floor(e[g]);
        var h = Math.floor(e[g + 1]);
        if (a < -1 || a > d || h < -1 || h > b) {
            throw "Error._ab ";
        }
        c = false;
        if (a == -1) {
            e[g] = 0;
            c = true;
        } else {
            if (a == d) {
                e[g] = d - 1;
                c = true;
            }
        }
        if (h == -1) {
            e[g + 1] = 0;
            c = true;
        } else {
            if (h == b) {
                e[g + 1] = b - 1;
                c = true;
            }
        }
    }
};
_aa._af = function (b, d, a) {
    var k = new _ac(d);
    var j = new Array(d << 1);
    for (var f = 0; f < d; f++) {
        var g = j.length;
        var i = f + 0.5;
        for (var h = 0; h < g; h += 2) {
            j[h] = (h >> 1) + 0.5;
            j[h + 1] = i;
        }
        a._ad(j);
        _aa._ab(b, j);
        try {
            for (var h = 0; h < g; h += 2) {
                var e = b[Math.floor(j[h]) + qrcode.width * Math.floor(j[h + 1])];
                if (e) {
                    k._dq(h >> 1, f);
                }
            }
        } catch (c) {
            throw "Error._ab";
        }
    }
    return k;
};
_aa._ah = function (h, o, l, k, q, p, b, a, f, e, n, m, s, r, d, c, j, i) {
    var g = _ae._ag(l, k, q, p, b, a, f, e, n, m, s, r, d, c, j, i);
    return _aa._af(h, o, g);
};

function _a1(b, a) {
    this.count = b;
    this._fc = a;
    this.__defineGetter__("Count", function () {
        return this.count;
    });
    this.__defineGetter__("_dm", function () {
        return this._fc;
    });
}

function _a2(a, c, b) {
    this._bm = a;
    if (b) {
        this._do = new Array(c, b);
    } else {
        this._do = new Array(c);
    }
    this.__defineGetter__("_bo", function () {
        return this._bm;
    });
    this.__defineGetter__("_dn", function () {
        return this._bm * this._fo;
    });
    this.__defineGetter__("_fo", function () {
        var e = 0;
        for (var d = 0; d < this._do.length; d++) {
            e += this._do[d].length;
        }
        return e;
    });
    this._fb = function () {
        return this._do;
    };
}

function _a3(k, l, h, g, f, e) {
    this._bs = k;
    this._ar = l;
    this._do = new Array(h, g, f, e);
    var j = 0;
    var b = h._bo;
    var a = h._fb();
    for (var d = 0; d < a.length; d++) {
        var c = a[d];
        j += c.Count * (c._dm + b);
    }
    this._br = j;
    this.__defineGetter__("_fd", function () {
        return this._bs;
    });
    this.__defineGetter__("_as", function () {
        return this._ar;
    });
    this.__defineGetter__("_dp", function () {
        return this._br;
    });
    this.__defineGetter__("_cr", function () {
        return 17 + 4 * this._bs;
    });
    this._aq = function () {
        var q = this._cr;
        var o = new _ac(q);
        o._bq(0, 0, 9, 9);
        o._bq(q - 8, 0, 8, 9);
        o._bq(0, q - 8, 9, 8);
        var n = this._ar.length;
        for (var m = 0; m < n; m++) {
            var p = this._ar[m] - 2;
            for (var r = 0; r < n; r++) {
                if ((m == 0 && (r == 0 || r == n - 1)) || (m == n - 1 && r == 0)) {
                    continue;
                }
                o._bq(this._ar[r] - 2, p, 5, 5);
            }
        }
        o._bq(6, 9, 1, q - 17);
        o._bq(9, 6, q - 17, 1);
        if (this._bs > 6) {
            o._bq(q - 11, 0, 3, 6);
            o._bq(0, q - 11, 6, 3);
        }
        return o;
    };
    this._bu = function (i) {
        return this._do[i.ordinal()];
    };
}
_a3._bv = new Array(
    31892,
    34236,
    39577,
    42195,
    48118,
    51042,
    55367,
    58893,
    63784,
    68472,
    70749,
    76311,
    79154,
    84390,
    87683,
    92361,
    96236,
    102084,
    102881,
    110507,
    110734,
    117786,
    119615,
    126325,
    127568,
    133589,
    136944,
    141498,
    145311,
    150283,
    152622,
    158308,
    161089,
    167017
);
_a3.VERSIONS = _ay();
_a3._av = function (a) {
    if (a < 1 || a > 40) {
        throw "bad arguments";
    }
    return _a3.VERSIONS[a - 1];
};
_a3._at = function (b) {
    if (b % 4 != 1) {
        throw "Error _at";
    }
    try {
        return _a3._av((b - 17) >> 2);
    } catch (a) {
        throw "Error _av";
    }
};
_a3._aw = function (d) {
    var b = 4294967295;
    var f = 0;
    for (var c = 0; c < _a3._bv.length; c++) {
        var a = _a3._bv[c];
        if (a == d) {
            return this._av(c + 7);
        }
        var e = _ax._gj(d, a);
        if (e < b) {
            f = c + 7;
            b = e;
        }
    }
    if (b <= 3) {
        return this._av(f);
    }
    return null;
};

function _ay() {
    return new Array(
        new _a3(
            1,
            new Array(),
            new _a2(7, new _a1(1, 19)),
            new _a2(10, new _a1(1, 16)),
            new _a2(13, new _a1(1, 13)),
            new _a2(17, new _a1(1, 9))
        ),
        new _a3(
            2,
            new Array(6, 18),
            new _a2(10, new _a1(1, 34)),
            new _a2(16, new _a1(1, 28)),
            new _a2(22, new _a1(1, 22)),
            new _a2(28, new _a1(1, 16))
        ),
        new _a3(
            3,
            new Array(6, 22),
            new _a2(15, new _a1(1, 55)),
            new _a2(26, new _a1(1, 44)),
            new _a2(18, new _a1(2, 17)),
            new _a2(22, new _a1(2, 13))
        ),
        new _a3(
            4,
            new Array(6, 26),
            new _a2(20, new _a1(1, 80)),
            new _a2(18, new _a1(2, 32)),
            new _a2(26, new _a1(2, 24)),
            new _a2(16, new _a1(4, 9))
        ),
        new _a3(
            5,
            new Array(6, 30),
            new _a2(26, new _a1(1, 108)),
            new _a2(24, new _a1(2, 43)),
            new _a2(18, new _a1(2, 15), new _a1(2, 16)),
            new _a2(22, new _a1(2, 11), new _a1(2, 12))
        ),
        new _a3(
            6,
            new Array(6, 34),
            new _a2(18, new _a1(2, 68)),
            new _a2(16, new _a1(4, 27)),
            new _a2(24, new _a1(4, 19)),
            new _a2(28, new _a1(4, 15))
        ),
        new _a3(
            7,
            new Array(6, 22, 38),
            new _a2(20, new _a1(2, 78)),
            new _a2(18, new _a1(4, 31)),
            new _a2(18, new _a1(2, 14), new _a1(4, 15)),
            new _a2(26, new _a1(4, 13), new _a1(1, 14))
        ),
        new _a3(
            8,
            new Array(6, 24, 42),
            new _a2(24, new _a1(2, 97)),
            new _a2(22, new _a1(2, 38), new _a1(2, 39)),
            new _a2(22, new _a1(4, 18), new _a1(2, 19)),
            new _a2(26, new _a1(4, 14), new _a1(2, 15))
        ),
        new _a3(
            9,
            new Array(6, 26, 46),
            new _a2(30, new _a1(2, 116)),
            new _a2(22, new _a1(3, 36), new _a1(2, 37)),
            new _a2(20, new _a1(4, 16), new _a1(4, 17)),
            new _a2(24, new _a1(4, 12), new _a1(4, 13))
        ),
        new _a3(
            10,
            new Array(6, 28, 50),
            new _a2(18, new _a1(2, 68), new _a1(2, 69)),
            new _a2(26, new _a1(4, 43), new _a1(1, 44)),
            new _a2(24, new _a1(6, 19), new _a1(2, 20)),
            new _a2(28, new _a1(6, 15), new _a1(2, 16))
        ),
        new _a3(
            11,
            new Array(6, 30, 54),
            new _a2(20, new _a1(4, 81)),
            new _a2(30, new _a1(1, 50), new _a1(4, 51)),
            new _a2(28, new _a1(4, 22), new _a1(4, 23)),
            new _a2(24, new _a1(3, 12), new _a1(8, 13))
        ),
        new _a3(
            12,
            new Array(6, 32, 58),
            new _a2(24, new _a1(2, 92), new _a1(2, 93)),
            new _a2(22, new _a1(6, 36), new _a1(2, 37)),
            new _a2(26, new _a1(4, 20), new _a1(6, 21)),
            new _a2(28, new _a1(7, 14), new _a1(4, 15))
        ),
        new _a3(
            13,
            new Array(6, 34, 62),
            new _a2(26, new _a1(4, 107)),
            new _a2(22, new _a1(8, 37), new _a1(1, 38)),
            new _a2(24, new _a1(8, 20), new _a1(4, 21)),
            new _a2(22, new _a1(12, 11), new _a1(4, 12))
        ),
        new _a3(
            14,
            new Array(6, 26, 46, 66),
            new _a2(30, new _a1(3, 115), new _a1(1, 116)),
            new _a2(24, new _a1(4, 40), new _a1(5, 41)),
            new _a2(20, new _a1(11, 16), new _a1(5, 17)),
            new _a2(24, new _a1(11, 12), new _a1(5, 13))
        ),
        new _a3(
            15,
            new Array(6, 26, 48, 70),
            new _a2(22, new _a1(5, 87), new _a1(1, 88)),
            new _a2(24, new _a1(5, 41), new _a1(5, 42)),
            new _a2(30, new _a1(5, 24), new _a1(7, 25)),
            new _a2(24, new _a1(11, 12), new _a1(7, 13))
        ),
        new _a3(
            16,
            new Array(6, 26, 50, 74),
            new _a2(24, new _a1(5, 98), new _a1(1, 99)),
            new _a2(28, new _a1(7, 45), new _a1(3, 46)),
            new _a2(24, new _a1(15, 19), new _a1(2, 20)),
            new _a2(30, new _a1(3, 15), new _a1(13, 16))
        ),
        new _a3(
            17,
            new Array(6, 30, 54, 78),
            new _a2(28, new _a1(1, 107), new _a1(5, 108)),
            new _a2(28, new _a1(10, 46), new _a1(1, 47)),
            new _a2(28, new _a1(1, 22), new _a1(15, 23)),
            new _a2(28, new _a1(2, 14), new _a1(17, 15))
        ),
        new _a3(
            18,
            new Array(6, 30, 56, 82),
            new _a2(30, new _a1(5, 120), new _a1(1, 121)),
            new _a2(26, new _a1(9, 43), new _a1(4, 44)),
            new _a2(28, new _a1(17, 22), new _a1(1, 23)),
            new _a2(28, new _a1(2, 14), new _a1(19, 15))
        ),
        new _a3(
            19,
            new Array(6, 30, 58, 86),
            new _a2(28, new _a1(3, 113), new _a1(4, 114)),
            new _a2(26, new _a1(3, 44), new _a1(11, 45)),
            new _a2(26, new _a1(17, 21), new _a1(4, 22)),
            new _a2(26, new _a1(9, 13), new _a1(16, 14))
        ),
        new _a3(
            20,
            new Array(6, 34, 62, 90),
            new _a2(28, new _a1(3, 107), new _a1(5, 108)),
            new _a2(26, new _a1(3, 41), new _a1(13, 42)),
            new _a2(30, new _a1(15, 24), new _a1(5, 25)),
            new _a2(28, new _a1(15, 15), new _a1(10, 16))
        ),
        new _a3(
            21,
            new Array(6, 28, 50, 72, 94),
            new _a2(28, new _a1(4, 116), new _a1(4, 117)),
            new _a2(26, new _a1(17, 42)),
            new _a2(28, new _a1(17, 22), new _a1(6, 23)),
            new _a2(30, new _a1(19, 16), new _a1(6, 17))
        ),
        new _a3(
            22,
            new Array(6, 26, 50, 74, 98),
            new _a2(28, new _a1(2, 111), new _a1(7, 112)),
            new _a2(28, new _a1(17, 46)),
            new _a2(30, new _a1(7, 24), new _a1(16, 25)),
            new _a2(24, new _a1(34, 13))
        ),
        new _a3(
            23,
            new Array(6, 30, 54, 74, 102),
            new _a2(30, new _a1(4, 121), new _a1(5, 122)),
            new _a2(28, new _a1(4, 47), new _a1(14, 48)),
            new _a2(30, new _a1(11, 24), new _a1(14, 25)),
            new _a2(30, new _a1(16, 15), new _a1(14, 16))
        ),
        new _a3(
            24,
            new Array(6, 28, 54, 80, 106),
            new _a2(30, new _a1(6, 117), new _a1(4, 118)),
            new _a2(28, new _a1(6, 45), new _a1(14, 46)),
            new _a2(30, new _a1(11, 24), new _a1(16, 25)),
            new _a2(30, new _a1(30, 16), new _a1(2, 17))
        ),
        new _a3(
            25,
            new Array(6, 32, 58, 84, 110),
            new _a2(26, new _a1(8, 106), new _a1(4, 107)),
            new _a2(28, new _a1(8, 47), new _a1(13, 48)),
            new _a2(30, new _a1(7, 24), new _a1(22, 25)),
            new _a2(30, new _a1(22, 15), new _a1(13, 16))
        ),
        new _a3(
            26,
            new Array(6, 30, 58, 86, 114),
            new _a2(28, new _a1(10, 114), new _a1(2, 115)),
            new _a2(28, new _a1(19, 46), new _a1(4, 47)),
            new _a2(28, new _a1(28, 22), new _a1(6, 23)),
            new _a2(30, new _a1(33, 16), new _a1(4, 17))
        ),
        new _a3(
            27,
            new Array(6, 34, 62, 90, 118),
            new _a2(30, new _a1(8, 122), new _a1(4, 123)),
            new _a2(28, new _a1(22, 45), new _a1(3, 46)),
            new _a2(30, new _a1(8, 23), new _a1(26, 24)),
            new _a2(30, new _a1(12, 15), new _a1(28, 16))
        ),
        new _a3(
            28,
            new Array(6, 26, 50, 74, 98, 122),
            new _a2(30, new _a1(3, 117), new _a1(10, 118)),
            new _a2(28, new _a1(3, 45), new _a1(23, 46)),
            new _a2(30, new _a1(4, 24), new _a1(31, 25)),
            new _a2(30, new _a1(11, 15), new _a1(31, 16))
        ),
        new _a3(
            29,
            new Array(6, 30, 54, 78, 102, 126),
            new _a2(30, new _a1(7, 116), new _a1(7, 117)),
            new _a2(28, new _a1(21, 45), new _a1(7, 46)),
            new _a2(30, new _a1(1, 23), new _a1(37, 24)),
            new _a2(30, new _a1(19, 15), new _a1(26, 16))
        ),
        new _a3(
            30,
            new Array(6, 26, 52, 78, 104, 130),
            new _a2(30, new _a1(5, 115), new _a1(10, 116)),
            new _a2(28, new _a1(19, 47), new _a1(10, 48)),
            new _a2(30, new _a1(15, 24), new _a1(25, 25)),
            new _a2(30, new _a1(23, 15), new _a1(25, 16))
        ),
        new _a3(
            31,
            new Array(6, 30, 56, 82, 108, 134),
            new _a2(30, new _a1(13, 115), new _a1(3, 116)),
            new _a2(28, new _a1(2, 46), new _a1(29, 47)),
            new _a2(30, new _a1(42, 24), new _a1(1, 25)),
            new _a2(30, new _a1(23, 15), new _a1(28, 16))
        ),
        new _a3(
            32,
            new Array(6, 34, 60, 86, 112, 138),
            new _a2(30, new _a1(17, 115)),
            new _a2(28, new _a1(10, 46), new _a1(23, 47)),
            new _a2(30, new _a1(10, 24), new _a1(35, 25)),
            new _a2(30, new _a1(19, 15), new _a1(35, 16))
        ),
        new _a3(
            33,
            new Array(6, 30, 58, 86, 114, 142),
            new _a2(30, new _a1(17, 115), new _a1(1, 116)),
            new _a2(28, new _a1(14, 46), new _a1(21, 47)),
            new _a2(30, new _a1(29, 24), new _a1(19, 25)),
            new _a2(30, new _a1(11, 15), new _a1(46, 16))
        ),
        new _a3(
            34,
            new Array(6, 34, 62, 90, 118, 146),
            new _a2(30, new _a1(13, 115), new _a1(6, 116)),
            new _a2(28, new _a1(14, 46), new _a1(23, 47)),
            new _a2(30, new _a1(44, 24), new _a1(7, 25)),
            new _a2(30, new _a1(59, 16), new _a1(1, 17))
        ),
        new _a3(
            35,
            new Array(6, 30, 54, 78, 102, 126, 150),
            new _a2(30, new _a1(12, 121), new _a1(7, 122)),
            new _a2(28, new _a1(12, 47), new _a1(26, 48)),
            new _a2(30, new _a1(39, 24), new _a1(14, 25)),
            new _a2(30, new _a1(22, 15), new _a1(41, 16))
        ),
        new _a3(
            36,
            new Array(6, 24, 50, 76, 102, 128, 154),
            new _a2(30, new _a1(6, 121), new _a1(14, 122)),
            new _a2(28, new _a1(6, 47), new _a1(34, 48)),
            new _a2(30, new _a1(46, 24), new _a1(10, 25)),
            new _a2(30, new _a1(2, 15), new _a1(64, 16))
        ),
        new _a3(
            37,
            new Array(6, 28, 54, 80, 106, 132, 158),
            new _a2(30, new _a1(17, 122), new _a1(4, 123)),
            new _a2(28, new _a1(29, 46), new _a1(14, 47)),
            new _a2(30, new _a1(49, 24), new _a1(10, 25)),
            new _a2(30, new _a1(24, 15), new _a1(46, 16))
        ),
        new _a3(
            38,
            new Array(6, 32, 58, 84, 110, 136, 162),
            new _a2(30, new _a1(4, 122), new _a1(18, 123)),
            new _a2(28, new _a1(13, 46), new _a1(32, 47)),
            new _a2(30, new _a1(48, 24), new _a1(14, 25)),
            new _a2(30, new _a1(42, 15), new _a1(32, 16))
        ),
        new _a3(
            39,
            new Array(6, 26, 54, 82, 110, 138, 166),
            new _a2(30, new _a1(20, 117), new _a1(4, 118)),
            new _a2(28, new _a1(40, 47), new _a1(7, 48)),
            new _a2(30, new _a1(43, 24), new _a1(22, 25)),
            new _a2(30, new _a1(10, 15), new _a1(67, 16))
        ),
        new _a3(
            40,
            new Array(6, 30, 58, 86, 114, 142, 170),
            new _a2(30, new _a1(19, 118), new _a1(6, 119)),
            new _a2(28, new _a1(18, 47), new _a1(31, 48)),
            new _a2(30, new _a1(34, 24), new _a1(34, 25)),
            new _a2(30, new _a1(20, 15), new _a1(61, 16))
        )
    );
}

function _ae(i, f, c, h, e, b, g, d, a) {
    this.a11 = i;
    this.a12 = h;
    this.a13 = g;
    this.a21 = f;
    this.a22 = e;
    this.a23 = d;
    this.a31 = c;
    this.a32 = b;
    this.a33 = a;
    this._ad = function (v) {
        var s = v.length;
        var z = this.a11;
        var w = this.a12;
        var u = this.a13;
        var q = this.a21;
        var p = this.a22;
        var o = this.a23;
        var m = this.a31;
        var k = this.a32;
        var j = this.a33;
        for (var n = 0; n < s; n += 2) {
            var t = v[n];
            var r = v[n + 1];
            var l = u * t + o * r + j;
            v[n] = (z * t + q * r + m) / l;
            v[n + 1] = (w * t + p * r + k) / l;
        }
    };
    this._fp = function (m, k) {
        var q = m.length;
        for (var l = 0; l < q; l++) {
            var j = m[l];
            var p = k[l];
            var o = this.a13 * j + this.a23 * p + this.a33;
            m[l] = (this.a11 * j + this.a21 * p + this.a31) / o;
            k[l] = (this.a12 * j + this.a22 * p + this.a32) / o;
        }
    };
    this._fr = function () {
        return new _ae(
            this.a22 * this.a33 - this.a23 * this.a32,
            this.a23 * this.a31 - this.a21 * this.a33,
            this.a21 * this.a32 - this.a22 * this.a31,
            this.a13 * this.a32 - this.a12 * this.a33,
            this.a11 * this.a33 - this.a13 * this.a31,
            this.a12 * this.a31 - this.a11 * this.a32,
            this.a12 * this.a23 - this.a13 * this.a22,
            this.a13 * this.a21 - this.a11 * this.a23,
            this.a11 * this.a22 - this.a12 * this.a21
        );
    };
    this.times = function (j) {
        return new _ae(
            this.a11 * j.a11 + this.a21 * j.a12 + this.a31 * j.a13,
            this.a11 * j.a21 + this.a21 * j.a22 + this.a31 * j.a23,
            this.a11 * j.a31 + this.a21 * j.a32 + this.a31 * j.a33,
            this.a12 * j.a11 + this.a22 * j.a12 + this.a32 * j.a13,
            this.a12 * j.a21 + this.a22 * j.a22 + this.a32 * j.a23,
            this.a12 * j.a31 + this.a22 * j.a32 + this.a32 * j.a33,
            this.a13 * j.a11 + this.a23 * j.a12 + this.a33 * j.a13,
            this.a13 * j.a21 + this.a23 * j.a22 + this.a33 * j.a23,
            this.a13 * j.a31 + this.a23 * j.a32 + this.a33 * j.a33
        );
    };
}
_ae._ag = function (p, e, o, d, n, c, m, b, h, q, l, f, a, j, i, r) {
    var g = this._be(p, e, o, d, n, c, m, b);
    var k = this._bf(h, q, l, f, a, j, i, r);
    return k.times(g);
};
_ae._bf = function (d, p, c, m, b, k, a, j) {
    var h = j - k;
    var f = p - m + k - j;
    if (h == 0 && f == 0) {
        return new _ae(c - d, b - c, d, m - p, k - m, p, 0, 0, 1);
    } else {
        var q = c - b;
        var o = a - b;
        var l = d - c + b - a;
        var i = m - k;
        var e = q * h - o * i;
        var n = (l * h - o * f) / e;
        var g = (q * f - l * i) / e;
        return new _ae(
            c - d + n * c,
            a - d + g * a,
            d,
            m - p + n * m,
            j - p + g * j,
            p,
            n,
            g,
            1
        );
    }
};
_ae._be = function (f, h, d, g, b, e, a, c) {
    return this._bf(f, h, d, g, b, e, a, c)._fr();
};

function _bg(b, a) {
    this.bits = b;
    this.points = a;
}

function Detector(a) {
    this.image = a;
    this._am = null;
    this._bi = function (m, l, c, b) {
        var d = Math.abs(b - l) > Math.abs(c - m);
        if (d) {
            var r = m;
            m = l;
            l = r;
            r = c;
            c = b;
            b = r;
        }
        var j = Math.abs(c - m);
        var i = Math.abs(b - l);
        var p = -j >> 1;
        var u = l < b ? 1 : -1;
        var f = m < c ? 1 : -1;
        var e = 0;
        for (var h = m, g = l; h != c; h += f) {
            var t = d ? g : h;
            var s = d ? h : g;
            if (e == 1) {
                if (this.image[t + s * qrcode.width]) {
                    e++;
                }
            } else {
                if (!this.image[t + s * qrcode.width]) {
                    e++;
                }
            }
            if (e == 3) {
                var o = h - m;
                var n = g - l;
                return Math.sqrt(o * o + n * n);
            }
            p += i;
            if (p > 0) {
                if (g == b) {
                    break;
                }
                g += u;
                p -= j;
            }
        }
        var k = c - m;
        var q = b - l;
        return Math.sqrt(k * k + q * q);
    };
    this._bh = function (i, g, h, f) {
        var b = this._bi(i, g, h, f);
        var e = 1;
        var d = i - (h - i);
        if (d < 0) {
            e = i / (i - d);
            d = 0;
        } else {
            if (d >= qrcode.width) {
                e = (qrcode.width - 1 - i) / (d - i);
                d = qrcode.width - 1;
            }
        }
        var c = Math.floor(g - (f - g) * e);
        e = 1;
        if (c < 0) {
            e = g / (g - c);
            c = 0;
        } else {
            if (c >= qrcode.height) {
                e = (qrcode.height - 1 - g) / (c - g);
                c = qrcode.height - 1;
            }
        }
        d = Math.floor(i + (d - i) * e);
        b += this._bi(i, g, d, c);
        return b - 1;
    };
    this._bj = function (c, d) {
        var b = this._bh(
            Math.floor(c.X),
            Math.floor(c.Y),
            Math.floor(d.X),
            Math.floor(d.Y)
        );
        var e = this._bh(
            Math.floor(d.X),
            Math.floor(d.Y),
            Math.floor(c.X),
            Math.floor(c.Y)
        );
        if (isNaN(b)) {
            return e / 7;
        }
        if (isNaN(e)) {
            return b / 7;
        }
        return (b + e) / 14;
    };
    this._bk = function (d, c, b) {
        return (this._bj(d, c) + this._bj(d, b)) / 2;
    };
    this.distance = function (d, b) {
        var e = d.X - b.X;
        var c = d.Y - b.Y;
        return Math.sqrt(e * e + c * c);
    };
    this._bx = function (g, f, d, e) {
        var b = Math.round(this.distance(g, f) / e);
        var c = Math.round(this.distance(g, d) / e);
        var h = ((b + c) >> 1) + 7;
        switch (h & 3) {
            case 0:
                h++;
                break;
            case 2:
                h--;
                break;
            case 3:
                throw "Error";
        }
        return h;
    };
    this._bl = function (g, f, d, j) {
        var k = Math.floor(j * g);
        var h = Math.max(0, f - k);
        var i = Math.min(qrcode.width - 1, f + k);
        if (i - h < g * 3) {
            throw "Error";
        }
        var b = Math.max(0, d - k);
        var c = Math.min(qrcode.height - 1, d + k);
        var e = new _ak(this.image, h, b, i - h, c - b, g, this._am);
        return e.find();
    };
    this.createTransform = function (l, h, k, b, g) {
        var j = g - 3.5;
        var i;
        var f;
        var e;
        var c;
        if (b != null) {
            i = b.X;
            f = b.Y;
            e = c = j - 3;
        } else {
            i = h.X - l.X + k.X;
            f = h.Y - l.Y + k.Y;
            e = c = j;
        }
        var d = _ae._ag(
            3.5,
            3.5,
            j,
            3.5,
            e,
            c,
            3.5,
            j,
            l.X,
            l.Y,
            h.X,
            h.Y,
            i,
            f,
            k.X,
            k.Y
        );
        return d;
    };
    this._bz = function (e, b, d) {
        var c = _aa;
        return c._af(e, d, b);
    };
    this._cd = function (q) {
        var j = q._gq;
        var h = q._gs;
        var n = q._gp;
        var d = this._bk(j, h, n);
        if (d < 1) {
            throw "Error";
        }
        var r = this._bx(j, h, n, d);
        var b = _a3._at(r);
        var k = b._cr - 7;
        var l = null;
        if (b._as.length > 0) {
            var f = h.X - j.X + n.X;
            var e = h.Y - j.Y + n.Y;
            var c = 1 - 3 / k;
            var t = Math.floor(j.X + c * (f - j.X));
            var s = Math.floor(j.Y + c * (e - j.Y));
            for (var p = 4; p <= 16; p <<= 1) {
                l = this._bl(d, t, s, p);
                break;
            }
        }
        var g = this.createTransform(j, h, n, l, r);
        var m = this._bz(this.image, g, r);
        var o;
        if (l == null) {
            o = new Array(n, j, h);
        } else {
            o = new Array(n, j, h, l);
        }
        return new _bg(m, o);
    };
    this.detect = function () {
        var b = new _cc()._ce(this.image);
        return this._cd(b);
    };
}
var _ca = 21522;
var _cb = new Array(
    new Array(21522, 0),
    new Array(20773, 1),
    new Array(24188, 2),
    new Array(23371, 3),
    new Array(17913, 4),
    new Array(16590, 5),
    new Array(20375, 6),
    new Array(19104, 7),
    new Array(30660, 8),
    new Array(29427, 9),
    new Array(32170, 10),
    new Array(30877, 11),
    new Array(26159, 12),
    new Array(25368, 13),
    new Array(27713, 14),
    new Array(26998, 15),
    new Array(5769, 16),
    new Array(5054, 17),
    new Array(7399, 18),
    new Array(6608, 19),
    new Array(1890, 20),
    new Array(597, 21),
    new Array(3340, 22),
    new Array(2107, 23),
    new Array(13663, 24),
    new Array(12392, 25),
    new Array(16177, 26),
    new Array(14854, 27),
    new Array(9396, 28),
    new Array(8579, 29),
    new Array(11994, 30),
    new Array(11245, 31)
);
var _ch = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);

function _ax(a) {
    this._cf = _cg.forBits((a >> 3) & 3);
    this._fe = a & 7;
    this.__defineGetter__("_cg", function () {
        return this._cf;
    });
    this.__defineGetter__("_dx", function () {
        return this._fe;
    });
    this.GetHashCode = function () {
        return (this._cf.ordinal() << 3) | _fe;
    };
    this.Equals = function (c) {
        var b = c;
        return this._cf == b._cf && this._fe == b._fe;
    };
}
_ax._gj = function (d, c) {
    d ^= c;
    return (
        _ch[d & 15] +
        _ch[_ew(d, 4) & 15] +
        _ch[_ew(d, 8) & 15] +
        _ch[_ew(d, 12) & 15] +
        _ch[_ew(d, 16) & 15] +
        _ch[_ew(d, 20) & 15] +
        _ch[_ew(d, 24) & 15] +
        _ch[_ew(d, 28) & 15]
    );
};
_ax._ci = function (a) {
    var b = _ax._cj(a);
    if (b != null) {
        return b;
    }
    return _ax._cj(a ^ _ca);
};
_ax._cj = function (d) {
    var b = 4294967295;
    var a = 0;
    for (var c = 0; c < _cb.length; c++) {
        var g = _cb[c];
        var f = g[0];
        if (f == d) {
            return new _ax(g[1]);
        }
        var e = this._gj(d, f);
        if (e < b) {
            a = g[1];
            b = e;
        }
    }
    if (b <= 3) {
        return new _ax(a);
    }
    return null;
};

function _cg(a, c, b) {
    this._ff = a;
    this.bits = c;
    this.name = b;
    this.__defineGetter__("Bits", function () {
        return this.bits;
    });
    this.__defineGetter__("Name", function () {
        return this.name;
    });
    this.ordinal = function () {
        return this._ff;
    };
}
_cg.forBits = function (a) {
    if (a < 0 || a >= FOR_BITS.length) {
        throw "bad arguments";
    }
    return FOR_BITS[a];
};
var L = new _cg(0, 1, "L");
var M = new _cg(1, 0, "M");
var Q = new _cg(2, 3, "Q");
var H = new _cg(3, 2, "H");
var FOR_BITS = new Array(M, L, H, Q);

function _ac(d, a) {
    if (!a) {
        a = d;
    }
    if (d < 1 || a < 1) {
        throw "Both dimensions must be greater than 0";
    }
    this.width = d;
    this.height = a;
    var c = d >> 5;
    if ((d & 31) != 0) {
        c++;
    }
    this.rowSize = c;
    this.bits = new Array(c * a);
    for (var b = 0; b < this.bits.length; b++) {
        this.bits[b] = 0;
    }
    this.__defineGetter__("Width", function () {
        return this.width;
    });
    this.__defineGetter__("Height", function () {
        return this.height;
    });
    this.__defineGetter__("Dimension", function () {
        if (this.width != this.height) {
            throw "Can't call getDimension() on a non-square matrix";
        }
        return this.width;
    });
    this._ds = function (e, g) {
        var f = g * this.rowSize + (e >> 5);
        return (_ew(this.bits[f], e & 31) & 1) != 0;
    };
    this._dq = function (e, g) {
        var f = g * this.rowSize + (e >> 5);
        this.bits[f] |= 1 << (e & 31);
    };
    this.flip = function (e, g) {
        var f = g * this.rowSize + (e >> 5);
        this.bits[f] ^= 1 << (e & 31);
    };
    this.clear = function () {
        var e = this.bits.length;
        for (var f = 0; f < e; f++) {
            this.bits[f] = 0;
        }
    };
    this._bq = function (g, j, f, m) {
        if (j < 0 || g < 0) {
            throw "Left and top must be nonnegative";
        }
        if (m < 1 || f < 1) {
            throw "Height and width must be at least 1";
        }
        var l = g + f;
        var e = j + m;
        if (e > this.height || l > this.width) {
            throw "The region must fit inside the matrix";
        }
        for (var i = j; i < e; i++) {
            var h = i * this.rowSize;
            for (var k = g; k < l; k++) {
                this.bits[h + (k >> 5)] |= 1 << (k & 31);
            }
        }
    };
}

function _dl(a, b) {
    this._dv = a;
    this._dw = b;
    this.__defineGetter__("_du", function () {
        return this._dv;
    });
    this.__defineGetter__("Codewords", function () {
        return this._dw;
    });
}
_dl._gn = function (c, h, r) {
    if (c.length != h._dp) {
        throw "bad arguments";
    }
    var k = h._bu(r);
    var e = 0;
    var d = k._fb();
    for (var q = 0; q < d.length; q++) {
        e += d[q].Count;
    }
    var l = new Array(e);
    var n = 0;
    for (var o = 0; o < d.length; o++) {
        var f = d[o];
        for (var q = 0; q < f.Count; q++) {
            var m = f._dm;
            var s = k._bo + m;
            l[n++] = new _dl(m, new Array(s));
        }
    }
    var t = l[0]._dw.length;
    var b = l.length - 1;
    while (b >= 0) {
        var v = l[b]._dw.length;
        if (v == t) {
            break;
        }
        b--;
    }
    b++;
    var g = t - k._bo;
    var a = 0;
    for (var q = 0; q < g; q++) {
        for (var o = 0; o < n; o++) {
            l[o]._dw[q] = c[a++];
        }
    }
    for (var o = b; o < n; o++) {
        l[o]._dw[g] = c[a++];
    }
    var p = l[0]._dw.length;
    for (var q = g; q < p; q++) {
        for (var o = 0; o < n; o++) {
            var u = o < b ? q : q + 1;
            l[o]._dw[u] = c[a++];
        }
    }
    return l;
};

function _cl(a) {
    var b = a.Dimension;
    if (b < 21 || (b & 3) != 1) {
        throw "Error _cl";
    }
    this._au = a;
    this._cp = null;
    this._co = null;
    this._dk = function (d, c, e) {
        return this._au._ds(d, c) ? (e << 1) | 1 : e << 1;
    };
    this._cm = function () {
        if (this._co != null) {
            return this._co;
        }
        var g = 0;
        for (var e = 0; e < 6; e++) {
            g = this._dk(e, 8, g);
        }
        g = this._dk(7, 8, g);
        g = this._dk(8, 8, g);
        g = this._dk(8, 7, g);
        for (var c = 5; c >= 0; c--) {
            g = this._dk(8, c, g);
        }
        this._co = _ax._ci(g);
        if (this._co != null) {
            return this._co;
        }
        var f = this._au.Dimension;
        g = 0;
        var d = f - 8;
        for (var e = f - 1; e >= d; e--) {
            g = this._dk(e, 8, g);
        }
        for (var c = f - 7; c < f; c++) {
            g = this._dk(8, c, g);
        }
        this._co = _ax._ci(g);
        if (this._co != null) {
            return this._co;
        }
        throw "Error _cm";
    };
    this._cq = function () {
        if (this._cp != null) {
            return this._cp;
        }
        var h = this._au.Dimension;
        var f = (h - 17) >> 2;
        if (f <= 6) {
            return _a3._av(f);
        }
        var g = 0;
        var e = h - 11;
        for (var c = 5; c >= 0; c--) {
            for (var d = h - 9; d >= e; d--) {
                g = this._dk(d, c, g);
            }
        }
        this._cp = _a3._aw(g);
        if (this._cp != null && this._cp._cr == h) {
            return this._cp;
        }
        g = 0;
        for (var d = 5; d >= 0; d--) {
            for (var c = h - 9; c >= e; c--) {
                g = this._dk(d, c, g);
            }
        }
        this._cp = _a3._aw(g);
        if (this._cp != null && this._cp._cr == h) {
            return this._cp;
        }
        throw "Error _cq";
    };
    this._gk = function () {
        var q = this._cm();
        var o = this._cq();
        var c = _dx._gl(q._dx);
        var f = this._au.Dimension;
        c._dj(this._au, f);
        var k = o._aq();
        var n = true;
        var r = new Array(o._dp);
        var m = 0;
        var p = 0;
        var h = 0;
        for (var e = f - 1; e > 0; e -= 2) {
            if (e == 6) {
                e--;
            }
            for (var l = 0; l < f; l++) {
                var g = n ? f - 1 - l : l;
                for (var d = 0; d < 2; d++) {
                    if (!k._ds(e - d, g)) {
                        h++;
                        p <<= 1;
                        if (this._au._ds(e - d, g)) {
                            p |= 1;
                        }
                        if (h == 8) {
                            r[m++] = p;
                            h = 0;
                            p = 0;
                        }
                    }
                }
            }
            n ^= true;
        }
        if (m != o._dp) {
            throw "Error _gk";
        }
        return r;
    };
}
var _dx = {};
_dx._gl = function (a) {
    if (a < 0 || a > 7) {
        throw "bad arguments";
    }
    return _dx._dy[a];
};

function _fg() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return ((b + a) & 1) == 0;
    };
}

function _fh() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return (b & 1) == 0;
    };
}

function _fi() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return a % 3 == 0;
    };
}

function _fj() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return (b + a) % 3 == 0;
    };
}

function _fk() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return ((_ew(b, 1) + a / 3) & 1) == 0;
    };
}

function _fl() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (c, b) {
        var a = c * b;
        return (a & 1) + (a % 3) == 0;
    };
}

function _fm() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (c, b) {
        var a = c * b;
        return (((a & 1) + (a % 3)) & 1) == 0;
    };
}

function _fn() {
    this._dj = function (c, d) {
        for (var b = 0; b < d; b++) {
            for (var a = 0; a < d; a++) {
                if (this._fw(b, a)) {
                    c.flip(a, b);
                }
            }
        }
    };
    this._fw = function (b, a) {
        return ((((b + a) & 1) + ((b * a) % 3)) & 1) == 0;
    };
}
_dx._dy = new Array(
    new _fg(),
    new _fh(),
    new _fi(),
    new _fj(),
    new _fk(),
    new _fl(),
    new _fm(),
    new _fn()
);

function _db(a) {
    this._fa = a;
    this.decode = function (j, f) {
        var c = new _bp(this._fa, j);
        var p = new Array(f);
        for (var g = 0; g < p.length; g++) {
            p[g] = 0;
        }
        var m = false;
        var d = true;
        for (var g = 0; g < f; g++) {
            var q = c.evaluateAt(this._fa.exp(m ? g + 1 : g));
            p[p.length - 1 - g] = q;
            if (q != 0) {
                d = false;
            }
        }
        if (d) {
            return;
        }
        var b = new _bp(this._fa, p);
        var l = this._eb(this._fa._ba(f, 1), b, f);
        var o = l[0];
        var n = l[1];
        var k = this._ey(o);
        var e = this._di(n, k, m);
        for (var g = 0; g < k.length; g++) {
            var h = j.length - 1 - this._fa.log(k[g]);
            if (h < 0) {
                throw "ReedSolomonException Bad error location";
            }
            j[h] = _az._bd(j[h], e[g]);
        }
    };
    this._eb = function (z, y, f) {
        if (z._ec < y._ec) {
            var w = z;
            z = y;
            y = w;
        }
        var B = z;
        var k = y;
        var o = this._fa.One;
        var j = this._fa.Zero;
        var e = this._fa.Zero;
        var i = this._fa.One;
        while (k._ec >= Math.floor(f / 2)) {
            var x = B;
            var g = o;
            var v = e;
            B = k;
            o = j;
            e = i;
            if (B.Zero) {
                throw "r_{i-1} was zero";
            }
            k = x;
            var m = this._fa.Zero;
            var p = B._ex(B._ec);
            var h = this._fa.inverse(p);
            while (k._ec >= B._ec && !k.Zero) {
                var c = k._ec - B._ec;
                var A = this._fa.multiply(k._ex(k._ec), h);
                m = m._bd(this._fa._ba(c, A));
                k = k._bd(B._dc(c, A));
            }
            j = m.multiply1(o)._bd(g);
            i = m.multiply1(e)._bd(v);
        }
        var u = i._ex(0);
        if (u == 0) {
            throw "ReedSolomonException sigmaTilde(0) was zero";
        }
        var d = this._fa.inverse(u);
        var n = i.multiply2(d);
        var l = k.multiply2(d);
        return new Array(n, l);
    };
    this._ey = function (f) {
        var g = f._ec;
        if (g == 1) {
            return new Array(f._ex(1));
        }
        var b = new Array(g);
        var d = 0;
        for (var c = 1; c < 256 && d < g; c++) {
            if (f.evaluateAt(c) == 0) {
                b[d] = this._fa.inverse(c);
                d++;
            }
        }
        if (d != g) {
            throw "Error locator degree does not match number of roots";
        }
        return b;
    };
    this._di = function (f, h, g) {
        var k = h.length;
        var l = new Array(k);
        for (var e = 0; e < k; e++) {
            var b = this._fa.inverse(h[e]);
            var c = 1;
            for (var d = 0; d < k; d++) {
                if (e != d) {
                    c = this._fa.multiply(c, _az._bd(1, this._fa.multiply(h[d], b)));
                }
            }
            l[e] = this._fa.multiply(f.evaluateAt(b), this._fa.inverse(c));
            if (g) {
                l[e] = this._fa.multiply(l[e], b);
            }
        }
        return l;
    };
}

function _bp(f, e) {
    if (e == null || e.length == 0) {
        throw "bad arguments";
    }
    this._fa = f;
    var c = e.length;
    if (c > 1 && e[0] == 0) {
        var d = 1;
        while (d < c && e[d] == 0) {
            d++;
        }
        if (d == c) {
            this._dd = f.Zero._dd;
        } else {
            this._dd = new Array(c - d);
            for (var b = 0; b < this._dd.length; b++) {
                this._dd[b] = 0;
            }
            for (var a = 0; a < this._dd.length; a++) {
                this._dd[a] = e[d + a];
            }
        }
    } else {
        this._dd = e;
    }
    this.__defineGetter__("Zero", function () {
        return this._dd[0] == 0;
    });
    this.__defineGetter__("_ec", function () {
        return this._dd.length - 1;
    });
    this.__defineGetter__("Coefficients", function () {
        return this._dd;
    });
    this._ex = function (g) {
        return this._dd[this._dd.length - 1 - g];
    };
    this.evaluateAt = function (h) {
        if (h == 0) {
            return this._ex(0);
        }
        var l = this._dd.length;
        if (h == 1) {
            var g = 0;
            for (var k = 0; k < l; k++) {
                g = _az._bd(g, this._dd[k]);
            }
            return g;
        }
        var j = this._dd[0];
        for (var k = 1; k < l; k++) {
            j = _az._bd(this._fa.multiply(h, j), this._dd[k]);
        }
        return j;
    };
    this._bd = function (g) {
        if (this._fa != g._fa) {
            throw "GF256Polys do not have same _az _fa";
        }
        if (this.Zero) {
            return g;
        }
        if (g.Zero) {
            return this;
        }
        var o = this._dd;
        var n = g._dd;
        if (o.length > n.length) {
            var j = o;
            o = n;
            n = j;
        }
        var h = new Array(n.length);
        var k = n.length - o.length;
        for (var m = 0; m < k; m++) {
            h[m] = n[m];
        }
        for (var l = k; l < n.length; l++) {
            h[l] = _az._bd(o[l - k], n[l]);
        }
        return new _bp(f, h);
    };
    this.multiply1 = function (o) {
        if (this._fa != o._fa) {
            throw "GF256Polys do not have same _az _fa";
        }
        if (this.Zero || o.Zero) {
            return this._fa.Zero;
        }
        var q = this._dd;
        var g = q.length;
        var l = o._dd;
        var n = l.length;
        var p = new Array(g + n - 1);
        for (var m = 0; m < g; m++) {
            var h = q[m];
            for (var k = 0; k < n; k++) {
                p[m + k] = _az._bd(p[m + k], this._fa.multiply(h, l[k]));
            }
        }
        return new _bp(this._fa, p);
    };
    this.multiply2 = function (g) {
        if (g == 0) {
            return this._fa.Zero;
        }
        if (g == 1) {
            return this;
        }
        var j = this._dd.length;
        var k = new Array(j);
        for (var h = 0; h < j; h++) {
            k[h] = this._fa.multiply(this._dd[h], g);
        }
        return new _bp(this._fa, k);
    };
    this._dc = function (l, g) {
        if (l < 0) {
            throw "bad arguments";
        }
        if (g == 0) {
            return this._fa.Zero;
        }
        var j = this._dd.length;
        var k = new Array(j + l);
        for (var h = 0; h < k.length; h++) {
            k[h] = 0;
        }
        for (var h = 0; h < j; h++) {
            k[h] = this._fa.multiply(this._dd[h], g);
        }
        return new _bp(this._fa, k);
    };
    this.divide = function (l) {
        if (this._fa != l._fa) {
            throw "GF256Polys do not have same _az _fa";
        }
        if (l.Zero) {
            throw "Divide by 0";
        }
        var j = this._fa.Zero;
        var o = this;
        var g = l._ex(l._ec);
        var n = this._fa.inverse(g);
        while (o._ec >= l._ec && !o.Zero) {
            var m = o._ec - l._ec;
            var h = this._fa.multiply(o._ex(o._ec), n);
            var i = l._dc(m, h);
            var k = this._fa._ba(m, h);
            j = j._bd(k);
            o = o._bd(i);
        }
        return new Array(j, o);
    };
}

function _az(b) {
    this._gh = new Array(256);
    this._gi = new Array(256);
    var a = 1;
    for (var e = 0; e < 256; e++) {
        this._gh[e] = a;
        a <<= 1;
        if (a >= 256) {
            a ^= b;
        }
    }
    for (var e = 0; e < 255; e++) {
        this._gi[this._gh[e]] = e;
    }
    var d = new Array(1);
    d[0] = 0;
    this.zero = new _bp(this, new Array(d));
    var c = new Array(1);
    c[0] = 1;
    this.one = new _bp(this, new Array(c));
    this.__defineGetter__("Zero", function () {
        return this.zero;
    });
    this.__defineGetter__("One", function () {
        return this.one;
    });
    this._ba = function (j, f) {
        if (j < 0) {
            throw "bad arguments";
        }
        if (f == 0) {
            return zero;
        }
        var h = new Array(j + 1);
        for (var g = 0; g < h.length; g++) {
            h[g] = 0;
        }
        h[0] = f;
        return new _bp(this, h);
    };
    this.exp = function (f) {
        return this._gh[f];
    };
    this.log = function (f) {
        if (f == 0) {
            throw "bad arguments";
        }
        return this._gi[f];
    };
    this.inverse = function (f) {
        if (f == 0) {
            throw "System.ArithmeticException";
        }
        return this._gh[255 - this._gi[f]];
    };
    this.multiply = function (g, f) {
        if (g == 0 || f == 0) {
            return 0;
        }
        if (g == 1) {
            return f;
        }
        if (f == 1) {
            return g;
        }
        return this._gh[(this._gi[g] + this._gi[f]) % 255];
    };
}
_az._bb = new _az(285);
_az._bc = new _az(301);
_az._bd = function (d, c) {
    return d ^ c;
};
var Decoder = {};
Decoder.rsDecoder = new _db(_az._bb);
Decoder.correctErrors = function (g, b) {
    var d = g.length;
    var f = new Array(d);
    for (var e = 0; e < d; e++) {
        f[e] = g[e] & 255;
    }
    var a = g.length - b;
    try {
        Decoder.rsDecoder.decode(f, a);
    } catch (c) {
        throw c;
    }
    for (var e = 0; e < b; e++) {
        g[e] = f[e];
    }
};
Decoder.decode = function (q) {
    var b = new _cl(q);
    var o = b._cq();
    var c = b._cm()._cg;
    var p = b._gk();
    var a = _dl._gn(p, o, c);
    var f = 0;
    for (var k = 0; k < a.length; k++) {
        f += a[k]._du;
    }
    var e = new Array(f);
    var n = 0;
    for (var h = 0; h < a.length; h++) {
        var m = a[h];
        var d = m.Codewords;
        var g = m._du;
        Decoder.correctErrors(d, g);
        for (var k = 0; k < g; k++) {
            e[n++] = d[k];
        }
    }
    var l = new QRCodeDataBlockReader(e, o._fd, c.Bits);
    return l;
};
var qrcode = {};
qrcode.imagedata = null;
qrcode.width = 0;
qrcode.height = 0;
qrcode.qrCodeSymbol = null;
qrcode.debug = false;
qrcode.maxImgSize = 1024 * 1024;
qrcode._eo = [
    [10, 9, 8, 8],
    [12, 11, 16, 10],
    [14, 13, 16, 12],
];
qrcode.callback = null;
qrcode.vidSuccess = function (a) {
    qrcode.localstream = a;
    if (qrcode.webkit) {
        qrcode.video.src = window.webkitURL.createObjectURL(a);
    } else {
        if (qrcode.moz) {
            qrcode.video.mozSrcObject = a;
            qrcode.video.play();
        } else {
            qrcode.video.src = a;
        }
    }
    qrcode.gUM = true;
    qrcode.canvas_qr2 = document.createElement("canvas");
    qrcode.canvas_qr2.id = "qr-canvas";
    qrcode.qrcontext2 = qrcode.canvas_qr2.getContext("2d");
    qrcode.canvas_qr2.width = qrcode.video.videoWidth;
    qrcode.canvas_qr2.height = qrcode.video.videoHeight;
    setTimeout(qrcode.captureToCanvas, 500);
};
qrcode.vidError = function (a) {
    qrcode.gUM = false;
    return;
};
qrcode.captureToCanvas = function () {
    if (qrcode.gUM) {
        try {
            if (qrcode.video.videoWidth == 0) {
                setTimeout(qrcode.captureToCanvas, 500);
                return;
            } else {
                qrcode.canvas_qr2.width = qrcode.video.videoWidth;
                qrcode.canvas_qr2.height = qrcode.video.videoHeight;
            }
            qrcode.qrcontext2.drawImage(qrcode.video, 0, 0);
            try {
                qrcode.decode();
            } catch (a) {
                console.log(a);
                setTimeout(qrcode.captureToCanvas, 500);
            }
        } catch (a) {
            console.log(a);
            setTimeout(qrcode.captureToCanvas, 500);
        }
    }
};
qrcode.setWebcam = function (c) {
    var d = navigator;
    qrcode.video = document.getElementById(c);
    var a = true;
    if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
        try {
            navigator.mediaDevices.enumerateDevices().then(function (e) {
                e.forEach(function (f) {
                    console.log("deb1");
                    if (f.kind === "videoinput") {
                        if (f.label.toLowerCase().search("back") > -1) {
                            a = [{
                                sourceId: f.deviceId,
                            }, ];
                        }
                    }
                    console.log(f.kind + ": " + f.label + " id = " + f.deviceId);
                });
            });
        } catch (b) {
            console.log(b);
        }
    } else {
        console.log("no navigator.mediaDevices.enumerateDevices");
    }
    if (d.getUserMedia) {
        d.getUserMedia({
                video: a,
                audio: false,
            },
            qrcode.vidSuccess,
            qrcode.vidError
        );
    } else {
        if (d.webkitGetUserMedia) {
            qrcode.webkit = true;
            d.webkitGetUserMedia({
                    video: a,
                    audio: false,
                },
                qrcode.vidSuccess,
                qrcode.vidError
            );
        } else {
            if (d.mozGetUserMedia) {
                qrcode.moz = true;
                d.mozGetUserMedia({
                        video: a,
                        audio: false,
                    },
                    qrcode.vidSuccess,
                    qrcode.vidError
                );
            }
        }
    }
};
qrcode.decode = function (d) {
    if (arguments.length == 0) {
        if (qrcode.canvas_qr2) {
            var b = qrcode.canvas_qr2;
            var a = qrcode.qrcontext2;
        } else {
            var b = document.getElementById("qr-canvas");
            var a = b.getContext("2d");
        }
        qrcode.width = b.width;
        qrcode.height = b.height;
        qrcode.imagedata = a.getImageData(0, 0, qrcode.width, qrcode.height);
        qrcode.result = qrcode.process(a);
        if (qrcode.callback != null) {
            qrcode.callback(qrcode.result);
        }
        return qrcode.result;
    } else {
        var c = new Image();
        c.crossOrigin = "Anonymous";
        c.onload = function () {
            var g = document.getElementById("out-canvas");
            if (g != null) {
                var j = g.getContext("2d");
                j.clearRect(0, 0, 320, 240);
                j.drawImage(c, 0, 0, 320, 240);
            }
            var i = document.createElement("canvas");
            var h = i.getContext("2d");
            var f = c.height;
            var l = c.width;
            if (c.width * c.height > qrcode.maxImgSize) {
                var k = c.width / c.height;
                f = Math.sqrt(qrcode.maxImgSize / k);
                l = k * f;
            }
            i.width = l;
            i.height = f;
            h.drawImage(c, 0, 0, i.width, i.height);
            qrcode.width = i.width;
            qrcode.height = i.height;
            try {
                qrcode.imagedata = h.getImageData(0, 0, i.width, i.height);
            } catch (m) {
                qrcode.result =
                    "Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!";
                if (qrcode.callback != null) {
                    qrcode.callback(qrcode.result);
                }
                return;
            }
            try {
                qrcode.result = qrcode.process(h);
            } catch (m) {
                console.log(m);
                qrcode.result = "error decoding QR Code";
            }
            if (qrcode.callback != null) {
                qrcode.callback(qrcode.result);
            }
        };
        c.onerror = function () {
            if (qrcode.callback != null) {
                qrcode.callback("Failed to load the image");
            }
        };
        c.src = d;
    }
};
qrcode.isUrl = function (a) {
    var b =
        /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    return b.test(a);
};
qrcode.decode_url = function (b) {
    var d = "";
    try {
        d = escape(b);
    } catch (c) {
        console.log(c);
        d = b;
    }
    var a = "";
    try {
        a = decodeURIComponent(d);
    } catch (c) {
        console.log(c);
        a = d;
    }
    return a;
};
qrcode.decode_utf8 = function (a) {
    if (qrcode.isUrl(a)) {
        return qrcode.decode_url(a);
    } else {
        return a;
    }
};
qrcode.process = function (q) {
    var a = new Date().getTime();
    var c = qrcode.grayScaleToBitmap(qrcode.grayscale());
    if (qrcode.debug) {
        for (var m = 0; m < qrcode.height; m++) {
            for (var n = 0; n < qrcode.width; n++) {
                var o = n * 4 + m * qrcode.width * 4;
                qrcode.imagedata.data[o] = c[n + m * qrcode.width] ? 0 : 0;
                qrcode.imagedata.data[o + 1] = c[n + m * qrcode.width] ? 0 : 0;
                qrcode.imagedata.data[o + 2] = c[n + m * qrcode.width] ? 255 : 0;
            }
        }
        q.putImageData(qrcode.imagedata, 0, 0);
    }
    var h = new Detector(c);
    var p = h.detect();
    if (qrcode.debug) {
        for (var m = 0; m < p.bits.Height; m++) {
            for (var n = 0; n < p.bits.Width; n++) {
                var o = n * 4 * 2 + m * 2 * qrcode.width * 4;
                qrcode.imagedata.data[o] = p.bits._ds(n, m) ? 0 : 0;
                qrcode.imagedata.data[o + 1] = p.bits._ds(n, m) ? 0 : 0;
                qrcode.imagedata.data[o + 2] = p.bits._ds(n, m) ? 255 : 0;
            }
        }
        q.putImageData(qrcode.imagedata, 0, 0);
    }
    var k = Decoder.decode(p.bits);
    var g = k.DataByte;
    var l = "";
    for (var f = 0; f < g.length; f++) {
        for (var e = 0; e < g[f].length; e++) {
            l += String.fromCharCode(g[f][e]);
        }
    }
    var d = new Date().getTime();
    var b = d - a;
    return qrcode.decode_utf8(l);
};
qrcode.getPixel = function (b, d) {
    if (qrcode.width < b) {
        throw "point error";
    }
    if (qrcode.height < d) {
        throw "point error";
    }
    var a = b * 4 + d * qrcode.width * 4;
    var c =
        (qrcode.imagedata.data[a] * 33 +
            qrcode.imagedata.data[a + 1] * 34 +
            qrcode.imagedata.data[a + 2] * 33) /
        100;
    return c;
};
qrcode.binarize = function (d) {
    var c = new Array(qrcode.width * qrcode.height);
    for (var e = 0; e < qrcode.height; e++) {
        for (var b = 0; b < qrcode.width; b++) {
            var a = qrcode.getPixel(b, e);
            c[b + e * qrcode.width] = a <= d ? true : false;
        }
    }
    return c;
};
qrcode._em = function (d) {
    var c = 4;
    var k = Math.floor(qrcode.width / c);
    var j = Math.floor(qrcode.height / c);
    var f = new Array(c);
    for (var g = 0; g < c; g++) {
        f[g] = new Array(c);
        for (var e = 0; e < c; e++) {
            f[g][e] = new Array(0, 0);
        }
    }
    for (var o = 0; o < c; o++) {
        for (var a = 0; a < c; a++) {
            f[a][o][0] = 255;
            for (var l = 0; l < j; l++) {
                for (var n = 0; n < k; n++) {
                    var h = d[k * a + n + (j * o + l) * qrcode.width];
                    if (h < f[a][o][0]) {
                        f[a][o][0] = h;
                    }
                    if (h > f[a][o][1]) {
                        f[a][o][1] = h;
                    }
                }
            }
        }
    }
    var m = new Array(c);
    for (var b = 0; b < c; b++) {
        m[b] = new Array(c);
    }
    for (var o = 0; o < c; o++) {
        for (var a = 0; a < c; a++) {
            m[a][o] = Math.floor((f[a][o][0] + f[a][o][1]) / 2);
        }
    }
    return m;
};
qrcode.grayScaleToBitmap = function (f) {
    var k = qrcode._em(f);
    var b = k.length;
    var e = Math.floor(qrcode.width / b);
    var d = Math.floor(qrcode.height / b);
    var h = new ArrayBuffer(qrcode.width * qrcode.height);
    var c = new Uint8Array(h);
    for (var j = 0; j < b; j++) {
        for (var a = 0; a < b; a++) {
            for (var g = 0; g < d; g++) {
                for (var i = 0; i < e; i++) {
                    c[e * a + i + (d * j + g) * qrcode.width] =
                        f[e * a + i + (d * j + g) * qrcode.width] < k[a][j] ? true : false;
                }
            }
        }
    }
    return c;
};
qrcode.grayscale = function () {
    var e = new ArrayBuffer(qrcode.width * qrcode.height);
    var c = new Uint8Array(e);
    for (var d = 0; d < qrcode.height; d++) {
        for (var b = 0; b < qrcode.width; b++) {
            var a = qrcode.getPixel(b, d);
            c[b + d * qrcode.width] = a;
        }
    }
    return c;
};

function _ew(a, b) {
    if (a >= 0) {
        return a >> b;
    } else {
        return (a >> b) + (2 << ~b);
    }
}
var _gf = 3;
var _eh = 57;
var _el = 8;
var _eg = 2;
qrcode._er = function (c) {
    function b(m, k) {
        var n = m.X - k.X;
        var l = m.Y - k.Y;
        return Math.sqrt(n * n + l * l);
    }

    function d(k, o, n) {
        var m = o.x;
        var l = o.y;
        return (n.x - m) * (k.y - l) - (n.y - l) * (k.x - m);
    }
    var i = b(c[0], c[1]);
    var f = b(c[1], c[2]);
    var e = b(c[0], c[2]);
    var a, j, h;
    if (f >= i && f >= e) {
        j = c[0];
        a = c[1];
        h = c[2];
    } else {
        if (e >= f && e >= i) {
            j = c[1];
            a = c[0];
            h = c[2];
        } else {
            j = c[2];
            a = c[0];
            h = c[1];
        }
    }
    if (d(a, j, h) < 0) {
        var g = a;
        a = h;
        h = g;
    }
    c[0] = a;
    c[1] = j;
    c[2] = h;
};

function _cz(c, a, b) {
    this.x = c;
    this.y = a;
    this.count = 1;
    this._aj = b;
    this.__defineGetter__("_ei", function () {
        return this._aj;
    });
    this.__defineGetter__("Count", function () {
        return this.count;
    });
    this.__defineGetter__("X", function () {
        return this.x;
    });
    this.__defineGetter__("Y", function () {
        return this.y;
    });
    this._ek = function () {
        this.count++;
    };
    this._ev = function (f, e, d) {
        if (Math.abs(e - this.y) <= f && Math.abs(d - this.x) <= f) {
            var g = Math.abs(f - this._aj);
            return g <= 1 || g / this._aj <= 1;
        }
        return false;
    };
}

function _es(a) {
    this._go = a[0];
    this._gu = a[1];
    this._gr = a[2];
    this.__defineGetter__("_gp", function () {
        return this._go;
    });
    this.__defineGetter__("_gq", function () {
        return this._gu;
    });
    this.__defineGetter__("_gs", function () {
        return this._gr;
    });
}

function _cc() {
    this.image = null;
    this._cv = [];
    this._ge = false;
    this._al = new Array(0, 0, 0, 0, 0);
    this._am = null;
    this.__defineGetter__("_da", function () {
        this._al[0] = 0;
        this._al[1] = 0;
        this._al[2] = 0;
        this._al[3] = 0;
        this._al[4] = 0;
        return this._al;
    });
    this._ao = function (f) {
        var b = 0;
        for (var d = 0; d < 5; d++) {
            var e = f[d];
            if (e == 0) {
                return false;
            }
            b += e;
        }
        if (b < 7) {
            return false;
        }
        var c = Math.floor((b << _el) / 7);
        var a = Math.floor(c / 2);
        return (
            Math.abs(c - (f[0] << _el)) < a &&
            Math.abs(c - (f[1] << _el)) < a &&
            Math.abs(3 * c - (f[2] << _el)) < 3 * a &&
            Math.abs(c - (f[3] << _el)) < a &&
            Math.abs(c - (f[4] << _el)) < a
        );
    };
    this._an = function (b, a) {
        return a - b[4] - b[3] - b[2] / 2;
    };
    this._ap = function (a, j, d, g) {
        var c = this.image;
        var h = qrcode.height;
        var b = this._da;
        var f = a;
        while (f >= 0 && c[j + f * qrcode.width]) {
            b[2]++;
            f--;
        }
        if (f < 0) {
            return NaN;
        }
        while (f >= 0 && !c[j + f * qrcode.width] && b[1] <= d) {
            b[1]++;
            f--;
        }
        if (f < 0 || b[1] > d) {
            return NaN;
        }
        while (f >= 0 && c[j + f * qrcode.width] && b[0] <= d) {
            b[0]++;
            f--;
        }
        if (b[0] > d) {
            return NaN;
        }
        f = a + 1;
        while (f < h && c[j + f * qrcode.width]) {
            b[2]++;
            f++;
        }
        if (f == h) {
            return NaN;
        }
        while (f < h && !c[j + f * qrcode.width] && b[3] < d) {
            b[3]++;
            f++;
        }
        if (f == h || b[3] >= d) {
            return NaN;
        }
        while (f < h && c[j + f * qrcode.width] && b[4] < d) {
            b[4]++;
            f++;
        }
        if (b[4] >= d) {
            return NaN;
        }
        var e = b[0] + b[1] + b[2] + b[3] + b[4];
        if (5 * Math.abs(e - g) >= 2 * g) {
            return NaN;
        }
        return this._ao(b) ? this._an(b, f) : NaN;
    };
    this._ej = function (b, a, e, h) {
        var d = this.image;
        var i = qrcode.width;
        var c = this._da;
        var g = b;
        while (g >= 0 && d[g + a * qrcode.width]) {
            c[2]++;
            g--;
        }
        if (g < 0) {
            return NaN;
        }
        while (g >= 0 && !d[g + a * qrcode.width] && c[1] <= e) {
            c[1]++;
            g--;
        }
        if (g < 0 || c[1] > e) {
            return NaN;
        }
        while (g >= 0 && d[g + a * qrcode.width] && c[0] <= e) {
            c[0]++;
            g--;
        }
        if (c[0] > e) {
            return NaN;
        }
        g = b + 1;
        while (g < i && d[g + a * qrcode.width]) {
            c[2]++;
            g++;
        }
        if (g == i) {
            return NaN;
        }
        while (g < i && !d[g + a * qrcode.width] && c[3] < e) {
            c[3]++;
            g++;
        }
        if (g == i || c[3] >= e) {
            return NaN;
        }
        while (g < i && d[g + a * qrcode.width] && c[4] < e) {
            c[4]++;
            g++;
        }
        if (c[4] >= e) {
            return NaN;
        }
        var f = c[0] + c[1] + c[2] + c[3] + c[4];
        if (5 * Math.abs(f - h) >= h) {
            return NaN;
        }
        return this._ao(c) ? this._an(c, g) : NaN;
    };
    this._cu = function (c, f, e) {
        var d = c[0] + c[1] + c[2] + c[3] + c[4];
        var n = this._an(c, e);
        var b = this._ap(f, Math.floor(n), c[2], d);
        if (!isNaN(b)) {
            n = this._ej(Math.floor(n), Math.floor(b), c[2], d);
            if (!isNaN(n)) {
                var l = d / 7;
                var m = false;
                var h = this._cv.length;
                for (var g = 0; g < h; g++) {
                    var a = this._cv[g];
                    if (a._ev(l, b, n)) {
                        a._ek();
                        m = true;
                        break;
                    }
                }
                if (!m) {
                    var k = new _cz(n, b, l);
                    this._cv.push(k);
                    if (this._am != null) {
                        this._am._ep(k);
                    }
                }
                return true;
            }
        }
        return false;
    };
    this._ee = function () {
        var h = this._cv.length;
        if (h < 3) {
            throw "Couldn't find enough finder patterns (found " + h + ")";
        }
        if (h > 3) {
            var b = 0;
            var j = 0;
            for (var d = 0; d < h; d++) {
                var g = this._cv[d]._ei;
                b += g;
                j += g * g;
            }
            var a = b / h;
            this._cv.sort(function (m, l) {
                var k = Math.abs(l._ei - a);
                var i = Math.abs(m._ei - a);
                if (k < i) {
                    return -1;
                } else {
                    if (k == i) {
                        return 0;
                    } else {
                        return 1;
                    }
                }
            });
            var e = Math.sqrt(j / h - a * a);
            var c = Math.max(0.2 * a, e);
            for (var d = this._cv.length - 1; d >= 0; d--) {
                var f = this._cv[d];
                if (Math.abs(f._ei - a) > c) {
                    this._cv.splice(d, 1);
                }
            }
        }
        if (this._cv.length > 3) {
            this._cv.sort(function (k, i) {
                if (k.count > i.count) {
                    return -1;
                }
                if (k.count < i.count) {
                    return 1;
                }
                return 0;
            });
        }
        return new Array(this._cv[0], this._cv[1], this._cv[2]);
    };
    this._eq = function () {
        var b = this._cv.length;
        if (b <= 1) {
            return 0;
        }
        var c = null;
        for (var d = 0; d < b; d++) {
            var a = this._cv[d];
            if (a.Count >= _eg) {
                if (c == null) {
                    c = a;
                } else {
                    this._ge = true;
                    return Math.floor((Math.abs(c.X - a.X) - Math.abs(c.Y - a.Y)) / 2);
                }
            }
        }
        return 0;
    };
    this._cx = function () {
        var g = 0;
        var c = 0;
        var a = this._cv.length;
        for (var d = 0; d < a; d++) {
            var f = this._cv[d];
            if (f.Count >= _eg) {
                g++;
                c += f._ei;
            }
        }
        if (g < 3) {
            return false;
        }
        var e = c / a;
        var b = 0;
        for (var d = 0; d < a; d++) {
            f = this._cv[d];
            b += Math.abs(f._ei - e);
        }
        return b <= 0.05 * c;
    };
    this._ce = function (e) {
        var o = false;
        this.image = e;
        var n = qrcode.height;
        var k = qrcode.width;
        var a = Math.floor((3 * n) / (4 * _eh));
        if (a < _gf || o) {
            a = _gf;
        }
        var g = false;
        var d = new Array(5);
        for (var h = a - 1; h < n && !g; h += a) {
            d[0] = 0;
            d[1] = 0;
            d[2] = 0;
            d[3] = 0;
            d[4] = 0;
            var b = 0;
            for (var f = 0; f < k; f++) {
                if (e[f + h * qrcode.width]) {
                    if ((b & 1) == 1) {
                        b++;
                    }
                    d[b]++;
                } else {
                    if ((b & 1) == 0) {
                        if (b == 4) {
                            if (this._ao(d)) {
                                var c = this._cu(d, h, f);
                                if (c) {
                                    a = 2;
                                    if (this._ge) {
                                        g = this._cx();
                                    } else {
                                        var m = this._eq();
                                        if (m > d[2]) {
                                            h += m - d[2] - a;
                                            f = k - 1;
                                        }
                                    }
                                } else {
                                    do {
                                        f++;
                                    } while (f < k && !e[f + h * qrcode.width]);
                                    f--;
                                }
                                b = 0;
                                d[0] = 0;
                                d[1] = 0;
                                d[2] = 0;
                                d[3] = 0;
                                d[4] = 0;
                            } else {
                                d[0] = d[2];
                                d[1] = d[3];
                                d[2] = d[4];
                                d[3] = 1;
                                d[4] = 0;
                                b = 3;
                            }
                        } else {
                            d[++b]++;
                        }
                    } else {
                        d[b]++;
                    }
                }
            }
            if (this._ao(d)) {
                var c = this._cu(d, h, k);
                if (c) {
                    a = d[0];
                    if (this._ge) {
                        g = _cx();
                    }
                }
            }
        }
        var l = this._ee();
        qrcode._er(l);
        return new _es(l);
    };
}

function _ai(c, a, b) {
    this.x = c;
    this.y = a;
    this.count = 1;
    this._aj = b;
    this.__defineGetter__("_ei", function () {
        return this._aj;
    });
    this.__defineGetter__("Count", function () {
        return this.count;
    });
    this.__defineGetter__("X", function () {
        return Math.floor(this.x);
    });
    this.__defineGetter__("Y", function () {
        return Math.floor(this.y);
    });
    this._ek = function () {
        this.count++;
    };
    this._ev = function (f, e, d) {
        if (Math.abs(e - this.y) <= f && Math.abs(d - this.x) <= f) {
            var g = Math.abs(f - this._aj);
            return g <= 1 || g / this._aj <= 1;
        }
        return false;
    };
}

function _ak(g, c, b, f, a, e, d) {
    this.image = g;
    this._cv = new Array();
    this.startX = c;
    this.startY = b;
    this.width = f;
    this.height = a;
    this._ef = e;
    this._al = new Array(0, 0, 0);
    this._am = d;
    this._an = function (i, h) {
        return h - i[2] - i[1] / 2;
    };
    this._ao = function (l) {
        var k = this._ef;
        var h = k / 2;
        for (var j = 0; j < 3; j++) {
            if (Math.abs(k - l[j]) >= h) {
                return false;
            }
        }
        return true;
    };
    this._ap = function (h, q, l, o) {
        var k = this.image;
        var p = qrcode.height;
        var j = this._al;
        j[0] = 0;
        j[1] = 0;
        j[2] = 0;
        var n = h;
        while (n >= 0 && k[q + n * qrcode.width] && j[1] <= l) {
            j[1]++;
            n--;
        }
        if (n < 0 || j[1] > l) {
            return NaN;
        }
        while (n >= 0 && !k[q + n * qrcode.width] && j[0] <= l) {
            j[0]++;
            n--;
        }
        if (j[0] > l) {
            return NaN;
        }
        n = h + 1;
        while (n < p && k[q + n * qrcode.width] && j[1] <= l) {
            j[1]++;
            n++;
        }
        if (n == p || j[1] > l) {
            return NaN;
        }
        while (n < p && !k[q + n * qrcode.width] && j[2] <= l) {
            j[2]++;
            n++;
        }
        if (j[2] > l) {
            return NaN;
        }
        var m = j[0] + j[1] + j[2];
        if (5 * Math.abs(m - o) >= 2 * o) {
            return NaN;
        }
        return this._ao(j) ? this._an(j, n) : NaN;
    };
    this._cu = function (l, o, n) {
        var m = l[0] + l[1] + l[2];
        var t = this._an(l, n);
        var k = this._ap(o, Math.floor(t), 2 * l[1], m);
        if (!isNaN(k)) {
            var s = (l[0] + l[1] + l[2]) / 3;
            var q = this._cv.length;
            for (var p = 0; p < q; p++) {
                var h = this._cv[p];
                if (h._ev(s, k, t)) {
                    return new _ai(t, k, s);
                }
            }
            var r = new _ai(t, k, s);
            this._cv.push(r);
            if (this._am != null) {
                this._am._ep(r);
            }
        }
        return null;
    };
    this.find = function () {
        var p = this.startX;
        var s = this.height;
        var q = p + f;
        var r = b + (s >> 1);
        var m = new Array(0, 0, 0);
        for (var k = 0; k < s; k++) {
            var o = r + ((k & 1) == 0 ? (k + 1) >> 1 : -((k + 1) >> 1));
            m[0] = 0;
            m[1] = 0;
            m[2] = 0;
            var n = p;
            while (n < q && !g[n + qrcode.width * o]) {
                n++;
            }
            var h = 0;
            while (n < q) {
                if (g[n + o * qrcode.width]) {
                    if (h == 1) {
                        m[h]++;
                    } else {
                        if (h == 2) {
                            if (this._ao(m)) {
                                var l = this._cu(m, o, n);
                                if (l != null) {
                                    return l;
                                }
                            }
                            m[0] = m[2];
                            m[1] = 1;
                            m[2] = 0;
                            h = 1;
                        } else {
                            m[++h]++;
                        }
                    }
                } else {
                    if (h == 1) {
                        h++;
                    }
                    m[h]++;
                }
                n++;
            }
            if (this._ao(m)) {
                var l = this._cu(m, o, q);
                if (l != null) {
                    return l;
                }
            }
        }
        if (!(this._cv.length == 0)) {
            return this._cv[0];
        }
        throw "Couldn't find enough alignment patterns";
    };
}

function QRCodeDataBlockReader(c, a, b) {
    this._ed = 0;
    this._cw = 7;
    this.dataLength = 0;
    this.blocks = c;
    this._en = b;
    if (a <= 9) {
        this.dataLengthMode = 0;
    } else {
        if (a >= 10 && a <= 26) {
            this.dataLengthMode = 1;
        } else {
            if (a >= 27 && a <= 40) {
                this.dataLengthMode = 2;
            }
        }
    }
    this._gd = function (f) {
        var k = 0;
        if (f < this._cw + 1) {
            var m = 0;
            for (var e = 0; e < f; e++) {
                m += 1 << e;
            }
            m <<= this._cw - f + 1;
            k = (this.blocks[this._ed] & m) >> (this._cw - f + 1);
            this._cw -= f;
            return k;
        } else {
            if (f < this._cw + 1 + 8) {
                var j = 0;
                for (var e = 0; e < this._cw + 1; e++) {
                    j += 1 << e;
                }
                k = (this.blocks[this._ed] & j) << (f - (this._cw + 1));
                this._ed++;
                k += this.blocks[this._ed] >> (8 - (f - (this._cw + 1)));
                this._cw = this._cw - (f % 8);
                if (this._cw < 0) {
                    this._cw = 8 + this._cw;
                }
                return k;
            } else {
                if (f < this._cw + 1 + 16) {
                    var j = 0;
                    var h = 0;
                    for (var e = 0; e < this._cw + 1; e++) {
                        j += 1 << e;
                    }
                    var g = (this.blocks[this._ed] & j) << (f - (this._cw + 1));
                    this._ed++;
                    var d = this.blocks[this._ed] << (f - (this._cw + 1 + 8));
                    this._ed++;
                    for (var e = 0; e < f - (this._cw + 1 + 8); e++) {
                        h += 1 << e;
                    }
                    h <<= 8 - (f - (this._cw + 1 + 8));
                    var l = (this.blocks[this._ed] & h) >> (8 - (f - (this._cw + 1 + 8)));
                    k = g + d + l;
                    this._cw = this._cw - ((f - 8) % 8);
                    if (this._cw < 0) {
                        this._cw = 8 + this._cw;
                    }
                    return k;
                } else {
                    return 0;
                }
            }
        }
    };
    this.NextMode = function () {
        if (this._ed > this.blocks.length - this._en - 2) {
            return 0;
        } else {
            return this._gd(4);
        }
    };
    this.getDataLength = function (d) {
        var e = 0;
        while (true) {
            if (d >> e == 1) {
                break;
            }
            e++;
        }
        return this._gd(qrcode._eo[this.dataLengthMode][e]);
    };
    this.getRomanAndFigureString = function (h) {
        var f = h;
        var g = 0;
        var j = "";
        var d = new Array(
            "0",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "A",
            "B",
            "C",
            "D",
            "E",
            "F",
            "G",
            "H",
            "I",
            "J",
            "K",
            "L",
            "M",
            "N",
            "O",
            "P",
            "Q",
            "R",
            "S",
            "T",
            "U",
            "V",
            "W",
            "X",
            "Y",
            "Z",
            " ",
            "$",
            "%",
            "*",
            "+",
            "-",
            ".",
            "/",
            ":"
        );
        do {
            if (f > 1) {
                g = this._gd(11);
                var i = Math.floor(g / 45);
                var e = g % 45;
                j += d[i];
                j += d[e];
                f -= 2;
            } else {
                if (f == 1) {
                    g = this._gd(6);
                    j += d[g];
                    f -= 1;
                }
            }
        } while (f > 0);
        return j;
    };
    this.getFigureString = function (f) {
        var d = f;
        var e = 0;
        var g = "";
        do {
            if (d >= 3) {
                e = this._gd(10);
                if (e < 100) {
                    g += "0";
                }
                if (e < 10) {
                    g += "0";
                }
                d -= 3;
            } else {
                if (d == 2) {
                    e = this._gd(7);
                    if (e < 10) {
                        g += "0";
                    }
                    d -= 2;
                } else {
                    if (d == 1) {
                        e = this._gd(4);
                        d -= 1;
                    }
                }
            }
            g += e;
        } while (d > 0);
        return g;
    };
    this.get8bitByteArray = function (g) {
        var e = g;
        var f = 0;
        var d = new Array();
        do {
            f = this._gd(8);
            d.push(f);
            e--;
        } while (e > 0);
        return d;
    };
    this.getKanjiString = function (j) {
        var g = j;
        var i = 0;
        var h = "";
        do {
            i = _gd(13);
            var e = i % 192;
            var f = i / 192;
            var k = (f << 8) + e;
            var d = 0;
            if (k + 33088 <= 40956) {
                d = k + 33088;
            } else {
                d = k + 49472;
            }
            h += String.fromCharCode(d);
            g--;
        } while (g > 0);
        return h;
    };
    this.__defineGetter__("DataByte", function () {
        var h = new Array();
        var e = 1;
        var f = 2;
        var d = 4;
        var o = 8;
        do {
            var l = this.NextMode();
            if (l == 0) {
                if (h.length > 0) {
                    break;
                } else {
                    throw "Empty data block";
                }
            }
            if (l != e && l != f && l != d && l != o) {
                throw (
                    "Invalid mode: " +
                    l +
                    " in (block:" +
                    this._ed +
                    " bit:" +
                    this._cw +
                    ")"
                );
            }
            var g = this.getDataLength(l);
            if (g < 1) {
                throw "Invalid data length: " + g;
            }
            switch (l) {
                case e:
                    var m = this.getFigureString(g);
                    var k = new Array(m.length);
                    for (var i = 0; i < m.length; i++) {
                        k[i] = m.charCodeAt(i);
                    }
                    h.push(k);
                    break;
                case f:
                    var m = this.getRomanAndFigureString(g);
                    var k = new Array(m.length);
                    for (var i = 0; i < m.length; i++) {
                        k[i] = m.charCodeAt(i);
                    }
                    h.push(k);
                    break;
                case d:
                    var n = this.get8bitByteArray(g);
                    h.push(n);
                    break;
                case o:
                    var m = this.getKanjiString(g);
                    h.push(m);
                    break;
            }
        } while (true);
        return h;
    });
}
export default qrcode;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542
  • 543
  • 544
  • 545
  • 546
  • 547
  • 548
  • 549
  • 550
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • 562
  • 563
  • 564
  • 565
  • 566
  • 567
  • 568
  • 569
  • 570
  • 571
  • 572
  • 573
  • 574
  • 575
  • 576
  • 577
  • 578
  • 579
  • 580
  • 581
  • 582
  • 583
  • 584
  • 585
  • 586
  • 587
  • 588
  • 589
  • 590
  • 591
  • 592
  • 593
  • 594
  • 595
  • 596
  • 597
  • 598
  • 599
  • 600
  • 601
  • 602
  • 603
  • 604
  • 605
  • 606
  • 607
  • 608
  • 609
  • 610
  • 611
  • 612
  • 613
  • 614
  • 615
  • 616
  • 617
  • 618
  • 619
  • 620
  • 621
  • 622
  • 623
  • 624
  • 625
  • 626
  • 627
  • 628
  • 629
  • 630
  • 631
  • 632
  • 633
  • 634
  • 635
  • 636
  • 637
  • 638
  • 639
  • 640
  • 641
  • 642
  • 643
  • 644
  • 645
  • 646
  • 647
  • 648
  • 649
  • 650
  • 651
  • 652
  • 653
  • 654
  • 655
  • 656
  • 657
  • 658
  • 659
  • 660
  • 661
  • 662
  • 663
  • 664
  • 665
  • 666
  • 667
  • 668
  • 669
  • 670
  • 671
  • 672
  • 673
  • 674
  • 675
  • 676
  • 677
  • 678
  • 679
  • 680
  • 681
  • 682
  • 683
  • 684
  • 685
  • 686
  • 687
  • 688
  • 689
  • 690
  • 691
  • 692
  • 693
  • 694
  • 695
  • 696
  • 697
  • 698
  • 699
  • 700
  • 701
  • 702
  • 703
  • 704
  • 705
  • 706
  • 707
  • 708
  • 709
  • 710
  • 711
  • 712
  • 713
  • 714
  • 715
  • 716
  • 717
  • 718
  • 719
  • 720
  • 721
  • 722
  • 723
  • 724
  • 725
  • 726
  • 727
  • 728
  • 729
  • 730
  • 731
  • 732
  • 733
  • 734
  • 735
  • 736
  • 737
  • 738
  • 739
  • 740
  • 741
  • 742
  • 743
  • 744
  • 745
  • 746
  • 747
  • 748
  • 749
  • 750
  • 751
  • 752
  • 753
  • 754
  • 755
  • 756
  • 757
  • 758
  • 759
  • 760
  • 761
  • 762
  • 763
  • 764
  • 765
  • 766
  • 767
  • 768
  • 769
  • 770
  • 771
  • 772
  • 773
  • 774
  • 775
  • 776
  • 777
  • 778
  • 779
  • 780
  • 781
  • 782
  • 783
  • 784
  • 785
  • 786
  • 787
  • 788
  • 789
  • 790
  • 791
  • 792
  • 793
  • 794
  • 795
  • 796
  • 797
  • 798
  • 799
  • 800
  • 801
  • 802
  • 803
  • 804
  • 805
  • 806
  • 807
  • 808
  • 809
  • 810
  • 811
  • 812
  • 813
  • 814
  • 815
  • 816
  • 817
  • 818
  • 819
  • 820
  • 821
  • 822
  • 823
  • 824
  • 825
  • 826
  • 827
  • 828
  • 829
  • 830
  • 831
  • 832
  • 833
  • 834
  • 835
  • 836
  • 837
  • 838
  • 839
  • 840
  • 841
  • 842
  • 843
  • 844
  • 845
  • 846
  • 847
  • 848
  • 849
  • 850
  • 851
  • 852
  • 853
  • 854
  • 855
  • 856
  • 857
  • 858
  • 859
  • 860
  • 861
  • 862
  • 863
  • 864
  • 865
  • 866
  • 867
  • 868
  • 869
  • 870
  • 871
  • 872
  • 873
  • 874
  • 875
  • 876
  • 877
  • 878
  • 879
  • 880
  • 881
  • 882
  • 883
  • 884
  • 885
  • 886
  • 887
  • 888
  • 889
  • 890
  • 891
  • 892
  • 893
  • 894
  • 895
  • 896
  • 897
  • 898
  • 899
  • 900
  • 901
  • 902
  • 903
  • 904
  • 905
  • 906
  • 907
  • 908
  • 909
  • 910
  • 911
  • 912
  • 913
  • 914
  • 915
  • 916
  • 917
  • 918
  • 919
  • 920
  • 921
  • 922
  • 923
  • 924
  • 925
  • 926
  • 927
  • 928
  • 929
  • 930
  • 931
  • 932
  • 933
  • 934
  • 935
  • 936
  • 937
  • 938
  • 939
  • 940
  • 941
  • 942
  • 943
  • 944
  • 945
  • 946
  • 947
  • 948
  • 949
  • 950
  • 951
  • 952
  • 953
  • 954
  • 955
  • 956
  • 957
  • 958
  • 959
  • 960
  • 961
  • 962
  • 963
  • 964
  • 965
  • 966
  • 967
  • 968
  • 969
  • 970
  • 971
  • 972
  • 973
  • 974
  • 975
  • 976
  • 977
  • 978
  • 979
  • 980
  • 981
  • 982
  • 983
  • 984
  • 985
  • 986
  • 987
  • 988
  • 989
  • 990
  • 991
  • 992
  • 993
  • 994
  • 995
  • 996
  • 997
  • 998
  • 999
  • 1000
  • 1001
  • 1002
  • 1003
  • 1004
  • 1005
  • 1006
  • 1007
  • 1008
  • 1009
  • 1010
  • 1011
  • 1012
  • 1013
  • 1014
  • 1015
  • 1016
  • 1017
  • 1018
  • 1019
  • 1020
  • 1021
  • 1022
  • 1023
  • 1024
  • 1025
  • 1026
  • 1027
  • 1028
  • 1029
  • 1030
  • 1031
  • 1032
  • 1033
  • 1034
  • 1035
  • 1036
  • 1037
  • 1038
  • 1039
  • 1040
  • 1041
  • 1042
  • 1043
  • 1044
  • 1045
  • 1046
  • 1047
  • 1048
  • 1049
  • 1050
  • 1051
  • 1052
  • 1053
  • 1054
  • 1055
  • 1056
  • 1057
  • 1058
  • 1059
  • 1060
  • 1061
  • 1062
  • 1063
  • 1064
  • 1065
  • 1066
  • 1067
  • 1068
  • 1069
  • 1070
  • 1071
  • 1072
  • 1073
  • 1074
  • 1075
  • 1076
  • 1077
  • 1078
  • 1079
  • 1080
  • 1081
  • 1082
  • 1083
  • 1084
  • 1085
  • 1086
  • 1087
  • 1088
  • 1089
  • 1090
  • 1091
  • 1092
  • 1093
  • 1094
  • 1095
  • 1096
  • 1097
  • 1098
  • 1099
  • 1100
  • 1101
  • 1102
  • 1103
  • 1104
  • 1105
  • 1106
  • 1107
  • 1108
  • 1109
  • 1110
  • 1111
  • 1112
  • 1113
  • 1114
  • 1115
  • 1116
  • 1117
  • 1118
  • 1119
  • 1120
  • 1121
  • 1122
  • 1123
  • 1124
  • 1125
  • 1126
  • 1127
  • 1128
  • 1129
  • 1130
  • 1131
  • 1132
  • 1133
  • 1134
  • 1135
  • 1136
  • 1137
  • 1138
  • 1139
  • 1140
  • 1141
  • 1142
  • 1143
  • 1144
  • 1145
  • 1146
  • 1147
  • 1148
  • 1149
  • 1150
  • 1151
  • 1152
  • 1153
  • 1154
  • 1155
  • 1156
  • 1157
  • 1158
  • 1159
  • 1160
  • 1161
  • 1162
  • 1163
  • 1164
  • 1165
  • 1166
  • 1167
  • 1168
  • 1169
  • 1170
  • 1171
  • 1172
  • 1173
  • 1174
  • 1175
  • 1176
  • 1177
  • 1178
  • 1179
  • 1180
  • 1181
  • 1182
  • 1183
  • 1184
  • 1185
  • 1186
  • 1187
  • 1188
  • 1189
  • 1190
  • 1191
  • 1192
  • 1193
  • 1194
  • 1195
  • 1196
  • 1197
  • 1198
  • 1199
  • 1200
  • 1201
  • 1202
  • 1203
  • 1204
  • 1205
  • 1206
  • 1207
  • 1208
  • 1209
  • 1210
  • 1211
  • 1212
  • 1213
  • 1214
  • 1215
  • 1216
  • 1217
  • 1218
  • 1219
  • 1220
  • 1221
  • 1222
  • 1223
  • 1224
  • 1225
  • 1226
  • 1227
  • 1228
  • 1229
  • 1230
  • 1231
  • 1232
  • 1233
  • 1234
  • 1235
  • 1236
  • 1237
  • 1238
  • 1239
  • 1240
  • 1241
  • 1242
  • 1243
  • 1244
  • 1245
  • 1246
  • 1247
  • 1248
  • 1249
  • 1250
  • 1251
  • 1252
  • 1253
  • 1254
  • 1255
  • 1256
  • 1257
  • 1258
  • 1259
  • 1260
  • 1261
  • 1262
  • 1263
  • 1264
  • 1265
  • 1266
  • 1267
  • 1268
  • 1269
  • 1270
  • 1271
  • 1272
  • 1273
  • 1274
  • 1275
  • 1276
  • 1277
  • 1278
  • 1279
  • 1280
  • 1281
  • 1282
  • 1283
  • 1284
  • 1285
  • 1286
  • 1287
  • 1288
  • 1289
  • 1290
  • 1291
  • 1292
  • 1293
  • 1294
  • 1295
  • 1296
  • 1297
  • 1298
  • 1299
  • 1300
  • 1301
  • 1302
  • 1303
  • 1304
  • 1305
  • 1306
  • 1307
  • 1308
  • 1309
  • 1310
  • 1311
  • 1312
  • 1313
  • 1314
  • 1315
  • 1316
  • 1317
  • 1318
  • 1319
  • 1320
  • 1321
  • 1322
  • 1323
  • 1324
  • 1325
  • 1326
  • 1327
  • 1328
  • 1329
  • 1330
  • 1331
  • 1332
  • 1333
  • 1334
  • 1335
  • 1336
  • 1337
  • 1338
  • 1339
  • 1340
  • 1341
  • 1342
  • 1343
  • 1344
  • 1345
  • 1346
  • 1347
  • 1348
  • 1349
  • 1350
  • 1351
  • 1352
  • 1353
  • 1354
  • 1355
  • 1356
  • 1357
  • 1358
  • 1359
  • 1360
  • 1361
  • 1362
  • 1363
  • 1364
  • 1365
  • 1366
  • 1367
  • 1368
  • 1369
  • 1370
  • 1371
  • 1372
  • 1373
  • 1374
  • 1375
  • 1376
  • 1377
  • 1378
  • 1379
  • 1380
  • 1381
  • 1382
  • 1383
  • 1384
  • 1385
  • 1386
  • 1387
  • 1388
  • 1389
  • 1390
  • 1391
  • 1392
  • 1393
  • 1394
  • 1395
  • 1396
  • 1397
  • 1398
  • 1399
  • 1400
  • 1401
  • 1402
  • 1403
  • 1404
  • 1405
  • 1406
  • 1407
  • 1408
  • 1409
  • 1410
  • 1411
  • 1412
  • 1413
  • 1414
  • 1415
  • 1416
  • 1417
  • 1418
  • 1419
  • 1420
  • 1421
  • 1422
  • 1423
  • 1424
  • 1425
  • 1426
  • 1427
  • 1428
  • 1429
  • 1430
  • 1431
  • 1432
  • 1433
  • 1434
  • 1435
  • 1436
  • 1437
  • 1438
  • 1439
  • 1440
  • 1441
  • 1442
  • 1443
  • 1444
  • 1445
  • 1446
  • 1447
  • 1448
  • 1449
  • 1450
  • 1451
  • 1452
  • 1453
  • 1454
  • 1455
  • 1456
  • 1457
  • 1458
  • 1459
  • 1460
  • 1461
  • 1462
  • 1463
  • 1464
  • 1465
  • 1466
  • 1467
  • 1468
  • 1469
  • 1470
  • 1471
  • 1472
  • 1473
  • 1474
  • 1475
  • 1476
  • 1477
  • 1478
  • 1479
  • 1480
  • 1481
  • 1482
  • 1483
  • 1484
  • 1485
  • 1486
  • 1487
  • 1488
  • 1489
  • 1490
  • 1491
  • 1492
  • 1493
  • 1494
  • 1495
  • 1496
  • 1497
  • 1498
  • 1499
  • 1500
  • 1501
  • 1502
  • 1503
  • 1504
  • 1505
  • 1506
  • 1507
  • 1508
  • 1509
  • 1510
  • 1511
  • 1512
  • 1513
  • 1514
  • 1515
  • 1516
  • 1517
  • 1518
  • 1519
  • 1520
  • 1521
  • 1522
  • 1523
  • 1524
  • 1525
  • 1526
  • 1527
  • 1528
  • 1529
  • 1530
  • 1531
  • 1532
  • 1533
  • 1534
  • 1535
  • 1536
  • 1537
  • 1538
  • 1539
  • 1540
  • 1541
  • 1542
  • 1543
  • 1544
  • 1545
  • 1546
  • 1547
  • 1548
  • 1549
  • 1550
  • 1551
  • 1552
  • 1553
  • 1554
  • 1555
  • 1556
  • 1557
  • 1558
  • 1559
  • 1560
  • 1561
  • 1562
  • 1563
  • 1564
  • 1565
  • 1566
  • 1567
  • 1568
  • 1569
  • 1570
  • 1571
  • 1572
  • 1573
  • 1574
  • 1575
  • 1576
  • 1577
  • 1578
  • 1579
  • 1580
  • 1581
  • 1582
  • 1583
  • 1584
  • 1585
  • 1586
  • 1587
  • 1588
  • 1589
  • 1590
  • 1591
  • 1592
  • 1593
  • 1594
  • 1595
  • 1596
  • 1597
  • 1598
  • 1599
  • 1600
  • 1601
  • 1602
  • 1603
  • 1604
  • 1605
  • 1606
  • 1607
  • 1608
  • 1609
  • 1610
  • 1611
  • 1612
  • 1613
  • 1614
  • 1615
  • 1616
  • 1617
  • 1618
  • 1619
  • 1620
  • 1621
  • 1622
  • 1623
  • 1624
  • 1625
  • 1626
  • 1627
  • 1628
  • 1629
  • 1630
  • 1631
  • 1632
  • 1633
  • 1634
  • 1635
  • 1636
  • 1637
  • 1638
  • 1639
  • 1640
  • 1641
  • 1642
  • 1643
  • 1644
  • 1645
  • 1646
  • 1647
  • 1648
  • 1649
  • 1650
  • 1651
  • 1652
  • 1653
  • 1654
  • 1655
  • 1656
  • 1657
  • 1658
  • 1659
  • 1660
  • 1661
  • 1662
  • 1663
  • 1664
  • 1665
  • 1666
  • 1667
  • 1668
  • 1669
  • 1670
  • 1671
  • 1672
  • 1673
  • 1674
  • 1675
  • 1676
  • 1677
  • 1678
  • 1679
  • 1680
  • 1681
  • 1682
  • 1683
  • 1684
  • 1685
  • 1686
  • 1687
  • 1688
  • 1689
  • 1690
  • 1691
  • 1692
  • 1693
  • 1694
  • 1695
  • 1696
  • 1697
  • 1698
  • 1699
  • 1700
  • 1701
  • 1702
  • 1703
  • 1704
  • 1705
  • 1706
  • 1707
  • 1708
  • 1709
  • 1710
  • 1711
  • 1712
  • 1713
  • 1714
  • 1715
  • 1716
  • 1717
  • 1718
  • 1719
  • 1720
  • 1721
  • 1722
  • 1723
  • 1724
  • 1725
  • 1726
  • 1727
  • 1728
  • 1729
  • 1730
  • 1731
  • 1732
  • 1733
  • 1734
  • 1735
  • 1736
  • 1737
  • 1738
  • 1739
  • 1740
  • 1741
  • 1742
  • 1743
  • 1744
  • 1745
  • 1746
  • 1747
  • 1748
  • 1749
  • 1750
  • 1751
  • 1752
  • 1753
  • 1754
  • 1755
  • 1756
  • 1757
  • 1758
  • 1759
  • 1760
  • 1761
  • 1762
  • 1763
  • 1764
  • 1765
  • 1766
  • 1767
  • 1768
  • 1769
  • 1770
  • 1771
  • 1772
  • 1773
  • 1774
  • 1775
  • 1776
  • 1777
  • 1778
  • 1779
  • 1780
  • 1781
  • 1782
  • 1783
  • 1784
  • 1785
  • 1786
  • 1787
  • 1788
  • 1789
  • 1790
  • 1791
  • 1792
  • 1793
  • 1794
  • 1795
  • 1796
  • 1797
  • 1798
  • 1799
  • 1800
  • 1801
  • 1802
  • 1803
  • 1804
  • 1805
  • 1806
  • 1807
  • 1808
  • 1809
  • 1810
  • 1811
  • 1812
  • 1813
  • 1814
  • 1815
  • 1816
  • 1817
  • 1818
  • 1819
  • 1820
  • 1821
  • 1822
  • 1823
  • 1824
  • 1825
  • 1826
  • 1827
  • 1828
  • 1829
  • 1830
  • 1831
  • 1832
  • 1833
  • 1834
  • 1835
  • 1836
  • 1837
  • 1838
  • 1839
  • 1840
  • 1841
  • 1842
  • 1843
  • 1844
  • 1845
  • 1846
  • 1847
  • 1848
  • 1849
  • 1850
  • 1851
  • 1852
  • 1853
  • 1854
  • 1855
  • 1856
  • 1857
  • 1858
  • 1859
  • 1860
  • 1861
  • 1862
  • 1863
  • 1864
  • 1865
  • 1866
  • 1867
  • 1868
  • 1869
  • 1870
  • 1871
  • 1872
  • 1873
  • 1874
  • 1875
  • 1876
  • 1877
  • 1878
  • 1879
  • 1880
  • 1881
  • 1882
  • 1883
  • 1884
  • 1885
  • 1886
  • 1887
  • 1888
  • 1889
  • 1890
  • 1891
  • 1892
  • 1893
  • 1894
  • 1895
  • 1896
  • 1897
  • 1898
  • 1899
  • 1900
  • 1901
  • 1902
  • 1903
  • 1904
  • 1905
  • 1906
  • 1907
  • 1908
  • 1909
  • 1910
  • 1911
  • 1912
  • 1913
  • 1914
  • 1915
  • 1916
  • 1917
  • 1918
  • 1919
  • 1920
  • 1921
  • 1922
  • 1923
  • 1924
  • 1925
  • 1926
  • 1927
  • 1928
  • 1929
  • 1930
  • 1931
  • 1932
  • 1933
  • 1934
  • 1935
  • 1936
  • 1937
  • 1938
  • 1939
  • 1940
  • 1941
  • 1942
  • 1943
  • 1944
  • 1945
  • 1946
  • 1947
  • 1948
  • 1949
  • 1950
  • 1951
  • 1952
  • 1953
  • 1954
  • 1955
  • 1956
  • 1957
  • 1958
  • 1959
  • 1960
  • 1961
  • 1962
  • 1963
  • 1964
  • 1965
  • 1966
  • 1967
  • 1968
  • 1969
  • 1970
  • 1971
  • 1972
  • 1973
  • 1974
  • 1975
  • 1976
  • 1977
  • 1978
  • 1979
  • 1980
  • 1981
  • 1982
  • 1983
  • 1984
  • 1985
  • 1986
  • 1987
  • 1988
  • 1989
  • 1990
  • 1991
  • 1992
  • 1993
  • 1994
  • 1995
  • 1996
  • 1997
  • 1998
  • 1999
  • 2000
  • 2001
  • 2002
  • 2003
  • 2004
  • 2005
  • 2006
  • 2007
  • 2008
  • 2009
  • 2010
  • 2011
  • 2012
  • 2013
  • 2014
  • 2015
  • 2016
  • 2017
  • 2018
  • 2019
  • 2020
  • 2021
  • 2022
  • 2023
  • 2024
  • 2025
  • 2026
  • 2027
  • 2028
  • 2029
  • 2030
  • 2031
  • 2032
  • 2033
  • 2034
  • 2035
  • 2036
  • 2037
  • 2038
  • 2039
  • 2040
  • 2041
  • 2042
  • 2043
  • 2044
  • 2045
  • 2046
  • 2047
  • 2048
  • 2049
  • 2050
  • 2051
  • 2052
  • 2053
  • 2054
  • 2055
  • 2056
  • 2057
  • 2058
  • 2059
  • 2060
  • 2061
  • 2062
  • 2063
  • 2064
  • 2065
  • 2066
  • 2067
  • 2068
  • 2069
  • 2070
  • 2071
  • 2072
  • 2073
  • 2074
  • 2075
  • 2076
  • 2077
  • 2078
  • 2079
  • 2080
  • 2081
  • 2082
  • 2083
  • 2084
  • 2085
  • 2086
  • 2087
  • 2088
  • 2089
  • 2090
  • 2091
  • 2092
  • 2093
  • 2094
  • 2095
  • 2096
  • 2097
  • 2098
  • 2099
  • 2100
  • 2101
  • 2102
  • 2103
  • 2104
  • 2105
  • 2106
  • 2107
  • 2108
  • 2109
  • 2110
  • 2111
  • 2112
  • 2113
  • 2114
  • 2115
  • 2116
  • 2117
  • 2118
  • 2119
  • 2120
  • 2121
  • 2122
  • 2123
  • 2124
  • 2125
  • 2126
  • 2127
  • 2128
  • 2129
  • 2130
  • 2131
  • 2132
  • 2133
  • 2134
  • 2135
  • 2136
  • 2137
  • 2138
  • 2139
  • 2140
  • 2141
  • 2142
  • 2143
  • 2144
  • 2145
  • 2146
  • 2147
  • 2148
  • 2149
  • 2150
  • 2151
  • 2152
  • 2153
  • 2154
  • 2155
  • 2156
  • 2157
  • 2158
  • 2159
  • 2160
  • 2161
  • 2162
  • 2163
  • 2164
  • 2165
  • 2166
  • 2167
  • 2168
  • 2169
  • 2170
  • 2171
  • 2172
  • 2173
  • 2174
  • 2175
  • 2176
  • 2177
  • 2178
  • 2179
  • 2180
  • 2181
  • 2182
  • 2183
  • 2184
  • 2185
  • 2186
  • 2187
  • 2188
  • 2189
  • 2190
  • 2191
  • 2192
  • 2193
  • 2194
  • 2195
  • 2196
  • 2197
  • 2198
  • 2199
  • 2200
  • 2201
  • 2202
  • 2203
  • 2204
  • 2205
  • 2206
  • 2207
  • 2208
  • 2209
  • 2210
  • 2211
  • 2212
  • 2213
  • 2214
  • 2215
  • 2216
  • 2217
  • 2218
  • 2219
  • 2220
  • 2221
  • 2222
  • 2223
  • 2224
  • 2225
  • 2226
  • 2227
  • 2228
  • 2229
  • 2230
  • 2231
  • 2232
  • 2233
  • 2234
  • 2235
  • 2236
  • 2237
  • 2238
  • 2239
  • 2240
  • 2241
  • 2242
  • 2243
  • 2244
  • 2245
  • 2246
  • 2247
  • 2248
  • 2249
  • 2250
  • 2251
  • 2252
  • 2253
  • 2254
  • 2255
  • 2256
  • 2257
  • 2258
  • 2259
  • 2260
  • 2261
  • 2262
  • 2263
  • 2264
  • 2265
  • 2266
  • 2267
  • 2268
  • 2269
  • 2270
  • 2271
  • 2272
  • 2273
  • 2274
  • 2275
  • 2276
  • 2277
  • 2278
  • 2279
  • 2280
  • 2281
  • 2282
  • 2283
  • 2284
  • 2285
  • 2286
  • 2287
  • 2288
  • 2289
  • 2290
  • 2291
  • 2292
  • 2293
  • 2294
  • 2295
  • 2296
  • 2297
  • 2298
  • 2299
  • 2300
  • 2301
  • 2302
  • 2303
  • 2304
  • 2305
  • 2306
  • 2307
  • 2308
  • 2309
  • 2310
  • 2311
  • 2312
  • 2313
  • 2314
  • 2315
  • 2316
  • 2317
  • 2318
  • 2319
  • 2320
  • 2321
  • 2322
  • 2323
  • 2324
  • 2325
  • 2326
  • 2327
  • 2328
  • 2329
  • 2330
  • 2331
  • 2332
  • 2333
  • 2334
  • 2335
  • 2336
  • 2337
  • 2338
  • 2339
  • 2340
  • 2341
  • 2342
  • 2343
  • 2344
  • 2345
  • 2346
  • 2347
  • 2348
  • 2349
  • 2350
  • 2351
  • 2352
  • 2353
  • 2354
  • 2355
  • 2356
  • 2357
  • 2358
  • 2359
  • 2360
  • 2361
  • 2362
  • 2363
  • 2364
  • 2365
  • 2366
  • 2367
  • 2368
  • 2369
  • 2370
  • 2371
  • 2372
  • 2373
  • 2374
  • 2375
  • 2376
  • 2377
  • 2378
  • 2379
  • 2380
  • 2381
  • 2382
  • 2383
  • 2384
  • 2385
  • 2386
  • 2387
  • 2388
  • 2389
  • 2390
  • 2391
  • 2392
  • 2393
  • 2394
  • 2395
  • 2396
  • 2397
  • 2398
  • 2399
  • 2400
  • 2401
  • 2402
  • 2403
  • 2404
  • 2405
  • 2406
  • 2407
  • 2408
  • 2409
  • 2410
  • 2411
  • 2412
  • 2413
  • 2414
  • 2415
  • 2416
  • 2417
  • 2418
  • 2419
  • 2420
  • 2421
  • 2422
  • 2423
  • 2424
  • 2425
  • 2426
  • 2427
  • 2428
  • 2429
  • 2430
  • 2431
  • 2432
  • 2433
  • 2434
  • 2435
  • 2436
  • 2437
  • 2438
  • 2439
  • 2440
  • 2441
  • 2442
  • 2443
  • 2444
  • 2445
  • 2446
  • 2447
  • 2448
  • 2449
  • 2450
  • 2451
  • 2452
  • 2453
  • 2454
  • 2455
  • 2456
  • 2457
  • 2458
  • 2459
  • 2460
  • 2461
  • 2462
  • 2463
  • 2464
  • 2465
  • 2466
  • 2467
  • 2468
  • 2469
  • 2470
  • 2471
  • 2472
  • 2473
  • 2474
  • 2475
  • 2476
  • 2477
  • 2478
  • 2479
  • 2480
  • 2481
  • 2482
  • 2483
  • 2484
  • 2485
  • 2486
  • 2487
  • 2488
  • 2489
  • 2490
  • 2491
  • 2492
  • 2493
  • 2494
  • 2495
  • 2496
  • 2497
  • 2498
  • 2499
  • 2500
  • 2501
  • 2502
  • 2503
  • 2504
  • 2505
  • 2506
  • 2507
  • 2508
  • 2509
  • 2510
  • 2511
  • 2512
  • 2513
  • 2514
  • 2515
  • 2516
  • 2517
  • 2518
  • 2519
  • 2520
  • 2521
  • 2522
  • 2523
  • 2524
  • 2525
  • 2526
  • 2527
  • 2528
  • 2529
  • 2530
  • 2531
  • 2532
  • 2533
  • 2534
  • 2535
  • 2536
  • 2537
  • 2538
  • 2539
  • 2540
  • 2541
  • 2542
  • 2543
  • 2544
  • 2545
  • 2546
  • 2547
  • 2548
  • 2549
  • 2550
  • 2551
  • 2552
  • 2553
  • 2554
  • 2555
  • 2556
  • 2557
  • 2558
  • 2559
  • 2560
  • 2561
  • 2562
  • 2563
  • 2564
  • 2565
  • 2566
  • 2567
  • 2568
  • 2569
  • 2570
  • 2571
  • 2572
  • 2573
  • 2574
  • 2575
  • 2576
  • 2577
  • 2578
  • 2579
  • 2580
  • 2581
  • 2582
  • 2583
  • 2584
  • 2585
  • 2586
  • 2587
  • 2588
  • 2589
  • 2590
  • 2591
  • 2592
  • 2593
  • 2594
  • 2595
  • 2596
  • 2597
  • 2598
  • 2599
  • 2600
  • 2601
  • 2602
  • 2603
  • 2604
  • 2605
  • 2606
  • 2607
  • 2608
  • 2609
  • 2610
  • 2611
  • 2612
  • 2613
  • 2614
  • 2615
  • 2616
  • 2617
  • 2618
  • 2619
  • 2620
  • 2621
  • 2622
  • 2623
  • 2624
  • 2625
  • 2626
  • 2627
  • 2628
  • 2629
  • 2630
  • 2631
  • 2632
  • 2633
  • 2634
  • 2635
  • 2636
  • 2637
  • 2638
  • 2639
  • 2640
  • 2641
  • 2642
  • 2643
  • 2644
  • 2645
  • 2646
  • 2647
  • 2648
  • 2649
  • 2650
  • 2651
  • 2652
  • 2653
  • 2654
  • 2655
  • 2656
  • 2657
  • 2658
  • 2659
  • 2660
  • 2661
  • 2662
  • 2663
  • 2664
  • 2665
  • 2666
  • 2667
  • 2668
  • 2669
  • 2670
  • 2671
  • 2672
  • 2673
  • 2674
  • 2675
  • 2676
  • 2677
  • 2678
  • 2679
  • 2680
  • 2681
  • 2682
  • 2683
  • 2684
  • 2685
  • 2686
  • 2687
  • 2688
  • 2689
  • 2690
  • 2691
  • 2692
  • 2693
  • 2694
  • 2695
  • 2696
  • 2697
  • 2698
  • 2699
  • 2700
  • 2701
  • 2702
  • 2703
  • 2704
  • 2705
  • 2706
  • 2707
  • 2708
  • 2709
  • 2710
  • 2711
  • 2712
  • 2713
  • 2714
  • 2715
  • 2716
  • 2717
  • 2718
  • 2719
  • 2720
  • 2721
  • 2722
  • 2723
  • 2724
  • 2725
  • 2726
  • 2727
  • 2728
  • 2729
  • 2730
  • 2731
  • 2732
  • 2733
  • 2734
  • 2735
  • 2736
  • 2737
  • 2738
  • 2739
  • 2740
  • 2741
  • 2742
  • 2743
  • 2744
  • 2745
  • 2746
  • 2747
  • 2748
  • 2749
  • 2750
  • 2751
  • 2752
  • 2753
  • 2754
  • 2755
  • 2756
  • 2757
  • 2758
  • 2759
  • 2760
  • 2761
  • 2762
  • 2763
  • 2764
  • 2765
  • 2766
  • 2767
  • 2768
  • 2769
  • 2770
  • 2771
  • 2772
  • 2773
  • 2774
  • 2775
  • 2776
  • 2777
  • 2778
  • 2779
  • 2780
  • 2781
  • 2782
  • 2783
  • 2784
  • 2785
  • 2786
  • 2787
  • 2788
  • 2789
  • 2790
  • 2791
  • 2792
  • 2793
  • 2794
  • 2795
  • 2796
  • 2797
  • 2798
  • 2799
  • 2800
  • 2801
  • 2802
  • 2803
  • 2804
  • 2805
  • 2806
  • 2807
  • 2808
  • 2809
  • 2810
  • 2811
  • 2812
  • 2813
  • 2814
  • 2815
  • 2816
  • 2817
  • 2818
  • 2819
  • 2820
  • 2821
  • 2822
  • 2823
  • 2824
  • 2825
  • 2826
  • 2827
  • 2828
  • 2829
  • 2830
  • 2831
  • 2832
  • 2833
  • 2834
  • 2835
  • 2836
  • 2837
  • 2838
  • 2839
  • 2840
  • 2841
  • 2842
  • 2843
  • 2844
  • 2845
  • 2846
  • 2847
  • 2848
  • 2849
  • 2850
  • 2851
  • 2852
  • 2853
  • 2854
  • 2855
  • 2856
  • 2857
  • 2858
  • 2859
  • 2860
  • 2861
  • 2862
  • 2863
  • 2864
  • 2865
  • 2866
  • 2867
  • 2868
  • 2869
  • 2870
  • 2871
  • 2872
  • 2873
  • 2874
  • 2875
  • 2876
  • 2877
  • 2878
  • 2879
  • 2880
  • 2881
  • 2882
  • 2883
  • 2884
  • 2885
  • 2886
  • 2887
  • 2888
  • 2889
  • 2890
  • 2891
  • 2892
  • 2893
  • 2894
  • 2895
  • 2896
  • 2897
  • 2898
  • 2899
  • 2900
  • 2901
  • 2902
  • 2903
  • 2904
  • 2905
  • 2906
  • 2907
  • 2908
  • 2909
  • 2910
  • 2911
  • 2912
  • 2913
  • 2914
  • 2915
  • 2916
  • 2917
  • 2918
  • 2919
  • 2920
  • 2921
  • 2922
  • 2923
  • 2924
  • 2925
  • 2926
  • 2927
  • 2928
  • 2929
  • 2930
  • 2931
  • 2932
  • 2933
  • 2934
  • 2935
  • 2936
  • 2937
  • 2938
  • 2939
  • 2940
  • 2941
  • 2942
  • 2943
  • 2944
  • 2945
  • 2946
  • 2947
  • 2948
  • 2949
  • 2950
  • 2951
  • 2952
  • 2953
  • 2954
  • 2955
  • 2956
  • 2957
  • 2958
  • 2959
  • 2960
  • 2961
  • 2962
  • 2963
  • 2964
  • 2965
  • 2966
  • 2967
  • 2968
  • 2969
  • 2970
  • 2971
  • 2972
  • 2973
  • 2974
  • 2975
  • 2976
  • 2977
  • 2978
  • 2979
  • 2980
  • 2981
  • 2982
  • 2983
  • 2984
  • 2985
  • 2986
  • 2987
  • 2988
  • 2989
  • 2990
  • 2991
  • 2992
  • 2993
  • 2994
  • 2995
  • 2996
  • 2997
  • 2998
  • 2999
  • 3000
  • 3001
  • 3002
  • 3003
  • 3004
  • 3005
  • 3006
  • 3007
  • 3008
  • 3009
  • 3010
  • 3011
  • 3012
  • 3013
  • 3014
  • 3015
  • 3016
  • 3017
  • 3018
  • 3019
  • 3020
  • 3021
  • 3022
  • 3023
  • 3024
  • 3025
  • 3026
  • 3027
  • 3028
  • 3029
  • 3030
  • 3031
  • 3032
  • 3033
  • 3034
  • 3035
  • 3036
  • 3037
  • 3038
  • 3039
  • 3040
  • 3041
  • 3042
  • 3043
  • 3044
  • 3045
  • 3046
  • 3047
  • 3048

代码有点长,但都是干货,只需要复制粘贴就行,把上面的js粘贴到你的utils里面,下面是使用方法。

// 首先引入刚才的js文件
import qrcode from "XXX";

// 定义扫码点击事件
scanCode() {
      let _this = this;
      uni.chooseImage({
        sizeType: ["original"],
        count: 1,
        success: function (res) {
          const tempFilePaths = res.tempFilePaths[0]; 
          qrcode.decode(tempFilePaths); // 解析二维码图片
          qrcode.callback = async function (res) {
            if (res == "error decoding QR Code") {
              uni.showToast({
                title: "二维码解析失败",
                duration: 2000,
                icon: "none",
              });
            } else {
            // 拿到扫描结果重新赋值
              _this.searchContent = res;
            }
          };
        },
      });
    },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

这样h5页面也可以扫码了,扫码可以从相册选择照片,或者拍照解析,但是拍照解析一定要清晰的二维码,二维码附近没有杂物或者别的图片,要不就会解析失败,识别不了。

如果这个文章帮你解决了问题,请点赞关注评论一下,谢谢

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/280673
推荐阅读
相关标签
  

闽ICP备14008679号