// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
// Original code is licensed as follows:
/*
 * Copyright 2007 ZXing authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "../barcode.h"
#include "../utils.h"
#include "../common/BC_CommonBitMatrix.h"
#include "BC_QRCoderECB.h"
#include "BC_QRCoderFormatInformation.h"
#include "BC_QRCoderErrorCorrectionLevel.h"
#include "BC_QRCoderBitVector.h"
#include "BC_QRCoderECBlocks.h"
#include "BC_QRCoderVersion.h"
const FX_INT32 CBC_QRCoderVersion::VERSION_DECODE_INFO[] = {
    0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6,
    0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78,
    0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683,
    0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,
    0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250,
    0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B,
    0x2542E, 0x26A64, 0x27541, 0x28C69
};
CFX_PtrArray *CBC_QRCoderVersion::VERSION = NULL;
void CBC_QRCoderVersion::Initialize()
{
    VERSION = FX_NEW CFX_PtrArray();
}
void CBC_QRCoderVersion::Finalize()
{
    for(FX_INT32 i = 0 ; i < VERSION->GetSize(); i++) {
        CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i));
        delete v;
    }
    delete VERSION;
}
CBC_QRCoderVersion::CBC_QRCoderVersion(FX_INT32 versionNumber,
                                       CBC_QRCoderECBlocks* ecBlocks1,
                                       CBC_QRCoderECBlocks* ecBlocks2,
                                       CBC_QRCoderECBlocks* ecBlocks3,
                                       CBC_QRCoderECBlocks* ecBlocks4)
{
    m_versionNumber = versionNumber;
    m_ecBlocks.Add(ecBlocks1);
    m_ecBlocks.Add(ecBlocks2);
    m_ecBlocks.Add(ecBlocks3);
    m_ecBlocks.Add(ecBlocks4);
    FX_INT32 total = 0;
    FX_INT32 ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock();
    CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks();
    for(FX_INT32 i = 0; i < ecbArray->GetSize(); i++) {
        CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]);
        total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWords);
    }
    m_totalCodeWords = total;
    switch(versionNumber) {
        case 1:
            break;
        case 2:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(18);
            break;
        case 3:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(22);
            break;
        case 4:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            break;
        case 5:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            break;
        case 6:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            break;
        case 7:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(22);
            m_alignmentPatternCenters.Add(38);
            break;
        case 8:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(24);
            m_alignmentPatternCenters.Add(42);
            break;
        case 9:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(46);
            break;
        case 10:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(28);
            m_alignmentPatternCenters.Add(50);
            break;
        case 11:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(54);
            break;
        case 12:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(32);
            m_alignmentPatternCenters.Add(58);
            break;
        case 13:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            m_alignmentPatternCenters.Add(62);
            break;
        case 14:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(46);
            m_alignmentPatternCenters.Add(66);
            break;
        case 15:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(48);
            m_alignmentPatternCenters.Add(70);
            break;
        case 16:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(50);
            m_alignmentPatternCenters.Add(74);
            break;
        case 17:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(78);
            break;
        case 18:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(56);
            m_alignmentPatternCenters.Add(82);
            break;
        case 19:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(86);
            break;
        case 20:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            m_alignmentPatternCenters.Add(62);
            m_alignmentPatternCenters.Add(90);
            break;
        case 21:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(28);
            m_alignmentPatternCenters.Add(50);
            m_alignmentPatternCenters.Add(72);
            m_alignmentPatternCenters.Add(94);
            break;
        case 22:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(50);
            m_alignmentPatternCenters.Add(74);
            m_alignmentPatternCenters.Add(98);
            break;
        case 23:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(74);
            m_alignmentPatternCenters.Add(102);
            break;
        case 24:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(28);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(80);
            m_alignmentPatternCenters.Add(106);
            break;
        case 25:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(32);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(84);
            m_alignmentPatternCenters.Add(110);
            break;
        case 26:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(86);
            m_alignmentPatternCenters.Add(114);
            break;
        case 27:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            m_alignmentPatternCenters.Add(62);
            m_alignmentPatternCenters.Add(90);
            m_alignmentPatternCenters.Add(118);
            break;
        case 28:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(50);
            m_alignmentPatternCenters.Add(74);
            m_alignmentPatternCenters.Add(98);
            m_alignmentPatternCenters.Add(122);
            break;
        case 29:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(78);
            m_alignmentPatternCenters.Add(102);
            m_alignmentPatternCenters.Add(126);
            break;
        case 30:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(52);
            m_alignmentPatternCenters.Add(78);
            m_alignmentPatternCenters.Add(104);
            m_alignmentPatternCenters.Add(130);
            break;
        case 31:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(56);
            m_alignmentPatternCenters.Add(82);
            m_alignmentPatternCenters.Add(108);
            m_alignmentPatternCenters.Add(134);
            break;
        case 32:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            m_alignmentPatternCenters.Add(60);
            m_alignmentPatternCenters.Add(86);
            m_alignmentPatternCenters.Add(112);
            m_alignmentPatternCenters.Add(138);
            break;
        case 33:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(86);
            m_alignmentPatternCenters.Add(114);
            m_alignmentPatternCenters.Add(142);
            break;
        case 34:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(34);
            m_alignmentPatternCenters.Add(62);
            m_alignmentPatternCenters.Add(90);
            m_alignmentPatternCenters.Add(118);
            m_alignmentPatternCenters.Add(146);
            break;
        case 35:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(78);
            m_alignmentPatternCenters.Add(102);
            m_alignmentPatternCenters.Add(126);
            m_alignmentPatternCenters.Add(150);
            break;
        case 36:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(24);
            m_alignmentPatternCenters.Add(50);
            m_alignmentPatternCenters.Add(76);
            m_alignmentPatternCenters.Add(102);
            m_alignmentPatternCenters.Add(128);
            m_alignmentPatternCenters.Add(154);
            break;
        case 37:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(28);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(80);
            m_alignmentPatternCenters.Add(106);
            m_alignmentPatternCenters.Add(132);
            m_alignmentPatternCenters.Add(158);
            break;
        case 38:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(32);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(84);
            m_alignmentPatternCenters.Add(110);
            m_alignmentPatternCenters.Add(136);
            m_alignmentPatternCenters.Add(162);
            break;
        case 39:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(26);
            m_alignmentPatternCenters.Add(54);
            m_alignmentPatternCenters.Add(82);
            m_alignmentPatternCenters.Add(110);
            m_alignmentPatternCenters.Add(138);
            m_alignmentPatternCenters.Add(166);
            break;
        case 40:
            m_alignmentPatternCenters.Add(6);
            m_alignmentPatternCenters.Add(30);
            m_alignmentPatternCenters.Add(58);
            m_alignmentPatternCenters.Add(86);
            m_alignmentPatternCenters.Add(114);
            m_alignmentPatternCenters.Add(142);
            m_alignmentPatternCenters.Add(170);
            break;
    }
}
CBC_QRCoderVersion::~CBC_QRCoderVersion()
{
    if(m_ecBlocks.GetSize() != 0) {
        FX_INT32 itBeg = 0;
        FX_INT32 itEnd = m_ecBlocks.GetSize();
        while(itBeg != itEnd) {
            delete ( (CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg]) );
            itBeg++;
        }
    }
}
FX_INT32 CBC_QRCoderVersion::GetVersionNumber()
{
    return m_versionNumber;
}
CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters()
{
    return &m_alignmentPatternCenters;
}
FX_INT32 CBC_QRCoderVersion::GetTotalCodeWords()
{
    return m_totalCodeWords;
}
FX_INT32 CBC_QRCoderVersion::GetDimensionForVersion()
{
    return 17 + 4 * m_versionNumber;
}
CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel(CBC_QRCoderErrorCorrectionLevel *ecLevel)
{
    return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()];
}
CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension(FX_INT32 dimension, FX_INT32 &e)
{
    if((dimension % 4) != 1) {
        e = BCExceptionRead;
        BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    }
    CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    return qcv;
}
CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation(FX_INT32 versionBits, FX_INT32 &e)
{
    FX_INT32 bestDifference = FXSYS_IntMax;
    FX_INT32 bestVersion = 0;
    for (FX_INT32 i = 0; i < 34; i++) {
        FX_INT32 targetVersion = VERSION_DECODE_INFO[i];
        if(targetVersion == versionBits) {
            CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e);
            BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
            return qcv;
        }
        FX_INT32 bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering(versionBits, targetVersion);
        if(bitsDifference < bestDifference) {
            bestVersion = i + 7;
            bestDifference = bitsDifference;
        }
    }
    if(bestDifference <= 3) {
        CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e);
        BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
        return qcv;
    }
    return NULL;
}
CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(FX_INT32 &e)
{
    FX_INT32 dimension = GetDimensionForVersion();
    CBC_CommonBitMatrix* bitMatrix = FX_NEW CBC_CommonBitMatrix();
    bitMatrix->Init(dimension);
    bitMatrix->SetRegion(0, 0 , 9, 9, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    bitMatrix->SetRegion(0, dimension - 8, 9, 8, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    FX_INT32 max = m_alignmentPatternCenters.GetSize();
    for (FX_INT32 x = 0; x < max; x++) {
        FX_INT32 i = m_alignmentPatternCenters[x] - 2;
        for (FX_INT32 y = 0; y < max; y++) {
            if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {
                continue;
            }
            bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e);
            BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
        }
    }
    bitMatrix->SetRegion(6, 9, 1, dimension - 17, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    bitMatrix->SetRegion(9, 6, dimension - 17, 1, e);
    BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    if (m_versionNumber > 6) {
        bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e);
        BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
        bitMatrix->SetRegion(0, dimension - 11, 6, 3, e);
        BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    }
    return bitMatrix;
}
CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber(FX_INT32 versionNumber, FX_INT32 &e)
{
    if(VERSION->GetSize() == 0) {
        VERSION->Add(FX_NEW CBC_QRCoderVersion(1,
                                               FX_NEW CBC_QRCoderECBlocks(7, FX_NEW CBC_QRCoderECB(1, 19)),
                                               FX_NEW CBC_QRCoderECBlocks(10, FX_NEW CBC_QRCoderECB(1, 16)),
                                               FX_NEW CBC_QRCoderECBlocks(13, FX_NEW CBC_QRCoderECB(1, 13)),
                                               FX_NEW CBC_QRCoderECBlocks(17, FX_NEW CBC_QRCoderECB(1, 9))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(2,
                                               FX_NEW CBC_QRCoderECBlocks(10, FX_NEW CBC_QRCoderECB(1, 34)),
                                               FX_NEW CBC_QRCoderECBlocks(16, FX_NEW CBC_QRCoderECB(1, 28)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(1, 22)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(1, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(3,
                                               FX_NEW CBC_QRCoderECBlocks(15, FX_NEW CBC_QRCoderECB(1, 55)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(1, 44)),
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 17)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(2, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(4,
                                               FX_NEW CBC_QRCoderECBlocks(20, FX_NEW CBC_QRCoderECB(1, 80)),
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 32)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(2, 24)),
                                               FX_NEW CBC_QRCoderECBlocks(16, FX_NEW CBC_QRCoderECB(4, 9))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(5,
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(1, 108)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(2, 43)),
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 15),
                                                       FX_NEW CBC_QRCoderECB(2, 16)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(2, 11),
                                                       FX_NEW CBC_QRCoderECB(2, 12))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(6,
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 68)),
                                               FX_NEW CBC_QRCoderECBlocks(16, FX_NEW CBC_QRCoderECB(4, 27)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(4, 19)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(4, 15))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(7,
                                               FX_NEW CBC_QRCoderECBlocks(20, FX_NEW CBC_QRCoderECB(2, 78)),
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(4, 31)),
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 14),
                                                       FX_NEW CBC_QRCoderECB(4, 15)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(4, 13),
                                                       FX_NEW CBC_QRCoderECB(1, 14))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(8,
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(2, 97)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(2, 38),
                                                       FX_NEW CBC_QRCoderECB(2, 39)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(4, 18),
                                                       FX_NEW CBC_QRCoderECB(2, 19)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(4, 14),
                                                       FX_NEW CBC_QRCoderECB(2, 15))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(9,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(2, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(3, 36),
                                                       FX_NEW CBC_QRCoderECB(2, 37)),
                                               FX_NEW CBC_QRCoderECBlocks(20, FX_NEW CBC_QRCoderECB(4, 16),
                                                       FX_NEW CBC_QRCoderECB(4, 17)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(4, 12),
                                                       FX_NEW CBC_QRCoderECB(4, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(10,
                                               FX_NEW CBC_QRCoderECBlocks(18, FX_NEW CBC_QRCoderECB(2, 68),
                                                       FX_NEW CBC_QRCoderECB(2, 69)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(4, 43),
                                                       FX_NEW CBC_QRCoderECB(1, 44)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(6, 19),
                                                       FX_NEW CBC_QRCoderECB(2, 20)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(6, 15),
                                                       FX_NEW CBC_QRCoderECB(2, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(11,
                                               FX_NEW CBC_QRCoderECBlocks(20, FX_NEW CBC_QRCoderECB(4, 81)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(1, 50),
                                                       FX_NEW CBC_QRCoderECB(4, 51)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(4, 22),
                                                       FX_NEW CBC_QRCoderECB(4, 23)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(3, 12),
                                                       FX_NEW CBC_QRCoderECB(8, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(12,
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(2, 92),
                                                       FX_NEW CBC_QRCoderECB(2, 93)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(6, 36),
                                                       FX_NEW CBC_QRCoderECB(2, 37)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(4, 20),
                                                       FX_NEW CBC_QRCoderECB(6, 21)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(7, 14),
                                                       FX_NEW CBC_QRCoderECB(4, 15))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(13,
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(4, 107)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(8, 37),
                                                       FX_NEW CBC_QRCoderECB(1, 38)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(8, 20),
                                                       FX_NEW CBC_QRCoderECB(4, 21)),
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(12, 11),
                                                       FX_NEW CBC_QRCoderECB(4, 12))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(14,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(3, 115),
                                                       FX_NEW CBC_QRCoderECB(1, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(4, 40),
                                                       FX_NEW CBC_QRCoderECB(5, 41)),
                                               FX_NEW CBC_QRCoderECBlocks(20, FX_NEW CBC_QRCoderECB(11, 16),
                                                       FX_NEW CBC_QRCoderECB(5, 17)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(11, 12),
                                                       FX_NEW CBC_QRCoderECB(5, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(15,
                                               FX_NEW CBC_QRCoderECBlocks(22, FX_NEW CBC_QRCoderECB(5, 87),
                                                       FX_NEW CBC_QRCoderECB(1, 88)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(5, 41),
                                                       FX_NEW CBC_QRCoderECB(5, 42)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(5, 24),
                                                       FX_NEW CBC_QRCoderECB(7, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(11, 12),
                                                       FX_NEW CBC_QRCoderECB(7, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(16,
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(5, 98),
                                                       FX_NEW CBC_QRCoderECB(1, 99)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(7, 45),
                                                       FX_NEW CBC_QRCoderECB(3, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(15, 19),
                                                       FX_NEW CBC_QRCoderECB(2, 20)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(3, 15),
                                                       FX_NEW CBC_QRCoderECB(13, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(17,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(1, 107),
                                                       FX_NEW CBC_QRCoderECB(5, 108)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(10, 46),
                                                       FX_NEW CBC_QRCoderECB(1, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(1, 22),
                                                       FX_NEW CBC_QRCoderECB(15, 23)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(2, 14),
                                                       FX_NEW CBC_QRCoderECB(17, 15))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(18,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(5, 120),
                                                       FX_NEW CBC_QRCoderECB(1, 121)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(9, 43),
                                                       FX_NEW CBC_QRCoderECB(4, 44)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(17, 22),
                                                       FX_NEW CBC_QRCoderECB(1, 23)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(2, 14),
                                                       FX_NEW CBC_QRCoderECB(19, 15))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(19,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(3, 113),
                                                       FX_NEW CBC_QRCoderECB(4, 114)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(3, 44),
                                                       FX_NEW CBC_QRCoderECB(11, 45)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(17, 21),
                                                       FX_NEW CBC_QRCoderECB(4, 22)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(9, 13),
                                                       FX_NEW CBC_QRCoderECB(16, 14))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(20,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(3, 107),
                                                       FX_NEW CBC_QRCoderECB(5, 108)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(3, 41),
                                                       FX_NEW CBC_QRCoderECB(13, 42)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(15, 24),
                                                       FX_NEW CBC_QRCoderECB(5, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(15, 15),
                                                       FX_NEW CBC_QRCoderECB(10, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(21,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(4, 116),
                                                       FX_NEW CBC_QRCoderECB(4, 117)),
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(17, 42)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(17, 22),
                                                       FX_NEW CBC_QRCoderECB(6, 23)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(19, 16),
                                                       FX_NEW CBC_QRCoderECB(6, 17))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(22,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(2, 111),
                                                       FX_NEW CBC_QRCoderECB(7, 112)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(17, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(7, 24),
                                                       FX_NEW CBC_QRCoderECB(16, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(24, FX_NEW CBC_QRCoderECB(34, 13))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(23,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(4, 121),
                                                       FX_NEW CBC_QRCoderECB(5, 122)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(4, 47),
                                                       FX_NEW CBC_QRCoderECB(14, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(11, 24),
                                                       FX_NEW CBC_QRCoderECB(14, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(16, 15),
                                                       FX_NEW CBC_QRCoderECB(14, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(24,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(6, 117),
                                                       FX_NEW CBC_QRCoderECB(4, 118)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(6, 45),
                                                       FX_NEW CBC_QRCoderECB(14, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(11, 24),
                                                       FX_NEW CBC_QRCoderECB(16, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(30, 16),
                                                       FX_NEW CBC_QRCoderECB(2, 17))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(25,
                                               FX_NEW CBC_QRCoderECBlocks(26, FX_NEW CBC_QRCoderECB(8, 106),
                                                       FX_NEW CBC_QRCoderECB(4, 107)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(8, 47),
                                                       FX_NEW CBC_QRCoderECB(13, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(7, 24),
                                                       FX_NEW CBC_QRCoderECB(22, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(22, 15),
                                                       FX_NEW CBC_QRCoderECB(13, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(26,
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(10, 114),
                                                       FX_NEW CBC_QRCoderECB(2, 115)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(19, 46),
                                                       FX_NEW CBC_QRCoderECB(4, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(28, 22),
                                                       FX_NEW CBC_QRCoderECB(6, 23)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(33, 16),
                                                       FX_NEW CBC_QRCoderECB(4, 17))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(27,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(8, 122),
                                                       FX_NEW CBC_QRCoderECB(4, 123)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(22, 45),
                                                       FX_NEW CBC_QRCoderECB(3, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(8, 23),
                                                       FX_NEW CBC_QRCoderECB(26, 24)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(12, 15),
                                                       FX_NEW CBC_QRCoderECB(28, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(28,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(3, 117),
                                                       FX_NEW CBC_QRCoderECB(10, 118)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(3, 45),
                                                       FX_NEW CBC_QRCoderECB(23, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(4, 24),
                                                       FX_NEW CBC_QRCoderECB(31, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(11, 15),
                                                       FX_NEW CBC_QRCoderECB(31, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(29,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(7, 116),
                                                       FX_NEW CBC_QRCoderECB(7, 117)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(21, 45),
                                                       FX_NEW CBC_QRCoderECB(7, 46)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(1, 23),
                                                       FX_NEW CBC_QRCoderECB(37, 24)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(19, 15),
                                                       FX_NEW CBC_QRCoderECB(26, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(30,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(5, 115),
                                                       FX_NEW CBC_QRCoderECB(10, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(19, 47),
                                                       FX_NEW CBC_QRCoderECB(10, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(15, 24),
                                                       FX_NEW CBC_QRCoderECB(25, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(23, 15),
                                                       FX_NEW CBC_QRCoderECB(25, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(31,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(13, 115),
                                                       FX_NEW CBC_QRCoderECB(3, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(2, 46),
                                                       FX_NEW CBC_QRCoderECB(29, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(42, 24),
                                                       FX_NEW CBC_QRCoderECB(1, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(23, 15),
                                                       FX_NEW CBC_QRCoderECB(28, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(32,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(17, 115)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(10, 46),
                                                       FX_NEW CBC_QRCoderECB(23, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(10, 24),
                                                       FX_NEW CBC_QRCoderECB(35, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(19, 15),
                                                       FX_NEW CBC_QRCoderECB(35, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(33,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(17, 115),
                                                       FX_NEW CBC_QRCoderECB(1, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(14, 46),
                                                       FX_NEW CBC_QRCoderECB(21, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(29, 24),
                                                       FX_NEW CBC_QRCoderECB(19, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(11, 15),
                                                       FX_NEW CBC_QRCoderECB(46, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(34,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(13, 115),
                                                       FX_NEW CBC_QRCoderECB(6, 116)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(14, 46),
                                                       FX_NEW CBC_QRCoderECB(23, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(44, 24),
                                                       FX_NEW CBC_QRCoderECB(7, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(59, 16),
                                                       FX_NEW CBC_QRCoderECB(1, 17))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(35,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(12, 121),
                                                       FX_NEW CBC_QRCoderECB(7, 122)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(12, 47),
                                                       FX_NEW CBC_QRCoderECB(26, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(39, 24),
                                                       FX_NEW CBC_QRCoderECB(14, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(22, 15),
                                                       FX_NEW CBC_QRCoderECB(41, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(36,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(6, 121),
                                                       FX_NEW CBC_QRCoderECB(14, 122)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(6, 47),
                                                       FX_NEW CBC_QRCoderECB(34, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(46, 24),
                                                       FX_NEW CBC_QRCoderECB(10, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(2, 15),
                                                       FX_NEW CBC_QRCoderECB(64, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(37,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(17, 122),
                                                       FX_NEW CBC_QRCoderECB(4, 123)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(29, 46),
                                                       FX_NEW CBC_QRCoderECB(14, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(49, 24),
                                                       FX_NEW CBC_QRCoderECB(10, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(24, 15),
                                                       FX_NEW CBC_QRCoderECB(46, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(38,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(4, 122),
                                                       FX_NEW CBC_QRCoderECB(18, 123)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(13, 46),
                                                       FX_NEW CBC_QRCoderECB(32, 47)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(48, 24),
                                                       FX_NEW CBC_QRCoderECB(14, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(42, 15),
                                                       FX_NEW CBC_QRCoderECB(32, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(39,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(20, 117),
                                                       FX_NEW CBC_QRCoderECB(4, 118)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(40, 47),
                                                       FX_NEW CBC_QRCoderECB(7, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(43, 24),
                                                       FX_NEW CBC_QRCoderECB(22, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(10, 15),
                                                       FX_NEW CBC_QRCoderECB(67, 16))));
        VERSION->Add(FX_NEW CBC_QRCoderVersion(40,
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(19, 118),
                                                       FX_NEW CBC_QRCoderECB(6, 119)),
                                               FX_NEW CBC_QRCoderECBlocks(28, FX_NEW CBC_QRCoderECB(18, 47),
                                                       FX_NEW CBC_QRCoderECB(31, 48)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(34, 24),
                                                       FX_NEW CBC_QRCoderECB(34, 25)),
                                               FX_NEW CBC_QRCoderECBlocks(30, FX_NEW CBC_QRCoderECB(20, 15),
                                                       FX_NEW CBC_QRCoderECB(61, 16))));
    }
    if(versionNumber < 1 || versionNumber > 40) {
        e = BCExceptionIllegalArgument;
        BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
    }
    return  (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1];
}
void CBC_QRCoderVersion::Destroy()
{
    FX_INT32 i;
    for(i = 0; i < VERSION->GetSize(); i++) {
        delete ( (CBC_QRCoderVersion*)(*VERSION)[i] );
    }
}
