Orders by {@link FinderPattern#getCount()}, descending.
\n */\n // CenterComparator implements Comparator\n (center1, center2) => {\n if (center2.getCount() === center1.getCount()) {\n const dA = Math.abs(center2.getEstimatedModuleSize() - average);\n const dB = Math.abs(center1.getEstimatedModuleSize() - average);\n return dA < dB ? 1 : dA > dB ? -1 : 0;\n }\n else {\n return center2.getCount() - center1.getCount();\n }\n });\n possibleCenters.splice(3); // this is not realy necessary as we only return first 3 anyway\n }\n return [\n possibleCenters[0],\n possibleCenters[1],\n possibleCenters[2]\n ];\n }\n }\n FinderPatternFinder.CENTER_QUORUM = 2;\n FinderPatternFinder.MIN_SKIP = 3; // 1 pixel/module times 3 modules/center\n FinderPatternFinder.MAX_MODULES = 57; // support up to version 10 for mobile clients\n\n /*\n * Copyright 2007 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*import java.util.Map;*/\n /**\n * Encapsulates logic that can detect a QR Code in an image, even if the QR Code\n * is rotated or skewed, or partially obscured.
\n *\n * @author Sean Owen\n */\n class Detector$2 {\n constructor(image) {\n this.image = image;\n }\n getImage() {\n return this.image;\n }\n getResultPointCallback() {\n return this.resultPointCallback;\n }\n /**\n * Detects a QR Code in an image.
\n *\n * @return {@link DetectorResult} encapsulating results of detecting a QR Code\n * @throws NotFoundException if QR Code cannot be found\n * @throws FormatException if a QR Code cannot be decoded\n */\n // public detect(): DetectorResult /*throws NotFoundException, FormatException*/ {\n // return detect(null)\n // }\n /**\n * Detects a QR Code in an image.
\n *\n * @param hints optional hints to detector\n * @return {@link DetectorResult} encapsulating results of detecting a QR Code\n * @throws NotFoundException if QR Code cannot be found\n * @throws FormatException if a QR Code cannot be decoded\n */\n detect(hints) {\n this.resultPointCallback = (hints === null || hints === undefined) ? null :\n /*(ResultPointCallback) */ hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);\n const finder = new FinderPatternFinder(this.image, this.resultPointCallback);\n const info = finder.find(hints);\n return this.processFinderPatternInfo(info);\n }\n processFinderPatternInfo(info) {\n const topLeft = info.getTopLeft();\n const topRight = info.getTopRight();\n const bottomLeft = info.getBottomLeft();\n const moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n if (moduleSize < 1.0) {\n throw new NotFoundException('No pattern found in proccess finder.');\n }\n const dimension = Detector$2.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n const provisionalVersion = Version$1.getProvisionalVersionForDimension(dimension);\n const modulesBetweenFPCenters = provisionalVersion.getDimensionForVersion() - 7;\n let alignmentPattern = null;\n // Anything above version 1 has an alignment pattern\n if (provisionalVersion.getAlignmentPatternCenters().length > 0) {\n // Guess where a \"bottom right\" finder pattern would have been\n const bottomRightX = topRight.getX() - topLeft.getX() + bottomLeft.getX();\n const bottomRightY = topRight.getY() - topLeft.getY() + bottomLeft.getY();\n // Estimate that alignment pattern is closer by 3 modules\n // from \"bottom right\" to known top left location\n const correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n const estAlignmentX = /*(int) */ Math.floor(topLeft.getX() + correctionToTopLeft * (bottomRightX - topLeft.getX()));\n const estAlignmentY = /*(int) */ Math.floor(topLeft.getY() + correctionToTopLeft * (bottomRightY - topLeft.getY()));\n // Kind of arbitrary -- expand search radius before giving up\n for (let i = 4; i <= 16; i <<= 1) {\n try {\n alignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n break;\n }\n catch (re /*NotFoundException*/) {\n if (!(re instanceof NotFoundException)) {\n throw re;\n }\n // try next round\n }\n }\n // If we didn't find alignment pattern... well try anyway without it\n }\n const transform = Detector$2.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n const bits = Detector$2.sampleGrid(this.image, transform, dimension);\n let points;\n if (alignmentPattern === null) {\n points = [bottomLeft, topLeft, topRight];\n }\n else {\n points = [bottomLeft, topLeft, topRight, alignmentPattern];\n }\n return new DetectorResult(bits, points);\n }\n static createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension /*int*/) {\n const dimMinusThree = dimension - 3.5;\n let bottomRightX; /*float*/\n let bottomRightY; /*float*/\n let sourceBottomRightX; /*float*/\n let sourceBottomRightY; /*float*/\n if (alignmentPattern !== null) {\n bottomRightX = alignmentPattern.getX();\n bottomRightY = alignmentPattern.getY();\n sourceBottomRightX = dimMinusThree - 3.0;\n sourceBottomRightY = sourceBottomRightX;\n }\n else {\n // Don't have an alignment pattern, just make up the bottom-right point\n bottomRightX = (topRight.getX() - topLeft.getX()) + bottomLeft.getX();\n bottomRightY = (topRight.getY() - topLeft.getY()) + bottomLeft.getY();\n sourceBottomRightX = dimMinusThree;\n sourceBottomRightY = dimMinusThree;\n }\n return PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.getX(), topLeft.getY(), topRight.getX(), topRight.getY(), bottomRightX, bottomRightY, bottomLeft.getX(), bottomLeft.getY());\n }\n static sampleGrid(image, transform, dimension /*int*/) {\n const sampler = GridSamplerInstance.getInstance();\n return sampler.sampleGridWithTransform(image, dimension, dimension, transform);\n }\n /**\n * Computes the dimension (number of modules on a size) of the QR Code based on the position\n * of the finder patterns and estimated module size.
\n */\n static computeDimension(topLeft, topRight, bottomLeft, moduleSize /*float*/) {\n const tltrCentersDimension = MathUtils.round(ResultPoint.distance(topLeft, topRight) / moduleSize);\n const tlblCentersDimension = MathUtils.round(ResultPoint.distance(topLeft, bottomLeft) / moduleSize);\n let dimension = Math.floor((tltrCentersDimension + tlblCentersDimension) / 2) + 7;\n switch (dimension & 0x03) { // mod 4\n case 0:\n dimension++;\n break;\n // 1? do nothing\n case 2:\n dimension--;\n break;\n case 3:\n throw new NotFoundException('Dimensions could be not found.');\n }\n return dimension;\n }\n /**\n * Computes an average estimated module size based on estimated derived from the positions\n * of the three finder patterns.
\n *\n * @param topLeft detected top-left finder pattern center\n * @param topRight detected top-right finder pattern center\n * @param bottomLeft detected bottom-left finder pattern center\n * @return estimated module size\n */\n calculateModuleSize(topLeft, topRight, bottomLeft) {\n // Take the average\n return (this.calculateModuleSizeOneWay(topLeft, topRight) +\n this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n }\n /**\n * Estimates module size based on two finder patterns -- it uses\n * {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the\n * width of each, measuring along the axis between their centers.
\n */\n calculateModuleSizeOneWay(pattern, otherPattern) {\n const moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(/*(int) */ Math.floor(pattern.getX()), \n /*(int) */ Math.floor(pattern.getY()), \n /*(int) */ Math.floor(otherPattern.getX()), \n /*(int) */ Math.floor(otherPattern.getY()));\n const moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(/*(int) */ Math.floor(otherPattern.getX()), \n /*(int) */ Math.floor(otherPattern.getY()), \n /*(int) */ Math.floor(pattern.getX()), \n /*(int) */ Math.floor(pattern.getY()));\n if (isNaN(moduleSizeEst1)) {\n return moduleSizeEst2 / 7.0;\n }\n if (isNaN(moduleSizeEst2)) {\n return moduleSizeEst1 / 7.0;\n }\n // Average them, and divide by 7 since we've counted the width of 3 black modules,\n // and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n return (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n }\n /**\n * See {@link #sizeOfBlackWhiteBlackRun(int, int, int, int)}; computes the total width of\n * a finder pattern by looking for a black-white-black run from the center in the direction\n * of another point (another finder pattern center), and in the opposite direction too.\n */\n sizeOfBlackWhiteBlackRunBothWays(fromX /*int*/, fromY /*int*/, toX /*int*/, toY /*int*/) {\n let result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n // Now count other way -- don't run off image though of course\n let scale = 1.0;\n let otherToX = fromX - (toX - fromX);\n if (otherToX < 0) {\n scale = fromX / /*(float) */ (fromX - otherToX);\n otherToX = 0;\n }\n else if (otherToX >= this.image.getWidth()) {\n scale = (this.image.getWidth() - 1 - fromX) / /*(float) */ (otherToX - fromX);\n otherToX = this.image.getWidth() - 1;\n }\n let otherToY = /*(int) */ Math.floor(fromY - (toY - fromY) * scale);\n scale = 1.0;\n if (otherToY < 0) {\n scale = fromY / /*(float) */ (fromY - otherToY);\n otherToY = 0;\n }\n else if (otherToY >= this.image.getHeight()) {\n scale = (this.image.getHeight() - 1 - fromY) / /*(float) */ (otherToY - fromY);\n otherToY = this.image.getHeight() - 1;\n }\n otherToX = /*(int) */ Math.floor(fromX + (otherToX - fromX) * scale);\n result += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n // Middle pixel is double-counted this way; subtract 1\n return result - 1.0;\n }\n /**\n * This method traces a line from a point in the image, in the direction towards another point.\n * It begins in a black region, and keeps going until it finds white, then black, then white again.\n * It reports the distance from the start to this point.
\n *\n * This is used when figuring out how wide a finder pattern is, when the finder pattern\n * may be skewed or rotated.
\n */\n sizeOfBlackWhiteBlackRun(fromX /*int*/, fromY /*int*/, toX /*int*/, toY /*int*/) {\n // Mild variant of Bresenham's algorithm\n // see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n const steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n if (steep) {\n let temp = fromX;\n fromX = fromY;\n fromY = temp;\n temp = toX;\n toX = toY;\n toY = temp;\n }\n const dx = Math.abs(toX - fromX);\n const dy = Math.abs(toY - fromY);\n let error = -dx / 2;\n const xstep = fromX < toX ? 1 : -1;\n const ystep = fromY < toY ? 1 : -1;\n // In black pixels, looking for white, first or second time.\n let state = 0;\n // Loop up until x == toX, but not beyond\n const xLimit = toX + xstep;\n for (let x = fromX, y = fromY; x !== xLimit; x += xstep) {\n const realX = steep ? y : x;\n const realY = steep ? x : y;\n // Does current pixel mean we have moved white to black or vice versa?\n // Scanning black in state 0,2 and white in state 1, so if we find the wrong\n // color, advance to next state or end if we are in state 2 already\n if ((state === 1) === this.image.get(realX, realY)) {\n if (state === 2) {\n return MathUtils.distance(x, y, fromX, fromY);\n }\n state++;\n }\n error += dy;\n if (error > 0) {\n if (y === toY) {\n break;\n }\n y += ystep;\n error -= dx;\n }\n }\n // Found black-white-black; give the benefit of the doubt that the next pixel outside the image\n // is \"white\" so this last point at (toX+xStep,toY) is the right ending. This is really a\n // small approximation; (toX+xStep,toY+yStep) might be really correct. Ignore this.\n if (state === 2) {\n return MathUtils.distance(toX + xstep, toY, fromX, fromY);\n }\n // else we didn't find even black-white-black; no estimate is really possible\n return NaN;\n }\n /**\n * Attempts to locate an alignment pattern in a limited region of the image, which is\n * guessed to contain it. This method uses {@link AlignmentPattern}.
\n *\n * @param overallEstModuleSize estimated module size so far\n * @param estAlignmentX x coordinate of center of area probably containing alignment pattern\n * @param estAlignmentY y coordinate of above\n * @param allowanceFactor number of pixels in all directions to search from the center\n * @return {@link AlignmentPattern} if found, or null otherwise\n * @throws NotFoundException if an unexpected error occurs during detection\n */\n findAlignmentInRegion(overallEstModuleSize /*float*/, estAlignmentX /*int*/, estAlignmentY /*int*/, allowanceFactor /*float*/) {\n // Look for an alignment pattern (3 modules in size) around where it\n // should be\n const allowance = /*(int) */ Math.floor(allowanceFactor * overallEstModuleSize);\n const alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n const alignmentAreaRightX = Math.min(this.image.getWidth() - 1, estAlignmentX + allowance);\n if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n throw new NotFoundException('Alignment top exceeds estimated module size.');\n }\n const alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n const alignmentAreaBottomY = Math.min(this.image.getHeight() - 1, estAlignmentY + allowance);\n if (alignmentAreaBottomY - alignmentAreaTopY < overallEstModuleSize * 3) {\n throw new NotFoundException('Alignment bottom exceeds estimated module size.');\n }\n const alignmentFinder = new AlignmentPatternFinder(this.image, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n return alignmentFinder.find();\n }\n }\n\n /*\n * Copyright 2007 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*import java.util.List;*/\n /*import java.util.Map;*/\n /**\n * This implementation can detect and decode QR Codes in an image.\n *\n * @author Sean Owen\n */\n class QRCodeReader {\n constructor() {\n this.decoder = new Decoder$2();\n }\n getDecoder() {\n return this.decoder;\n }\n /**\n * Locates and decodes a QR code in an image.\n *\n * @return a representing: string the content encoded by the QR code\n * @throws NotFoundException if a QR code cannot be found\n * @throws FormatException if a QR code cannot be decoded\n * @throws ChecksumException if error correction fails\n */\n /*@Override*/\n // public decode(image: BinaryBitmap): Result /*throws NotFoundException, ChecksumException, FormatException */ {\n // return this.decode(image, null)\n // }\n /*@Override*/\n decode(image, hints) {\n let decoderResult;\n let points;\n if (hints !== undefined && hints !== null && undefined !== hints.get(DecodeHintType$1.PURE_BARCODE)) {\n const bits = QRCodeReader.extractPureBits(image.getBlackMatrix());\n decoderResult = this.decoder.decodeBitMatrix(bits, hints);\n points = QRCodeReader.NO_POINTS;\n }\n else {\n const detectorResult = new Detector$2(image.getBlackMatrix()).detect(hints);\n decoderResult = this.decoder.decodeBitMatrix(detectorResult.getBits(), hints);\n points = detectorResult.getPoints();\n }\n // If the code was mirrored: swap the bottom-left and the top-right points.\n if (decoderResult.getOther() instanceof QRCodeDecoderMetaData) {\n decoderResult.getOther().applyMirroredCorrection(points);\n }\n const result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), undefined, points, BarcodeFormat$1.QR_CODE, undefined);\n const byteSegments = decoderResult.getByteSegments();\n if (byteSegments !== null) {\n result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS, byteSegments);\n }\n const ecLevel = decoderResult.getECLevel();\n if (ecLevel !== null) {\n result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, ecLevel);\n }\n if (decoderResult.hasStructuredAppend()) {\n result.putMetadata(ResultMetadataType$1.STRUCTURED_APPEND_SEQUENCE, decoderResult.getStructuredAppendSequenceNumber());\n result.putMetadata(ResultMetadataType$1.STRUCTURED_APPEND_PARITY, decoderResult.getStructuredAppendParity());\n }\n return result;\n }\n /*@Override*/\n reset() {\n // do nothing\n }\n /**\n * This method detects a code in a \"pure\" image -- that is, pure monochrome image\n * which contains only an unrotated, unskewed, image of a code, with some white border\n * around it. This is a specialized method that works exceptionally fast in this special\n * case.\n *\n * @see com.google.zxing.datamatrix.DataMatrixReader#extractPureBits(BitMatrix)\n */\n static extractPureBits(image) {\n const leftTopBlack = image.getTopLeftOnBit();\n const rightBottomBlack = image.getBottomRightOnBit();\n if (leftTopBlack === null || rightBottomBlack === null) {\n throw new NotFoundException();\n }\n const moduleSize = this.moduleSize(leftTopBlack, image);\n let top = leftTopBlack[1];\n let bottom = rightBottomBlack[1];\n let left = leftTopBlack[0];\n let right = rightBottomBlack[0];\n // Sanity check!\n if (left >= right || top >= bottom) {\n throw new NotFoundException();\n }\n if (bottom - top !== right - left) {\n // Special case, where bottom-right module wasn't black so we found something else in the last row\n // Assume it's a square, so use height as the width\n right = left + (bottom - top);\n if (right >= image.getWidth()) {\n // Abort if that would not make sense -- off image\n throw new NotFoundException();\n }\n }\n const matrixWidth = Math.round((right - left + 1) / moduleSize);\n const matrixHeight = Math.round((bottom - top + 1) / moduleSize);\n if (matrixWidth <= 0 || matrixHeight <= 0) {\n throw new NotFoundException();\n }\n if (matrixHeight !== matrixWidth) {\n // Only possibly decode square regions\n throw new NotFoundException();\n }\n // Push in the \"border\" by half the module width so that we start\n // sampling in the middle of the module. Just in case the image is a\n // little off, this will help recover.\n const nudge = /*(int) */ Math.floor(moduleSize / 2.0);\n top += nudge;\n left += nudge;\n // But careful that this does not sample off the edge\n // \"right\" is the farthest-right valid pixel location -- right+1 is not necessarily\n // This is positive by how much the inner x loop below would be too large\n const nudgedTooFarRight = left + /*(int) */ Math.floor((matrixWidth - 1) * moduleSize) - right;\n if (nudgedTooFarRight > 0) {\n if (nudgedTooFarRight > nudge) {\n // Neither way fits; abort\n throw new NotFoundException();\n }\n left -= nudgedTooFarRight;\n }\n // See logic above\n const nudgedTooFarDown = top + /*(int) */ Math.floor((matrixHeight - 1) * moduleSize) - bottom;\n if (nudgedTooFarDown > 0) {\n if (nudgedTooFarDown > nudge) {\n // Neither way fits; abort\n throw new NotFoundException();\n }\n top -= nudgedTooFarDown;\n }\n // Now just read off the bits\n const bits = new BitMatrix(matrixWidth, matrixHeight);\n for (let y = 0; y < matrixHeight; y++) {\n const iOffset = top + /*(int) */ Math.floor(y * moduleSize);\n for (let x = 0; x < matrixWidth; x++) {\n if (image.get(left + /*(int) */ Math.floor(x * moduleSize), iOffset)) {\n bits.set(x, y);\n }\n }\n }\n return bits;\n }\n static moduleSize(leftTopBlack, image) {\n const height = image.getHeight();\n const width = image.getWidth();\n let x = leftTopBlack[0];\n let y = leftTopBlack[1];\n let inBlack = true;\n let transitions = 0;\n while (x < width && y < height) {\n if (inBlack !== image.get(x, y)) {\n if (++transitions === 5) {\n break;\n }\n inBlack = !inBlack;\n }\n x++;\n y++;\n }\n if (x === width || y === height) {\n throw new NotFoundException();\n }\n return (x - leftTopBlack[0]) / 7.0;\n }\n }\n QRCodeReader.NO_POINTS = new Array();\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author SITA Lab (kevin.osullivan@sita.aero)\n * @author Guenther Grau\n */\n /*public final*/ class PDF417Common {\n PDF417Common() {\n }\n /**\n * @param moduleBitCount values to sum\n * @return sum of values\n * @deprecated call {@link MathUtils#sum(int[])}\n */\n // @Deprecated\n static getBitCountSum(moduleBitCount) {\n return MathUtils.sum(moduleBitCount);\n }\n static toIntArray(list) {\n if (list == null || !list.length) {\n return PDF417Common.EMPTY_INT_ARRAY;\n }\n const result = new Int32Array(list.length);\n let i = 0;\n for (const integer of list) {\n result[i++] = integer;\n }\n return result;\n }\n /**\n * @param symbol encoded symbol to translate to a codeword\n * @return the codeword corresponding to the symbol.\n */\n static getCodeword(symbol /*int*/) {\n const i = Arrays.binarySearch(PDF417Common.SYMBOL_TABLE, symbol & 0x3FFFF);\n if (i < 0) {\n return -1;\n }\n return (PDF417Common.CODEWORD_TABLE[i] - 1) % PDF417Common.NUMBER_OF_CODEWORDS;\n }\n }\n PDF417Common.NUMBER_OF_CODEWORDS = 929;\n // Maximum Codewords (Data + Error).\n PDF417Common.MAX_CODEWORDS_IN_BARCODE = PDF417Common.NUMBER_OF_CODEWORDS - 1;\n PDF417Common.MIN_ROWS_IN_BARCODE = 3;\n PDF417Common.MAX_ROWS_IN_BARCODE = 90;\n // One left row indication column + max 30 data columns + one right row indicator column\n // public static /*final*/ MAX_CODEWORDS_IN_ROW: /*int*/ number = 32;\n PDF417Common.MODULES_IN_CODEWORD = 17;\n PDF417Common.MODULES_IN_STOP_PATTERN = 18;\n PDF417Common.BARS_IN_MODULE = 8;\n PDF417Common.EMPTY_INT_ARRAY = new Int32Array([]);\n /**\n * The sorted table of all possible symbols. Extracted from the PDF417\n * specification. The index of a symbol in this table corresponds to the\n * index into the codeword table.\n */\n PDF417Common.SYMBOL_TABLE = Int32Array.from([\n 0x1025e, 0x1027a, 0x1029e, 0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396, 0x103a6, 0x103ac,\n 0x10422, 0x10428, 0x10436, 0x10442, 0x10444, 0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482,\n 0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2, 0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e,\n 0x10520, 0x1053c, 0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be, 0x105ce, 0x105dc, 0x105e2,\n 0x105e4, 0x105e8, 0x105f6, 0x1062e, 0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa, 0x10716,\n 0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e, 0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6,\n 0x10822, 0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c, 0x1087a, 0x10882, 0x10884, 0x10890,\n 0x1089e, 0x108a0, 0x108bc, 0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902, 0x10908, 0x1091e,\n 0x10920, 0x1093c, 0x10940, 0x10978, 0x10986, 0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4,\n 0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c, 0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c,\n 0x10b18, 0x10b30, 0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2, 0x10bc4, 0x10bc8, 0x10bd0,\n 0x10bde, 0x10be6, 0x10bec, 0x10c2e, 0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e, 0x10c9c,\n 0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde, 0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38,\n 0x10d70, 0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0, 0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8,\n 0x10dee, 0x10df2, 0x10df4, 0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86, 0x10e8c, 0x10e98,\n 0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a, 0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44,\n 0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4, 0x11022, 0x11028, 0x11042, 0x11048, 0x11050,\n 0x1105e, 0x1107a, 0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6, 0x110cc, 0x110d8, 0x110ee,\n 0x110f2, 0x110f4, 0x11102, 0x1111e, 0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0, 0x111be,\n 0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6, 0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c,\n 0x11330, 0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2, 0x113c8, 0x113d0, 0x113de, 0x113e6,\n 0x113ec, 0x11408, 0x11410, 0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0, 0x1160c, 0x11618,\n 0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0, 0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784,\n 0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc, 0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e,\n 0x1185c, 0x11862, 0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2, 0x118c8, 0x118d0, 0x118de,\n 0x118e6, 0x118ec, 0x118fa, 0x1190e, 0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990, 0x1199e,\n 0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee, 0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70,\n 0x11a7e, 0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c, 0x11b40, 0x11b78, 0x11b8c, 0x11b98,\n 0x11bb0, 0x11bbe, 0x11bce, 0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26, 0x11c2c, 0x11c46,\n 0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98, 0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8,\n 0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60, 0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4,\n 0x11dc8, 0x11dd0, 0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14, 0x11e22, 0x11e24, 0x11e28,\n 0x11e36, 0x11e42, 0x11e44, 0x11e50, 0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90, 0x11e9e,\n 0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee, 0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c,\n 0x11f62, 0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084, 0x12090, 0x1209e, 0x120a0, 0x120bc,\n 0x120d8, 0x120f2, 0x120f4, 0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186, 0x12198, 0x121b0,\n 0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6, 0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306,\n 0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c, 0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6,\n 0x123ec, 0x1241e, 0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660, 0x1267c, 0x126c0, 0x126f8,\n 0x12738, 0x12770, 0x1277e, 0x12782, 0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc, 0x127d8,\n 0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0, 0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60,\n 0x12c7c, 0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e, 0x12ee0, 0x12efc, 0x12f04, 0x12f08,\n 0x12f10, 0x12f20, 0x12f3c, 0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe, 0x12fce, 0x12fdc,\n 0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068, 0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de,\n 0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182, 0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc,\n 0x131c6, 0x131cc, 0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e, 0x132e0, 0x132fc, 0x13308,\n 0x1331e, 0x13320, 0x1333c, 0x13340, 0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc, 0x133e2,\n 0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438, 0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8,\n 0x13608, 0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0, 0x1370c, 0x13718, 0x13730, 0x1373e,\n 0x13760, 0x1377c, 0x1379c, 0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6, 0x137ec, 0x13816,\n 0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858, 0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce,\n 0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930, 0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c,\n 0x139b8, 0x139c8, 0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c, 0x13a18, 0x13a30, 0x13a3e,\n 0x13a60, 0x13a7c, 0x13ac0, 0x13af8, 0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90, 0x13b9e,\n 0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2, 0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28,\n 0x13c36, 0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82, 0x13c84, 0x13c90, 0x13c9e, 0x13ca0,\n 0x13cbc, 0x13cc6, 0x13ccc, 0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e, 0x13d20, 0x13d3c,\n 0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98, 0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6,\n 0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62, 0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c,\n 0x13eb8, 0x13ec2, 0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26, 0x13f2c, 0x13f3a, 0x13f46,\n 0x13f4c, 0x13f58, 0x13f6e, 0x13f72, 0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108, 0x14110,\n 0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c, 0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8,\n 0x14208, 0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0, 0x14306, 0x1430c, 0x14318, 0x14330,\n 0x1433e, 0x14360, 0x1437c, 0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec, 0x14408, 0x14410,\n 0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478, 0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660,\n 0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e, 0x14782, 0x14784, 0x14788, 0x14790, 0x147a0,\n 0x147bc, 0x147c6, 0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840, 0x14878, 0x148f0, 0x149e0,\n 0x14bc0, 0x14c30, 0x14c3e, 0x14c60, 0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e, 0x14ee0,\n 0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20, 0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98,\n 0x14fb0, 0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0, 0x153c0, 0x15860, 0x1587c, 0x158c0,\n 0x158f8, 0x159f0, 0x15be0, 0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08, 0x15e10, 0x15e20,\n 0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18, 0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e,\n 0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8, 0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170,\n 0x1617e, 0x16184, 0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc, 0x161d8, 0x161f2, 0x161f4,\n 0x1620e, 0x1621c, 0x16238, 0x16270, 0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e, 0x16320,\n 0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398, 0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4,\n 0x163e8, 0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0, 0x164fc, 0x165c0, 0x165f8, 0x16610,\n 0x1661e, 0x16620, 0x1663c, 0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760, 0x1677c, 0x1678e,\n 0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8, 0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870,\n 0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e, 0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0,\n 0x16de0, 0x16e18, 0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c, 0x16f38, 0x16f70, 0x16f7e,\n 0x16f84, 0x16f88, 0x16f90, 0x16f9e, 0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c, 0x17046,\n 0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098, 0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106,\n 0x1710c, 0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c, 0x171b8, 0x171c2, 0x171c4, 0x171c8,\n 0x171d0, 0x171de, 0x171e6, 0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e, 0x17260, 0x1727c,\n 0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338, 0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc,\n 0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418, 0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0,\n 0x174f8, 0x175f0, 0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc, 0x17708, 0x17710, 0x1771e,\n 0x17720, 0x1773c, 0x17740, 0x17778, 0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8, 0x17822,\n 0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848, 0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884,\n 0x17888, 0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8, 0x178ee, 0x178f2, 0x178f4, 0x17902,\n 0x17904, 0x17908, 0x17910, 0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c, 0x17998, 0x179b0,\n 0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4, 0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20,\n 0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18, 0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e,\n 0x17b9c, 0x17bb8, 0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e, 0x17c32, 0x17c34, 0x17c4e,\n 0x17c5c, 0x17c62, 0x17c64, 0x17c68, 0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8, 0x17cd0,\n 0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38, 0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e,\n 0x17da0, 0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c, 0x17e3a, 0x17e46, 0x17e4c, 0x17e58,\n 0x17e6e, 0x17e72, 0x17e74, 0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2, 0x17ee4, 0x17ee8,\n 0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216, 0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274,\n 0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e, 0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426,\n 0x1842c, 0x1843a, 0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0, 0x184be, 0x184ce, 0x184dc,\n 0x184e2, 0x184e4, 0x184e8, 0x184f6, 0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c, 0x1858e,\n 0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0, 0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614,\n 0x18622, 0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682, 0x18684, 0x18688, 0x18690, 0x1869e,\n 0x186a0, 0x186bc, 0x186c6, 0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e, 0x1875c, 0x18796,\n 0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826, 0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872,\n 0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc, 0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c,\n 0x18930, 0x1893e, 0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0, 0x189de, 0x189e6, 0x189ec,\n 0x189fa, 0x18a18, 0x18a30, 0x18a3e, 0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70, 0x18b7e,\n 0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0, 0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2,\n 0x18bf4, 0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50, 0x18c5e, 0x18c66, 0x18c7a, 0x18c82,\n 0x18c84, 0x18c90, 0x18c9e, 0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08, 0x18d10, 0x18d1e,\n 0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86, 0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32,\n 0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e, 0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8,\n 0x18ed0, 0x18efa, 0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e, 0x18f8a, 0x18f92, 0x18f94,\n 0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6, 0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074, 0x19086,\n 0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2, 0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e,\n 0x19160, 0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0, 0x191de, 0x191e6, 0x191ec, 0x191fa,\n 0x19218, 0x1923e, 0x19260, 0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382, 0x19384, 0x19390,\n 0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc, 0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460,\n 0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e, 0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708,\n 0x19710, 0x19720, 0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0, 0x197be, 0x197ce, 0x197dc,\n 0x197e2, 0x197e4, 0x197e8, 0x19822, 0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a, 0x19882,\n 0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc, 0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920,\n 0x1993c, 0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4, 0x199e8, 0x19a08, 0x19a10, 0x19a1e,\n 0x19a20, 0x19a3c, 0x19a40, 0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2, 0x19bc4, 0x19bc8,\n 0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e, 0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8,\n 0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c, 0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84,\n 0x19d88, 0x19d90, 0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c, 0x19e46, 0x19e4c, 0x19e58,\n 0x19e74, 0x19e86, 0x19e8c, 0x19e98, 0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a, 0x19f12,\n 0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44, 0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae,\n 0x19fb2, 0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c, 0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2,\n 0x1a0e4, 0x1a0e8, 0x1a0f6, 0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c, 0x1a18e, 0x1a19c,\n 0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0, 0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260,\n 0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e, 0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e,\n 0x1a3a0, 0x1a3bc, 0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418, 0x1a430, 0x1a43e, 0x1a460,\n 0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0, 0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702, 0x1a704,\n 0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740, 0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be,\n 0x1a7ce, 0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c, 0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0,\n 0x1ac70, 0x1ac7e, 0x1ace0, 0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20, 0x1ae3c, 0x1ae40,\n 0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18, 0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8,\n 0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a, 0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e,\n 0x1b0a0, 0x1b0bc, 0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110, 0x1b11e, 0x1b120, 0x1b13c,\n 0x1b140, 0x1b178, 0x1b186, 0x1b198, 0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210, 0x1b21e,\n 0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c, 0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8,\n 0x1b3d0, 0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478, 0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660,\n 0x1b67c, 0x1b6c0, 0x1b738, 0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc, 0x1b82e, 0x1b84e,\n 0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2, 0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c,\n 0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990, 0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4,\n 0x1ba0e, 0x1ba1c, 0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10, 0x1bb20, 0x1bb3c, 0x1bb40,\n 0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4, 0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58, 0x1bc72,\n 0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe, 0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c,\n 0x1bd18, 0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4, 0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa,\n 0x1be12, 0x1be14, 0x1be22, 0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e, 0x1be66, 0x1be82,\n 0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0, 0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34,\n 0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2, 0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162,\n 0x1c164, 0x1c168, 0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c, 0x1c262, 0x1c264, 0x1c268,\n 0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4, 0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316, 0x1c326,\n 0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a, 0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462,\n 0x1c464, 0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8, 0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec,\n 0x1c4fa, 0x1c51c, 0x1c538, 0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e, 0x1c5a0, 0x1c5bc,\n 0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2, 0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c,\n 0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698, 0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2,\n 0x1c6e4, 0x1c6e8, 0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744, 0x1c748, 0x1c750, 0x1c75e,\n 0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae, 0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e, 0x1c85c,\n 0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c, 0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6,\n 0x1c8ec, 0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984, 0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc,\n 0x1c9c6, 0x1c9cc, 0x1c9d8, 0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0, 0x1cafc, 0x1cb02,\n 0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c, 0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe,\n 0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16, 0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58,\n 0x1cc72, 0x1cc74, 0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8, 0x1cd06, 0x1cd0c, 0x1cd18,\n 0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c, 0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6, 0x1cdfa,\n 0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66, 0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e,\n 0x1cea0, 0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34, 0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64,\n 0x1cf68, 0x1cf96, 0x1cfa6, 0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034, 0x1d04e, 0x1d05c,\n 0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e, 0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de,\n 0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e, 0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e,\n 0x1d1a0, 0x1d1bc, 0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c, 0x1d238, 0x1d270, 0x1d27e,\n 0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304, 0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378, 0x1d386,\n 0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc, 0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e,\n 0x1d4e0, 0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620, 0x1d640, 0x1d678, 0x1d6f0, 0x1d706,\n 0x1d70c, 0x1d718, 0x1d730, 0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2, 0x1d7c4, 0x1d7c8,\n 0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826, 0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874,\n 0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2, 0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918,\n 0x1d930, 0x1d93e, 0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0, 0x1d9e6, 0x1d9fa, 0x1da0c,\n 0x1da18, 0x1da30, 0x1da3e, 0x1da60, 0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88, 0x1db90,\n 0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22, 0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66,\n 0x1dc7a, 0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc, 0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04,\n 0x1dd08, 0x1dd10, 0x1dd1e, 0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce, 0x1dde2, 0x1dde4,\n 0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e, 0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8,\n 0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16, 0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58,\n 0x1df72, 0x1df74, 0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a, 0x1e092, 0x1e094, 0x1e0a2,\n 0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da, 0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136, 0x1e142,\n 0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a, 0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214,\n 0x1e222, 0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e, 0x1e266, 0x1e26c, 0x1e27a, 0x1e282,\n 0x1e284, 0x1e288, 0x1e290, 0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2, 0x1e2f4, 0x1e31a,\n 0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364, 0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428,\n 0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c, 0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e,\n 0x1e4a0, 0x1e4bc, 0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502, 0x1e504, 0x1e508, 0x1e510,\n 0x1e51e, 0x1e520, 0x1e53c, 0x1e540, 0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce, 0x1e5dc,\n 0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e, 0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668,\n 0x1e68e, 0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6, 0x1e6fa, 0x1e716, 0x1e726, 0x1e72c,\n 0x1e73a, 0x1e746, 0x1e74c, 0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4, 0x1e7a8, 0x1e7b6,\n 0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828, 0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866,\n 0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e, 0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8,\n 0x1e8ee, 0x1e8f2, 0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c, 0x1e940, 0x1e978, 0x1e986,\n 0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be, 0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04, 0x1ea08,\n 0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06, 0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c,\n 0x1eb8e, 0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde, 0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e,\n 0x1ec32, 0x1ec34, 0x1ec4e, 0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8, 0x1ecc2, 0x1ecc4,\n 0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e, 0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88,\n 0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16, 0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c,\n 0x1ee58, 0x1ee6e, 0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe, 0x1eece, 0x1eedc, 0x1eee2,\n 0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22, 0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50, 0x1ef5e,\n 0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4, 0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca,\n 0x1f0d2, 0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c, 0x1f158, 0x1f16e, 0x1f172, 0x1f174,\n 0x1f18a, 0x1f192, 0x1f194, 0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c, 0x1f23a, 0x1f246,\n 0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286, 0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2,\n 0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322, 0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350,\n 0x1f35e, 0x1f366, 0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426, 0x1f42c, 0x1f43a, 0x1f446,\n 0x1f44c, 0x1f458, 0x1f46e, 0x1f472, 0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce, 0x1f4dc,\n 0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c, 0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e,\n 0x1f59c, 0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6, 0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612,\n 0x1f614, 0x1f622, 0x1f624, 0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e, 0x1f666, 0x1f67a,\n 0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e, 0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e,\n 0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768, 0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba,\n 0x1f7d2, 0x1f7d4, 0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a, 0x1f92e, 0x1f932, 0x1f934,\n 0x1f94e, 0x1f95c, 0x1f962, 0x1f964, 0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca, 0x1f9d2,\n 0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e, 0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e,\n 0x1fa9c, 0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6, 0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c,\n 0x1fb3a, 0x1fb46, 0x1fb4c, 0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94, 0x1fba2, 0x1fba4,\n 0x1fba8, 0x1fbb6, 0x1fbda\n ]);\n /**\n * This table contains to codewords for all symbols.\n */\n PDF417Common.CODEWORD_TABLE = Int32Array.from([\n 2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, 861, 859, 2511,\n 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815,\n 814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752,\n 2739, 2737, 2728, 2727, 2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, 754, 752,\n 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651,\n 646, 643, 2345, 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319, 2317, 611, 610, 608, 606,\n 2324, 603, 2323, 615, 614, 612, 1617, 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909,\n 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487, 2485, 1748, 836, 834, 832, 830,\n 2494, 827, 2492, 843, 841, 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629,\n 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591,\n 588, 576, 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466,\n 2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, 419,\n 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155,\n 2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, 1414, 385, 1411, 384,\n 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756,\n 753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337,\n 2336, 2334, 2332, 1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, 653, 1653,\n 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900,\n 910, 2503, 2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, 876, 874, 1782, 2720, 2713,\n 2711, 2697, 2694, 2691, 2702, 2672, 2670, 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654,\n 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142,\n 332, 2140, 345, 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356, 262,\n 257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, 2052,\n 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266,\n 1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, 159, 2003, 2000, 172, 171,\n 169, 2012, 166, 2010, 1186, 1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313,\n 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, 1591, 2272, 2267, 2264, 1547, 538, 536, 529,\n 2278, 525, 2275, 547, 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244, 465, 2241,\n 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414,\n 412, 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471, 1469, 1466, 434,\n 1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785,\n 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358, 2357, 2355, 2353,\n 1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689,\n 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573,\n 2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539,\n 906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, 1824, 2673, 2671, 2669,\n 2666, 1829, 2679, 2677, 1858, 1857, 2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133,\n 131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130, 112, 110, 1974, 107, 1973, 104, 1971,\n 1969, 122, 121, 119, 117, 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78,\n 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100,\n 1090, 1089, 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64,\n 1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, 1867,\n 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989,\n 987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359,\n 343, 341, 338, 2143, 335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308,\n 305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089,\n 2087, 1276, 2084, 1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, 2106, 281, 279,\n 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205,\n 2051, 201, 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069, 1259, 1257, 1254, 232,\n 1251, 230, 1267, 1265, 1263, 2316, 2315, 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590,\n 2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571, 2298, 582, 581, 1592, 2263, 2262,\n 2260, 2258, 1545, 2255, 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543, 549,\n 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480,\n 477, 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469, 2468, 2466,\n 2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427,\n 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388,\n 2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751,\n 748, 744, 2416, 759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, 2594, 2592,\n 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569,\n 2578, 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832, 1830, 1839, 1837, 2700, 2698, 2695,\n 2704, 1817, 1811, 1810, 897, 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624, 1818,\n 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648,\n 602, 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328, 926, 924, 892,\n 886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632,\n 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486,\n 483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366,\n 363, 2158, 360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412,\n 1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684,\n 1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, 2530, 2527,\n 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759,\n 2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, 2126, 315, 312, 1347, 1342,\n 1350, 261, 258, 250, 2097, 246, 2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195,\n 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997,\n 150, 1995, 147, 1992, 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167, 1185, 1183,\n 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268,\n 508, 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523, 1520, 397, 395,\n 2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779,\n 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688,\n 1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718,\n 2709, 2707, 2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138,\n 134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108,\n 1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, 1074, 1072, 98,\n 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920,\n 1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, 1046, 1044, 1944, 1943, 1941, 11, 9,\n 1868, 7, 1865, 1862, 1859, 20, 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981, 978, 975,\n 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339,\n 1372, 1370, 294, 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245, 244, 242, 2090,\n 239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033,\n 2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302, 2300, 2286, 2284,\n 2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569,\n 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467,\n 2465, 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379,\n 1695, 2375, 1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, 2579,\n 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688,\n 2686, 1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, 1674, 633, 629, 1638, 1636,\n 1633, 1641, 598, 1605, 1604, 1602, 1600, 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524,\n 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361,\n 358, 2154, 1401, 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712, 672,\n 669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849,\n 848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335, 1343,\n 255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, 1224, 214, 1220, 210,\n 1242, 1239, 1235, 1250, 2077, 2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157,\n 1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, 557, 1585, 516, 509, 1562, 1559, 458,\n 447, 2227, 472, 1516, 1513, 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446, 420, 1460,\n 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919,\n 2519, 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125, 1124, 1122, 1127,\n 109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060,\n 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008,\n 51, 1029, 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952,\n 949, 946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, 350,\n 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086,\n 233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, 177, 2027, 199, 1233, 1231,\n 1229, 1226, 217, 1223, 1241, 2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, 499,\n 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798,\n 797, 2422, 2419, 770, 768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, 2580, 2548, 2546,\n 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670,\n 1668, 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753, 1751, 1581, 1554, 1552, 1504,\n 1501, 1498, 1509, 1442, 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394,\n 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281,\n 1278, 248, 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071, 1151, 1150,\n 1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582,\n 510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716, 713, 1709,\n 662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094,\n 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007,\n 1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940,\n 938, 935, 932, 5, 2, 955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, 1897,\n 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185,\n 181, 178, 2028, 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583, 505, 503, 500, 513,\n 1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706,\n 2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747, 1499, 1438, 1435, 2204,\n 1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207,\n 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487,\n 1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052, 1062,\n 1962, 1960, 1005, 1003, 1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, 6, 930, 3, 951,\n 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275,\n 1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, 1580, 501, 1551, 1548,\n 440, 437, 1497, 1494, 1490, 1503, 761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208,\n 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954,\n 1001, 998, 1924, 1921, 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323, 1273, 1270,\n 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540, 1484, 1481, 1478, 1491, 1700\n ]);\n\n /*\n * Copyright 2007 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // import java.util.List;\n /**\n * @author Guenther Grau\n */\n /*public final*/ class PDF417DetectorResult {\n constructor(bits, points) {\n this.bits = bits;\n this.points = points;\n }\n getBits() {\n return this.bits;\n }\n getPoints() {\n return this.points;\n }\n }\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // import java.util.ArrayList;\n // import java.util.Arrays;\n // import java.util.List;\n // import java.util.Map;\n /**\n * Encapsulates logic that can detect a PDF417 Code in an image, even if the\n * PDF417 Code is rotated or skewed, or partially obscured.
\n *\n * @author SITA Lab (kevin.osullivan@sita.aero)\n * @author dswitkin@google.com (Daniel Switkin)\n * @author Guenther Grau\n */\n /*public*/ /*final*/ class Detector$3 {\n /**\n * Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.
\n *\n * @param image barcode image to decode\n * @param hints optional hints to detector\n * @param multiple if true, then the image is searched for multiple codes. If false, then at most one code will\n * be found and returned\n * @return {@link PDF417DetectorResult} encapsulating results of detecting a PDF417 code\n * @throws NotFoundException if no PDF417 Code can be found\n */\n static detectMultiple(image, hints, multiple) {\n // TODO detection improvement, tryHarder could try several different luminance thresholds/blackpoints or even\n // different binarizers\n // boolean tryHarder = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER);\n let bitMatrix = image.getBlackMatrix();\n let barcodeCoordinates = Detector$3.detect(multiple, bitMatrix);\n if (!barcodeCoordinates.length) {\n bitMatrix = bitMatrix.clone();\n bitMatrix.rotate180();\n barcodeCoordinates = Detector$3.detect(multiple, bitMatrix);\n }\n return new PDF417DetectorResult(bitMatrix, barcodeCoordinates);\n }\n /**\n * Detects PDF417 codes in an image. Only checks 0 degree rotation\n * @param multiple if true, then the image is searched for multiple codes. If false, then at most one code will\n * be found and returned\n * @param bitMatrix bit matrix to detect barcodes in\n * @return List of ResultPoint arrays containing the coordinates of found barcodes\n */\n static detect(multiple, bitMatrix) {\n const barcodeCoordinates = new Array();\n let row = 0;\n let column = 0;\n let foundBarcodeInRow = false;\n while (row < bitMatrix.getHeight()) {\n const vertices = Detector$3.findVertices(bitMatrix, row, column);\n if (vertices[0] == null && vertices[3] == null) {\n if (!foundBarcodeInRow) {\n // we didn't find any barcode so that's the end of searching\n break;\n }\n // we didn't find a barcode starting at the given column and row. Try again from the first column and slightly\n // below the lowest barcode we found so far.\n foundBarcodeInRow = false;\n column = 0;\n for (const barcodeCoordinate of barcodeCoordinates) {\n if (barcodeCoordinate[1] != null) {\n row = Math.trunc(Math.max(row, barcodeCoordinate[1].getY()));\n }\n if (barcodeCoordinate[3] != null) {\n row = Math.max(row, Math.trunc(barcodeCoordinate[3].getY()));\n }\n }\n row += Detector$3.ROW_STEP;\n continue;\n }\n foundBarcodeInRow = true;\n barcodeCoordinates.push(vertices);\n if (!multiple) {\n break;\n }\n // if we didn't find a right row indicator column, then continue the search for the next barcode after the\n // start pattern of the barcode just found.\n if (vertices[2] != null) {\n column = Math.trunc(vertices[2].getX());\n row = Math.trunc(vertices[2].getY());\n }\n else {\n column = Math.trunc(vertices[4].getX());\n row = Math.trunc(vertices[4].getY());\n }\n }\n return barcodeCoordinates;\n }\n /**\n * Locate the vertices and the codewords area of a black blob using the Start\n * and Stop patterns as locators.\n *\n * @param matrix the scanned barcode image.\n * @return an array containing the vertices:\n * vertices[0] x, y top left barcode\n * vertices[1] x, y bottom left barcode\n * vertices[2] x, y top right barcode\n * vertices[3] x, y bottom right barcode\n * vertices[4] x, y top left codeword area\n * vertices[5] x, y bottom left codeword area\n * vertices[6] x, y top right codeword area\n * vertices[7] x, y bottom right codeword area\n */\n static findVertices(matrix, startRow, startColumn) {\n const height = matrix.getHeight();\n const width = matrix.getWidth();\n // const result = new ResultPoint[8];\n const result = new Array(8);\n Detector$3.copyToResult(result, Detector$3.findRowsWithPattern(matrix, height, width, startRow, startColumn, Detector$3.START_PATTERN), Detector$3.INDEXES_START_PATTERN);\n if (result[4] != null) {\n startColumn = Math.trunc(result[4].getX());\n startRow = Math.trunc(result[4].getY());\n }\n Detector$3.copyToResult(result, Detector$3.findRowsWithPattern(matrix, height, width, startRow, startColumn, Detector$3.STOP_PATTERN), Detector$3.INDEXES_STOP_PATTERN);\n return result;\n }\n static copyToResult(result, tmpResult, destinationIndexes) {\n for (let i = 0; i < destinationIndexes.length; i++) {\n result[destinationIndexes[i]] = tmpResult[i];\n }\n }\n static findRowsWithPattern(matrix, height, width, startRow, startColumn, pattern) {\n // const result = new ResultPoint[4];\n const result = new Array(4);\n let found = false;\n const counters = new Int32Array(pattern.length);\n for (; startRow < height; startRow += Detector$3.ROW_STEP) {\n let loc = Detector$3.findGuardPattern(matrix, startColumn, startRow, width, false, pattern, counters);\n if (loc != null) {\n while (startRow > 0) {\n const previousRowLoc = Detector$3.findGuardPattern(matrix, startColumn, --startRow, width, false, pattern, counters);\n if (previousRowLoc != null) {\n loc = previousRowLoc;\n }\n else {\n startRow++;\n break;\n }\n }\n result[0] = new ResultPoint(loc[0], startRow);\n result[1] = new ResultPoint(loc[1], startRow);\n found = true;\n break;\n }\n }\n let stopRow = startRow + 1;\n // Last row of the current symbol that contains pattern\n if (found) {\n let skippedRowCount = 0;\n let previousRowLoc = Int32Array.from([Math.trunc(result[0].getX()), Math.trunc(result[1].getX())]);\n for (; stopRow < height; stopRow++) {\n const loc = Detector$3.findGuardPattern(matrix, previousRowLoc[0], stopRow, width, false, pattern, counters);\n // a found pattern is only considered to belong to the same barcode if the start and end positions\n // don't differ too much. Pattern drift should be not bigger than two for consecutive rows. With\n // a higher number of skipped rows drift could be larger. To keep it simple for now, we allow a slightly\n // larger drift and don't check for skipped rows.\n if (loc != null &&\n Math.abs(previousRowLoc[0] - loc[0]) < Detector$3.MAX_PATTERN_DRIFT &&\n Math.abs(previousRowLoc[1] - loc[1]) < Detector$3.MAX_PATTERN_DRIFT) {\n previousRowLoc = loc;\n skippedRowCount = 0;\n }\n else {\n if (skippedRowCount > Detector$3.SKIPPED_ROW_COUNT_MAX) {\n break;\n }\n else {\n skippedRowCount++;\n }\n }\n }\n stopRow -= skippedRowCount + 1;\n result[2] = new ResultPoint(previousRowLoc[0], stopRow);\n result[3] = new ResultPoint(previousRowLoc[1], stopRow);\n }\n if (stopRow - startRow < Detector$3.BARCODE_MIN_HEIGHT) {\n Arrays.fill(result, null);\n }\n return result;\n }\n /**\n * @param matrix row of black/white values to search\n * @param column x position to start search\n * @param row y position to start search\n * @param width the number of pixels to search on this row\n * @param pattern pattern of counts of number of black and white pixels that are\n * being searched for as a pattern\n * @param counters array of counters, as long as pattern, to re-use\n * @return start/end horizontal offset of guard pattern, as an array of two ints.\n */\n static findGuardPattern(matrix, column, row, width, whiteFirst, pattern, counters) {\n Arrays.fillWithin(counters, 0, counters.length, 0);\n let patternStart = column;\n let pixelDrift = 0;\n // if there are black pixels left of the current pixel shift to the left, but only for MAX_PIXEL_DRIFT pixels\n while (matrix.get(patternStart, row) && patternStart > 0 && pixelDrift++ < Detector$3.MAX_PIXEL_DRIFT) {\n patternStart--;\n }\n let x = patternStart;\n let counterPosition = 0;\n let patternLength = pattern.length;\n for (let isWhite = whiteFirst; x < width; x++) {\n let pixel = matrix.get(x, row);\n if (pixel !== isWhite) {\n counters[counterPosition]++;\n }\n else {\n if (counterPosition === patternLength - 1) {\n if (Detector$3.patternMatchVariance(counters, pattern, Detector$3.MAX_INDIVIDUAL_VARIANCE) < Detector$3.MAX_AVG_VARIANCE) {\n return new Int32Array([patternStart, x]);\n }\n patternStart += counters[0] + counters[1];\n System.arraycopy(counters, 2, counters, 0, counterPosition - 1);\n counters[counterPosition - 1] = 0;\n counters[counterPosition] = 0;\n counterPosition--;\n }\n else {\n counterPosition++;\n }\n counters[counterPosition] = 1;\n isWhite = !isWhite;\n }\n }\n if (counterPosition === patternLength - 1 &&\n Detector$3.patternMatchVariance(counters, pattern, Detector$3.MAX_INDIVIDUAL_VARIANCE) < Detector$3.MAX_AVG_VARIANCE) {\n return new Int32Array([patternStart, x - 1]);\n }\n return null;\n }\n /**\n * Determines how closely a set of observed counts of runs of black/white\n * values matches a given target pattern. This is reported as the ratio of\n * the total variance from the expected pattern proportions across all\n * pattern elements, to the length of the pattern.\n *\n * @param counters observed counters\n * @param pattern expected pattern\n * @param maxIndividualVariance The most any counter can differ before we give up\n * @return ratio of total variance between counters and pattern compared to total pattern size\n */\n static patternMatchVariance(counters, pattern, maxIndividualVariance) {\n let numCounters = counters.length;\n let total = 0;\n let patternLength = 0;\n for (let i = 0; i < numCounters; i++) {\n total += counters[i];\n patternLength += pattern[i];\n }\n if (total < patternLength) {\n // If we don't even have one pixel per unit of bar width, assume this\n // is too small to reliably match, so fail:\n return /*Float.POSITIVE_INFINITY*/ Infinity;\n }\n // We're going to fake floating-point math in integers. We just need to use more bits.\n // Scale up patternLength so that intermediate values below like scaledCounter will have\n // more \"significant digits\".\n let unitBarWidth = total / patternLength;\n maxIndividualVariance *= unitBarWidth;\n let totalVariance = 0.0;\n for (let x = 0; x < numCounters; x++) {\n let counter = counters[x];\n let scaledPattern = pattern[x] * unitBarWidth;\n let variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter;\n if (variance > maxIndividualVariance) {\n return /*Float.POSITIVE_INFINITY*/ Infinity;\n }\n totalVariance += variance;\n }\n return totalVariance / total;\n }\n }\n Detector$3.INDEXES_START_PATTERN = Int32Array.from([0, 4, 1, 5]);\n Detector$3.INDEXES_STOP_PATTERN = Int32Array.from([6, 2, 7, 3]);\n Detector$3.MAX_AVG_VARIANCE = 0.42;\n Detector$3.MAX_INDIVIDUAL_VARIANCE = 0.8;\n // B S B S B S B S Bar/Space pattern\n // 11111111 0 1 0 1 0 1 000\n Detector$3.START_PATTERN = Int32Array.from([8, 1, 1, 1, 1, 1, 1, 3]);\n // 1111111 0 1 000 1 0 1 00 1\n Detector$3.STOP_PATTERN = Int32Array.from([7, 1, 1, 3, 1, 1, 1, 2, 1]);\n Detector$3.MAX_PIXEL_DRIFT = 3;\n Detector$3.MAX_PATTERN_DRIFT = 5;\n // if we set the value too low, then we don't detect the correct height of the bar if the start patterns are damaged.\n // if we set the value too high, then we might detect the start pattern from a neighbor barcode.\n Detector$3.SKIPPED_ROW_COUNT_MAX = 25;\n // A PDF471 barcode should have at least 3 rows, with each row being >= 3 times the module width. Therefore it should be at least\n // 9 pixels tall. To be conservative, we use about half the size to ensure we don't miss it.\n Detector$3.ROW_STEP = 5;\n Detector$3.BARCODE_MIN_HEIGHT = 10;\n\n /*\n * Copyright 2012 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Sean Owen\n * @see com.google.zxing.common.reedsolomon.GenericGFPoly\n */\n /*final*/ class ModulusPoly {\n constructor(field, coefficients) {\n if (coefficients.length === 0) {\n throw new IllegalArgumentException();\n }\n this.field = field;\n let coefficientsLength = /*int*/ coefficients.length;\n if (coefficientsLength > 1 && coefficients[0] === 0) {\n // Leading term must be non-zero for anything except the constant polynomial \"0\"\n let firstNonZero = /*int*/ 1;\n while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n firstNonZero++;\n }\n if (firstNonZero === coefficientsLength) {\n this.coefficients = new Int32Array([0]);\n }\n else {\n this.coefficients = new Int32Array(coefficientsLength - firstNonZero);\n System.arraycopy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\n }\n }\n else {\n this.coefficients = coefficients;\n }\n }\n getCoefficients() {\n return this.coefficients;\n }\n /**\n * @return degree of this polynomial\n */\n getDegree() {\n return this.coefficients.length - 1;\n }\n /**\n * @return true iff this polynomial is the monomial \"0\"\n */\n isZero() {\n return this.coefficients[0] === 0;\n }\n /**\n * @return coefficient of x^degree term in this polynomial\n */\n getCoefficient(degree) {\n return this.coefficients[this.coefficients.length - 1 - degree];\n }\n /**\n * @return evaluation of this polynomial at a given point\n */\n evaluateAt(a) {\n if (a === 0) {\n // Just return the x^0 coefficient\n return this.getCoefficient(0);\n }\n if (a === 1) {\n // Just the sum of the coefficients\n let sum = /*int*/ 0;\n for (let coefficient /*int*/ of this.coefficients) {\n sum = this.field.add(sum, coefficient);\n }\n return sum;\n }\n let result = /*int*/ this.coefficients[0];\n let size = /*int*/ this.coefficients.length;\n for (let i /*int*/ = 1; i < size; i++) {\n result = this.field.add(this.field.multiply(a, result), this.coefficients[i]);\n }\n return result;\n }\n add(other) {\n if (!this.field.equals(other.field)) {\n throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n }\n if (this.isZero()) {\n return other;\n }\n if (other.isZero()) {\n return this;\n }\n let smallerCoefficients = this.coefficients;\n let largerCoefficients = other.coefficients;\n if (smallerCoefficients.length > largerCoefficients.length) {\n let temp = smallerCoefficients;\n smallerCoefficients = largerCoefficients;\n largerCoefficients = temp;\n }\n let sumDiff = new Int32Array(largerCoefficients.length);\n let lengthDiff = /*int*/ largerCoefficients.length - smallerCoefficients.length;\n // Copy high-order terms only found in higher-degree polynomial's coefficients\n System.arraycopy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\n for (let i /*int*/ = lengthDiff; i < largerCoefficients.length; i++) {\n sumDiff[i] = this.field.add(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n }\n return new ModulusPoly(this.field, sumDiff);\n }\n subtract(other) {\n if (!this.field.equals(other.field)) {\n throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n }\n if (other.isZero()) {\n return this;\n }\n return this.add(other.negative());\n }\n multiply(other) {\n if (other instanceof ModulusPoly) {\n return this.multiplyOther(other);\n }\n return this.multiplyScalar(other);\n }\n multiplyOther(other) {\n if (!this.field.equals(other.field)) {\n throw new IllegalArgumentException('ModulusPolys do not have same ModulusGF field');\n }\n if (this.isZero() || other.isZero()) {\n // return this.field.getZero();\n return new ModulusPoly(this.field, new Int32Array([0]));\n }\n let aCoefficients = this.coefficients;\n let aLength = /*int*/ aCoefficients.length;\n let bCoefficients = other.coefficients;\n let bLength = /*int*/ bCoefficients.length;\n let product = new Int32Array(aLength + bLength - 1);\n for (let i /*int*/ = 0; i < aLength; i++) {\n let aCoeff = /*int*/ aCoefficients[i];\n for (let j /*int*/ = 0; j < bLength; j++) {\n product[i + j] = this.field.add(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\n }\n }\n return new ModulusPoly(this.field, product);\n }\n negative() {\n let size = /*int*/ this.coefficients.length;\n let negativeCoefficients = new Int32Array(size);\n for (let i /*int*/ = 0; i < size; i++) {\n negativeCoefficients[i] = this.field.subtract(0, this.coefficients[i]);\n }\n return new ModulusPoly(this.field, negativeCoefficients);\n }\n multiplyScalar(scalar) {\n if (scalar === 0) {\n return new ModulusPoly(this.field, new Int32Array([0]));\n }\n if (scalar === 1) {\n return this;\n }\n let size = /*int*/ this.coefficients.length;\n let product = new Int32Array(size);\n for (let i /*int*/ = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], scalar);\n }\n return new ModulusPoly(this.field, product);\n }\n multiplyByMonomial(degree, coefficient) {\n if (degree < 0) {\n throw new IllegalArgumentException();\n }\n if (coefficient === 0) {\n return new ModulusPoly(this.field, new Int32Array([0]));\n }\n let size = /*int*/ this.coefficients.length;\n let product = new Int32Array(size + degree);\n for (let i /*int*/ = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], coefficient);\n }\n return new ModulusPoly(this.field, product);\n }\n /*\n ModulusPoly[] divide(other: ModulusPoly) {\n if (!field.equals(other.field)) {\n throw new IllegalArgumentException(\"ModulusPolys do not have same ModulusGF field\");\n }\n if (other.isZero()) {\n throw new IllegalArgumentException(\"Divide by 0\");\n }\n \n let quotient: ModulusPoly = field.getZero();\n let remainder: ModulusPoly = this;\n \n let denominatorLeadingTerm: /*int/ number = other.getCoefficient(other.getDegree());\n let inverseDenominatorLeadingTerm: /*int/ number = field.inverse(denominatorLeadingTerm);\n \n while (remainder.getDegree() >= other.getDegree() && !remainder.isZero()) {\n let degreeDifference: /*int/ number = remainder.getDegree() - other.getDegree();\n let scale: /*int/ number = field.multiply(remainder.getCoefficient(remainder.getDegree()), inverseDenominatorLeadingTerm);\n let term: ModulusPoly = other.multiplyByMonomial(degreeDifference, scale);\n let iterationQuotient: ModulusPoly = field.buildMonomial(degreeDifference, scale);\n quotient = quotient.add(iterationQuotient);\n remainder = remainder.subtract(term);\n }\n \n return new ModulusPoly[] { quotient, remainder };\n }\n */\n // @Override\n toString() {\n let result = new StringBuilder( /*8 * this.getDegree()*/); // dynamic string size in JS\n for (let degree /*int*/ = this.getDegree(); degree >= 0; degree--) {\n let coefficient = /*int*/ this.getCoefficient(degree);\n if (coefficient !== 0) {\n if (coefficient < 0) {\n result.append(' - ');\n coefficient = -coefficient;\n }\n else {\n if (result.length() > 0) {\n result.append(' + ');\n }\n }\n if (degree === 0 || coefficient !== 1) {\n result.append(coefficient);\n }\n if (degree !== 0) {\n if (degree === 1) {\n result.append('x');\n }\n else {\n result.append('x^');\n result.append(degree);\n }\n }\n }\n }\n return result.toString();\n }\n }\n\n class ModulusBase {\n add(a, b) {\n return (a + b) % this.modulus;\n }\n subtract(a, b) {\n return (this.modulus + a - b) % this.modulus;\n }\n exp(a) {\n return this.expTable[a];\n }\n log(a) {\n if (a === 0) {\n throw new IllegalArgumentException();\n }\n return this.logTable[a];\n }\n inverse(a) {\n if (a === 0) {\n throw new ArithmeticException();\n }\n return this.expTable[this.modulus - this.logTable[a] - 1];\n }\n multiply(a, b) {\n if (a === 0 || b === 0) {\n return 0;\n }\n return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.modulus - 1)];\n }\n getSize() {\n return this.modulus;\n }\n equals(o) {\n return o === this;\n }\n }\n\n /*\n * Copyright 2012 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * A field based on powers of a generator integer, modulo some modulus.
\n *\n * @author Sean Owen\n * @see com.google.zxing.common.reedsolomon.GenericGF\n */\n /*public final*/ class ModulusGF extends ModulusBase {\n // private /*final*/ modulus: /*int*/ number;\n constructor(modulus, generator) {\n super();\n this.modulus = modulus;\n this.expTable = new Int32Array(modulus);\n this.logTable = new Int32Array(modulus);\n let x = /*int*/ 1;\n for (let i /*int*/ = 0; i < modulus; i++) {\n this.expTable[i] = x;\n x = (x * generator) % modulus;\n }\n for (let i /*int*/ = 0; i < modulus - 1; i++) {\n this.logTable[this.expTable[i]] = i;\n }\n // logTable[0] == 0 but this should never be used\n this.zero = new ModulusPoly(this, new Int32Array([0]));\n this.one = new ModulusPoly(this, new Int32Array([1]));\n }\n getZero() {\n return this.zero;\n }\n getOne() {\n return this.one;\n }\n buildMonomial(degree, coefficient) {\n if (degree < 0) {\n throw new IllegalArgumentException();\n }\n if (coefficient === 0) {\n return this.zero;\n }\n let coefficients = new Int32Array(degree + 1);\n coefficients[0] = coefficient;\n return new ModulusPoly(this, coefficients);\n }\n }\n ModulusGF.PDF417_GF = new ModulusGF(PDF417Common.NUMBER_OF_CODEWORDS, 3);\n\n /*\n * Copyright 2012 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * PDF417 error correction implementation.
\n *\n * This example\n * is quite useful in understanding the algorithm.
\n *\n * @author Sean Owen\n * @see com.google.zxing.common.reedsolomon.ReedSolomonDecoder\n */\n /*public final*/ class ErrorCorrection {\n constructor() {\n this.field = ModulusGF.PDF417_GF;\n }\n /**\n * @param received received codewords\n * @param numECCodewords number of those codewords used for EC\n * @param erasures location of erasures\n * @return number of errors\n * @throws ChecksumException if errors cannot be corrected, maybe because of too many errors\n */\n decode(received, numECCodewords, erasures) {\n let poly = new ModulusPoly(this.field, received);\n let S = new Int32Array(numECCodewords);\n let error = false;\n for (let i /*int*/ = numECCodewords; i > 0; i--) {\n let evaluation = poly.evaluateAt(this.field.exp(i));\n S[numECCodewords - i] = evaluation;\n if (evaluation !== 0) {\n error = true;\n }\n }\n if (!error) {\n return 0;\n }\n let knownErrors = this.field.getOne();\n if (erasures != null) {\n for (const erasure of erasures) {\n let b = this.field.exp(received.length - 1 - erasure);\n // Add (1 - bx) term:\n let term = new ModulusPoly(this.field, new Int32Array([this.field.subtract(0, b), 1]));\n knownErrors = knownErrors.multiply(term);\n }\n }\n let syndrome = new ModulusPoly(this.field, S);\n // syndrome = syndrome.multiply(knownErrors);\n let sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(numECCodewords, 1), syndrome, numECCodewords);\n let sigma = sigmaOmega[0];\n let omega = sigmaOmega[1];\n // sigma = sigma.multiply(knownErrors);\n let errorLocations = this.findErrorLocations(sigma);\n let errorMagnitudes = this.findErrorMagnitudes(omega, sigma, errorLocations);\n for (let i /*int*/ = 0; i < errorLocations.length; i++) {\n let position = received.length - 1 - this.field.log(errorLocations[i]);\n if (position < 0) {\n throw ChecksumException.getChecksumInstance();\n }\n received[position] = this.field.subtract(received[position], errorMagnitudes[i]);\n }\n return errorLocations.length;\n }\n /**\n *\n * @param ModulusPoly\n * @param a\n * @param ModulusPoly\n * @param b\n * @param int\n * @param R\n * @throws ChecksumException\n */\n runEuclideanAlgorithm(a, b, R) {\n // Assume a's degree is >= b's\n if (a.getDegree() < b.getDegree()) {\n let temp = a;\n a = b;\n b = temp;\n }\n let rLast = a;\n let r = b;\n let tLast = this.field.getZero();\n let t = this.field.getOne();\n // Run Euclidean algorithm until r's degree is less than R/2\n while (r.getDegree() >= Math.round(R / 2)) {\n let rLastLast = rLast;\n let tLastLast = tLast;\n rLast = r;\n tLast = t;\n // Divide rLastLast by rLast, with quotient in q and remainder in r\n if (rLast.isZero()) {\n // Oops, Euclidean algorithm already terminated?\n throw ChecksumException.getChecksumInstance();\n }\n r = rLastLast;\n let q = this.field.getZero();\n let denominatorLeadingTerm = rLast.getCoefficient(rLast.getDegree());\n let dltInverse = this.field.inverse(denominatorLeadingTerm);\n while (r.getDegree() >= rLast.getDegree() && !r.isZero()) {\n let degreeDiff = r.getDegree() - rLast.getDegree();\n let scale = this.field.multiply(r.getCoefficient(r.getDegree()), dltInverse);\n q = q.add(this.field.buildMonomial(degreeDiff, scale));\n r = r.subtract(rLast.multiplyByMonomial(degreeDiff, scale));\n }\n t = q.multiply(tLast).subtract(tLastLast).negative();\n }\n let sigmaTildeAtZero = t.getCoefficient(0);\n if (sigmaTildeAtZero === 0) {\n throw ChecksumException.getChecksumInstance();\n }\n let inverse = this.field.inverse(sigmaTildeAtZero);\n let sigma = t.multiply(inverse);\n let omega = r.multiply(inverse);\n return [sigma, omega];\n }\n /**\n *\n * @param errorLocator\n * @throws ChecksumException\n */\n findErrorLocations(errorLocator) {\n // This is a direct application of Chien's search\n let numErrors = errorLocator.getDegree();\n let result = new Int32Array(numErrors);\n let e = 0;\n for (let i /*int*/ = 1; i < this.field.getSize() && e < numErrors; i++) {\n if (errorLocator.evaluateAt(i) === 0) {\n result[e] = this.field.inverse(i);\n e++;\n }\n }\n if (e !== numErrors) {\n throw ChecksumException.getChecksumInstance();\n }\n return result;\n }\n findErrorMagnitudes(errorEvaluator, errorLocator, errorLocations) {\n let errorLocatorDegree = errorLocator.getDegree();\n let formalDerivativeCoefficients = new Int32Array(errorLocatorDegree);\n for (let i /*int*/ = 1; i <= errorLocatorDegree; i++) {\n formalDerivativeCoefficients[errorLocatorDegree - i] =\n this.field.multiply(i, errorLocator.getCoefficient(i));\n }\n let formalDerivative = new ModulusPoly(this.field, formalDerivativeCoefficients);\n // This is directly applying Forney's Formula\n let s = errorLocations.length;\n let result = new Int32Array(s);\n for (let i /*int*/ = 0; i < s; i++) {\n let xiInverse = this.field.inverse(errorLocations[i]);\n let numerator = this.field.subtract(0, errorEvaluator.evaluateAt(xiInverse));\n let denominator = this.field.inverse(formalDerivative.evaluateAt(xiInverse));\n result[i] = this.field.multiply(numerator, denominator);\n }\n return result;\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Guenther Grau\n */\n /*final*/ class BoundingBox {\n constructor(image, topLeft, bottomLeft, topRight, bottomRight) {\n if (image instanceof BoundingBox) {\n this.constructor_2(image);\n }\n else {\n this.constructor_1(image, topLeft, bottomLeft, topRight, bottomRight);\n }\n }\n /**\n *\n * @param image\n * @param topLeft\n * @param bottomLeft\n * @param topRight\n * @param bottomRight\n *\n * @throws NotFoundException\n */\n constructor_1(image, topLeft, bottomLeft, topRight, bottomRight) {\n const leftUnspecified = topLeft == null || bottomLeft == null;\n const rightUnspecified = topRight == null || bottomRight == null;\n if (leftUnspecified && rightUnspecified) {\n throw new NotFoundException();\n }\n if (leftUnspecified) {\n topLeft = new ResultPoint(0, topRight.getY());\n bottomLeft = new ResultPoint(0, bottomRight.getY());\n }\n else if (rightUnspecified) {\n topRight = new ResultPoint(image.getWidth() - 1, topLeft.getY());\n bottomRight = new ResultPoint(image.getWidth() - 1, bottomLeft.getY());\n }\n this.image = image;\n this.topLeft = topLeft;\n this.bottomLeft = bottomLeft;\n this.topRight = topRight;\n this.bottomRight = bottomRight;\n this.minX = Math.trunc(Math.min(topLeft.getX(), bottomLeft.getX()));\n this.maxX = Math.trunc(Math.max(topRight.getX(), bottomRight.getX()));\n this.minY = Math.trunc(Math.min(topLeft.getY(), topRight.getY()));\n this.maxY = Math.trunc(Math.max(bottomLeft.getY(), bottomRight.getY()));\n }\n constructor_2(boundingBox) {\n this.image = boundingBox.image;\n this.topLeft = boundingBox.getTopLeft();\n this.bottomLeft = boundingBox.getBottomLeft();\n this.topRight = boundingBox.getTopRight();\n this.bottomRight = boundingBox.getBottomRight();\n this.minX = boundingBox.getMinX();\n this.maxX = boundingBox.getMaxX();\n this.minY = boundingBox.getMinY();\n this.maxY = boundingBox.getMaxY();\n }\n /**\n * @throws NotFoundException\n */\n static merge(leftBox, rightBox) {\n if (leftBox == null) {\n return rightBox;\n }\n if (rightBox == null) {\n return leftBox;\n }\n return new BoundingBox(leftBox.image, leftBox.topLeft, leftBox.bottomLeft, rightBox.topRight, rightBox.bottomRight);\n }\n /**\n * @throws NotFoundException\n */\n addMissingRows(missingStartRows, missingEndRows, isLeft) {\n let newTopLeft = this.topLeft;\n let newBottomLeft = this.bottomLeft;\n let newTopRight = this.topRight;\n let newBottomRight = this.bottomRight;\n if (missingStartRows > 0) {\n let top = isLeft ? this.topLeft : this.topRight;\n let newMinY = Math.trunc(top.getY() - missingStartRows);\n if (newMinY < 0) {\n newMinY = 0;\n }\n let newTop = new ResultPoint(top.getX(), newMinY);\n if (isLeft) {\n newTopLeft = newTop;\n }\n else {\n newTopRight = newTop;\n }\n }\n if (missingEndRows > 0) {\n let bottom = isLeft ? this.bottomLeft : this.bottomRight;\n let newMaxY = Math.trunc(bottom.getY() + missingEndRows);\n if (newMaxY >= this.image.getHeight()) {\n newMaxY = this.image.getHeight() - 1;\n }\n let newBottom = new ResultPoint(bottom.getX(), newMaxY);\n if (isLeft) {\n newBottomLeft = newBottom;\n }\n else {\n newBottomRight = newBottom;\n }\n }\n return new BoundingBox(this.image, newTopLeft, newBottomLeft, newTopRight, newBottomRight);\n }\n getMinX() {\n return this.minX;\n }\n getMaxX() {\n return this.maxX;\n }\n getMinY() {\n return this.minY;\n }\n getMaxY() {\n return this.maxY;\n }\n getTopLeft() {\n return this.topLeft;\n }\n getTopRight() {\n return this.topRight;\n }\n getBottomLeft() {\n return this.bottomLeft;\n }\n getBottomRight() {\n return this.bottomRight;\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // package com.google.zxing.pdf417.decoder;\n /**\n * @author Guenther Grau\n */\n /*final*/ class BarcodeMetadata {\n constructor(columnCount, rowCountUpperPart, rowCountLowerPart, errorCorrectionLevel) {\n this.columnCount = columnCount;\n this.errorCorrectionLevel = errorCorrectionLevel;\n this.rowCountUpperPart = rowCountUpperPart;\n this.rowCountLowerPart = rowCountLowerPart;\n this.rowCount = rowCountUpperPart + rowCountLowerPart;\n }\n getColumnCount() {\n return this.columnCount;\n }\n getErrorCorrectionLevel() {\n return this.errorCorrectionLevel;\n }\n getRowCount() {\n return this.rowCount;\n }\n getRowCountUpperPart() {\n return this.rowCountUpperPart;\n }\n getRowCountLowerPart() {\n return this.rowCountLowerPart;\n }\n }\n\n /**\n * Java Formatter class polyfill that works in the JS way.\n */\n class Formatter {\n constructor() {\n this.buffer = '';\n }\n /**\n *\n * @see https://stackoverflow.com/a/13439711/4367683\n *\n * @param str\n * @param arr\n */\n static form(str, arr) {\n let i = -1;\n function callback(exp, p0, p1, p2, p3, p4) {\n if (exp === '%%')\n return '%';\n if (arr[++i] === undefined)\n return undefined;\n exp = p2 ? parseInt(p2.substr(1)) : undefined;\n let base = p3 ? parseInt(p3.substr(1)) : undefined;\n let val;\n switch (p4) {\n case 's':\n val = arr[i];\n break;\n case 'c':\n val = arr[i][0];\n break;\n case 'f':\n val = parseFloat(arr[i]).toFixed(exp);\n break;\n case 'p':\n val = parseFloat(arr[i]).toPrecision(exp);\n break;\n case 'e':\n val = parseFloat(arr[i]).toExponential(exp);\n break;\n case 'x':\n val = parseInt(arr[i]).toString(base ? base : 16);\n break;\n case 'd':\n val = parseFloat(parseInt(arr[i], base ? base : 10).toPrecision(exp)).toFixed(0);\n break;\n }\n val = typeof val === 'object' ? JSON.stringify(val) : (+val).toString(base);\n let size = parseInt(p1); /* padding size */\n let ch = p1 && (p1[0] + '') === '0' ? '0' : ' '; /* isnull? */\n while (val.length < size)\n val = p0 !== undefined ? val + ch : ch + val; /* isminus? */\n return val;\n }\n let regex = /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g;\n return str.replace(regex, callback);\n }\n /**\n *\n * @param append The new string to append.\n * @param args Argumets values to be formated.\n */\n format(append, ...args) {\n this.buffer += Formatter.form(append, args);\n }\n /**\n * Returns the Formatter string value.\n */\n toString() {\n return this.buffer;\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Guenther Grau\n */\n class DetectionResultColumn {\n constructor(boundingBox) {\n this.boundingBox = new BoundingBox(boundingBox);\n // this.codewords = new Codeword[boundingBox.getMaxY() - boundingBox.getMinY() + 1];\n this.codewords = new Array(boundingBox.getMaxY() - boundingBox.getMinY() + 1);\n }\n /*final*/ getCodewordNearby(imageRow) {\n let codeword = this.getCodeword(imageRow);\n if (codeword != null) {\n return codeword;\n }\n for (let i = 1; i < DetectionResultColumn.MAX_NEARBY_DISTANCE; i++) {\n let nearImageRow = this.imageRowToCodewordIndex(imageRow) - i;\n if (nearImageRow >= 0) {\n codeword = this.codewords[nearImageRow];\n if (codeword != null) {\n return codeword;\n }\n }\n nearImageRow = this.imageRowToCodewordIndex(imageRow) + i;\n if (nearImageRow < this.codewords.length) {\n codeword = this.codewords[nearImageRow];\n if (codeword != null) {\n return codeword;\n }\n }\n }\n return null;\n }\n /*final int*/ imageRowToCodewordIndex(imageRow) {\n return imageRow - this.boundingBox.getMinY();\n }\n /*final void*/ setCodeword(imageRow, codeword) {\n this.codewords[this.imageRowToCodewordIndex(imageRow)] = codeword;\n }\n /*final*/ getCodeword(imageRow) {\n return this.codewords[this.imageRowToCodewordIndex(imageRow)];\n }\n /*final*/ getBoundingBox() {\n return this.boundingBox;\n }\n /*final*/ getCodewords() {\n return this.codewords;\n }\n // @Override\n toString() {\n const formatter = new Formatter();\n let row = 0;\n for (const codeword of this.codewords) {\n if (codeword == null) {\n formatter.format('%3d: | %n', row++);\n continue;\n }\n formatter.format('%3d: %3d|%3d%n', row++, codeword.getRowNumber(), codeword.getValue());\n }\n return formatter.toString();\n }\n }\n DetectionResultColumn.MAX_NEARBY_DISTANCE = 5;\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // import java.util.ArrayList;\n // import java.util.Collection;\n // import java.util.HashMap;\n // import java.util.Map;\n // import java.util.Map.Entry;\n /**\n * @author Guenther Grau\n */\n /*final*/ class BarcodeValue {\n constructor() {\n this.values = new Map();\n }\n /**\n * Add an occurrence of a value\n */\n setValue(value) {\n value = Math.trunc(value);\n let confidence = this.values.get(value);\n if (confidence == null) {\n confidence = 0;\n }\n confidence++;\n this.values.set(value, confidence);\n }\n /**\n * Determines the maximum occurrence of a set value and returns all values which were set with this occurrence.\n * @return an array of int, containing the values with the highest occurrence, or null, if no value was set\n */\n getValue() {\n let maxConfidence = -1;\n let result = new Array();\n for (const [key, value] of this.values.entries()) {\n const entry = {\n getKey: () => key,\n getValue: () => value,\n };\n if (entry.getValue() > maxConfidence) {\n maxConfidence = entry.getValue();\n result = [];\n result.push(entry.getKey());\n }\n else if (entry.getValue() === maxConfidence) {\n result.push(entry.getKey());\n }\n }\n return PDF417Common.toIntArray(result);\n }\n getConfidence(value) {\n return this.values.get(value);\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Guenther Grau\n */\n /*final*/ class DetectionResultRowIndicatorColumn extends DetectionResultColumn {\n constructor(boundingBox, isLeft) {\n super(boundingBox);\n this._isLeft = isLeft;\n }\n setRowNumbers() {\n for (let codeword /*Codeword*/ of this.getCodewords()) {\n if (codeword != null) {\n codeword.setRowNumberAsRowIndicatorColumn();\n }\n }\n }\n // TODO implement properly\n // TODO maybe we should add missing codewords to store the correct row number to make\n // finding row numbers for other columns easier\n // use row height count to make detection of invalid row numbers more reliable\n adjustCompleteIndicatorColumnRowNumbers(barcodeMetadata) {\n let codewords = this.getCodewords();\n this.setRowNumbers();\n this.removeIncorrectCodewords(codewords, barcodeMetadata);\n let boundingBox = this.getBoundingBox();\n let top = this._isLeft ? boundingBox.getTopLeft() : boundingBox.getTopRight();\n let bottom = this._isLeft ? boundingBox.getBottomLeft() : boundingBox.getBottomRight();\n let firstRow = this.imageRowToCodewordIndex(Math.trunc(top.getY()));\n let lastRow = this.imageRowToCodewordIndex(Math.trunc(bottom.getY()));\n // We need to be careful using the average row height. Barcode could be skewed so that we have smaller and\n // taller rows\n // float averageRowHeight = (lastRow - firstRow) / /*(float)*/ barcodeMetadata.getRowCount();\n let barcodeRow = -1;\n let maxRowHeight = 1;\n let currentRowHeight = 0;\n for (let codewordsRow /*int*/ = firstRow; codewordsRow < lastRow; codewordsRow++) {\n if (codewords[codewordsRow] == null) {\n continue;\n }\n let codeword = codewords[codewordsRow];\n // float expectedRowNumber = (codewordsRow - firstRow) / averageRowHeight;\n // if (Math.abs(codeword.getRowNumber() - expectedRowNumber) > 2) {\n // SimpleLog.log(LEVEL.WARNING,\n // \"Removing codeword, rowNumberSkew too high, codeword[\" + codewordsRow + \"]: Expected Row: \" +\n // expectedRowNumber + \", RealRow: \" + codeword.getRowNumber() + \", value: \" + codeword.getValue());\n // codewords[codewordsRow] = null;\n // }\n let rowDifference = codeword.getRowNumber() - barcodeRow;\n // TODO improve handling with case where first row indicator doesn't start with 0\n if (rowDifference === 0) {\n currentRowHeight++;\n }\n else if (rowDifference === 1) {\n maxRowHeight = Math.max(maxRowHeight, currentRowHeight);\n currentRowHeight = 1;\n barcodeRow = codeword.getRowNumber();\n }\n else if (rowDifference < 0 ||\n codeword.getRowNumber() >= barcodeMetadata.getRowCount() ||\n rowDifference > codewordsRow) {\n codewords[codewordsRow] = null;\n }\n else {\n let checkedRows;\n if (maxRowHeight > 2) {\n checkedRows = (maxRowHeight - 2) * rowDifference;\n }\n else {\n checkedRows = rowDifference;\n }\n let closePreviousCodewordFound = checkedRows >= codewordsRow;\n for (let i /*int*/ = 1; i <= checkedRows && !closePreviousCodewordFound; i++) {\n // there must be (height * rowDifference) number of codewords missing. For now we assume height = 1.\n // This should hopefully get rid of most problems already.\n closePreviousCodewordFound = codewords[codewordsRow - i] != null;\n }\n if (closePreviousCodewordFound) {\n codewords[codewordsRow] = null;\n }\n else {\n barcodeRow = codeword.getRowNumber();\n currentRowHeight = 1;\n }\n }\n }\n // return (int) (averageRowHeight + 0.5);\n }\n getRowHeights() {\n let barcodeMetadata = this.getBarcodeMetadata();\n if (barcodeMetadata == null) {\n return null;\n }\n this.adjustIncompleteIndicatorColumnRowNumbers(barcodeMetadata);\n let result = new Int32Array(barcodeMetadata.getRowCount());\n for (let codeword /*Codeword*/ of this.getCodewords()) {\n if (codeword != null) {\n let rowNumber = codeword.getRowNumber();\n if (rowNumber >= result.length) {\n // We have more rows than the barcode metadata allows for, ignore them.\n continue;\n }\n result[rowNumber]++;\n } // else throw exception?\n }\n return result;\n }\n // TODO maybe we should add missing codewords to store the correct row number to make\n // finding row numbers for other columns easier\n // use row height count to make detection of invalid row numbers more reliable\n adjustIncompleteIndicatorColumnRowNumbers(barcodeMetadata) {\n let boundingBox = this.getBoundingBox();\n let top = this._isLeft ? boundingBox.getTopLeft() : boundingBox.getTopRight();\n let bottom = this._isLeft ? boundingBox.getBottomLeft() : boundingBox.getBottomRight();\n let firstRow = this.imageRowToCodewordIndex(Math.trunc(top.getY()));\n let lastRow = this.imageRowToCodewordIndex(Math.trunc(bottom.getY()));\n // float averageRowHeight = (lastRow - firstRow) / /*(float)*/ barcodeMetadata.getRowCount();\n let codewords = this.getCodewords();\n let barcodeRow = -1;\n for (let codewordsRow /*int*/ = firstRow; codewordsRow < lastRow; codewordsRow++) {\n if (codewords[codewordsRow] == null) {\n continue;\n }\n let codeword = codewords[codewordsRow];\n codeword.setRowNumberAsRowIndicatorColumn();\n let rowDifference = codeword.getRowNumber() - barcodeRow;\n // TODO improve handling with case where first row indicator doesn't start with 0\n if (rowDifference === 0) ;\n else if (rowDifference === 1) {\n barcodeRow = codeword.getRowNumber();\n }\n else if (codeword.getRowNumber() >= barcodeMetadata.getRowCount()) {\n codewords[codewordsRow] = null;\n }\n else {\n barcodeRow = codeword.getRowNumber();\n }\n }\n // return (int) (averageRowHeight + 0.5);\n }\n getBarcodeMetadata() {\n let codewords = this.getCodewords();\n let barcodeColumnCount = new BarcodeValue();\n let barcodeRowCountUpperPart = new BarcodeValue();\n let barcodeRowCountLowerPart = new BarcodeValue();\n let barcodeECLevel = new BarcodeValue();\n for (let codeword /*Codeword*/ of codewords) {\n if (codeword == null) {\n continue;\n }\n codeword.setRowNumberAsRowIndicatorColumn();\n let rowIndicatorValue = codeword.getValue() % 30;\n let codewordRowNumber = codeword.getRowNumber();\n if (!this._isLeft) {\n codewordRowNumber += 2;\n }\n switch (codewordRowNumber % 3) {\n case 0:\n barcodeRowCountUpperPart.setValue(rowIndicatorValue * 3 + 1);\n break;\n case 1:\n barcodeECLevel.setValue(rowIndicatorValue / 3);\n barcodeRowCountLowerPart.setValue(rowIndicatorValue % 3);\n break;\n case 2:\n barcodeColumnCount.setValue(rowIndicatorValue + 1);\n break;\n }\n }\n // Maybe we should check if we have ambiguous values?\n if ((barcodeColumnCount.getValue().length === 0) ||\n (barcodeRowCountUpperPart.getValue().length === 0) ||\n (barcodeRowCountLowerPart.getValue().length === 0) ||\n (barcodeECLevel.getValue().length === 0) ||\n barcodeColumnCount.getValue()[0] < 1 ||\n barcodeRowCountUpperPart.getValue()[0] + barcodeRowCountLowerPart.getValue()[0] < PDF417Common.MIN_ROWS_IN_BARCODE ||\n barcodeRowCountUpperPart.getValue()[0] + barcodeRowCountLowerPart.getValue()[0] > PDF417Common.MAX_ROWS_IN_BARCODE) {\n return null;\n }\n let barcodeMetadata = new BarcodeMetadata(barcodeColumnCount.getValue()[0], barcodeRowCountUpperPart.getValue()[0], barcodeRowCountLowerPart.getValue()[0], barcodeECLevel.getValue()[0]);\n this.removeIncorrectCodewords(codewords, barcodeMetadata);\n return barcodeMetadata;\n }\n removeIncorrectCodewords(codewords, barcodeMetadata) {\n // Remove codewords which do not match the metadata\n // TODO Maybe we should keep the incorrect codewords for the start and end positions?\n for (let codewordRow /*int*/ = 0; codewordRow < codewords.length; codewordRow++) {\n let codeword = codewords[codewordRow];\n if (codewords[codewordRow] == null) {\n continue;\n }\n let rowIndicatorValue = codeword.getValue() % 30;\n let codewordRowNumber = codeword.getRowNumber();\n if (codewordRowNumber > barcodeMetadata.getRowCount()) {\n codewords[codewordRow] = null;\n continue;\n }\n if (!this._isLeft) {\n codewordRowNumber += 2;\n }\n switch (codewordRowNumber % 3) {\n case 0:\n if (rowIndicatorValue * 3 + 1 !== barcodeMetadata.getRowCountUpperPart()) {\n codewords[codewordRow] = null;\n }\n break;\n case 1:\n if (Math.trunc(rowIndicatorValue / 3) !== barcodeMetadata.getErrorCorrectionLevel() ||\n rowIndicatorValue % 3 !== barcodeMetadata.getRowCountLowerPart()) {\n codewords[codewordRow] = null;\n }\n break;\n case 2:\n if (rowIndicatorValue + 1 !== barcodeMetadata.getColumnCount()) {\n codewords[codewordRow] = null;\n }\n break;\n }\n }\n }\n isLeft() {\n return this._isLeft;\n }\n // @Override\n toString() {\n return 'IsLeft: ' + this._isLeft + '\\n' + super.toString();\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Guenther Grau\n */\n /*final*/ class DetectionResult {\n constructor(barcodeMetadata, boundingBox) {\n /*final*/ this.ADJUST_ROW_NUMBER_SKIP = 2;\n this.barcodeMetadata = barcodeMetadata;\n this.barcodeColumnCount = barcodeMetadata.getColumnCount();\n this.boundingBox = boundingBox;\n // this.detectionResultColumns = new DetectionResultColumn[this.barcodeColumnCount + 2];\n this.detectionResultColumns = new Array(this.barcodeColumnCount + 2);\n }\n getDetectionResultColumns() {\n this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[0]);\n this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[this.barcodeColumnCount + 1]);\n let unadjustedCodewordCount = PDF417Common.MAX_CODEWORDS_IN_BARCODE;\n let previousUnadjustedCount;\n do {\n previousUnadjustedCount = unadjustedCodewordCount;\n unadjustedCodewordCount = this.adjustRowNumbersAndGetCount();\n } while (unadjustedCodewordCount > 0 && unadjustedCodewordCount < previousUnadjustedCount);\n return this.detectionResultColumns;\n }\n adjustIndicatorColumnRowNumbers(detectionResultColumn) {\n if (detectionResultColumn != null) {\n detectionResultColumn\n .adjustCompleteIndicatorColumnRowNumbers(this.barcodeMetadata);\n }\n }\n // TODO ensure that no detected codewords with unknown row number are left\n // we should be able to estimate the row height and use it as a hint for the row number\n // we should also fill the rows top to bottom and bottom to top\n /**\n * @return number of codewords which don't have a valid row number. Note that the count is not accurate as codewords\n * will be counted several times. It just serves as an indicator to see when we can stop adjusting row numbers\n */\n adjustRowNumbersAndGetCount() {\n let unadjustedCount = this.adjustRowNumbersByRow();\n if (unadjustedCount === 0) {\n return 0;\n }\n for (let barcodeColumn /*int*/ = 1; barcodeColumn < this.barcodeColumnCount + 1; barcodeColumn++) {\n let codewords = this.detectionResultColumns[barcodeColumn].getCodewords();\n for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n if (codewords[codewordsRow] == null) {\n continue;\n }\n if (!codewords[codewordsRow].hasValidRowNumber()) {\n this.adjustRowNumbers(barcodeColumn, codewordsRow, codewords);\n }\n }\n }\n return unadjustedCount;\n }\n adjustRowNumbersByRow() {\n this.adjustRowNumbersFromBothRI();\n // TODO we should only do full row adjustments if row numbers of left and right row indicator column match.\n // Maybe it's even better to calculated the height (rows: d) and divide it by the number of barcode\n // rows. This, together with the LRI and RRI row numbers should allow us to get a good estimate where a row\n // number starts and ends.\n let unadjustedCount = this.adjustRowNumbersFromLRI();\n return unadjustedCount + this.adjustRowNumbersFromRRI();\n }\n adjustRowNumbersFromBothRI() {\n if (this.detectionResultColumns[0] == null || this.detectionResultColumns[this.barcodeColumnCount + 1] == null) {\n return;\n }\n let LRIcodewords = this.detectionResultColumns[0].getCodewords();\n let RRIcodewords = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();\n for (let codewordsRow /*int*/ = 0; codewordsRow < LRIcodewords.length; codewordsRow++) {\n if (LRIcodewords[codewordsRow] != null &&\n RRIcodewords[codewordsRow] != null &&\n LRIcodewords[codewordsRow].getRowNumber() === RRIcodewords[codewordsRow].getRowNumber()) {\n for (let barcodeColumn /*int*/ = 1; barcodeColumn <= this.barcodeColumnCount; barcodeColumn++) {\n let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n if (codeword == null) {\n continue;\n }\n codeword.setRowNumber(LRIcodewords[codewordsRow].getRowNumber());\n if (!codeword.hasValidRowNumber()) {\n this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow] = null;\n }\n }\n }\n }\n }\n adjustRowNumbersFromRRI() {\n if (this.detectionResultColumns[this.barcodeColumnCount + 1] == null) {\n return 0;\n }\n let unadjustedCount = 0;\n let codewords = this.detectionResultColumns[this.barcodeColumnCount + 1].getCodewords();\n for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n if (codewords[codewordsRow] == null) {\n continue;\n }\n let rowIndicatorRowNumber = codewords[codewordsRow].getRowNumber();\n let invalidRowCounts = 0;\n for (let barcodeColumn /*int*/ = this.barcodeColumnCount + 1; barcodeColumn > 0 && invalidRowCounts < this.ADJUST_ROW_NUMBER_SKIP; barcodeColumn--) {\n let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n if (codeword != null) {\n invalidRowCounts = DetectionResult.adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword);\n if (!codeword.hasValidRowNumber()) {\n unadjustedCount++;\n }\n }\n }\n }\n return unadjustedCount;\n }\n adjustRowNumbersFromLRI() {\n if (this.detectionResultColumns[0] == null) {\n return 0;\n }\n let unadjustedCount = 0;\n let codewords = this.detectionResultColumns[0].getCodewords();\n for (let codewordsRow /*int*/ = 0; codewordsRow < codewords.length; codewordsRow++) {\n if (codewords[codewordsRow] == null) {\n continue;\n }\n let rowIndicatorRowNumber = codewords[codewordsRow].getRowNumber();\n let invalidRowCounts = 0;\n for (let barcodeColumn /*int*/ = 1; barcodeColumn < this.barcodeColumnCount + 1 && invalidRowCounts < this.ADJUST_ROW_NUMBER_SKIP; barcodeColumn++) {\n let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n if (codeword != null) {\n invalidRowCounts = DetectionResult.adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword);\n if (!codeword.hasValidRowNumber()) {\n unadjustedCount++;\n }\n }\n }\n }\n return unadjustedCount;\n }\n static adjustRowNumberIfValid(rowIndicatorRowNumber, invalidRowCounts, codeword) {\n if (codeword == null) {\n return invalidRowCounts;\n }\n if (!codeword.hasValidRowNumber()) {\n if (codeword.isValidRowNumber(rowIndicatorRowNumber)) {\n codeword.setRowNumber(rowIndicatorRowNumber);\n invalidRowCounts = 0;\n }\n else {\n ++invalidRowCounts;\n }\n }\n return invalidRowCounts;\n }\n adjustRowNumbers(barcodeColumn, codewordsRow, codewords) {\n if (!this.detectionResultColumns[barcodeColumn - 1]) {\n return;\n }\n let codeword = codewords[codewordsRow];\n let previousColumnCodewords = this.detectionResultColumns[barcodeColumn - 1].getCodewords();\n let nextColumnCodewords = previousColumnCodewords;\n if (this.detectionResultColumns[barcodeColumn + 1] != null) {\n nextColumnCodewords = this.detectionResultColumns[barcodeColumn + 1].getCodewords();\n }\n // let otherCodewords: Codeword[] = new Codeword[14];\n let otherCodewords = new Array(14);\n otherCodewords[2] = previousColumnCodewords[codewordsRow];\n otherCodewords[3] = nextColumnCodewords[codewordsRow];\n if (codewordsRow > 0) {\n otherCodewords[0] = codewords[codewordsRow - 1];\n otherCodewords[4] = previousColumnCodewords[codewordsRow - 1];\n otherCodewords[5] = nextColumnCodewords[codewordsRow - 1];\n }\n if (codewordsRow > 1) {\n otherCodewords[8] = codewords[codewordsRow - 2];\n otherCodewords[10] = previousColumnCodewords[codewordsRow - 2];\n otherCodewords[11] = nextColumnCodewords[codewordsRow - 2];\n }\n if (codewordsRow < codewords.length - 1) {\n otherCodewords[1] = codewords[codewordsRow + 1];\n otherCodewords[6] = previousColumnCodewords[codewordsRow + 1];\n otherCodewords[7] = nextColumnCodewords[codewordsRow + 1];\n }\n if (codewordsRow < codewords.length - 2) {\n otherCodewords[9] = codewords[codewordsRow + 2];\n otherCodewords[12] = previousColumnCodewords[codewordsRow + 2];\n otherCodewords[13] = nextColumnCodewords[codewordsRow + 2];\n }\n for (let otherCodeword of otherCodewords) {\n if (DetectionResult.adjustRowNumber(codeword, otherCodeword)) {\n return;\n }\n }\n }\n /**\n * @return true, if row number was adjusted, false otherwise\n */\n static adjustRowNumber(codeword, otherCodeword) {\n if (otherCodeword == null) {\n return false;\n }\n if (otherCodeword.hasValidRowNumber() && otherCodeword.getBucket() === codeword.getBucket()) {\n codeword.setRowNumber(otherCodeword.getRowNumber());\n return true;\n }\n return false;\n }\n getBarcodeColumnCount() {\n return this.barcodeColumnCount;\n }\n getBarcodeRowCount() {\n return this.barcodeMetadata.getRowCount();\n }\n getBarcodeECLevel() {\n return this.barcodeMetadata.getErrorCorrectionLevel();\n }\n setBoundingBox(boundingBox) {\n this.boundingBox = boundingBox;\n }\n getBoundingBox() {\n return this.boundingBox;\n }\n setDetectionResultColumn(barcodeColumn, detectionResultColumn) {\n this.detectionResultColumns[barcodeColumn] = detectionResultColumn;\n }\n getDetectionResultColumn(barcodeColumn) {\n return this.detectionResultColumns[barcodeColumn];\n }\n // @Override\n toString() {\n let rowIndicatorColumn = this.detectionResultColumns[0];\n if (rowIndicatorColumn == null) {\n rowIndicatorColumn = this.detectionResultColumns[this.barcodeColumnCount + 1];\n }\n // try (\n let formatter = new Formatter();\n // ) {\n for (let codewordsRow /*int*/ = 0; codewordsRow < rowIndicatorColumn.getCodewords().length; codewordsRow++) {\n formatter.format('CW %3d:', codewordsRow);\n for (let barcodeColumn /*int*/ = 0; barcodeColumn < this.barcodeColumnCount + 2; barcodeColumn++) {\n if (this.detectionResultColumns[barcodeColumn] == null) {\n formatter.format(' | ');\n continue;\n }\n let codeword = this.detectionResultColumns[barcodeColumn].getCodewords()[codewordsRow];\n if (codeword == null) {\n formatter.format(' | ');\n continue;\n }\n formatter.format(' %3d|%3d', codeword.getRowNumber(), codeword.getValue());\n }\n formatter.format('%n');\n }\n return formatter.toString();\n // }\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // package com.google.zxing.pdf417.decoder;\n /**\n * @author Guenther Grau\n */\n /*final*/ class Codeword {\n constructor(startX, endX, bucket, value) {\n this.rowNumber = Codeword.BARCODE_ROW_UNKNOWN;\n this.startX = Math.trunc(startX);\n this.endX = Math.trunc(endX);\n this.bucket = Math.trunc(bucket);\n this.value = Math.trunc(value);\n }\n hasValidRowNumber() {\n return this.isValidRowNumber(this.rowNumber);\n }\n isValidRowNumber(rowNumber) {\n return rowNumber !== Codeword.BARCODE_ROW_UNKNOWN && this.bucket === (rowNumber % 3) * 3;\n }\n setRowNumberAsRowIndicatorColumn() {\n this.rowNumber = Math.trunc((Math.trunc(this.value / 30)) * 3 + Math.trunc(this.bucket / 3));\n }\n getWidth() {\n return this.endX - this.startX;\n }\n getStartX() {\n return this.startX;\n }\n getEndX() {\n return this.endX;\n }\n getBucket() {\n return this.bucket;\n }\n getValue() {\n return this.value;\n }\n getRowNumber() {\n return this.rowNumber;\n }\n setRowNumber(rowNumber) {\n this.rowNumber = rowNumber;\n }\n // @Override\n toString() {\n return this.rowNumber + '|' + this.value;\n }\n }\n Codeword.BARCODE_ROW_UNKNOWN = -1;\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * @author Guenther Grau\n * @author creatale GmbH (christoph.schulz@creatale.de)\n */\n /*final*/ class PDF417CodewordDecoder {\n /* @note\n * this action have to be performed before first use of class\n * - static constructor\n * working with 32bit float (based from Java logic)\n */\n static initialize() {\n // Pre-computes the symbol ratio table.\n for ( /*int*/let i = 0; i < PDF417Common.SYMBOL_TABLE.length; i++) {\n let currentSymbol = PDF417Common.SYMBOL_TABLE[i];\n let currentBit = currentSymbol & 0x1;\n for ( /*int*/let j = 0; j < PDF417Common.BARS_IN_MODULE; j++) {\n let size = 0.0;\n while ((currentSymbol & 0x1) === currentBit) {\n size += 1.0;\n currentSymbol >>= 1;\n }\n currentBit = currentSymbol & 0x1;\n if (!PDF417CodewordDecoder.RATIOS_TABLE[i]) {\n PDF417CodewordDecoder.RATIOS_TABLE[i] = new Array(PDF417Common.BARS_IN_MODULE);\n }\n PDF417CodewordDecoder.RATIOS_TABLE[i][PDF417Common.BARS_IN_MODULE - j - 1] = Math.fround(size / PDF417Common.MODULES_IN_CODEWORD);\n }\n }\n this.bSymbolTableReady = true;\n }\n static getDecodedValue(moduleBitCount) {\n let decodedValue = PDF417CodewordDecoder.getDecodedCodewordValue(PDF417CodewordDecoder.sampleBitCounts(moduleBitCount));\n if (decodedValue !== -1) {\n return decodedValue;\n }\n return PDF417CodewordDecoder.getClosestDecodedValue(moduleBitCount);\n }\n static sampleBitCounts(moduleBitCount) {\n let bitCountSum = MathUtils.sum(moduleBitCount);\n let result = new Int32Array(PDF417Common.BARS_IN_MODULE);\n let bitCountIndex = 0;\n let sumPreviousBits = 0;\n for ( /*int*/let i = 0; i < PDF417Common.MODULES_IN_CODEWORD; i++) {\n let sampleIndex = bitCountSum / (2 * PDF417Common.MODULES_IN_CODEWORD) +\n (i * bitCountSum) / PDF417Common.MODULES_IN_CODEWORD;\n if (sumPreviousBits + moduleBitCount[bitCountIndex] <= sampleIndex) {\n sumPreviousBits += moduleBitCount[bitCountIndex];\n bitCountIndex++;\n }\n result[bitCountIndex]++;\n }\n return result;\n }\n static getDecodedCodewordValue(moduleBitCount) {\n let decodedValue = PDF417CodewordDecoder.getBitValue(moduleBitCount);\n return PDF417Common.getCodeword(decodedValue) === -1 ? -1 : decodedValue;\n }\n static getBitValue(moduleBitCount) {\n let result = /*long*/ 0;\n for (let /*int*/ i = 0; i < moduleBitCount.length; i++) {\n for ( /*int*/let bit = 0; bit < moduleBitCount[i]; bit++) {\n result = (result << 1) | (i % 2 === 0 ? 1 : 0);\n }\n }\n return Math.trunc(result);\n }\n // working with 32bit float (as in Java)\n static getClosestDecodedValue(moduleBitCount) {\n let bitCountSum = MathUtils.sum(moduleBitCount);\n let bitCountRatios = new Array(PDF417Common.BARS_IN_MODULE);\n if (bitCountSum > 1) {\n for (let /*int*/ i = 0; i < bitCountRatios.length; i++) {\n bitCountRatios[i] = Math.fround(moduleBitCount[i] / bitCountSum);\n }\n }\n let bestMatchError = Float.MAX_VALUE;\n let bestMatch = -1;\n if (!this.bSymbolTableReady) {\n PDF417CodewordDecoder.initialize();\n }\n for ( /*int*/let j = 0; j < PDF417CodewordDecoder.RATIOS_TABLE.length; j++) {\n let error = 0.0;\n let ratioTableRow = PDF417CodewordDecoder.RATIOS_TABLE[j];\n for ( /*int*/let k = 0; k < PDF417Common.BARS_IN_MODULE; k++) {\n let diff = Math.fround(ratioTableRow[k] - bitCountRatios[k]);\n error += Math.fround(diff * diff);\n if (error >= bestMatchError) {\n break;\n }\n }\n if (error < bestMatchError) {\n bestMatchError = error;\n bestMatch = PDF417Common.SYMBOL_TABLE[j];\n }\n }\n return bestMatch;\n }\n }\n // flag that the table is ready for use\n PDF417CodewordDecoder.bSymbolTableReady = false;\n PDF417CodewordDecoder.RATIOS_TABLE = new Array(PDF417Common.SYMBOL_TABLE.length).map(x => x = new Array(PDF417Common.BARS_IN_MODULE));\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // package com.google.zxing.pdf417;\n /**\n * @author Guenther Grau\n */\n /*public final*/ class PDF417ResultMetadata {\n constructor() {\n this.segmentCount = -1;\n this.fileSize = -1;\n this.timestamp = -1;\n this.checksum = -1;\n }\n /**\n * The Segment ID represents the segment of the whole file distributed over different symbols.\n *\n * @return File segment index\n */\n getSegmentIndex() {\n return this.segmentIndex;\n }\n setSegmentIndex(segmentIndex) {\n this.segmentIndex = segmentIndex;\n }\n /**\n * Is the same for each related PDF417 symbol\n *\n * @return File ID\n */\n getFileId() {\n return this.fileId;\n }\n setFileId(fileId) {\n this.fileId = fileId;\n }\n /**\n * @return always null\n * @deprecated use dedicated already parsed fields\n */\n // @Deprecated\n getOptionalData() {\n return this.optionalData;\n }\n /**\n * @param optionalData old optional data format as int array\n * @deprecated parse and use new fields\n */\n // @Deprecated\n setOptionalData(optionalData) {\n this.optionalData = optionalData;\n }\n /**\n * @return true if it is the last segment\n */\n isLastSegment() {\n return this.lastSegment;\n }\n setLastSegment(lastSegment) {\n this.lastSegment = lastSegment;\n }\n /**\n * @return count of segments, -1 if not set\n */\n getSegmentCount() {\n return this.segmentCount;\n }\n setSegmentCount(segmentCount /*int*/) {\n this.segmentCount = segmentCount;\n }\n getSender() {\n return this.sender || null;\n }\n setSender(sender) {\n this.sender = sender;\n }\n getAddressee() {\n return this.addressee || null;\n }\n setAddressee(addressee) {\n this.addressee = addressee;\n }\n /**\n * Filename of the encoded file\n *\n * @return filename\n */\n getFileName() {\n return this.fileName;\n }\n setFileName(fileName) {\n this.fileName = fileName;\n }\n /**\n * filesize in bytes of the encoded file\n *\n * @return filesize in bytes, -1 if not set\n */\n getFileSize() {\n return this.fileSize;\n }\n setFileSize(fileSize /*long*/) {\n this.fileSize = fileSize;\n }\n /**\n * 16-bit CRC checksum using CCITT-16\n *\n * @return crc checksum, -1 if not set\n */\n getChecksum() {\n return this.checksum;\n }\n setChecksum(checksum /*int*/) {\n this.checksum = checksum;\n }\n /**\n * unix epock timestamp, elapsed seconds since 1970-01-01\n *\n * @return elapsed seconds, -1 if not set\n */\n getTimestamp() {\n return this.timestamp;\n }\n setTimestamp(timestamp /*long*/) {\n this.timestamp = timestamp;\n }\n }\n\n /**\n * Ponyfill for Java's Long class.\n */\n class Long {\n /**\n * Parses a string to a number, since JS has no really Int64.\n *\n * @param num Numeric string.\n * @param radix Destination radix.\n */\n static parseLong(num, radix = undefined) {\n return parseInt(num, radix);\n }\n }\n\n /**\n * Custom Error class of type Exception.\n */\n class NullPointerException extends Exception {\n }\n NullPointerException.kind = 'NullPointerException';\n\n /*\n * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n *\n * This code is free software; you can redistribute it and/or modify it\n * under the terms of the GNU General Public License version 2 only, as\n * published by the Free Software Foundation. Oracle designates this\n * particular file as subject to the \"Classpath\" exception as provided\n * by Oracle in the LICENSE file that accompanied this code.\n *\n * This code is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n * version 2 for more details (a copy is included in the LICENSE file that\n * accompanied this code).\n *\n * You should have received a copy of the GNU General Public License version\n * 2 along with this work; if not, write to the Free Software Foundation,\n * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n *\n * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n * or visit www.oracle.com if you need additional information or have any\n * questions.\n */\n // package java.io;\n /**\n * This abstract class is the superclass of all classes representing\n * an output stream of bytes. An output stream accepts output bytes\n * and sends them to some sink.\n * \n * Applications that need to define a subclass of\n * OutputStream
must always provide at least a method\n * that writes one byte of output.\n *\n * @author Arthur van Hoff\n * @see java.io.BufferedOutputStream\n * @see java.io.ByteArrayOutputStream\n * @see java.io.DataOutputStream\n * @see java.io.FilterOutputStream\n * @see java.io.InputStream\n * @see java.io.OutputStream#write(int)\n * @since JDK1.0\n */\n /*public*/ class OutputStream /*implements Closeable, Flushable*/ {\n /**\n * Writes b.length
bytes from the specified byte array\n * to this output stream. The general contract for write(b)
\n * is that it should have exactly the same effect as the call\n * write(b, 0, b.length)
.\n *\n * @param b the data.\n * @exception IOException if an I/O error occurs.\n * @see java.io.OutputStream#write(byte[], int, int)\n */\n writeBytes(b) {\n this.writeBytesOffset(b, 0, b.length);\n }\n /**\n * Writes len
bytes from the specified byte array\n * starting at offset off
to this output stream.\n * The general contract for write(b, off, len)
is that\n * some of the bytes in the array b
are written to the\n * output stream in order; element b[off]
is the first\n * byte written and b[off+len-1]
is the last byte written\n * by this operation.\n *
\n * The write
method of OutputStream
calls\n * the write method of one argument on each of the bytes to be\n * written out. Subclasses are encouraged to override this method and\n * provide a more efficient implementation.\n *
\n * If b
is null
, a\n * NullPointerException
is thrown.\n *
\n * If off
is negative, or len
is negative, or\n * off+len
is greater than the length of the array\n * b
, then an IndexOutOfBoundsException is thrown.\n *\n * @param b the data.\n * @param off the start offset in the data.\n * @param len the number of bytes to write.\n * @exception IOException if an I/O error occurs. In particular,\n * an IOException
is thrown if the output\n * stream is closed.\n */\n writeBytesOffset(b, off, len) {\n if (b == null) {\n throw new NullPointerException();\n }\n else if ((off < 0) || (off > b.length) || (len < 0) ||\n ((off + len) > b.length) || ((off + len) < 0)) {\n throw new IndexOutOfBoundsException();\n }\n else if (len === 0) {\n return;\n }\n for (let i = 0; i < len; i++) {\n this.write(b[off + i]);\n }\n }\n /**\n * Flushes this output stream and forces any buffered output bytes\n * to be written out. The general contract of flush
is\n * that calling it is an indication that, if any bytes previously\n * written have been buffered by the implementation of the output\n * stream, such bytes should immediately be written to their\n * intended destination.\n *
\n * If the intended destination of this stream is an abstraction provided by\n * the underlying operating system, for example a file, then flushing the\n * stream guarantees only that bytes previously written to the stream are\n * passed to the operating system for writing; it does not guarantee that\n * they are actually written to a physical device such as a disk drive.\n *
\n * The flush
method of OutputStream
does nothing.\n *\n * @exception IOException if an I/O error occurs.\n */\n flush() {\n }\n /**\n * Closes this output stream and releases any system resources\n * associated with this stream. The general contract of close
\n * is that it closes the output stream. A closed stream cannot perform\n * output operations and cannot be reopened.\n *
\n * The close
method of OutputStream
does nothing.\n *\n * @exception IOException if an I/O error occurs.\n */\n close() {\n }\n }\n\n /**\n * Custom Error class of type Exception.\n */\n class OutOfMemoryError extends Exception {\n }\n\n /*\n * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.\n *\n * This code is free software; you can redistribute it and/or modify it\n * under the terms of the GNU General Public License version 2 only, as\n * published by the Free Software Foundation. Oracle designates this\n * particular file as subject to the \"Classpath\" exception as provided\n * by Oracle in the LICENSE file that accompanied this code.\n *\n * This code is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n * version 2 for more details (a copy is included in the LICENSE file that\n * accompanied this code).\n *\n * You should have received a copy of the GNU General Public License version\n * 2 along with this work; if not, write to the Free Software Foundation,\n * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n *\n * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA\n * or visit www.oracle.com if you need additional information or have any\n * questions.\n */\n /**\n * This class implements an output stream in which the data is\n * written into a byte array. The buffer automatically grows as data\n * is written to it.\n * The data can be retrieved using toByteArray()
and\n * toString()
.\n *
\n * Closing a ByteArrayOutputStream has no effect. The methods in\n * this class can be called after the stream has been closed without\n * generating an IOException.\n *\n * @author Arthur van Hoff\n * @since JDK1.0\n */\n /*public*/ class ByteArrayOutputStream extends OutputStream {\n /**\n * Creates a new byte array output stream. The buffer capacity is\n * initially 32 bytes, though its size increases if necessary.\n */\n // public constructor() {\n // this(32);\n // }\n /**\n * Creates a new byte array output stream, with a buffer capacity of\n * the specified size, in bytes.\n *\n * @param size the initial size.\n * @exception IllegalArgumentException if size is negative.\n */\n constructor(size = 32) {\n super();\n /**\n * The number of valid bytes in the buffer.\n */\n this.count = 0;\n if (size < 0) {\n throw new IllegalArgumentException('Negative initial size: '\n + size);\n }\n this.buf = new Uint8Array(size);\n }\n /**\n * Increases the capacity if necessary to ensure that it can hold\n * at least the number of elements specified by the minimum\n * capacity argument.\n *\n * @param minCapacity the desired minimum capacity\n * @throws OutOfMemoryError if {@code minCapacity < 0}. This is\n * interpreted as a request for the unsatisfiably large capacity\n * {@code (long) Integer.MAX_VALUE + (minCapacity - Integer.MAX_VALUE)}.\n */\n ensureCapacity(minCapacity) {\n // overflow-conscious code\n if (minCapacity - this.buf.length > 0)\n this.grow(minCapacity);\n }\n /**\n * Increases the capacity to ensure that it can hold at least the\n * number of elements specified by the minimum capacity argument.\n *\n * @param minCapacity the desired minimum capacity\n */\n grow(minCapacity) {\n // overflow-conscious code\n let oldCapacity = this.buf.length;\n let newCapacity = oldCapacity << 1;\n if (newCapacity - minCapacity < 0)\n newCapacity = minCapacity;\n if (newCapacity < 0) {\n if (minCapacity < 0) // overflow\n throw new OutOfMemoryError();\n newCapacity = Integer.MAX_VALUE;\n }\n this.buf = Arrays.copyOfUint8Array(this.buf, newCapacity);\n }\n /**\n * Writes the specified byte to this byte array output stream.\n *\n * @param b the byte to be written.\n */\n write(b) {\n this.ensureCapacity(this.count + 1);\n this.buf[this.count] = /*(byte)*/ b;\n this.count += 1;\n }\n /**\n * Writes len
bytes from the specified byte array\n * starting at offset off
to this byte array output stream.\n *\n * @param b the data.\n * @param off the start offset in the data.\n * @param len the number of bytes to write.\n */\n writeBytesOffset(b, off, len) {\n if ((off < 0) || (off > b.length) || (len < 0) ||\n ((off + len) - b.length > 0)) {\n throw new IndexOutOfBoundsException();\n }\n this.ensureCapacity(this.count + len);\n System.arraycopy(b, off, this.buf, this.count, len);\n this.count += len;\n }\n /**\n * Writes the complete contents of this byte array output stream to\n * the specified output stream argument, as if by calling the output\n * stream's write method using out.write(buf, 0, count)
.\n *\n * @param out the output stream to which to write the data.\n * @exception IOException if an I/O error occurs.\n */\n writeTo(out) {\n out.writeBytesOffset(this.buf, 0, this.count);\n }\n /**\n * Resets the count
field of this byte array output\n * stream to zero, so that all currently accumulated output in the\n * output stream is discarded. The output stream can be used again,\n * reusing the already allocated buffer space.\n *\n * @see java.io.ByteArrayInputStream#count\n */\n reset() {\n this.count = 0;\n }\n /**\n * Creates a newly allocated byte array. Its size is the current\n * size of this output stream and the valid contents of the buffer\n * have been copied into it.\n *\n * @return the current contents of this output stream, as a byte array.\n * @see java.io.ByteArrayOutputStream#size()\n */\n toByteArray() {\n return Arrays.copyOfUint8Array(this.buf, this.count);\n }\n /**\n * Returns the current size of the buffer.\n *\n * @return the value of the count
field, which is the number\n * of valid bytes in this output stream.\n * @see java.io.ByteArrayOutputStream#count\n */\n size() {\n return this.count;\n }\n toString(param) {\n if (!param) {\n return this.toString_void();\n }\n if (typeof param === 'string') {\n return this.toString_string(param);\n }\n return this.toString_number(param);\n }\n /**\n * Converts the buffer's contents into a string decoding bytes using the\n * platform's default character set. The length of the new String\n * is a function of the character set, and hence may not be equal to the\n * size of the buffer.\n *\n *
This method always replaces malformed-input and unmappable-character\n * sequences with the default replacement string for the platform's\n * default character set. The {@linkplain java.nio.charset.CharsetDecoder}\n * class should be used when more control over the decoding process is\n * required.\n *\n * @return String decoded from the buffer's contents.\n * @since JDK1.1\n */\n toString_void() {\n return new String(this.buf /*, 0, this.count*/).toString();\n }\n /**\n * Converts the buffer's contents into a string by decoding the bytes using\n * the specified {@link java.nio.charset.Charset charsetName}. The length of\n * the new String is a function of the charset, and hence may not be\n * equal to the length of the byte array.\n *\n *
This method always replaces malformed-input and unmappable-character\n * sequences with this charset's default replacement string. The {@link\n * java.nio.charset.CharsetDecoder} class should be used when more control\n * over the decoding process is required.\n *\n * @param charsetName the name of a supported\n * {@linkplain java.nio.charset.Charset charset}\n * @return String decoded from the buffer's contents.\n * @exception UnsupportedEncodingException\n * If the named charset is not supported\n * @since JDK1.1\n */\n toString_string(charsetName) {\n return new String(this.buf /*, 0, this.count, charsetName*/).toString();\n }\n /**\n * Creates a newly allocated string. Its size is the current size of\n * the output stream and the valid contents of the buffer have been\n * copied into it. Each character c in the resulting string is\n * constructed from the corresponding element b in the byte\n * array such that:\n * \n * c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))\n *
\n *\n * @deprecated This method does not properly convert bytes into characters.\n * As of JDK 1.1, the preferred way to do this is via the\n * toString(String enc)
method, which takes an encoding-name\n * argument, or the toString()
method, which uses the\n * platform's default character encoding.\n *\n * @param hibyte the high byte of each resulting Unicode character.\n * @return the current contents of the output stream, as a string.\n * @see java.io.ByteArrayOutputStream#size()\n * @see java.io.ByteArrayOutputStream#toString(String)\n * @see java.io.ByteArrayOutputStream#toString()\n */\n // @Deprecated\n toString_number(hibyte) {\n return new String(this.buf /*, hibyte, 0, this.count*/).toString();\n }\n /**\n * Closing a ByteArrayOutputStream has no effect. The methods in\n * this class can be called after the stream has been closed without\n * generating an IOException.\n * \n *\n * @throws IOException\n */\n close() {\n }\n }\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*private*/ var Mode$2;\n (function (Mode) {\n Mode[Mode[\"ALPHA\"] = 0] = \"ALPHA\";\n Mode[Mode[\"LOWER\"] = 1] = \"LOWER\";\n Mode[Mode[\"MIXED\"] = 2] = \"MIXED\";\n Mode[Mode[\"PUNCT\"] = 3] = \"PUNCT\";\n Mode[Mode[\"ALPHA_SHIFT\"] = 4] = \"ALPHA_SHIFT\";\n Mode[Mode[\"PUNCT_SHIFT\"] = 5] = \"PUNCT_SHIFT\";\n })(Mode$2 || (Mode$2 = {}));\n /**\n * Indirectly access the global BigInt constructor, it\n * allows browsers that doesn't support BigInt to run\n * the library without breaking due to \"undefined BigInt\"\n * errors.\n */\n function getBigIntConstructor() {\n if (typeof window !== 'undefined') {\n return window['BigInt'] || null;\n }\n if (typeof global !== 'undefined') {\n return global['BigInt'] || null;\n }\n if (typeof self !== 'undefined') {\n return self['BigInt'] || null;\n }\n throw new Error('Can\\'t search globals for BigInt!');\n }\n /**\n * Used to store the BigInt constructor.\n */\n let BigInteger;\n /**\n * This function creates a bigint value. It allows browsers\n * that doesn't support BigInt to run the rest of the library\n * by not directly accessing the BigInt constructor.\n */\n function createBigInt(num) {\n if (typeof BigInteger === 'undefined') {\n BigInteger = getBigIntConstructor();\n }\n if (BigInteger === null) {\n throw new Error('BigInt is not supported!');\n }\n return BigInteger(num);\n }\n function getEXP900() {\n // in Java - array with length = 16\n let EXP900 = [];\n EXP900[0] = createBigInt(1);\n let nineHundred = createBigInt(900);\n EXP900[1] = nineHundred;\n // in Java - array with length = 16\n for (let i /*int*/ = 2; i < 16; i++) {\n EXP900[i] = EXP900[i - 1] * nineHundred;\n }\n return EXP900;\n }\n /**\n *
This class contains the methods for decoding the PDF417 codewords.
\n *\n * @author SITA Lab (kevin.osullivan@sita.aero)\n * @author Guenther Grau\n */\n /*final*/ class DecodedBitStreamParser$2 {\n // private DecodedBitStreamParser() {\n // }\n /**\n *\n * @param codewords\n * @param ecLevel\n *\n * @throws FormatException\n */\n static decode(codewords, ecLevel) {\n // pass encoding to result (will be used for decode symbols in byte mode)\n let result = new StringBuilder('');\n // let encoding: Charset = StandardCharsets.ISO_8859_1;\n let encoding = CharacterSetECI.ISO8859_1;\n /**\n * @note the next command is specific from this TypeScript library\n * because TS can't properly cast some values to char and\n * convert it to string later correctly due to encoding\n * differences from Java version. As reported here:\n * https://github.com/zxing-js/library/pull/264/files#r382831593\n */\n result.enableDecoding(encoding);\n // Get compaction mode\n let codeIndex = 1;\n let code = codewords[codeIndex++];\n let resultMetadata = new PDF417ResultMetadata();\n while (codeIndex < codewords[0]) {\n switch (code) {\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, result);\n break;\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n codeIndex = DecodedBitStreamParser$2.byteCompaction(code, codewords, encoding, codeIndex, result);\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n result.append(/*(char)*/ codewords[codeIndex++]);\n break;\n case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex, result);\n break;\n case DecodedBitStreamParser$2.ECI_CHARSET:\n let charsetECI = CharacterSetECI.getCharacterSetECIByValue(codewords[codeIndex++]);\n // encoding = Charset.forName(charsetECI.getName());\n break;\n case DecodedBitStreamParser$2.ECI_GENERAL_PURPOSE:\n // Can't do anything with generic ECI; skip its 2 characters\n codeIndex += 2;\n break;\n case DecodedBitStreamParser$2.ECI_USER_DEFINED:\n // Can't do anything with user ECI; skip its 1 character\n codeIndex++;\n break;\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n codeIndex = DecodedBitStreamParser$2.decodeMacroBlock(codewords, codeIndex, resultMetadata);\n break;\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n // Should not see these outside a macro block\n throw new FormatException();\n default:\n // Default to text compaction. During testing numerous barcodes\n // appeared to be missing the starting mode. In these cases defaulting\n // to text compaction seems to work.\n codeIndex--;\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, result);\n break;\n }\n if (codeIndex < codewords.length) {\n code = codewords[codeIndex++];\n }\n else {\n throw FormatException.getFormatInstance();\n }\n }\n if (result.length() === 0) {\n throw FormatException.getFormatInstance();\n }\n let decoderResult = new DecoderResult(null, result.toString(), null, ecLevel);\n decoderResult.setOther(resultMetadata);\n return decoderResult;\n }\n /**\n *\n * @param int\n * @param param1\n * @param codewords\n * @param int\n * @param codeIndex\n * @param PDF417ResultMetadata\n * @param resultMetadata\n *\n * @throws FormatException\n */\n // @SuppressWarnings(\"deprecation\")\n static decodeMacroBlock(codewords, codeIndex, resultMetadata) {\n if (codeIndex + DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS > codewords[0]) {\n // we must have at least two bytes left for the segment index\n throw FormatException.getFormatInstance();\n }\n let segmentIndexArray = new Int32Array(DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS);\n for (let i /*int*/ = 0; i < DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS; i++, codeIndex++) {\n segmentIndexArray[i] = codewords[codeIndex];\n }\n resultMetadata.setSegmentIndex(Integer.parseInt(DecodedBitStreamParser$2.decodeBase900toBase10(segmentIndexArray, DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS)));\n let fileId = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex, fileId);\n resultMetadata.setFileId(fileId.toString());\n let optionalFieldsStart = -1;\n if (codewords[codeIndex] === DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD) {\n optionalFieldsStart = codeIndex + 1;\n }\n while (codeIndex < codewords[0]) {\n switch (codewords[codeIndex]) {\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n codeIndex++;\n switch (codewords[codeIndex]) {\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME:\n let fileName = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, fileName);\n resultMetadata.setFileName(fileName.toString());\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SENDER:\n let sender = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, sender);\n resultMetadata.setSender(sender.toString());\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE:\n let addressee = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.textCompaction(codewords, codeIndex + 1, addressee);\n resultMetadata.setAddressee(addressee.toString());\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT:\n let segmentCount = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, segmentCount);\n resultMetadata.setSegmentCount(Integer.parseInt(segmentCount.toString()));\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP:\n let timestamp = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, timestamp);\n resultMetadata.setTimestamp(Long.parseLong(timestamp.toString()));\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM:\n let checksum = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, checksum);\n resultMetadata.setChecksum(Integer.parseInt(checksum.toString()));\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE:\n let fileSize = new StringBuilder();\n codeIndex = DecodedBitStreamParser$2.numericCompaction(codewords, codeIndex + 1, fileSize);\n resultMetadata.setFileSize(Long.parseLong(fileSize.toString()));\n break;\n default:\n throw FormatException.getFormatInstance();\n }\n break;\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n codeIndex++;\n resultMetadata.setLastSegment(true);\n break;\n default:\n throw FormatException.getFormatInstance();\n }\n }\n // copy optional fields to additional options\n if (optionalFieldsStart !== -1) {\n let optionalFieldsLength = codeIndex - optionalFieldsStart;\n if (resultMetadata.isLastSegment()) {\n // do not include terminator\n optionalFieldsLength--;\n }\n resultMetadata.setOptionalData(Arrays.copyOfRange(codewords, optionalFieldsStart, optionalFieldsStart + optionalFieldsLength));\n }\n return codeIndex;\n }\n /**\n * Text Compaction mode (see 5.4.1.5) permits all printable ASCII characters to be\n * encoded, i.e. values 32 - 126 inclusive in accordance with ISO/IEC 646 (IRV), as\n * well as selected control characters.\n *\n * @param codewords The array of codewords (data + error)\n * @param codeIndex The current index into the codeword array.\n * @param result The decoded data is appended to the result.\n * @return The next index into the codeword array.\n */\n static textCompaction(codewords, codeIndex, result) {\n // 2 character per codeword\n let textCompactionData = new Int32Array((codewords[0] - codeIndex) * 2);\n // Used to hold the byte compaction value if there is a mode shift\n let byteCompactionData = new Int32Array((codewords[0] - codeIndex) * 2);\n let index = 0;\n let end = false;\n while ((codeIndex < codewords[0]) && !end) {\n let code = codewords[codeIndex++];\n if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n textCompactionData[index] = code / 30;\n textCompactionData[index + 1] = code % 30;\n index += 2;\n }\n else {\n switch (code) {\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n // reinitialize text compaction mode to alpha sub mode\n textCompactionData[index++] = DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH;\n break;\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n codeIndex--;\n end = true;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n // The Mode Shift codeword 913 shall cause a temporary\n // switch from Text Compaction mode to Byte Compaction mode.\n // This switch shall be in effect for only the next codeword,\n // after which the mode shall revert to the prevailing sub-mode\n // of the Text Compaction mode. Codeword 913 is only available\n // in Text Compaction mode; its use is described in 5.4.2.4.\n textCompactionData[index] = DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE;\n code = codewords[codeIndex++];\n byteCompactionData[index] = code;\n index++;\n break;\n }\n }\n }\n DecodedBitStreamParser$2.decodeTextCompaction(textCompactionData, byteCompactionData, index, result);\n return codeIndex;\n }\n /**\n * The Text Compaction mode includes all the printable ASCII characters\n * (i.e. values from 32 to 126) and three ASCII control characters: HT or tab\n * (9: e), LF or line feed (10: e), and CR or carriage\n * return (13: e). The Text Compaction mode also includes various latch\n * and shift characters which are used exclusively within the mode. The Text\n * Compaction mode encodes up to 2 characters per codeword. The compaction rules\n * for converting data into PDF417 codewords are defined in 5.4.2.2. The sub-mode\n * switches are defined in 5.4.2.3.\n *\n * @param textCompactionData The text compaction data.\n * @param byteCompactionData The byte compaction data if there\n * was a mode shift.\n * @param length The size of the text compaction and byte compaction data.\n * @param result The decoded data is appended to the result.\n */\n static decodeTextCompaction(textCompactionData, byteCompactionData, length, result) {\n // Beginning from an initial state of the Alpha sub-mode\n // The default compaction mode for PDF417 in effect at the start of each symbol shall always be Text\n // Compaction mode Alpha sub-mode (alphabetic: uppercase). A latch codeword from another mode to the Text\n // Compaction mode shall always switch to the Text Compaction Alpha sub-mode.\n let subMode = Mode$2.ALPHA;\n let priorToShiftMode = Mode$2.ALPHA;\n let i = 0;\n while (i < length) {\n let subModeCh = textCompactionData[i];\n let ch = /*char*/ '';\n switch (subMode) {\n case Mode$2.ALPHA:\n // Alpha (alphabetic: uppercase)\n if (subModeCh < 26) {\n // Upper case Alpha Character\n // Note: 65 = 'A' ASCII -> there is byte code of symbol\n ch = /*(char)('A' + subModeCh) */ String.fromCharCode(65 + subModeCh);\n }\n else {\n switch (subModeCh) {\n case 26:\n ch = ' ';\n break;\n case DecodedBitStreamParser$2.LL:\n subMode = Mode$2.LOWER;\n break;\n case DecodedBitStreamParser$2.ML:\n subMode = Mode$2.MIXED;\n break;\n case DecodedBitStreamParser$2.PS:\n // Shift to punctuation\n priorToShiftMode = subMode;\n subMode = Mode$2.PUNCT_SHIFT;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n result.append(/*(char)*/ byteCompactionData[i]);\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n case Mode$2.LOWER:\n // Lower (alphabetic: lowercase)\n if (subModeCh < 26) {\n ch = /*(char)('a' + subModeCh)*/ String.fromCharCode(97 + subModeCh);\n }\n else {\n switch (subModeCh) {\n case 26:\n ch = ' ';\n break;\n case DecodedBitStreamParser$2.AS:\n // Shift to alpha\n priorToShiftMode = subMode;\n subMode = Mode$2.ALPHA_SHIFT;\n break;\n case DecodedBitStreamParser$2.ML:\n subMode = Mode$2.MIXED;\n break;\n case DecodedBitStreamParser$2.PS:\n // Shift to punctuation\n priorToShiftMode = subMode;\n subMode = Mode$2.PUNCT_SHIFT;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n // TODO Does this need to use the current character encoding? See other occurrences below\n result.append(/*(char)*/ byteCompactionData[i]);\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n case Mode$2.MIXED:\n // Mixed (punctuation: e)\n if (subModeCh < DecodedBitStreamParser$2.PL) {\n ch = DecodedBitStreamParser$2.MIXED_CHARS[subModeCh];\n }\n else {\n switch (subModeCh) {\n case DecodedBitStreamParser$2.PL:\n subMode = Mode$2.PUNCT;\n break;\n case 26:\n ch = ' ';\n break;\n case DecodedBitStreamParser$2.LL:\n subMode = Mode$2.LOWER;\n break;\n case DecodedBitStreamParser$2.AL:\n subMode = Mode$2.ALPHA;\n break;\n case DecodedBitStreamParser$2.PS:\n // Shift to punctuation\n priorToShiftMode = subMode;\n subMode = Mode$2.PUNCT_SHIFT;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n result.append(/*(char)*/ byteCompactionData[i]);\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n case Mode$2.PUNCT:\n // Punctuation\n if (subModeCh < DecodedBitStreamParser$2.PAL) {\n ch = DecodedBitStreamParser$2.PUNCT_CHARS[subModeCh];\n }\n else {\n switch (subModeCh) {\n case DecodedBitStreamParser$2.PAL:\n subMode = Mode$2.ALPHA;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n result.append(/*(char)*/ byteCompactionData[i]);\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n case Mode$2.ALPHA_SHIFT:\n // Restore sub-mode\n subMode = priorToShiftMode;\n if (subModeCh < 26) {\n ch = /*(char)('A' + subModeCh)*/ String.fromCharCode(65 + subModeCh);\n }\n else {\n switch (subModeCh) {\n case 26:\n ch = ' ';\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n case Mode$2.PUNCT_SHIFT:\n // Restore sub-mode\n subMode = priorToShiftMode;\n if (subModeCh < DecodedBitStreamParser$2.PAL) {\n ch = DecodedBitStreamParser$2.PUNCT_CHARS[subModeCh];\n }\n else {\n switch (subModeCh) {\n case DecodedBitStreamParser$2.PAL:\n subMode = Mode$2.ALPHA;\n break;\n case DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:\n // PS before Shift-to-Byte is used as a padding character,\n // see 5.4.2.4 of the specification\n result.append(/*(char)*/ byteCompactionData[i]);\n break;\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n subMode = Mode$2.ALPHA;\n break;\n }\n }\n break;\n }\n // if (ch !== 0) {\n if (ch !== '') {\n // Append decoded character to result\n result.append(ch);\n }\n i++;\n }\n }\n /**\n * Byte Compaction mode (see 5.4.3) permits all 256 possible 8-bit byte values to be encoded.\n * This includes all ASCII characters value 0 to 127 inclusive and provides for international\n * character set support.\n *\n * @param mode The byte compaction mode i.e. 901 or 924\n * @param codewords The array of codewords (data + error)\n * @param encoding Currently active character encoding\n * @param codeIndex The current index into the codeword array.\n * @param result The decoded data is appended to the result.\n * @return The next index into the codeword array.\n */\n static /*int*/ byteCompaction(mode, codewords, encoding, codeIndex, result) {\n let decodedBytes = new ByteArrayOutputStream();\n let count = 0;\n let value = /*long*/ 0;\n let end = false;\n switch (mode) {\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n // Total number of Byte Compaction characters to be encoded\n // is not a multiple of 6\n let byteCompactedCodewords = new Int32Array(6);\n let nextCode = codewords[codeIndex++];\n while ((codeIndex < codewords[0]) && !end) {\n byteCompactedCodewords[count++] = nextCode;\n // Base 900\n value = 900 * value + nextCode;\n nextCode = codewords[codeIndex++];\n // perhaps it should be ok to check only nextCode >= TEXT_COMPACTION_MODE_LATCH\n switch (nextCode) {\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n codeIndex--;\n end = true;\n break;\n default:\n if ((count % 5 === 0) && (count > 0)) {\n // Decode every 5 codewords\n // Convert to Base 256\n for (let j /*int*/ = 0; j < 6; ++j) {\n /* @note\n * JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.\n * So the next bitwise operation could not be done with simple numbers\n */\n decodedBytes.write(/*(byte)*/ Number(createBigInt(value) >> createBigInt(8 * (5 - j))));\n }\n value = 0;\n count = 0;\n }\n break;\n }\n }\n // if the end of all codewords is reached the last codeword needs to be added\n if (codeIndex === codewords[0] && nextCode < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n byteCompactedCodewords[count++] = nextCode;\n }\n // If Byte Compaction mode is invoked with codeword 901,\n // the last group of codewords is interpreted directly\n // as one byte per codeword, without compaction.\n for (let i /*int*/ = 0; i < count; i++) {\n decodedBytes.write(/*(byte)*/ byteCompactedCodewords[i]);\n }\n break;\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n // Total number of Byte Compaction characters to be encoded\n // is an integer multiple of 6\n while (codeIndex < codewords[0] && !end) {\n let code = codewords[codeIndex++];\n if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n count++;\n // Base 900\n value = 900 * value + code;\n }\n else {\n switch (code) {\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n codeIndex--;\n end = true;\n break;\n }\n }\n if ((count % 5 === 0) && (count > 0)) {\n // Decode every 5 codewords\n // Convert to Base 256\n /* @note\n * JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.\n * So the next bitwise operation could not be done with simple numbers\n */\n for (let j /*int*/ = 0; j < 6; ++j) {\n decodedBytes.write(/*(byte)*/ Number(createBigInt(value) >> createBigInt(8 * (5 - j))));\n }\n value = 0;\n count = 0;\n }\n }\n break;\n }\n result.append(StringEncoding.decode(decodedBytes.toByteArray(), encoding));\n return codeIndex;\n }\n /**\n * Numeric Compaction mode (see 5.4.4) permits efficient encoding of numeric data strings.\n *\n * @param codewords The array of codewords (data + error)\n * @param codeIndex The current index into the codeword array.\n * @param result The decoded data is appended to the result.\n * @return The next index into the codeword array.\n *\n * @throws FormatException\n */\n static numericCompaction(codewords, codeIndex /*int*/, result) {\n let count = 0;\n let end = false;\n let numericCodewords = new Int32Array(DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS);\n while (codeIndex < codewords[0] && !end) {\n let code = codewords[codeIndex++];\n if (codeIndex === codewords[0]) {\n end = true;\n }\n if (code < DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH) {\n numericCodewords[count] = code;\n count++;\n }\n else {\n switch (code) {\n case DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH:\n case DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK:\n case DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:\n case DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR:\n codeIndex--;\n end = true;\n break;\n }\n }\n if ((count % DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS === 0 || code === DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH || end) && count > 0) {\n // Re-invoking Numeric Compaction mode (by using codeword 902\n // while in Numeric Compaction mode) serves to terminate the\n // current Numeric Compaction mode grouping as described in 5.4.4.2,\n // and then to start a new one grouping.\n result.append(DecodedBitStreamParser$2.decodeBase900toBase10(numericCodewords, count));\n count = 0;\n }\n }\n return codeIndex;\n }\n /**\n * Convert a list of Numeric Compacted codewords from Base 900 to Base 10.\n *\n * @param codewords The array of codewords\n * @param count The number of codewords\n * @return The decoded string representing the Numeric data.\n *\n * EXAMPLE\n * Encode the fifteen digit numeric string 000213298174000\n * Prefix the numeric string with a 1 and set the initial value of\n * t = 1 000 213 298 174 000\n * Calculate codeword 0\n * d0 = 1 000 213 298 174 000 mod 900 = 200\n *\n * t = 1 000 213 298 174 000 div 900 = 1 111 348 109 082\n * Calculate codeword 1\n * d1 = 1 111 348 109 082 mod 900 = 282\n *\n * t = 1 111 348 109 082 div 900 = 1 234 831 232\n * Calculate codeword 2\n * d2 = 1 234 831 232 mod 900 = 632\n *\n * t = 1 234 831 232 div 900 = 1 372 034\n * Calculate codeword 3\n * d3 = 1 372 034 mod 900 = 434\n *\n * t = 1 372 034 div 900 = 1 524\n * Calculate codeword 4\n * d4 = 1 524 mod 900 = 624\n *\n * t = 1 524 div 900 = 1\n * Calculate codeword 5\n * d5 = 1 mod 900 = 1\n * t = 1 div 900 = 0\n * Codeword sequence is: 1, 624, 434, 632, 282, 200\n *\n * Decode the above codewords involves\n * 1 x 900 power of 5 + 624 x 900 power of 4 + 434 x 900 power of 3 +\n * 632 x 900 power of 2 + 282 x 900 power of 1 + 200 x 900 power of 0 = 1000213298174000\n *\n * Remove leading 1 => Result is 000213298174000\n *\n * @throws FormatException\n */\n static decodeBase900toBase10(codewords, count) {\n let result = createBigInt(0);\n for (let i /*int*/ = 0; i < count; i++) {\n result += DecodedBitStreamParser$2.EXP900[count - i - 1] * createBigInt(codewords[i]);\n }\n let resultString = result.toString();\n if (resultString.charAt(0) !== '1') {\n throw new FormatException();\n }\n return resultString.substring(1);\n }\n }\n DecodedBitStreamParser$2.TEXT_COMPACTION_MODE_LATCH = 900;\n DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH = 901;\n DecodedBitStreamParser$2.NUMERIC_COMPACTION_MODE_LATCH = 902;\n DecodedBitStreamParser$2.BYTE_COMPACTION_MODE_LATCH_6 = 924;\n DecodedBitStreamParser$2.ECI_USER_DEFINED = 925;\n DecodedBitStreamParser$2.ECI_GENERAL_PURPOSE = 926;\n DecodedBitStreamParser$2.ECI_CHARSET = 927;\n DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928;\n DecodedBitStreamParser$2.BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923;\n DecodedBitStreamParser$2.MACRO_PDF417_TERMINATOR = 922;\n DecodedBitStreamParser$2.MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913;\n DecodedBitStreamParser$2.MAX_NUMERIC_CODEWORDS = 15;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME = 0;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT = 1;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP = 2;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_SENDER = 3;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE = 4;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE = 5;\n DecodedBitStreamParser$2.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM = 6;\n DecodedBitStreamParser$2.PL = 25;\n DecodedBitStreamParser$2.LL = 27;\n DecodedBitStreamParser$2.AS = 27;\n DecodedBitStreamParser$2.ML = 28;\n DecodedBitStreamParser$2.AL = 28;\n DecodedBitStreamParser$2.PS = 29;\n DecodedBitStreamParser$2.PAL = 29;\n DecodedBitStreamParser$2.PUNCT_CHARS = ';<>@[\\\\]_`~!\\r\\t,:\\n-.$/\"|*()?{}\\'';\n DecodedBitStreamParser$2.MIXED_CHARS = '0123456789&\\r\\t,:#-.$/+%*=^';\n /**\n * Table containing values for the exponent of 900.\n * This is used in the numeric compaction decode algorithm.\n */\n DecodedBitStreamParser$2.EXP900 = getBigIntConstructor() ? getEXP900() : [];\n DecodedBitStreamParser$2.NUMBER_OF_SEQUENCE_CODEWORDS = 2;\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // import java.util.ArrayList;\n // import java.util.Collection;\n // import java.util.Formatter;\n // import java.util.List;\n /**\n * @author Guenther Grau\n */\n /*public final*/ class PDF417ScanningDecoder {\n constructor() { }\n /**\n * @TODO don't pass in minCodewordWidth and maxCodewordWidth, pass in barcode columns for start and stop pattern\n *\n * columns. That way width can be deducted from the pattern column.\n * This approach also allows to detect more details about the barcode, e.g. if a bar type (white or black) is wider\n * than it should be. This can happen if the scanner used a bad blackpoint.\n *\n * @param BitMatrix\n * @param image\n * @param ResultPoint\n * @param imageTopLeft\n * @param ResultPoint\n * @param imageBottomLeft\n * @param ResultPoint\n * @param imageTopRight\n * @param ResultPoint\n * @param imageBottomRight\n * @param int\n * @param minCodewordWidth\n * @param int\n * @param maxCodewordWidth\n *\n * @throws NotFoundException\n * @throws FormatException\n * @throws ChecksumException\n */\n static decode(image, imageTopLeft, imageBottomLeft, imageTopRight, imageBottomRight, minCodewordWidth, maxCodewordWidth) {\n let boundingBox = new BoundingBox(image, imageTopLeft, imageBottomLeft, imageTopRight, imageBottomRight);\n let leftRowIndicatorColumn = null;\n let rightRowIndicatorColumn = null;\n let detectionResult;\n for (let firstPass /*boolean*/ = true;; firstPass = false) {\n if (imageTopLeft != null) {\n leftRowIndicatorColumn = PDF417ScanningDecoder.getRowIndicatorColumn(image, boundingBox, imageTopLeft, true, minCodewordWidth, maxCodewordWidth);\n }\n if (imageTopRight != null) {\n rightRowIndicatorColumn = PDF417ScanningDecoder.getRowIndicatorColumn(image, boundingBox, imageTopRight, false, minCodewordWidth, maxCodewordWidth);\n }\n detectionResult = PDF417ScanningDecoder.merge(leftRowIndicatorColumn, rightRowIndicatorColumn);\n if (detectionResult == null) {\n throw NotFoundException.getNotFoundInstance();\n }\n let resultBox = detectionResult.getBoundingBox();\n if (firstPass && resultBox != null &&\n (resultBox.getMinY() < boundingBox.getMinY() || resultBox.getMaxY() > boundingBox.getMaxY())) {\n boundingBox = resultBox;\n }\n else {\n break;\n }\n }\n detectionResult.setBoundingBox(boundingBox);\n let maxBarcodeColumn = detectionResult.getBarcodeColumnCount() + 1;\n detectionResult.setDetectionResultColumn(0, leftRowIndicatorColumn);\n detectionResult.setDetectionResultColumn(maxBarcodeColumn, rightRowIndicatorColumn);\n let leftToRight = leftRowIndicatorColumn != null;\n for (let barcodeColumnCount /*int*/ = 1; barcodeColumnCount <= maxBarcodeColumn; barcodeColumnCount++) {\n let barcodeColumn = leftToRight ? barcodeColumnCount : maxBarcodeColumn - barcodeColumnCount;\n if (detectionResult.getDetectionResultColumn(barcodeColumn) !== /* null */ undefined) {\n // This will be the case for the opposite row indicator column, which doesn't need to be decoded again.\n continue;\n }\n let detectionResultColumn;\n if (barcodeColumn === 0 || barcodeColumn === maxBarcodeColumn) {\n detectionResultColumn = new DetectionResultRowIndicatorColumn(boundingBox, barcodeColumn === 0);\n }\n else {\n detectionResultColumn = new DetectionResultColumn(boundingBox);\n }\n detectionResult.setDetectionResultColumn(barcodeColumn, detectionResultColumn);\n let startColumn = -1;\n let previousStartColumn = startColumn;\n // TODO start at a row for which we know the start position, then detect upwards and downwards from there.\n for (let imageRow /*int*/ = boundingBox.getMinY(); imageRow <= boundingBox.getMaxY(); imageRow++) {\n startColumn = PDF417ScanningDecoder.getStartColumn(detectionResult, barcodeColumn, imageRow, leftToRight);\n if (startColumn < 0 || startColumn > boundingBox.getMaxX()) {\n if (previousStartColumn === -1) {\n continue;\n }\n startColumn = previousStartColumn;\n }\n let codeword = PDF417ScanningDecoder.detectCodeword(image, boundingBox.getMinX(), boundingBox.getMaxX(), leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth);\n if (codeword != null) {\n detectionResultColumn.setCodeword(imageRow, codeword);\n previousStartColumn = startColumn;\n minCodewordWidth = Math.min(minCodewordWidth, codeword.getWidth());\n maxCodewordWidth = Math.max(maxCodewordWidth, codeword.getWidth());\n }\n }\n }\n return PDF417ScanningDecoder.createDecoderResult(detectionResult);\n }\n /**\n *\n * @param leftRowIndicatorColumn\n * @param rightRowIndicatorColumn\n *\n * @throws NotFoundException\n */\n static merge(leftRowIndicatorColumn, rightRowIndicatorColumn) {\n if (leftRowIndicatorColumn == null && rightRowIndicatorColumn == null) {\n return null;\n }\n let barcodeMetadata = PDF417ScanningDecoder.getBarcodeMetadata(leftRowIndicatorColumn, rightRowIndicatorColumn);\n if (barcodeMetadata == null) {\n return null;\n }\n let boundingBox = BoundingBox.merge(PDF417ScanningDecoder.adjustBoundingBox(leftRowIndicatorColumn), PDF417ScanningDecoder.adjustBoundingBox(rightRowIndicatorColumn));\n return new DetectionResult(barcodeMetadata, boundingBox);\n }\n /**\n *\n * @param rowIndicatorColumn\n *\n * @throws NotFoundException\n */\n static adjustBoundingBox(rowIndicatorColumn) {\n if (rowIndicatorColumn == null) {\n return null;\n }\n let rowHeights = rowIndicatorColumn.getRowHeights();\n if (rowHeights == null) {\n return null;\n }\n let maxRowHeight = PDF417ScanningDecoder.getMax(rowHeights);\n let missingStartRows = 0;\n for (let rowHeight /*int*/ of rowHeights) {\n missingStartRows += maxRowHeight - rowHeight;\n if (rowHeight > 0) {\n break;\n }\n }\n let codewords = rowIndicatorColumn.getCodewords();\n for (let row /*int*/ = 0; missingStartRows > 0 && codewords[row] == null; row++) {\n missingStartRows--;\n }\n let missingEndRows = 0;\n for (let row /*int*/ = rowHeights.length - 1; row >= 0; row--) {\n missingEndRows += maxRowHeight - rowHeights[row];\n if (rowHeights[row] > 0) {\n break;\n }\n }\n for (let row /*int*/ = codewords.length - 1; missingEndRows > 0 && codewords[row] == null; row--) {\n missingEndRows--;\n }\n return rowIndicatorColumn.getBoundingBox().addMissingRows(missingStartRows, missingEndRows, rowIndicatorColumn.isLeft());\n }\n static getMax(values) {\n let maxValue = -1;\n for (let value /*int*/ of values) {\n maxValue = Math.max(maxValue, value);\n }\n return maxValue;\n }\n static getBarcodeMetadata(leftRowIndicatorColumn, rightRowIndicatorColumn) {\n let leftBarcodeMetadata;\n if (leftRowIndicatorColumn == null ||\n (leftBarcodeMetadata = leftRowIndicatorColumn.getBarcodeMetadata()) == null) {\n return rightRowIndicatorColumn == null ? null : rightRowIndicatorColumn.getBarcodeMetadata();\n }\n let rightBarcodeMetadata;\n if (rightRowIndicatorColumn == null ||\n (rightBarcodeMetadata = rightRowIndicatorColumn.getBarcodeMetadata()) == null) {\n return leftBarcodeMetadata;\n }\n if (leftBarcodeMetadata.getColumnCount() !== rightBarcodeMetadata.getColumnCount() &&\n leftBarcodeMetadata.getErrorCorrectionLevel() !== rightBarcodeMetadata.getErrorCorrectionLevel() &&\n leftBarcodeMetadata.getRowCount() !== rightBarcodeMetadata.getRowCount()) {\n return null;\n }\n return leftBarcodeMetadata;\n }\n static getRowIndicatorColumn(image, boundingBox, startPoint, leftToRight, minCodewordWidth, maxCodewordWidth) {\n let rowIndicatorColumn = new DetectionResultRowIndicatorColumn(boundingBox, leftToRight);\n for (let i /*int*/ = 0; i < 2; i++) {\n let increment = i === 0 ? 1 : -1;\n let startColumn = Math.trunc(Math.trunc(startPoint.getX()));\n for (let imageRow /*int*/ = Math.trunc(Math.trunc(startPoint.getY())); imageRow <= boundingBox.getMaxY() &&\n imageRow >= boundingBox.getMinY(); imageRow += increment) {\n let codeword = PDF417ScanningDecoder.detectCodeword(image, 0, image.getWidth(), leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth);\n if (codeword != null) {\n rowIndicatorColumn.setCodeword(imageRow, codeword);\n if (leftToRight) {\n startColumn = codeword.getStartX();\n }\n else {\n startColumn = codeword.getEndX();\n }\n }\n }\n }\n return rowIndicatorColumn;\n }\n /**\n *\n * @param detectionResult\n * @param BarcodeValue\n * @param param2\n * @param param3\n * @param barcodeMatrix\n *\n * @throws NotFoundException\n */\n static adjustCodewordCount(detectionResult, barcodeMatrix) {\n let barcodeMatrix01 = barcodeMatrix[0][1];\n let numberOfCodewords = barcodeMatrix01.getValue();\n let calculatedNumberOfCodewords = detectionResult.getBarcodeColumnCount() *\n detectionResult.getBarcodeRowCount() -\n PDF417ScanningDecoder.getNumberOfECCodeWords(detectionResult.getBarcodeECLevel());\n if (numberOfCodewords.length === 0) {\n if (calculatedNumberOfCodewords < 1 || calculatedNumberOfCodewords > PDF417Common.MAX_CODEWORDS_IN_BARCODE) {\n throw NotFoundException.getNotFoundInstance();\n }\n barcodeMatrix01.setValue(calculatedNumberOfCodewords);\n }\n else if (numberOfCodewords[0] !== calculatedNumberOfCodewords) {\n // The calculated one is more reliable as it is derived from the row indicator columns\n barcodeMatrix01.setValue(calculatedNumberOfCodewords);\n }\n }\n /**\n *\n * @param detectionResult\n *\n * @throws FormatException\n * @throws ChecksumException\n * @throws NotFoundException\n */\n static createDecoderResult(detectionResult) {\n let barcodeMatrix = PDF417ScanningDecoder.createBarcodeMatrix(detectionResult);\n PDF417ScanningDecoder.adjustCodewordCount(detectionResult, barcodeMatrix);\n let erasures /*Collection*/ = new Array();\n let codewords = new Int32Array(detectionResult.getBarcodeRowCount() * detectionResult.getBarcodeColumnCount());\n let ambiguousIndexValuesList = /*List*/ [];\n let ambiguousIndexesList = /*Collection*/ new Array();\n for (let row /*int*/ = 0; row < detectionResult.getBarcodeRowCount(); row++) {\n for (let column /*int*/ = 0; column < detectionResult.getBarcodeColumnCount(); column++) {\n let values = barcodeMatrix[row][column + 1].getValue();\n let codewordIndex = row * detectionResult.getBarcodeColumnCount() + column;\n if (values.length === 0) {\n erasures.push(codewordIndex);\n }\n else if (values.length === 1) {\n codewords[codewordIndex] = values[0];\n }\n else {\n ambiguousIndexesList.push(codewordIndex);\n ambiguousIndexValuesList.push(values);\n }\n }\n }\n let ambiguousIndexValues = new Array(ambiguousIndexValuesList.length);\n for (let i /*int*/ = 0; i < ambiguousIndexValues.length; i++) {\n ambiguousIndexValues[i] = ambiguousIndexValuesList[i];\n }\n return PDF417ScanningDecoder.createDecoderResultFromAmbiguousValues(detectionResult.getBarcodeECLevel(), codewords, PDF417Common.toIntArray(erasures), PDF417Common.toIntArray(ambiguousIndexesList), ambiguousIndexValues);\n }\n /**\n * This method deals with the fact, that the decoding process doesn't always yield a single most likely value. The\n * current error correction implementation doesn't deal with erasures very well, so it's better to provide a value\n * for these ambiguous codewords instead of treating it as an erasure. The problem is that we don't know which of\n * the ambiguous values to choose. We try decode using the first value, and if that fails, we use another of the\n * ambiguous values and try to decode again. This usually only happens on very hard to read and decode barcodes,\n * so decoding the normal barcodes is not affected by this.\n *\n * @param erasureArray contains the indexes of erasures\n * @param ambiguousIndexes array with the indexes that have more than one most likely value\n * @param ambiguousIndexValues two dimensional array that contains the ambiguous values. The first dimension must\n * be the same length as the ambiguousIndexes array\n *\n * @throws FormatException\n * @throws ChecksumException\n */\n static createDecoderResultFromAmbiguousValues(ecLevel, codewords, erasureArray, ambiguousIndexes, ambiguousIndexValues) {\n let ambiguousIndexCount = new Int32Array(ambiguousIndexes.length);\n let tries = 100;\n while (tries-- > 0) {\n for (let i /*int*/ = 0; i < ambiguousIndexCount.length; i++) {\n codewords[ambiguousIndexes[i]] = ambiguousIndexValues[i][ambiguousIndexCount[i]];\n }\n try {\n return PDF417ScanningDecoder.decodeCodewords(codewords, ecLevel, erasureArray);\n }\n catch (err) {\n let ignored = err instanceof ChecksumException;\n if (!ignored) {\n throw err;\n }\n }\n if (ambiguousIndexCount.length === 0) {\n throw ChecksumException.getChecksumInstance();\n }\n for (let i /*int*/ = 0; i < ambiguousIndexCount.length; i++) {\n if (ambiguousIndexCount[i] < ambiguousIndexValues[i].length - 1) {\n ambiguousIndexCount[i]++;\n break;\n }\n else {\n ambiguousIndexCount[i] = 0;\n if (i === ambiguousIndexCount.length - 1) {\n throw ChecksumException.getChecksumInstance();\n }\n }\n }\n }\n throw ChecksumException.getChecksumInstance();\n }\n static createBarcodeMatrix(detectionResult) {\n // let barcodeMatrix: BarcodeValue[][] =\n // new BarcodeValue[detectionResult.getBarcodeRowCount()][detectionResult.getBarcodeColumnCount() + 2];\n let barcodeMatrix = Array.from({ length: detectionResult.getBarcodeRowCount() }, () => new Array(detectionResult.getBarcodeColumnCount() + 2));\n for (let row /*int*/ = 0; row < barcodeMatrix.length; row++) {\n for (let column /*int*/ = 0; column < barcodeMatrix[row].length; column++) {\n barcodeMatrix[row][column] = new BarcodeValue();\n }\n }\n let column = 0;\n for (let detectionResultColumn /*DetectionResultColumn*/ of detectionResult.getDetectionResultColumns()) {\n if (detectionResultColumn != null) {\n for (let codeword /*Codeword*/ of detectionResultColumn.getCodewords()) {\n if (codeword != null) {\n let rowNumber = codeword.getRowNumber();\n if (rowNumber >= 0) {\n if (rowNumber >= barcodeMatrix.length) {\n // We have more rows than the barcode metadata allows for, ignore them.\n continue;\n }\n barcodeMatrix[rowNumber][column].setValue(codeword.getValue());\n }\n }\n }\n }\n column++;\n }\n return barcodeMatrix;\n }\n static isValidBarcodeColumn(detectionResult, barcodeColumn) {\n return barcodeColumn >= 0 && barcodeColumn <= detectionResult.getBarcodeColumnCount() + 1;\n }\n static getStartColumn(detectionResult, barcodeColumn, imageRow, leftToRight) {\n let offset = leftToRight ? 1 : -1;\n let codeword = null;\n if (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n codeword = detectionResult.getDetectionResultColumn(barcodeColumn - offset).getCodeword(imageRow);\n }\n if (codeword != null) {\n return leftToRight ? codeword.getEndX() : codeword.getStartX();\n }\n codeword = detectionResult.getDetectionResultColumn(barcodeColumn).getCodewordNearby(imageRow);\n if (codeword != null) {\n return leftToRight ? codeword.getStartX() : codeword.getEndX();\n }\n if (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n codeword = detectionResult.getDetectionResultColumn(barcodeColumn - offset).getCodewordNearby(imageRow);\n }\n if (codeword != null) {\n return leftToRight ? codeword.getEndX() : codeword.getStartX();\n }\n let skippedColumns = 0;\n while (PDF417ScanningDecoder.isValidBarcodeColumn(detectionResult, barcodeColumn - offset)) {\n barcodeColumn -= offset;\n for (let previousRowCodeword /*Codeword*/ of detectionResult.getDetectionResultColumn(barcodeColumn).getCodewords()) {\n if (previousRowCodeword != null) {\n return (leftToRight ? previousRowCodeword.getEndX() : previousRowCodeword.getStartX()) +\n offset *\n skippedColumns *\n (previousRowCodeword.getEndX() - previousRowCodeword.getStartX());\n }\n }\n skippedColumns++;\n }\n return leftToRight ? detectionResult.getBoundingBox().getMinX() : detectionResult.getBoundingBox().getMaxX();\n }\n static detectCodeword(image, minColumn, maxColumn, leftToRight, startColumn, imageRow, minCodewordWidth, maxCodewordWidth) {\n startColumn = PDF417ScanningDecoder.adjustCodewordStartColumn(image, minColumn, maxColumn, leftToRight, startColumn, imageRow);\n // we usually know fairly exact now how long a codeword is. We should provide minimum and maximum expected length\n // and try to adjust the read pixels, e.g. remove single pixel errors or try to cut off exceeding pixels.\n // min and maxCodewordWidth should not be used as they are calculated for the whole barcode an can be inaccurate\n // for the current position\n let moduleBitCount = PDF417ScanningDecoder.getModuleBitCount(image, minColumn, maxColumn, leftToRight, startColumn, imageRow);\n if (moduleBitCount == null) {\n return null;\n }\n let endColumn;\n let codewordBitCount = MathUtils.sum(moduleBitCount);\n if (leftToRight) {\n endColumn = startColumn + codewordBitCount;\n }\n else {\n for (let i /*int*/ = 0; i < moduleBitCount.length / 2; i++) {\n let tmpCount = moduleBitCount[i];\n moduleBitCount[i] = moduleBitCount[moduleBitCount.length - 1 - i];\n moduleBitCount[moduleBitCount.length - 1 - i] = tmpCount;\n }\n endColumn = startColumn;\n startColumn = endColumn - codewordBitCount;\n }\n // TODO implement check for width and correction of black and white bars\n // use start (and maybe stop pattern) to determine if black bars are wider than white bars. If so, adjust.\n // should probably done only for codewords with a lot more than 17 bits.\n // The following fixes 10-1.png, which has wide black bars and small white bars\n // for (let i /*int*/ = 0; i < moduleBitCount.length; i++) {\n // if (i % 2 === 0) {\n // moduleBitCount[i]--;\n // } else {\n // moduleBitCount[i]++;\n // }\n // }\n // We could also use the width of surrounding codewords for more accurate results, but this seems\n // sufficient for now\n if (!PDF417ScanningDecoder.checkCodewordSkew(codewordBitCount, minCodewordWidth, maxCodewordWidth)) {\n // We could try to use the startX and endX position of the codeword in the same column in the previous row,\n // create the bit count from it and normalize it to 8. This would help with single pixel errors.\n return null;\n }\n let decodedValue = PDF417CodewordDecoder.getDecodedValue(moduleBitCount);\n let codeword = PDF417Common.getCodeword(decodedValue);\n if (codeword === -1) {\n return null;\n }\n return new Codeword(startColumn, endColumn, PDF417ScanningDecoder.getCodewordBucketNumber(decodedValue), codeword);\n }\n static getModuleBitCount(image, minColumn, maxColumn, leftToRight, startColumn, imageRow) {\n let imageColumn = startColumn;\n let moduleBitCount = new Int32Array(8);\n let moduleNumber = 0;\n let increment = leftToRight ? 1 : -1;\n let previousPixelValue = leftToRight;\n while ((leftToRight ? imageColumn < maxColumn : imageColumn >= minColumn) &&\n moduleNumber < moduleBitCount.length) {\n if (image.get(imageColumn, imageRow) === previousPixelValue) {\n moduleBitCount[moduleNumber]++;\n imageColumn += increment;\n }\n else {\n moduleNumber++;\n previousPixelValue = !previousPixelValue;\n }\n }\n if (moduleNumber === moduleBitCount.length ||\n ((imageColumn === (leftToRight ? maxColumn : minColumn)) &&\n moduleNumber === moduleBitCount.length - 1)) {\n return moduleBitCount;\n }\n return null;\n }\n static getNumberOfECCodeWords(barcodeECLevel) {\n return 2 << barcodeECLevel;\n }\n static adjustCodewordStartColumn(image, minColumn, maxColumn, leftToRight, codewordStartColumn, imageRow) {\n let correctedStartColumn = codewordStartColumn;\n let increment = leftToRight ? -1 : 1;\n // there should be no black pixels before the start column. If there are, then we need to start earlier.\n for (let i /*int*/ = 0; i < 2; i++) {\n while ((leftToRight ? correctedStartColumn >= minColumn : correctedStartColumn < maxColumn) &&\n leftToRight === image.get(correctedStartColumn, imageRow)) {\n if (Math.abs(codewordStartColumn - correctedStartColumn) > PDF417ScanningDecoder.CODEWORD_SKEW_SIZE) {\n return codewordStartColumn;\n }\n correctedStartColumn += increment;\n }\n increment = -increment;\n leftToRight = !leftToRight;\n }\n return correctedStartColumn;\n }\n static checkCodewordSkew(codewordSize, minCodewordWidth, maxCodewordWidth) {\n return minCodewordWidth - PDF417ScanningDecoder.CODEWORD_SKEW_SIZE <= codewordSize &&\n codewordSize <= maxCodewordWidth + PDF417ScanningDecoder.CODEWORD_SKEW_SIZE;\n }\n /**\n * @throws FormatException,\n * @throws ChecksumException\n */\n static decodeCodewords(codewords, ecLevel, erasures) {\n if (codewords.length === 0) {\n throw FormatException.getFormatInstance();\n }\n let numECCodewords = 1 << (ecLevel + 1);\n let correctedErrorsCount = PDF417ScanningDecoder.correctErrors(codewords, erasures, numECCodewords);\n PDF417ScanningDecoder.verifyCodewordCount(codewords, numECCodewords);\n // Decode the codewords\n let decoderResult = DecodedBitStreamParser$2.decode(codewords, '' + ecLevel);\n decoderResult.setErrorsCorrected(correctedErrorsCount);\n decoderResult.setErasures(erasures.length);\n return decoderResult;\n }\n /**\n * Given data and error-correction codewords received, possibly corrupted by errors, attempts to\n * correct the errors in-place.
\n *\n * @param codewords data and error correction codewords\n * @param erasures positions of any known erasures\n * @param numECCodewords number of error correction codewords that are available in codewords\n * @throws ChecksumException if error correction fails\n */\n static correctErrors(codewords, erasures, numECCodewords) {\n if (erasures != null &&\n erasures.length > numECCodewords / 2 + PDF417ScanningDecoder.MAX_ERRORS ||\n numECCodewords < 0 ||\n numECCodewords > PDF417ScanningDecoder.MAX_EC_CODEWORDS) {\n // Too many errors or EC Codewords is corrupted\n throw ChecksumException.getChecksumInstance();\n }\n return PDF417ScanningDecoder.errorCorrection.decode(codewords, numECCodewords, erasures);\n }\n /**\n * Verify that all is OK with the codeword array.\n * @throws FormatException\n */\n static verifyCodewordCount(codewords, numECCodewords) {\n if (codewords.length < 4) {\n // Codeword array size should be at least 4 allowing for\n // Count CW, At least one Data CW, Error Correction CW, Error Correction CW\n throw FormatException.getFormatInstance();\n }\n // The first codeword, the Symbol Length Descriptor, shall always encode the total number of data\n // codewords in the symbol, including the Symbol Length Descriptor itself, data codewords and pad\n // codewords, but excluding the number of error correction codewords.\n let numberOfCodewords = codewords[0];\n if (numberOfCodewords > codewords.length) {\n throw FormatException.getFormatInstance();\n }\n if (numberOfCodewords === 0) {\n // Reset to the length of the array - 8 (Allow for at least level 3 Error Correction (8 Error Codewords)\n if (numECCodewords < codewords.length) {\n codewords[0] = codewords.length - numECCodewords;\n }\n else {\n throw FormatException.getFormatInstance();\n }\n }\n }\n static getBitCountForCodeword(codeword) {\n let result = new Int32Array(8);\n let previousValue = 0;\n let i = result.length - 1;\n while (true) {\n if ((codeword & 0x1) !== previousValue) {\n previousValue = codeword & 0x1;\n i--;\n if (i < 0) {\n break;\n }\n }\n result[i]++;\n codeword >>= 1;\n }\n return result;\n }\n static getCodewordBucketNumber(codeword) {\n if (codeword instanceof Int32Array) {\n return this.getCodewordBucketNumber_Int32Array(codeword);\n }\n return this.getCodewordBucketNumber_number(codeword);\n }\n static getCodewordBucketNumber_number(codeword) {\n return PDF417ScanningDecoder.getCodewordBucketNumber(PDF417ScanningDecoder.getBitCountForCodeword(codeword));\n }\n static getCodewordBucketNumber_Int32Array(moduleBitCount) {\n return (moduleBitCount[0] - moduleBitCount[2] + moduleBitCount[4] - moduleBitCount[6] + 9) % 9;\n }\n static toString(barcodeMatrix) {\n let formatter = new Formatter();\n // try (let formatter = new Formatter()) {\n for (let row /*int*/ = 0; row < barcodeMatrix.length; row++) {\n formatter.format('Row %2d: ', row);\n for (let column /*int*/ = 0; column < barcodeMatrix[row].length; column++) {\n let barcodeValue = barcodeMatrix[row][column];\n if (barcodeValue.getValue().length === 0) {\n formatter.format(' ', null);\n }\n else {\n formatter.format('%4d(%2d)', barcodeValue.getValue()[0], barcodeValue.getConfidence(barcodeValue.getValue()[0]));\n }\n }\n formatter.format('%n');\n }\n return formatter.toString();\n // }\n }\n }\n /*final*/ PDF417ScanningDecoder.CODEWORD_SKEW_SIZE = 2;\n /*final*/ PDF417ScanningDecoder.MAX_ERRORS = 3;\n /*final*/ PDF417ScanningDecoder.MAX_EC_CODEWORDS = 512;\n /*final*/ PDF417ScanningDecoder.errorCorrection = new ErrorCorrection();\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // import java.util.ArrayList;\n // import java.util.List;\n // import java.util.Map;\n /**\n * This implementation can detect and decode PDF417 codes in an image.\n *\n * @author Guenther Grau\n */\n /*public final*/ class PDF417Reader {\n // private static /*final Result[]*/ EMPTY_RESULT_ARRAY: Result[] = new Result([0]);\n /**\n * Locates and decodes a PDF417 code in an image.\n *\n * @return a String representing the content encoded by the PDF417 code\n * @throws NotFoundException if a PDF417 code cannot be found,\n * @throws FormatException if a PDF417 cannot be decoded\n * @throws ChecksumException\n */\n // @Override\n decode(image, hints = null) {\n let result = PDF417Reader.decode(image, hints, false);\n if (result == null || result.length === 0 || result[0] == null) {\n throw NotFoundException.getNotFoundInstance();\n }\n return result[0];\n }\n /**\n *\n * @param BinaryBitmap\n * @param image\n * @throws NotFoundException\n */\n // @Override\n decodeMultiple(image, hints = null) {\n try {\n return PDF417Reader.decode(image, hints, true);\n }\n catch (ignored) {\n if (ignored instanceof FormatException || ignored instanceof ChecksumException) {\n throw NotFoundException.getNotFoundInstance();\n }\n throw ignored;\n }\n }\n /**\n *\n * @param image\n * @param hints\n * @param multiple\n *\n * @throws NotFoundException\n * @throws FormatExceptionß\n * @throws ChecksumException\n */\n static decode(image, hints, multiple) {\n const results = new Array();\n const detectorResult = Detector$3.detectMultiple(image, hints, multiple);\n for (const points of detectorResult.getPoints()) {\n const decoderResult = PDF417ScanningDecoder.decode(detectorResult.getBits(), points[4], points[5], points[6], points[7], PDF417Reader.getMinCodewordWidth(points), PDF417Reader.getMaxCodewordWidth(points));\n const result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), undefined, points, BarcodeFormat$1.PDF_417);\n result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL, decoderResult.getECLevel());\n const pdf417ResultMetadata = decoderResult.getOther();\n if (pdf417ResultMetadata != null) {\n result.putMetadata(ResultMetadataType$1.PDF417_EXTRA_METADATA, pdf417ResultMetadata);\n }\n results.push(result);\n }\n return results.map(x => x);\n }\n static getMaxWidth(p1, p2) {\n if (p1 == null || p2 == null) {\n return 0;\n }\n return Math.trunc(Math.abs(p1.getX() - p2.getX()));\n }\n static getMinWidth(p1, p2) {\n if (p1 == null || p2 == null) {\n return Integer.MAX_VALUE;\n }\n return Math.trunc(Math.abs(p1.getX() - p2.getX()));\n }\n static getMaxCodewordWidth(p) {\n return Math.floor(Math.max(Math.max(PDF417Reader.getMaxWidth(p[0], p[4]), PDF417Reader.getMaxWidth(p[6], p[2]) * PDF417Common.MODULES_IN_CODEWORD /\n PDF417Common.MODULES_IN_STOP_PATTERN), Math.max(PDF417Reader.getMaxWidth(p[1], p[5]), PDF417Reader.getMaxWidth(p[7], p[3]) * PDF417Common.MODULES_IN_CODEWORD /\n PDF417Common.MODULES_IN_STOP_PATTERN)));\n }\n static getMinCodewordWidth(p) {\n return Math.floor(Math.min(Math.min(PDF417Reader.getMinWidth(p[0], p[4]), PDF417Reader.getMinWidth(p[6], p[2]) * PDF417Common.MODULES_IN_CODEWORD /\n PDF417Common.MODULES_IN_STOP_PATTERN), Math.min(PDF417Reader.getMinWidth(p[1], p[5]), PDF417Reader.getMinWidth(p[7], p[3]) * PDF417Common.MODULES_IN_CODEWORD /\n PDF417Common.MODULES_IN_STOP_PATTERN)));\n }\n // @Override\n reset() {\n // nothing needs to be reset\n }\n }\n\n /**\n * Custom Error class of type Exception.\n */\n class ReaderException extends Exception {\n }\n ReaderException.kind = 'ReaderException';\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*namespace com.google.zxing {*/\n /**\n * MultiFormatReader is a convenience class and the main entry point into the library for most uses.\n * By default it attempts to decode all barcode formats that the library supports. Optionally, you\n * can provide a hints object to request different behavior, for example only decoding QR codes.\n *\n * @author Sean Owen\n * @author dswitkin@google.com (Daniel Switkin)\n */\n class MultiFormatReader {\n /**\n * Creates an instance of this class\n * \n * @param {Boolean} verbose if 'true' logs will be dumped to console, otherwise hidden.\n * @param hints The hints to use, clearing the previous state.\n */\n constructor(verbose, hints) {\n this.verbose = (verbose === true);\n if (hints) {\n this.setHints(hints);\n }\n }\n /**\n * This version of decode honors the intent of Reader.decode(BinaryBitmap) in that it\n * passes null as a hint to the decoders. However, that makes it inefficient to call repeatedly.\n * Use setHints() followed by decodeWithState() for continuous scan applications.\n *\n * @param image The pixel data to decode\n * @return The contents of the image\n *\n * @throws NotFoundException Any errors which occurred\n */\n /*@Override*/\n // public decode(image: BinaryBitmap): Result {\n // setHints(null)\n // return decodeInternal(image)\n // }\n /**\n * Decode an image using the hints provided. Does not honor existing state.\n *\n * @param image The pixel data to decode\n * @param hints The hints to use, clearing the previous state.\n * @return The contents of the image\n *\n * @throws NotFoundException Any errors which occurred\n */\n /*@Override*/\n decode(image, hints) {\n if (hints) {\n this.setHints(hints);\n }\n return this.decodeInternal(image);\n }\n /**\n * Decode an image using the state set up by calling setHints() previously. Continuous scan\n * clients will get a large speed increase by using this instead of decode().\n *\n * @param image The pixel data to decode\n * @return The contents of the image\n *\n * @throws NotFoundException Any errors which occurred\n */\n decodeWithState(image) {\n // Make sure to set up the default state so we don't crash\n if (this.readers === null || this.readers === undefined) {\n this.setHints(null);\n }\n return this.decodeInternal(image);\n }\n /**\n * This method adds state to the MultiFormatReader. By setting the hints once, subsequent calls\n * to decodeWithState(image) can reuse the same set of readers without reallocating memory. This\n * is important for performance in continuous scan clients.\n *\n * @param hints The set of hints to use for subsequent calls to decode(image)\n */\n setHints(hints) {\n this.hints = hints;\n const tryHarder = !isNullOrUndefined(hints)\n && hints.get(DecodeHintType$1.TRY_HARDER) === true;\n const formats = isNullOrUndefined(hints) ? null : hints.get(DecodeHintType$1.POSSIBLE_FORMATS);\n const readers = new Array();\n if (!isNullOrUndefined(formats)) {\n const addOneDReader = formats.some(f => {\n return (\n f === BarcodeFormat$1.UPC_A ||\n f === BarcodeFormat$1.UPC_E ||\n f === BarcodeFormat$1.EAN_13 ||\n f === BarcodeFormat$1.EAN_8 ||\n f === BarcodeFormat$1.CODABAR ||\n f === BarcodeFormat$1.CODE_39 ||\n f === BarcodeFormat$1.CODE_93 ||\n f === BarcodeFormat$1.CODE_128 ||\n f === BarcodeFormat$1.ITF ||\n f === BarcodeFormat$1.RSS_14 ||\n f === BarcodeFormat$1.RSS_EXPANDED);\n });\n // Put 1D readers upfront in \"normal\" mode\n if (addOneDReader && !tryHarder) {\n readers.push(new MultiFormatOneDReader(hints, this.verbose));\n }\n if (formats.includes(BarcodeFormat$1.QR_CODE)) {\n readers.push(new QRCodeReader());\n }\n if (formats.includes(BarcodeFormat$1.DATA_MATRIX)) {\n readers.push(new DataMatrixReader());\n }\n if (formats.includes(BarcodeFormat$1.AZTEC)) {\n readers.push(new AztecReader());\n }\n if (formats.includes(BarcodeFormat$1.PDF_417)) {\n readers.push(new PDF417Reader());\n }\n // if (formats.includes(BarcodeFormat.MAXICODE)) {\n // readers.push(new MaxiCodeReader())\n // }\n // At end in \"try harder\" mode\n if (addOneDReader && tryHarder) {\n readers.push(new MultiFormatOneDReader(hints, this.verbose));\n }\n }\n if (readers.length === 0) {\n if (!tryHarder) {\n readers.push(new MultiFormatOneDReader(hints, this.verbose));\n }\n readers.push(new QRCodeReader());\n readers.push(new DataMatrixReader());\n readers.push(new AztecReader());\n readers.push(new PDF417Reader());\n // readers.push(new MaxiCodeReader())\n if (tryHarder) {\n readers.push(new MultiFormatOneDReader(hints, this.verbose));\n }\n }\n this.readers = readers; // .toArray(new Reader[readers.size()])\n }\n /*@Override*/\n reset() {\n if (this.readers !== null) {\n for (const reader of this.readers) {\n reader.reset();\n }\n }\n }\n /**\n * @throws NotFoundException\n */\n decodeInternal(image) {\n if (this.readers === null) {\n throw new ReaderException('No readers where selected, nothing can be read.');\n }\n for (const reader of this.readers) {\n // Trying to decode with ${reader} reader.\n try {\n return reader.decode(image, this.hints);\n }\n catch (ex) {\n if (ex instanceof ReaderException) {\n continue;\n }\n // Bad Exception.\n }\n }\n throw new NotFoundException('No MultiFormat Readers were able to detect the code.');\n }\n }\n\n class BrowserMultiFormatReader extends BrowserCodeReader {\n constructor(hints = null, timeBetweenScansMillis = 500) {\n const reader = new MultiFormatReader();\n reader.setHints(hints);\n super(reader, timeBetweenScansMillis);\n }\n /**\n * Overwrite decodeBitmap to call decodeWithState, which will pay\n * attention to the hints set in the constructor function\n */\n decodeBitmap(binaryBitmap) {\n return this.reader.decodeWithState(binaryBitmap);\n }\n }\n\n /**\n * @deprecated Moving to @zxing/browser\n *\n * QR Code reader to use from browser.\n */\n class BrowserPDF417Reader extends BrowserCodeReader {\n /**\n * Creates an instance of BrowserPDF417Reader.\n * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n */\n constructor(timeBetweenScansMillis = 500) {\n super(new PDF417Reader(), timeBetweenScansMillis);\n }\n }\n\n /**\n * @deprecated Moving to @zxing/browser\n *\n * QR Code reader to use from browser.\n */\n class BrowserQRCodeReader extends BrowserCodeReader {\n /**\n * Creates an instance of BrowserQRCodeReader.\n * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries\n */\n constructor(timeBetweenScansMillis = 500) {\n super(new QRCodeReader(), timeBetweenScansMillis);\n }\n }\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*namespace com.google.zxing {*/\n /**\n * These are a set of hints that you may pass to Writers to specify their behavior.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n */\n var EncodeHintType;\n (function (EncodeHintType) {\n /**\n * Specifies what degree of error correction to use, for example in QR Codes.\n * Type depends on the encoder. For example for QR codes it's type\n * {@link com.google.zxing.qrcode.decoder.ErrorCorrectionLevel ErrorCorrectionLevel}.\n * For Aztec it is of type {@link Integer}, representing the minimal percentage of error correction words.\n * For PDF417 it is of type {@link Integer}, valid values being 0 to 8.\n * In all cases, it can also be a {@link String} representation of the desired value as well.\n * Note: an Aztec symbol should have a minimum of 25% EC words.\n */\n EncodeHintType[EncodeHintType[\"ERROR_CORRECTION\"] = 0] = \"ERROR_CORRECTION\";\n /**\n * Specifies what character encoding to use where applicable (type {@link String})\n */\n EncodeHintType[EncodeHintType[\"CHARACTER_SET\"] = 1] = \"CHARACTER_SET\";\n /**\n * Specifies the matrix shape for Data Matrix (type {@link com.google.zxing.datamatrix.encoder.SymbolShapeHint})\n */\n EncodeHintType[EncodeHintType[\"DATA_MATRIX_SHAPE\"] = 2] = \"DATA_MATRIX_SHAPE\";\n /**\n * Specifies a minimum barcode size (type {@link Dimension}). Only applicable to Data Matrix now.\n *\n * @deprecated use width/height params in\n * {@link com.google.zxing.datamatrix.DataMatrixWriter#encode(String, BarcodeFormat, int, int)}\n */\n /*@Deprecated*/\n EncodeHintType[EncodeHintType[\"MIN_SIZE\"] = 3] = \"MIN_SIZE\";\n /**\n * Specifies a maximum barcode size (type {@link Dimension}). Only applicable to Data Matrix now.\n *\n * @deprecated without replacement\n */\n /*@Deprecated*/\n EncodeHintType[EncodeHintType[\"MAX_SIZE\"] = 4] = \"MAX_SIZE\";\n /**\n * Specifies margin, in pixels, to use when generating the barcode. The meaning can vary\n * by format; for example it controls margin before and after the barcode horizontally for\n * most 1D formats. (Type {@link Integer}, or {@link String} representation of the integer value).\n */\n EncodeHintType[EncodeHintType[\"MARGIN\"] = 5] = \"MARGIN\";\n /**\n * Specifies whether to use compact mode for PDF417 (type {@link Boolean}, or \"true\" or \"false\"\n * {@link String} value).\n */\n EncodeHintType[EncodeHintType[\"PDF417_COMPACT\"] = 6] = \"PDF417_COMPACT\";\n /**\n * Specifies what compaction mode to use for PDF417 (type\n * {@link com.google.zxing.pdf417.encoder.Compaction Compaction} or {@link String} value of one of its\n * enum values).\n */\n EncodeHintType[EncodeHintType[\"PDF417_COMPACTION\"] = 7] = \"PDF417_COMPACTION\";\n /**\n * Specifies the minimum and maximum number of rows and columns for PDF417 (type\n * {@link com.google.zxing.pdf417.encoder.Dimensions Dimensions}).\n */\n EncodeHintType[EncodeHintType[\"PDF417_DIMENSIONS\"] = 8] = \"PDF417_DIMENSIONS\";\n /**\n * Specifies the required number of layers for an Aztec code.\n * A negative number (-1, -2, -3, -4) specifies a compact Aztec code.\n * 0 indicates to use the minimum number of layers (the default).\n * A positive number (1, 2, .. 32) specifies a normal (non-compact) Aztec code.\n * (Type {@link Integer}, or {@link String} representation of the integer value).\n */\n EncodeHintType[EncodeHintType[\"AZTEC_LAYERS\"] = 9] = \"AZTEC_LAYERS\";\n /**\n * Specifies the exact version of QR code to be encoded.\n * (Type {@link Integer}, or {@link String} representation of the integer value).\n */\n EncodeHintType[EncodeHintType[\"QR_VERSION\"] = 10] = \"QR_VERSION\";\n })(EncodeHintType || (EncodeHintType = {}));\n var EncodeHintType$1 = EncodeHintType;\n\n /**\n * Implements Reed-Solomon encoding, as the name implies.
\n *\n * @author Sean Owen\n * @author William Rucklidge\n */\n class ReedSolomonEncoder {\n /**\n * A reed solomon error-correcting encoding constructor is created by\n * passing as Galois Field with of size equal to the number of code\n * words (symbols) in the alphabet (the number of values in each\n * element of arrays that are encoded/decoded).\n * @param field A galois field with a number of elements equal to the size\n * of the alphabet of symbols to encode.\n */\n constructor(field) {\n this.field = field;\n this.cachedGenerators = [];\n this.cachedGenerators.push(new GenericGFPoly(field, Int32Array.from([1])));\n }\n buildGenerator(degree /*int*/) {\n const cachedGenerators = this.cachedGenerators;\n if (degree >= cachedGenerators.length) {\n let lastGenerator = cachedGenerators[cachedGenerators.length - 1];\n const field = this.field;\n for (let d = cachedGenerators.length; d <= degree; d++) {\n const nextGenerator = lastGenerator.multiply(new GenericGFPoly(field, Int32Array.from([1, field.exp(d - 1 + field.getGeneratorBase())])));\n cachedGenerators.push(nextGenerator);\n lastGenerator = nextGenerator;\n }\n }\n return cachedGenerators[degree];\n }\n /**\n * Encode a sequence of code words (symbols) using Reed-Solomon to allow decoders\n * to detect and correct errors that may have been introduced when the resulting\n * data is stored or transmitted.
\n *\n * @param toEncode array used for both and output. Caller initializes the array with\n * the code words (symbols) to be encoded followed by empty elements allocated to make\n * space for error-correction code words in the encoded output. The array contains\n * the encdoded output when encode returns. Code words are encoded as numbers from\n * 0 to n-1, where n is the number of possible code words (symbols), as determined\n * by the size of the Galois Field passed in the constructor of this object.\n * @param ecBytes the number of elements reserved in the array (first parameter)\n * to store error-correction code words. Thus, the number of code words (symbols)\n * to encode in the first parameter is thus toEncode.length - ecBytes.\n * Note, the use of \"bytes\" in the name of this parameter is misleading, as there may\n * be more or fewer than 256 symbols being encoded, as determined by the number of\n * elements in the Galois Field passed as a constructor to this object.\n * @throws IllegalArgumentException thrown in response to validation errros.\n */\n encode(toEncode, ecBytes /*int*/) {\n if (ecBytes === 0) {\n throw new IllegalArgumentException('No error correction bytes');\n }\n const dataBytes = toEncode.length - ecBytes;\n if (dataBytes <= 0) {\n throw new IllegalArgumentException('No data bytes provided');\n }\n const generator = this.buildGenerator(ecBytes);\n const infoCoefficients = new Int32Array(dataBytes);\n System.arraycopy(toEncode, 0, infoCoefficients, 0, dataBytes);\n let info = new GenericGFPoly(this.field, infoCoefficients);\n info = info.multiplyByMonomial(ecBytes, 1);\n const remainder = info.divide(generator)[1];\n const coefficients = remainder.getCoefficients();\n const numZeroCoefficients = ecBytes - coefficients.length;\n for (let i = 0; i < numZeroCoefficients; i++) {\n toEncode[dataBytes + i] = 0;\n }\n System.arraycopy(coefficients, 0, toEncode, dataBytes + numZeroCoefficients, coefficients.length);\n }\n }\n\n /**\n * @author Satoru Takabayashi\n * @author Daniel Switkin\n * @author Sean Owen\n */\n class MaskUtil {\n constructor() {\n // do nothing\n }\n /**\n * Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and\n * give penalty to them. Example: 00000 or 11111.\n */\n static applyMaskPenaltyRule1(matrix) {\n return MaskUtil.applyMaskPenaltyRule1Internal(matrix, true) + MaskUtil.applyMaskPenaltyRule1Internal(matrix, false);\n }\n /**\n * Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give\n * penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a\n * penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block.\n */\n static applyMaskPenaltyRule2(matrix) {\n let penalty = 0;\n const array = matrix.getArray();\n const width = matrix.getWidth();\n const height = matrix.getHeight();\n for (let y = 0; y < height - 1; y++) {\n const arrayY = array[y];\n for (let x = 0; x < width - 1; x++) {\n const value = arrayY[x];\n if (value === arrayY[x + 1] && value === array[y + 1][x] && value === array[y + 1][x + 1]) {\n penalty++;\n }\n }\n }\n return MaskUtil.N2 * penalty;\n }\n /**\n * Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4\n * starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them. If we\n * find patterns like 000010111010000, we give penalty once.\n */\n static applyMaskPenaltyRule3(matrix) {\n let numPenalties = 0;\n const array = matrix.getArray();\n const width = matrix.getWidth();\n const height = matrix.getHeight();\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const arrayY = array[y]; // We can at least optimize this access\n if (x + 6 < width &&\n arrayY[x] === 1 &&\n arrayY[x + 1] === 0 &&\n arrayY[x + 2] === 1 &&\n arrayY[x + 3] === 1 &&\n arrayY[x + 4] === 1 &&\n arrayY[x + 5] === 0 &&\n arrayY[x + 6] === 1 &&\n (MaskUtil.isWhiteHorizontal(arrayY, x - 4, x) || MaskUtil.isWhiteHorizontal(arrayY, x + 7, x + 11))) {\n numPenalties++;\n }\n if (y + 6 < height &&\n array[y][x] === 1 &&\n array[y + 1][x] === 0 &&\n array[y + 2][x] === 1 &&\n array[y + 3][x] === 1 &&\n array[y + 4][x] === 1 &&\n array[y + 5][x] === 0 &&\n array[y + 6][x] === 1 &&\n (MaskUtil.isWhiteVertical(array, x, y - 4, y) || MaskUtil.isWhiteVertical(array, x, y + 7, y + 11))) {\n numPenalties++;\n }\n }\n }\n return numPenalties * MaskUtil.N3;\n }\n static isWhiteHorizontal(rowArray, from /*int*/, to /*int*/) {\n from = Math.max(from, 0);\n to = Math.min(to, rowArray.length);\n for (let i = from; i < to; i++) {\n if (rowArray[i] === 1) {\n return false;\n }\n }\n return true;\n }\n static isWhiteVertical(array, col /*int*/, from /*int*/, to /*int*/) {\n from = Math.max(from, 0);\n to = Math.min(to, array.length);\n for (let i = from; i < to; i++) {\n if (array[i][col] === 1) {\n return false;\n }\n }\n return true;\n }\n /**\n * Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give\n * penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance.\n */\n static applyMaskPenaltyRule4(matrix) {\n let numDarkCells = 0;\n const array = matrix.getArray();\n const width = matrix.getWidth();\n const height = matrix.getHeight();\n for (let y = 0; y < height; y++) {\n const arrayY = array[y];\n for (let x = 0; x < width; x++) {\n if (arrayY[x] === 1) {\n numDarkCells++;\n }\n }\n }\n const numTotalCells = matrix.getHeight() * matrix.getWidth();\n const fivePercentVariances = Math.floor(Math.abs(numDarkCells * 2 - numTotalCells) * 10 / numTotalCells);\n return fivePercentVariances * MaskUtil.N4;\n }\n /**\n * Return the mask bit for \"getMaskPattern\" at \"x\" and \"y\". See 8.8 of JISX0510:2004 for mask\n * pattern conditions.\n */\n static getDataMaskBit(maskPattern /*int*/, x /*int*/, y /*int*/) {\n let intermediate; /*int*/\n let temp; /*int*/\n switch (maskPattern) {\n case 0:\n intermediate = (y + x) & 0x1;\n break;\n case 1:\n intermediate = y & 0x1;\n break;\n case 2:\n intermediate = x % 3;\n break;\n case 3:\n intermediate = (y + x) % 3;\n break;\n case 4:\n intermediate = (Math.floor(y / 2) + Math.floor(x / 3)) & 0x1;\n break;\n case 5:\n temp = y * x;\n intermediate = (temp & 0x1) + (temp % 3);\n break;\n case 6:\n temp = y * x;\n intermediate = ((temp & 0x1) + (temp % 3)) & 0x1;\n break;\n case 7:\n temp = y * x;\n intermediate = ((temp % 3) + ((y + x) & 0x1)) & 0x1;\n break;\n default:\n throw new IllegalArgumentException('Invalid mask pattern: ' + maskPattern);\n }\n return intermediate === 0;\n }\n /**\n * Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both\n * vertical and horizontal orders respectively.\n */\n static applyMaskPenaltyRule1Internal(matrix, isHorizontal) {\n let penalty = 0;\n const iLimit = isHorizontal ? matrix.getHeight() : matrix.getWidth();\n const jLimit = isHorizontal ? matrix.getWidth() : matrix.getHeight();\n const array = matrix.getArray();\n for (let i = 0; i < iLimit; i++) {\n let numSameBitCells = 0;\n let prevBit = -1;\n for (let j = 0; j < jLimit; j++) {\n const bit = isHorizontal ? array[i][j] : array[j][i];\n if (bit === prevBit) {\n numSameBitCells++;\n }\n else {\n if (numSameBitCells >= 5) {\n penalty += MaskUtil.N1 + (numSameBitCells - 5);\n }\n numSameBitCells = 1; // Include the cell itself.\n prevBit = bit;\n }\n }\n if (numSameBitCells >= 5) {\n penalty += MaskUtil.N1 + (numSameBitCells - 5);\n }\n }\n return penalty;\n }\n }\n // Penalty weights from section 6.8.2.1\n MaskUtil.N1 = 3;\n MaskUtil.N2 = 3;\n MaskUtil.N3 = 40;\n MaskUtil.N4 = 10;\n\n /**\n * JAVAPORT: The original code was a 2D array of ints, but since it only ever gets assigned\n * -1, 0, and 1, I'm going to use less memory and go with bytes.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n */\n class ByteMatrix {\n constructor(width /*int*/, height /*int*/) {\n this.width = width;\n this.height = height;\n const bytes = new Array(height); // [height][width]\n for (let i = 0; i !== height; i++) {\n bytes[i] = new Uint8Array(width);\n }\n this.bytes = bytes;\n }\n getHeight() {\n return this.height;\n }\n getWidth() {\n return this.width;\n }\n get(x /*int*/, y /*int*/) {\n return this.bytes[y][x];\n }\n /**\n * @return an internal representation as bytes, in row-major order. array[y][x] represents point (x,y)\n */\n getArray() {\n return this.bytes;\n }\n // TYPESCRIPTPORT: preffer to let two methods instead of override to avoid type comparison inside\n setNumber(x /*int*/, y /*int*/, value /*byte|int*/) {\n this.bytes[y][x] = value;\n }\n // public set(x: number /*int*/, y: number /*int*/, value: number /*int*/): void {\n // bytes[y][x] = (byte) value\n // }\n setBoolean(x /*int*/, y /*int*/, value) {\n this.bytes[y][x] = /*(byte) */ (value ? 1 : 0);\n }\n clear(value /*byte*/) {\n for (const aByte of this.bytes) {\n Arrays.fill(aByte, value);\n }\n }\n equals(o) {\n if (!(o instanceof ByteMatrix)) {\n return false;\n }\n const other = o;\n if (this.width !== other.width) {\n return false;\n }\n if (this.height !== other.height) {\n return false;\n }\n for (let y = 0, height = this.height; y < height; ++y) {\n const bytesY = this.bytes[y];\n const otherBytesY = other.bytes[y];\n for (let x = 0, width = this.width; x < width; ++x) {\n if (bytesY[x] !== otherBytesY[x]) {\n return false;\n }\n }\n }\n return true;\n }\n /*@Override*/\n toString() {\n const result = new StringBuilder(); // (2 * width * height + 2)\n for (let y = 0, height = this.height; y < height; ++y) {\n const bytesY = this.bytes[y];\n for (let x = 0, width = this.width; x < width; ++x) {\n switch (bytesY[x]) {\n case 0:\n result.append(' 0');\n break;\n case 1:\n result.append(' 1');\n break;\n default:\n result.append(' ');\n break;\n }\n }\n result.append('\\n');\n }\n return result.toString();\n }\n }\n\n /**\n * @author satorux@google.com (Satoru Takabayashi) - creator\n * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n */\n class QRCode {\n constructor() {\n this.maskPattern = -1;\n }\n getMode() {\n return this.mode;\n }\n getECLevel() {\n return this.ecLevel;\n }\n getVersion() {\n return this.version;\n }\n getMaskPattern() {\n return this.maskPattern;\n }\n getMatrix() {\n return this.matrix;\n }\n /*@Override*/\n toString() {\n const result = new StringBuilder(); // (200)\n result.append('<<\\n');\n result.append(' mode: ');\n result.append(this.mode ? this.mode.toString() : 'null');\n result.append('\\n ecLevel: ');\n result.append(this.ecLevel ? this.ecLevel.toString() : 'null');\n result.append('\\n version: ');\n result.append(this.version ? this.version.toString() : 'null');\n result.append('\\n maskPattern: ');\n result.append(this.maskPattern.toString());\n if (this.matrix) {\n result.append('\\n matrix:\\n');\n result.append(this.matrix.toString());\n }\n else {\n result.append('\\n matrix: null\\n');\n }\n result.append('>>\\n');\n return result.toString();\n }\n setMode(value) {\n this.mode = value;\n }\n setECLevel(value) {\n this.ecLevel = value;\n }\n setVersion(version) {\n this.version = version;\n }\n setMaskPattern(value /*int*/) {\n this.maskPattern = value;\n }\n setMatrix(value) {\n this.matrix = value;\n }\n // Check if \"mask_pattern\" is valid.\n static isValidMaskPattern(maskPattern /*int*/) {\n return maskPattern >= 0 && maskPattern < QRCode.NUM_MASK_PATTERNS;\n }\n }\n QRCode.NUM_MASK_PATTERNS = 8;\n\n /**\n * Custom Error class of type Exception.\n */\n class WriterException extends Exception {\n }\n WriterException.kind = 'WriterException';\n\n /**\n * @author satorux@google.com (Satoru Takabayashi) - creator\n * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n */\n class MatrixUtil {\n constructor() {\n // do nothing\n }\n // Set all cells to -1 (TYPESCRIPTPORT: 255). -1 (TYPESCRIPTPORT: 255) means that the cell is empty (not set yet).\n //\n // JAVAPORT: We shouldn't need to do this at all. The code should be rewritten to begin encoding\n // with the ByteMatrix initialized all to zero.\n static clearMatrix(matrix) {\n // TYPESCRIPTPORT: we use UintArray se changed here from -1 to 255\n matrix.clear(/*(byte) */ /*-1*/ 255);\n }\n // Build 2D matrix of QR Code from \"dataBits\" with \"ecLevel\", \"version\" and \"getMaskPattern\". On\n // success, store the result in \"matrix\" and return true.\n static buildMatrix(dataBits, ecLevel, version, maskPattern /*int*/, matrix) {\n MatrixUtil.clearMatrix(matrix);\n MatrixUtil.embedBasicPatterns(version, matrix);\n // Type information appear with any version.\n MatrixUtil.embedTypeInfo(ecLevel, maskPattern, matrix);\n // Version info appear if version >= 7.\n MatrixUtil.maybeEmbedVersionInfo(version, matrix);\n // Data should be embedded at end.\n MatrixUtil.embedDataBits(dataBits, maskPattern, matrix);\n }\n // Embed basic patterns. On success, modify the matrix and return true.\n // The basic patterns are:\n // - Position detection patterns\n // - Timing patterns\n // - Dark dot at the left bottom corner\n // - Position adjustment patterns, if need be\n static embedBasicPatterns(version, matrix) {\n // Let's get started with embedding big squares at corners.\n MatrixUtil.embedPositionDetectionPatternsAndSeparators(matrix);\n // Then, embed the dark dot at the left bottom corner.\n MatrixUtil.embedDarkDotAtLeftBottomCorner(matrix);\n // Position adjustment patterns appear if version >= 2.\n MatrixUtil.maybeEmbedPositionAdjustmentPatterns(version, matrix);\n // Timing patterns should be embedded after position adj. patterns.\n MatrixUtil.embedTimingPatterns(matrix);\n }\n // Embed type information. On success, modify the matrix.\n static embedTypeInfo(ecLevel, maskPattern /*int*/, matrix) {\n const typeInfoBits = new BitArray();\n MatrixUtil.makeTypeInfoBits(ecLevel, maskPattern, typeInfoBits);\n for (let i = 0, size = typeInfoBits.getSize(); i < size; ++i) {\n // Place bits in LSB to MSB order. LSB (least significant bit) is the last value in\n // \"typeInfoBits\".\n const bit = typeInfoBits.get(typeInfoBits.getSize() - 1 - i);\n // Type info bits at the left top corner. See 8.9 of JISX0510:2004 (p.46).\n const coordinates = MatrixUtil.TYPE_INFO_COORDINATES[i];\n const x1 = coordinates[0];\n const y1 = coordinates[1];\n matrix.setBoolean(x1, y1, bit);\n if (i < 8) {\n // Right top corner.\n const x2 = matrix.getWidth() - i - 1;\n const y2 = 8;\n matrix.setBoolean(x2, y2, bit);\n }\n else {\n // Left bottom corner.\n const x2 = 8;\n const y2 = matrix.getHeight() - 7 + (i - 8);\n matrix.setBoolean(x2, y2, bit);\n }\n }\n }\n // Embed version information if need be. On success, modify the matrix and return true.\n // See 8.10 of JISX0510:2004 (p.47) for how to embed version information.\n static maybeEmbedVersionInfo(version, matrix) {\n if (version.getVersionNumber() < 7) { // Version info is necessary if version >= 7.\n return; // Don't need version info.\n }\n const versionInfoBits = new BitArray();\n MatrixUtil.makeVersionInfoBits(version, versionInfoBits);\n let bitIndex = 6 * 3 - 1; // It will decrease from 17 to 0.\n for (let i = 0; i < 6; ++i) {\n for (let j = 0; j < 3; ++j) {\n // Place bits in LSB (least significant bit) to MSB order.\n const bit = versionInfoBits.get(bitIndex);\n bitIndex--;\n // Left bottom corner.\n matrix.setBoolean(i, matrix.getHeight() - 11 + j, bit);\n // Right bottom corner.\n matrix.setBoolean(matrix.getHeight() - 11 + j, i, bit);\n }\n }\n }\n // Embed \"dataBits\" using \"getMaskPattern\". On success, modify the matrix and return true.\n // For debugging purposes, it skips masking process if \"getMaskPattern\" is -1(TYPESCRIPTPORT: 255).\n // See 8.7 of JISX0510:2004 (p.38) for how to embed data bits.\n static embedDataBits(dataBits, maskPattern /*int*/, matrix) {\n let bitIndex = 0;\n let direction = -1;\n // Start from the right bottom cell.\n let x = matrix.getWidth() - 1;\n let y = matrix.getHeight() - 1;\n while (x > 0) {\n // Skip the vertical timing pattern.\n if (x === 6) {\n x -= 1;\n }\n while (y >= 0 && y < matrix.getHeight()) {\n for (let i = 0; i < 2; ++i) {\n const xx = x - i;\n // Skip the cell if it's not empty.\n if (!MatrixUtil.isEmpty(matrix.get(xx, y))) {\n continue;\n }\n let bit;\n if (bitIndex < dataBits.getSize()) {\n bit = dataBits.get(bitIndex);\n ++bitIndex;\n }\n else {\n // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described\n // in 8.4.9 of JISX0510:2004 (p. 24).\n bit = false;\n }\n // Skip masking if mask_pattern is -1 (TYPESCRIPTPORT: 255).\n if (maskPattern !== 255 && MaskUtil.getDataMaskBit(maskPattern, xx, y)) {\n bit = !bit;\n }\n matrix.setBoolean(xx, y, bit);\n }\n y += direction;\n }\n direction = -direction; // Reverse the direction.\n y += direction;\n x -= 2; // Move to the left.\n }\n // All bits should be consumed.\n if (bitIndex !== dataBits.getSize()) {\n throw new WriterException('Not all bits consumed: ' + bitIndex + '/' + dataBits.getSize());\n }\n }\n // Return the position of the most significant bit set (one: to) in the \"value\". The most\n // significant bit is position 32. If there is no bit set, return 0. Examples:\n // - findMSBSet(0) => 0\n // - findMSBSet(1) => 1\n // - findMSBSet(255) => 8\n static findMSBSet(value /*int*/) {\n return 32 - Integer.numberOfLeadingZeros(value);\n }\n // Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for \"value\" using polynomial \"poly\". The BCH\n // code is used for encoding type information and version information.\n // Example: Calculation of version information of 7.\n // f(x) is created from 7.\n // - 7 = 000111 in 6 bits\n // - f(x) = x^2 + x^1 + x^0\n // g(x) is given by the standard (p. 67)\n // - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1\n // Multiply f(x) by x^(18 - 6)\n // - f'(x) = f(x) * x^(18 - 6)\n // - f'(x) = x^14 + x^13 + x^12\n // Calculate the remainder of f'(x) / g(x)\n // x^2\n // __________________________________________________\n // g(x) )x^14 + x^13 + x^12\n // x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2\n // --------------------------------------------------\n // x^11 + x^10 + x^7 + x^4 + x^2\n //\n // The remainder is x^11 + x^10 + x^7 + x^4 + x^2\n // Encode it in binary: 110010010100\n // The return value is 0xc94 (1100 1001 0100)\n //\n // Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit\n // operations. We don't care if coefficients are positive or negative.\n static calculateBCHCode(value /*int*/, poly /*int*/) {\n if (poly === 0) {\n throw new IllegalArgumentException('0 polynomial');\n }\n // If poly is \"1 1111 0010 0101\" (version info poly), msbSetInPoly is 13. We'll subtract 1\n // from 13 to make it 12.\n const msbSetInPoly = MatrixUtil.findMSBSet(poly);\n value <<= msbSetInPoly - 1;\n // Do the division business using exclusive-or operations.\n while (MatrixUtil.findMSBSet(value) >= msbSetInPoly) {\n value ^= poly << (MatrixUtil.findMSBSet(value) - msbSetInPoly);\n }\n // Now the \"value\" is the remainder (i.e. the BCH code)\n return value;\n }\n // Make bit vector of type information. On success, store the result in \"bits\" and return true.\n // Encode error correction level and mask pattern. See 8.9 of\n // JISX0510:2004 (p.45) for details.\n static makeTypeInfoBits(ecLevel, maskPattern /*int*/, bits) {\n if (!QRCode.isValidMaskPattern(maskPattern)) {\n throw new WriterException('Invalid mask pattern');\n }\n const typeInfo = (ecLevel.getBits() << 3) | maskPattern;\n bits.appendBits(typeInfo, 5);\n const bchCode = MatrixUtil.calculateBCHCode(typeInfo, MatrixUtil.TYPE_INFO_POLY);\n bits.appendBits(bchCode, 10);\n const maskBits = new BitArray();\n maskBits.appendBits(MatrixUtil.TYPE_INFO_MASK_PATTERN, 15);\n bits.xor(maskBits);\n if (bits.getSize() !== 15) { // Just in case.\n throw new WriterException('should not happen but we got: ' + bits.getSize());\n }\n }\n // Make bit vector of version information. On success, store the result in \"bits\" and return true.\n // See 8.10 of JISX0510:2004 (p.45) for details.\n static makeVersionInfoBits(version, bits) {\n bits.appendBits(version.getVersionNumber(), 6);\n const bchCode = MatrixUtil.calculateBCHCode(version.getVersionNumber(), MatrixUtil.VERSION_INFO_POLY);\n bits.appendBits(bchCode, 12);\n if (bits.getSize() !== 18) { // Just in case.\n throw new WriterException('should not happen but we got: ' + bits.getSize());\n }\n }\n // Check if \"value\" is empty.\n static isEmpty(value /*int*/) {\n return value === 255; // -1\n }\n static embedTimingPatterns(matrix) {\n // -8 is for skipping position detection patterns (7: size), and two horizontal/vertical\n // separation patterns (1: size). Thus, 8 = 7 + 1.\n for (let i = 8; i < matrix.getWidth() - 8; ++i) {\n const bit = (i + 1) % 2;\n // Horizontal line.\n if (MatrixUtil.isEmpty(matrix.get(i, 6))) {\n matrix.setNumber(i, 6, bit);\n }\n // Vertical line.\n if (MatrixUtil.isEmpty(matrix.get(6, i))) {\n matrix.setNumber(6, i, bit);\n }\n }\n }\n // Embed the lonely dark dot at left bottom corner. JISX0510:2004 (p.46)\n static embedDarkDotAtLeftBottomCorner(matrix) {\n if (matrix.get(8, matrix.getHeight() - 8) === 0) {\n throw new WriterException();\n }\n matrix.setNumber(8, matrix.getHeight() - 8, 1);\n }\n static embedHorizontalSeparationPattern(xStart /*int*/, yStart /*int*/, matrix) {\n for (let x = 0; x < 8; ++x) {\n if (!MatrixUtil.isEmpty(matrix.get(xStart + x, yStart))) {\n throw new WriterException();\n }\n matrix.setNumber(xStart + x, yStart, 0);\n }\n }\n static embedVerticalSeparationPattern(xStart /*int*/, yStart /*int*/, matrix) {\n for (let y = 0; y < 7; ++y) {\n if (!MatrixUtil.isEmpty(matrix.get(xStart, yStart + y))) {\n throw new WriterException();\n }\n matrix.setNumber(xStart, yStart + y, 0);\n }\n }\n static embedPositionAdjustmentPattern(xStart /*int*/, yStart /*int*/, matrix) {\n for (let y = 0; y < 5; ++y) {\n const patternY = MatrixUtil.POSITION_ADJUSTMENT_PATTERN[y];\n for (let x = 0; x < 5; ++x) {\n matrix.setNumber(xStart + x, yStart + y, patternY[x]);\n }\n }\n }\n static embedPositionDetectionPattern(xStart /*int*/, yStart /*int*/, matrix) {\n for (let y = 0; y < 7; ++y) {\n const patternY = MatrixUtil.POSITION_DETECTION_PATTERN[y];\n for (let x = 0; x < 7; ++x) {\n matrix.setNumber(xStart + x, yStart + y, patternY[x]);\n }\n }\n }\n // Embed position detection patterns and surrounding vertical/horizontal separators.\n static embedPositionDetectionPatternsAndSeparators(matrix) {\n // Embed three big squares at corners.\n const pdpWidth = MatrixUtil.POSITION_DETECTION_PATTERN[0].length;\n // Left top corner.\n MatrixUtil.embedPositionDetectionPattern(0, 0, matrix);\n // Right top corner.\n MatrixUtil.embedPositionDetectionPattern(matrix.getWidth() - pdpWidth, 0, matrix);\n // Left bottom corner.\n MatrixUtil.embedPositionDetectionPattern(0, matrix.getWidth() - pdpWidth, matrix);\n // Embed horizontal separation patterns around the squares.\n const hspWidth = 8;\n // Left top corner.\n MatrixUtil.embedHorizontalSeparationPattern(0, hspWidth - 1, matrix);\n // Right top corner.\n MatrixUtil.embedHorizontalSeparationPattern(matrix.getWidth() - hspWidth, hspWidth - 1, matrix);\n // Left bottom corner.\n MatrixUtil.embedHorizontalSeparationPattern(0, matrix.getWidth() - hspWidth, matrix);\n // Embed vertical separation patterns around the squares.\n const vspSize = 7;\n // Left top corner.\n MatrixUtil.embedVerticalSeparationPattern(vspSize, 0, matrix);\n // Right top corner.\n MatrixUtil.embedVerticalSeparationPattern(matrix.getHeight() - vspSize - 1, 0, matrix);\n // Left bottom corner.\n MatrixUtil.embedVerticalSeparationPattern(vspSize, matrix.getHeight() - vspSize, matrix);\n }\n // Embed position adjustment patterns if need be.\n static maybeEmbedPositionAdjustmentPatterns(version, matrix) {\n if (version.getVersionNumber() < 2) { // The patterns appear if version >= 2\n return;\n }\n const index = version.getVersionNumber() - 1;\n const coordinates = MatrixUtil.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index];\n for (let i = 0, length = coordinates.length; i !== length; i++) {\n const y = coordinates[i];\n if (y >= 0) {\n for (let j = 0; j !== length; j++) {\n const x = coordinates[j];\n if (x >= 0 && MatrixUtil.isEmpty(matrix.get(x, y))) {\n // If the cell is unset, we embed the position adjustment pattern here.\n // -2 is necessary since the x/y coordinates point to the center of the pattern, not the\n // left top corner.\n MatrixUtil.embedPositionAdjustmentPattern(x - 2, y - 2, matrix);\n }\n }\n }\n }\n }\n }\n MatrixUtil.POSITION_DETECTION_PATTERN = Array.from([\n Int32Array.from([1, 1, 1, 1, 1, 1, 1]),\n Int32Array.from([1, 0, 0, 0, 0, 0, 1]),\n Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n Int32Array.from([1, 0, 1, 1, 1, 0, 1]),\n Int32Array.from([1, 0, 0, 0, 0, 0, 1]),\n Int32Array.from([1, 1, 1, 1, 1, 1, 1]),\n ]);\n MatrixUtil.POSITION_ADJUSTMENT_PATTERN = Array.from([\n Int32Array.from([1, 1, 1, 1, 1]),\n Int32Array.from([1, 0, 0, 0, 1]),\n Int32Array.from([1, 0, 1, 0, 1]),\n Int32Array.from([1, 0, 0, 0, 1]),\n Int32Array.from([1, 1, 1, 1, 1]),\n ]);\n // From Appendix E. Table 1, JIS0510X:2004 (71: p). The table was double-checked by komatsu.\n MatrixUtil.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE = Array.from([\n Int32Array.from([-1, -1, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 18, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 22, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 26, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 30, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 34, -1, -1, -1, -1, -1]),\n Int32Array.from([6, 22, 38, -1, -1, -1, -1]),\n Int32Array.from([6, 24, 42, -1, -1, -1, -1]),\n Int32Array.from([6, 26, 46, -1, -1, -1, -1]),\n Int32Array.from([6, 28, 50, -1, -1, -1, -1]),\n Int32Array.from([6, 30, 54, -1, -1, -1, -1]),\n Int32Array.from([6, 32, 58, -1, -1, -1, -1]),\n Int32Array.from([6, 34, 62, -1, -1, -1, -1]),\n Int32Array.from([6, 26, 46, 66, -1, -1, -1]),\n Int32Array.from([6, 26, 48, 70, -1, -1, -1]),\n Int32Array.from([6, 26, 50, 74, -1, -1, -1]),\n Int32Array.from([6, 30, 54, 78, -1, -1, -1]),\n Int32Array.from([6, 30, 56, 82, -1, -1, -1]),\n Int32Array.from([6, 30, 58, 86, -1, -1, -1]),\n Int32Array.from([6, 34, 62, 90, -1, -1, -1]),\n Int32Array.from([6, 28, 50, 72, 94, -1, -1]),\n Int32Array.from([6, 26, 50, 74, 98, -1, -1]),\n Int32Array.from([6, 30, 54, 78, 102, -1, -1]),\n Int32Array.from([6, 28, 54, 80, 106, -1, -1]),\n Int32Array.from([6, 32, 58, 84, 110, -1, -1]),\n Int32Array.from([6, 30, 58, 86, 114, -1, -1]),\n Int32Array.from([6, 34, 62, 90, 118, -1, -1]),\n Int32Array.from([6, 26, 50, 74, 98, 122, -1]),\n Int32Array.from([6, 30, 54, 78, 102, 126, -1]),\n Int32Array.from([6, 26, 52, 78, 104, 130, -1]),\n Int32Array.from([6, 30, 56, 82, 108, 134, -1]),\n Int32Array.from([6, 34, 60, 86, 112, 138, -1]),\n Int32Array.from([6, 30, 58, 86, 114, 142, -1]),\n Int32Array.from([6, 34, 62, 90, 118, 146, -1]),\n Int32Array.from([6, 30, 54, 78, 102, 126, 150]),\n Int32Array.from([6, 24, 50, 76, 102, 128, 154]),\n Int32Array.from([6, 28, 54, 80, 106, 132, 158]),\n Int32Array.from([6, 32, 58, 84, 110, 136, 162]),\n Int32Array.from([6, 26, 54, 82, 110, 138, 166]),\n Int32Array.from([6, 30, 58, 86, 114, 142, 170]),\n ]);\n // Type info cells at the left top corner.\n MatrixUtil.TYPE_INFO_COORDINATES = Array.from([\n Int32Array.from([8, 0]),\n Int32Array.from([8, 1]),\n Int32Array.from([8, 2]),\n Int32Array.from([8, 3]),\n Int32Array.from([8, 4]),\n Int32Array.from([8, 5]),\n Int32Array.from([8, 7]),\n Int32Array.from([8, 8]),\n Int32Array.from([7, 8]),\n Int32Array.from([5, 8]),\n Int32Array.from([4, 8]),\n Int32Array.from([3, 8]),\n Int32Array.from([2, 8]),\n Int32Array.from([1, 8]),\n Int32Array.from([0, 8]),\n ]);\n // From Appendix D in JISX0510:2004 (p. 67)\n MatrixUtil.VERSION_INFO_POLY = 0x1f25; // 1 1111 0010 0101\n // From Appendix C in JISX0510:2004 (p.65).\n MatrixUtil.TYPE_INFO_POLY = 0x537;\n MatrixUtil.TYPE_INFO_MASK_PATTERN = 0x5412;\n\n /*namespace com.google.zxing.qrcode.encoder {*/\n class BlockPair {\n constructor(dataBytes, errorCorrectionBytes) {\n this.dataBytes = dataBytes;\n this.errorCorrectionBytes = errorCorrectionBytes;\n }\n getDataBytes() {\n return this.dataBytes;\n }\n getErrorCorrectionBytes() {\n return this.errorCorrectionBytes;\n }\n }\n\n /*import java.io.UnsupportedEncodingException;*/\n /*import java.util.ArrayList;*/\n /*import java.util.Collection;*/\n /*import java.util.Map;*/\n /**\n * @author satorux@google.com (Satoru Takabayashi) - creator\n * @author dswitkin@google.com (Daniel Switkin) - ported from C++\n */\n class Encoder {\n // TYPESCRIPTPORT: changed to UTF8, the default for js\n constructor() { }\n // The mask penalty calculation is complicated. See Table 21 of JISX0510:2004 (p.45) for details.\n // Basically it applies four rules and summate all penalties.\n static calculateMaskPenalty(matrix) {\n return MaskUtil.applyMaskPenaltyRule1(matrix)\n + MaskUtil.applyMaskPenaltyRule2(matrix)\n + MaskUtil.applyMaskPenaltyRule3(matrix)\n + MaskUtil.applyMaskPenaltyRule4(matrix);\n }\n /**\n * @param content text to encode\n * @param ecLevel error correction level to use\n * @return {@link QRCode} representing the encoded QR code\n * @throws WriterException if encoding can't succeed, because of for example invalid content\n * or configuration\n */\n // public static encode(content: string, ecLevel: ErrorCorrectionLevel): QRCode /*throws WriterException*/ {\n // return encode(content, ecLevel, null)\n // }\n static encode(content, ecLevel, hints = null) {\n // Determine what character encoding has been specified by the caller, if any\n let encoding = Encoder.DEFAULT_BYTE_MODE_ENCODING;\n const hasEncodingHint = hints !== null && undefined !== hints.get(EncodeHintType$1.CHARACTER_SET);\n if (hasEncodingHint) {\n encoding = hints.get(EncodeHintType$1.CHARACTER_SET).toString();\n }\n // Pick an encoding mode appropriate for the content. Note that this will not attempt to use\n // multiple modes / segments even if that were more efficient. Twould be nice.\n const mode = this.chooseMode(content, encoding);\n // This will store the header information, like mode and\n // length, as well as \"header\" segments like an ECI segment.\n const headerBits = new BitArray();\n // Append ECI segment if applicable\n if (mode === Mode$1.BYTE && (hasEncodingHint || Encoder.DEFAULT_BYTE_MODE_ENCODING !== encoding)) {\n const eci = CharacterSetECI.getCharacterSetECIByName(encoding);\n if (eci !== undefined) {\n this.appendECI(eci, headerBits);\n }\n }\n // (With ECI in place,) Write the mode marker\n this.appendModeInfo(mode, headerBits);\n // Collect data within the main segment, separately, to count its size if needed. Don't add it to\n // main payload yet.\n const dataBits = new BitArray();\n this.appendBytes(content, mode, dataBits, encoding);\n let version;\n if (hints !== null && undefined !== hints.get(EncodeHintType$1.QR_VERSION)) {\n const versionNumber = Number.parseInt(hints.get(EncodeHintType$1.QR_VERSION).toString(), 10);\n version = Version$1.getVersionForNumber(versionNumber);\n const bitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, version);\n if (!this.willFit(bitsNeeded, version, ecLevel)) {\n throw new WriterException('Data too big for requested version');\n }\n }\n else {\n version = this.recommendVersion(ecLevel, mode, headerBits, dataBits);\n }\n const headerAndDataBits = new BitArray();\n headerAndDataBits.appendBitArray(headerBits);\n // Find \"length\" of main segment and write it\n const numLetters = mode === Mode$1.BYTE ? dataBits.getSizeInBytes() : content.length;\n this.appendLengthInfo(numLetters, version, mode, headerAndDataBits);\n // Put data together into the overall payload\n headerAndDataBits.appendBitArray(dataBits);\n const ecBlocks = version.getECBlocksForLevel(ecLevel);\n const numDataBytes = version.getTotalCodewords() - ecBlocks.getTotalECCodewords();\n // Terminate the bits properly.\n this.terminateBits(numDataBytes, headerAndDataBits);\n // Interleave data bits with error correction code.\n const finalBits = this.interleaveWithECBytes(headerAndDataBits, version.getTotalCodewords(), numDataBytes, ecBlocks.getNumBlocks());\n const qrCode = new QRCode();\n qrCode.setECLevel(ecLevel);\n qrCode.setMode(mode);\n qrCode.setVersion(version);\n // Choose the mask pattern and set to \"qrCode\".\n const dimension = version.getDimensionForVersion();\n const matrix = new ByteMatrix(dimension, dimension);\n const maskPattern = this.chooseMaskPattern(finalBits, ecLevel, version, matrix);\n qrCode.setMaskPattern(maskPattern);\n // Build the matrix and set it to \"qrCode\".\n MatrixUtil.buildMatrix(finalBits, ecLevel, version, maskPattern, matrix);\n qrCode.setMatrix(matrix);\n return qrCode;\n }\n /**\n * Decides the smallest version of QR code that will contain all of the provided data.\n *\n * @throws WriterException if the data cannot fit in any version\n */\n static recommendVersion(ecLevel, mode, headerBits, dataBits) {\n // Hard part: need to know version to know how many bits length takes. But need to know how many\n // bits it takes to know version. First we take a guess at version by assuming version will be\n // the minimum, 1:\n const provisionalBitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, Version$1.getVersionForNumber(1));\n const provisionalVersion = this.chooseVersion(provisionalBitsNeeded, ecLevel);\n // Use that guess to calculate the right version. I am still not sure this works in 100% of cases.\n const bitsNeeded = this.calculateBitsNeeded(mode, headerBits, dataBits, provisionalVersion);\n return this.chooseVersion(bitsNeeded, ecLevel);\n }\n static calculateBitsNeeded(mode, headerBits, dataBits, version) {\n return headerBits.getSize() + mode.getCharacterCountBits(version) + dataBits.getSize();\n }\n /**\n * @return the code point of the table used in alphanumeric mode or\n * -1 if there is no corresponding code in the table.\n */\n static getAlphanumericCode(code /*int*/) {\n if (code < Encoder.ALPHANUMERIC_TABLE.length) {\n return Encoder.ALPHANUMERIC_TABLE[code];\n }\n return -1;\n }\n // public static chooseMode(content: string): Mode {\n // return chooseMode(content, null);\n // }\n /**\n * Choose the best mode by examining the content. Note that 'encoding' is used as a hint;\n * if it is Shift_JIS, and the input is only double-byte Kanji, then we return {@link Mode#KANJI}.\n */\n static chooseMode(content, encoding = null) {\n if (CharacterSetECI.SJIS.getName() === encoding && this.isOnlyDoubleByteKanji(content)) {\n // Choose Kanji mode if all input are double-byte characters\n return Mode$1.KANJI;\n }\n let hasNumeric = false;\n let hasAlphanumeric = false;\n for (let i = 0, length = content.length; i < length; ++i) {\n const c = content.charAt(i);\n if (Encoder.isDigit(c)) {\n hasNumeric = true;\n }\n else if (this.getAlphanumericCode(c.charCodeAt(0)) !== -1) {\n hasAlphanumeric = true;\n }\n else {\n return Mode$1.BYTE;\n }\n }\n if (hasAlphanumeric) {\n return Mode$1.ALPHANUMERIC;\n }\n if (hasNumeric) {\n return Mode$1.NUMERIC;\n }\n return Mode$1.BYTE;\n }\n static isOnlyDoubleByteKanji(content) {\n let bytes;\n try {\n bytes = StringEncoding.encode(content, CharacterSetECI.SJIS); // content.getBytes(\"Shift_JIS\"))\n }\n catch (ignored /*: UnsupportedEncodingException*/) {\n return false;\n }\n const length = bytes.length;\n if (length % 2 !== 0) {\n return false;\n }\n for (let i = 0; i < length; i += 2) {\n const byte1 = bytes[i] & 0xFF;\n if ((byte1 < 0x81 || byte1 > 0x9F) && (byte1 < 0xE0 || byte1 > 0xEB)) {\n return false;\n }\n }\n return true;\n }\n static chooseMaskPattern(bits, ecLevel, version, matrix) {\n let minPenalty = Number.MAX_SAFE_INTEGER; // Lower penalty is better.\n let bestMaskPattern = -1;\n // We try all mask patterns to choose the best one.\n for (let maskPattern = 0; maskPattern < QRCode.NUM_MASK_PATTERNS; maskPattern++) {\n MatrixUtil.buildMatrix(bits, ecLevel, version, maskPattern, matrix);\n let penalty = this.calculateMaskPenalty(matrix);\n if (penalty < minPenalty) {\n minPenalty = penalty;\n bestMaskPattern = maskPattern;\n }\n }\n return bestMaskPattern;\n }\n static chooseVersion(numInputBits /*int*/, ecLevel) {\n for (let versionNum = 1; versionNum <= 40; versionNum++) {\n const version = Version$1.getVersionForNumber(versionNum);\n if (Encoder.willFit(numInputBits, version, ecLevel)) {\n return version;\n }\n }\n throw new WriterException('Data too big');\n }\n /**\n * @return true if the number of input bits will fit in a code with the specified version and\n * error correction level.\n */\n static willFit(numInputBits /*int*/, version, ecLevel) {\n // In the following comments, we use numbers of Version 7-H.\n // numBytes = 196\n const numBytes = version.getTotalCodewords();\n // getNumECBytes = 130\n const ecBlocks = version.getECBlocksForLevel(ecLevel);\n const numEcBytes = ecBlocks.getTotalECCodewords();\n // getNumDataBytes = 196 - 130 = 66\n const numDataBytes = numBytes - numEcBytes;\n const totalInputBytes = (numInputBits + 7) / 8;\n return numDataBytes >= totalInputBytes;\n }\n /**\n * Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).\n */\n static terminateBits(numDataBytes /*int*/, bits) {\n const capacity = numDataBytes * 8;\n if (bits.getSize() > capacity) {\n throw new WriterException('data bits cannot fit in the QR Code' + bits.getSize() + ' > ' +\n capacity);\n }\n for (let i = 0; i < 4 && bits.getSize() < capacity; ++i) {\n bits.appendBit(false);\n }\n // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details.\n // If the last byte isn't 8-bit aligned, we'll add padding bits.\n const numBitsInLastByte = bits.getSize() & 0x07;\n if (numBitsInLastByte > 0) {\n for (let i = numBitsInLastByte; i < 8; i++) {\n bits.appendBit(false);\n }\n }\n // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24).\n const numPaddingBytes = numDataBytes - bits.getSizeInBytes();\n for (let i = 0; i < numPaddingBytes; ++i) {\n bits.appendBits((i & 0x01) === 0 ? 0xEC : 0x11, 8);\n }\n if (bits.getSize() !== capacity) {\n throw new WriterException('Bits size does not equal capacity');\n }\n }\n /**\n * Get number of data bytes and number of error correction bytes for block id \"blockID\". Store\n * the result in \"numDataBytesInBlock\", and \"numECBytesInBlock\". See table 12 in 8.5.1 of\n * JISX0510:2004 (p.30)\n */\n static getNumDataBytesAndNumECBytesForBlockID(numTotalBytes /*int*/, numDataBytes /*int*/, numRSBlocks /*int*/, blockID /*int*/, numDataBytesInBlock, numECBytesInBlock) {\n if (blockID >= numRSBlocks) {\n throw new WriterException('Block ID too large');\n }\n // numRsBlocksInGroup2 = 196 % 5 = 1\n const numRsBlocksInGroup2 = numTotalBytes % numRSBlocks;\n // numRsBlocksInGroup1 = 5 - 1 = 4\n const numRsBlocksInGroup1 = numRSBlocks - numRsBlocksInGroup2;\n // numTotalBytesInGroup1 = 196 / 5 = 39\n const numTotalBytesInGroup1 = Math.floor(numTotalBytes / numRSBlocks);\n // numTotalBytesInGroup2 = 39 + 1 = 40\n const numTotalBytesInGroup2 = numTotalBytesInGroup1 + 1;\n // numDataBytesInGroup1 = 66 / 5 = 13\n const numDataBytesInGroup1 = Math.floor(numDataBytes / numRSBlocks);\n // numDataBytesInGroup2 = 13 + 1 = 14\n const numDataBytesInGroup2 = numDataBytesInGroup1 + 1;\n // numEcBytesInGroup1 = 39 - 13 = 26\n const numEcBytesInGroup1 = numTotalBytesInGroup1 - numDataBytesInGroup1;\n // numEcBytesInGroup2 = 40 - 14 = 26\n const numEcBytesInGroup2 = numTotalBytesInGroup2 - numDataBytesInGroup2;\n // Sanity checks.\n // 26 = 26\n if (numEcBytesInGroup1 !== numEcBytesInGroup2) {\n throw new WriterException('EC bytes mismatch');\n }\n // 5 = 4 + 1.\n if (numRSBlocks !== numRsBlocksInGroup1 + numRsBlocksInGroup2) {\n throw new WriterException('RS blocks mismatch');\n }\n // 196 = (13 + 26) * 4 + (14 + 26) * 1\n if (numTotalBytes !==\n ((numDataBytesInGroup1 + numEcBytesInGroup1) *\n numRsBlocksInGroup1) +\n ((numDataBytesInGroup2 + numEcBytesInGroup2) *\n numRsBlocksInGroup2)) {\n throw new WriterException('Total bytes mismatch');\n }\n if (blockID < numRsBlocksInGroup1) {\n numDataBytesInBlock[0] = numDataBytesInGroup1;\n numECBytesInBlock[0] = numEcBytesInGroup1;\n }\n else {\n numDataBytesInBlock[0] = numDataBytesInGroup2;\n numECBytesInBlock[0] = numEcBytesInGroup2;\n }\n }\n /**\n * Interleave \"bits\" with corresponding error correction bytes. On success, store the result in\n * \"result\". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details.\n */\n static interleaveWithECBytes(bits, numTotalBytes /*int*/, numDataBytes /*int*/, numRSBlocks /*int*/) {\n // \"bits\" must have \"getNumDataBytes\" bytes of data.\n if (bits.getSizeInBytes() !== numDataBytes) {\n throw new WriterException('Number of bits and data bytes does not match');\n }\n // Step 1. Divide data bytes into blocks and generate error correction bytes for them. We'll\n // store the divided data bytes blocks and error correction bytes blocks into \"blocks\".\n let dataBytesOffset = 0;\n let maxNumDataBytes = 0;\n let maxNumEcBytes = 0;\n // Since, we know the number of reedsolmon blocks, we can initialize the vector with the number.\n const blocks = new Array(); // new Array(numRSBlocks)\n for (let i = 0; i < numRSBlocks; ++i) {\n const numDataBytesInBlock = new Int32Array(1);\n const numEcBytesInBlock = new Int32Array(1);\n Encoder.getNumDataBytesAndNumECBytesForBlockID(numTotalBytes, numDataBytes, numRSBlocks, i, numDataBytesInBlock, numEcBytesInBlock);\n const size = numDataBytesInBlock[0];\n const dataBytes = new Uint8Array(size);\n bits.toBytes(8 * dataBytesOffset, dataBytes, 0, size);\n const ecBytes = Encoder.generateECBytes(dataBytes, numEcBytesInBlock[0]);\n blocks.push(new BlockPair(dataBytes, ecBytes));\n maxNumDataBytes = Math.max(maxNumDataBytes, size);\n maxNumEcBytes = Math.max(maxNumEcBytes, ecBytes.length);\n dataBytesOffset += numDataBytesInBlock[0];\n }\n if (numDataBytes !== dataBytesOffset) {\n throw new WriterException('Data bytes does not match offset');\n }\n const result = new BitArray();\n // First, place data blocks.\n for (let i = 0; i < maxNumDataBytes; ++i) {\n for (const block of blocks) {\n const dataBytes = block.getDataBytes();\n if (i < dataBytes.length) {\n result.appendBits(dataBytes[i], 8);\n }\n }\n }\n // Then, place error correction blocks.\n for (let i = 0; i < maxNumEcBytes; ++i) {\n for (const block of blocks) {\n const ecBytes = block.getErrorCorrectionBytes();\n if (i < ecBytes.length) {\n result.appendBits(ecBytes[i], 8);\n }\n }\n }\n if (numTotalBytes !== result.getSizeInBytes()) { // Should be same.\n throw new WriterException('Interleaving error: ' + numTotalBytes + ' and ' +\n result.getSizeInBytes() + ' differ.');\n }\n return result;\n }\n static generateECBytes(dataBytes, numEcBytesInBlock /*int*/) {\n const numDataBytes = dataBytes.length;\n const toEncode = new Int32Array(numDataBytes + numEcBytesInBlock); // int[numDataBytes + numEcBytesInBlock]\n for (let i = 0; i < numDataBytes; i++) {\n toEncode[i] = dataBytes[i] & 0xFF;\n }\n new ReedSolomonEncoder(GenericGF.QR_CODE_FIELD_256).encode(toEncode, numEcBytesInBlock);\n const ecBytes = new Uint8Array(numEcBytesInBlock);\n for (let i = 0; i < numEcBytesInBlock; i++) {\n ecBytes[i] = /*(byte) */ toEncode[numDataBytes + i];\n }\n return ecBytes;\n }\n /**\n * Append mode info. On success, store the result in \"bits\".\n */\n static appendModeInfo(mode, bits) {\n bits.appendBits(mode.getBits(), 4);\n }\n /**\n * Append length info. On success, store the result in \"bits\".\n */\n static appendLengthInfo(numLetters /*int*/, version, mode, bits) {\n const numBits = mode.getCharacterCountBits(version);\n if (numLetters >= (1 << numBits)) {\n throw new WriterException(numLetters + ' is bigger than ' + ((1 << numBits) - 1));\n }\n bits.appendBits(numLetters, numBits);\n }\n /**\n * Append \"bytes\" in \"mode\" mode (encoding) into \"bits\". On success, store the result in \"bits\".\n */\n static appendBytes(content, mode, bits, encoding) {\n switch (mode) {\n case Mode$1.NUMERIC:\n Encoder.appendNumericBytes(content, bits);\n break;\n case Mode$1.ALPHANUMERIC:\n Encoder.appendAlphanumericBytes(content, bits);\n break;\n case Mode$1.BYTE:\n Encoder.append8BitBytes(content, bits, encoding);\n break;\n case Mode$1.KANJI:\n Encoder.appendKanjiBytes(content, bits);\n break;\n default:\n throw new WriterException('Invalid mode: ' + mode);\n }\n }\n static getDigit(singleCharacter) {\n return singleCharacter.charCodeAt(0) - 48;\n }\n static isDigit(singleCharacter) {\n const cn = Encoder.getDigit(singleCharacter);\n return cn >= 0 && cn <= 9;\n }\n static appendNumericBytes(content, bits) {\n const length = content.length;\n let i = 0;\n while (i < length) {\n const num1 = Encoder.getDigit(content.charAt(i));\n if (i + 2 < length) {\n // Encode three numeric letters in ten bits.\n const num2 = Encoder.getDigit(content.charAt(i + 1));\n const num3 = Encoder.getDigit(content.charAt(i + 2));\n bits.appendBits(num1 * 100 + num2 * 10 + num3, 10);\n i += 3;\n }\n else if (i + 1 < length) {\n // Encode two numeric letters in seven bits.\n const num2 = Encoder.getDigit(content.charAt(i + 1));\n bits.appendBits(num1 * 10 + num2, 7);\n i += 2;\n }\n else {\n // Encode one numeric letter in four bits.\n bits.appendBits(num1, 4);\n i++;\n }\n }\n }\n static appendAlphanumericBytes(content, bits) {\n const length = content.length;\n let i = 0;\n while (i < length) {\n const code1 = Encoder.getAlphanumericCode(content.charCodeAt(i));\n if (code1 === -1) {\n throw new WriterException();\n }\n if (i + 1 < length) {\n const code2 = Encoder.getAlphanumericCode(content.charCodeAt(i + 1));\n if (code2 === -1) {\n throw new WriterException();\n }\n // Encode two alphanumeric letters in 11 bits.\n bits.appendBits(code1 * 45 + code2, 11);\n i += 2;\n }\n else {\n // Encode one alphanumeric letter in six bits.\n bits.appendBits(code1, 6);\n i++;\n }\n }\n }\n static append8BitBytes(content, bits, encoding) {\n let bytes;\n try {\n bytes = StringEncoding.encode(content, encoding);\n }\n catch (uee /*: UnsupportedEncodingException*/) {\n throw new WriterException(uee);\n }\n for (let i = 0, length = bytes.length; i !== length; i++) {\n const b = bytes[i];\n bits.appendBits(b, 8);\n }\n }\n /**\n * @throws WriterException\n */\n static appendKanjiBytes(content, bits) {\n let bytes;\n try {\n bytes = StringEncoding.encode(content, CharacterSetECI.SJIS);\n }\n catch (uee /*: UnsupportedEncodingException*/) {\n throw new WriterException(uee);\n }\n const length = bytes.length;\n for (let i = 0; i < length; i += 2) {\n const byte1 = bytes[i] & 0xFF;\n const byte2 = bytes[i + 1] & 0xFF;\n const code = ((byte1 << 8) & 0xFFFFFFFF) | byte2;\n let subtracted = -1;\n if (code >= 0x8140 && code <= 0x9ffc) {\n subtracted = code - 0x8140;\n }\n else if (code >= 0xe040 && code <= 0xebbf) {\n subtracted = code - 0xc140;\n }\n if (subtracted === -1) {\n throw new WriterException('Invalid byte sequence');\n }\n const encoded = ((subtracted >> 8) * 0xc0) + (subtracted & 0xff);\n bits.appendBits(encoded, 13);\n }\n }\n static appendECI(eci, bits) {\n bits.appendBits(Mode$1.ECI.getBits(), 4);\n // This is correct for values up to 127, which is all we need now.\n bits.appendBits(eci.getValue(), 8);\n }\n }\n // The original table is defined in the table 5 of JISX0510:2004 (p.19).\n Encoder.ALPHANUMERIC_TABLE = Int32Array.from([\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,\n -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,\n ]);\n Encoder.DEFAULT_BYTE_MODE_ENCODING = CharacterSetECI.UTF8.getName(); // \"ISO-8859-1\"\n\n /**\n * @deprecated Moving to @zxing/browser\n */\n class BrowserQRCodeSvgWriter {\n /**\n * Writes and renders a QRCode SVG element.\n *\n * @param contents\n * @param width\n * @param height\n * @param hints\n */\n write(contents, width, height, hints = null) {\n if (contents.length === 0) {\n throw new IllegalArgumentException('Found empty contents');\n }\n // if (format != BarcodeFormat.QR_CODE) {\n // throw new IllegalArgumentException(\"Can only encode QR_CODE, but got \" + format)\n // }\n if (width < 0 || height < 0) {\n throw new IllegalArgumentException('Requested dimensions are too small: ' + width + 'x' + height);\n }\n let errorCorrectionLevel = ErrorCorrectionLevel.L;\n let quietZone = BrowserQRCodeSvgWriter.QUIET_ZONE_SIZE;\n if (hints !== null) {\n if (undefined !== hints.get(EncodeHintType$1.ERROR_CORRECTION)) {\n errorCorrectionLevel = ErrorCorrectionLevel.fromString(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n }\n if (undefined !== hints.get(EncodeHintType$1.MARGIN)) {\n quietZone = Number.parseInt(hints.get(EncodeHintType$1.MARGIN).toString(), 10);\n }\n }\n const code = Encoder.encode(contents, errorCorrectionLevel, hints);\n return this.renderResult(code, width, height, quietZone);\n }\n /**\n * Renders the result and then appends it to the DOM.\n */\n writeToDom(containerElement, contents, width, height, hints = null) {\n if (typeof containerElement === 'string') {\n containerElement = document.querySelector(containerElement);\n }\n const svgElement = this.write(contents, width, height, hints);\n if (containerElement)\n containerElement.appendChild(svgElement);\n }\n /**\n * Note that the input matrix uses 0 == white, 1 == black.\n * The output matrix uses 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap).\n */\n renderResult(code, width /*int*/, height /*int*/, quietZone /*int*/) {\n const input = code.getMatrix();\n if (input === null) {\n throw new IllegalStateException();\n }\n const inputWidth = input.getWidth();\n const inputHeight = input.getHeight();\n const qrWidth = inputWidth + (quietZone * 2);\n const qrHeight = inputHeight + (quietZone * 2);\n const outputWidth = Math.max(width, qrWidth);\n const outputHeight = Math.max(height, qrHeight);\n const multiple = Math.min(Math.floor(outputWidth / qrWidth), Math.floor(outputHeight / qrHeight));\n // Padding includes both the quiet zone and the extra white pixels to accommodate the requested\n // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone.\n // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will\n // handle all the padding from 100x100 (the actual QR) up to 200x160.\n const leftPadding = Math.floor((outputWidth - (inputWidth * multiple)) / 2);\n const topPadding = Math.floor((outputHeight - (inputHeight * multiple)) / 2);\n const svgElement = this.createSVGElement(outputWidth, outputHeight);\n for (let inputY = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n // Write the contents of this row of the barcode\n for (let inputX = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n if (input.get(inputX, inputY) === 1) {\n const svgRectElement = this.createSvgRectElement(outputX, outputY, multiple, multiple);\n svgElement.appendChild(svgRectElement);\n }\n }\n }\n return svgElement;\n }\n /**\n * Creates a SVG element.\n *\n * @param w SVG's width attribute\n * @param h SVG's height attribute\n */\n createSVGElement(w, h) {\n const svgElement = document.createElementNS(BrowserQRCodeSvgWriter.SVG_NS, 'svg');\n svgElement.setAttributeNS(null, 'height', w.toString());\n svgElement.setAttributeNS(null, 'width', h.toString());\n return svgElement;\n }\n /**\n * Creates a SVG rect element.\n *\n * @param x Element's x coordinate\n * @param y Element's y coordinate\n * @param w Element's width attribute\n * @param h Element's height attribute\n */\n createSvgRectElement(x, y, w, h) {\n const rect = document.createElementNS(BrowserQRCodeSvgWriter.SVG_NS, 'rect');\n rect.setAttributeNS(null, 'x', x.toString());\n rect.setAttributeNS(null, 'y', y.toString());\n rect.setAttributeNS(null, 'height', w.toString());\n rect.setAttributeNS(null, 'width', h.toString());\n rect.setAttributeNS(null, 'fill', '#000000');\n return rect;\n }\n }\n BrowserQRCodeSvgWriter.QUIET_ZONE_SIZE = 4;\n /**\n * SVG markup NameSpace\n */\n BrowserQRCodeSvgWriter.SVG_NS = 'http://www.w3.org/2000/svg';\n\n /*import java.util.Map;*/\n /**\n * This object renders a QR Code as a BitMatrix 2D array of greyscale values.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n */\n class QRCodeWriter {\n /*@Override*/\n // public encode(contents: string, format: BarcodeFormat, width: number /*int*/, height: number /*int*/): BitMatrix\n // /*throws WriterException */ {\n // return encode(contents, format, width, height, null)\n // }\n /*@Override*/\n encode(contents, format, width /*int*/, height /*int*/, hints) {\n if (contents.length === 0) {\n throw new IllegalArgumentException('Found empty contents');\n }\n if (format !== BarcodeFormat$1.QR_CODE) {\n throw new IllegalArgumentException('Can only encode QR_CODE, but got ' + format);\n }\n if (width < 0 || height < 0) {\n throw new IllegalArgumentException(`Requested dimensions are too small: ${width}x${height}`);\n }\n let errorCorrectionLevel = ErrorCorrectionLevel.L;\n let quietZone = QRCodeWriter.QUIET_ZONE_SIZE;\n if (hints !== null) {\n if (undefined !== hints.get(EncodeHintType$1.ERROR_CORRECTION)) {\n errorCorrectionLevel = ErrorCorrectionLevel.fromString(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n }\n if (undefined !== hints.get(EncodeHintType$1.MARGIN)) {\n quietZone = Number.parseInt(hints.get(EncodeHintType$1.MARGIN).toString(), 10);\n }\n }\n const code = Encoder.encode(contents, errorCorrectionLevel, hints);\n return QRCodeWriter.renderResult(code, width, height, quietZone);\n }\n // Note that the input matrix uses 0 == white, 1 == black, while the output matrix uses\n // 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap).\n static renderResult(code, width /*int*/, height /*int*/, quietZone /*int*/) {\n const input = code.getMatrix();\n if (input === null) {\n throw new IllegalStateException();\n }\n const inputWidth = input.getWidth();\n const inputHeight = input.getHeight();\n const qrWidth = inputWidth + (quietZone * 2);\n const qrHeight = inputHeight + (quietZone * 2);\n const outputWidth = Math.max(width, qrWidth);\n const outputHeight = Math.max(height, qrHeight);\n const multiple = Math.min(Math.floor(outputWidth / qrWidth), Math.floor(outputHeight / qrHeight));\n // Padding includes both the quiet zone and the extra white pixels to accommodate the requested\n // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone.\n // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will\n // handle all the padding from 100x100 (the actual QR) up to 200x160.\n const leftPadding = Math.floor((outputWidth - (inputWidth * multiple)) / 2);\n const topPadding = Math.floor((outputHeight - (inputHeight * multiple)) / 2);\n const output = new BitMatrix(outputWidth, outputHeight);\n for (let inputY = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n // Write the contents of this row of the barcode\n for (let inputX = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n if (input.get(inputX, inputY) === 1) {\n output.setRegion(outputX, outputY, multiple, multiple);\n }\n }\n }\n return output;\n }\n }\n QRCodeWriter.QUIET_ZONE_SIZE = 4;\n\n /*import java.util.Map;*/\n /**\n * This is a factory class which finds the appropriate Writer subclass for the BarcodeFormat\n * requested and encodes the barcode with the supplied contents.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n */\n class MultiFormatWriter {\n /*@Override*/\n // public encode(contents: string,\n // format: BarcodeFormat,\n // width: number /*int*/,\n // height: number /*int*/): BitMatrix /*throws WriterException */ {\n // return encode(contents, format, width, height, null)\n // }\n /*@Override*/\n encode(contents, format, width /*int*/, height /*int*/, hints) {\n let writer;\n switch (format) {\n // case BarcodeFormat.EAN_8:\n // writer = new EAN8Writer()\n // break\n // case BarcodeFormat.UPC_E:\n // writer = new UPCEWriter()\n // break\n // case BarcodeFormat.EAN_13:\n // writer = new EAN13Writer()\n // break\n // case BarcodeFormat.UPC_A:\n // writer = new UPCAWriter()\n // break\n case BarcodeFormat$1.QR_CODE:\n writer = new QRCodeWriter();\n break;\n // case BarcodeFormat.CODE_39:\n // writer = new Code39Writer()\n // break\n // case BarcodeFormat.CODE_93:\n // writer = new Code93Writer()\n // break\n // case BarcodeFormat.CODE_128:\n // writer = new Code128Writer()\n // break\n // case BarcodeFormat.ITF:\n // writer = new ITFWriter()\n // break\n // case BarcodeFormat.PDF_417:\n // writer = new PDF417Writer()\n // break\n // case BarcodeFormat.CODABAR:\n // writer = new CodaBarWriter()\n // break\n // case BarcodeFormat.DATA_MATRIX:\n // writer = new DataMatrixWriter()\n // break\n // case BarcodeFormat.AZTEC:\n // writer = new AztecWriter()\n // break\n default:\n throw new IllegalArgumentException('No encoder available for format ' + format);\n }\n return writer.encode(contents, format, width, height, hints);\n }\n }\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * This object extends LuminanceSource around an array of YUV data returned from the camera driver,\n * with the option to crop to a rectangle within the full data. This can be used to exclude\n * superfluous pixels around the perimeter and speed up decoding.\n *\n * It works for any pixel format where the Y channel is planar and appears first, including\n * YCbCr_420_SP and YCbCr_422_SP.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n */\n class PlanarYUVLuminanceSource extends LuminanceSource {\n constructor(yuvData, dataWidth /*int*/, dataHeight /*int*/, left /*int*/, top /*int*/, width /*int*/, height /*int*/, reverseHorizontal) {\n super(width, height);\n this.yuvData = yuvData;\n this.dataWidth = dataWidth;\n this.dataHeight = dataHeight;\n this.left = left;\n this.top = top;\n if (left + width > dataWidth || top + height > dataHeight) {\n throw new IllegalArgumentException('Crop rectangle does not fit within image data.');\n }\n if (reverseHorizontal) {\n this.reverseHorizontal(width, height);\n }\n }\n /*@Override*/\n getRow(y /*int*/, row) {\n if (y < 0 || y >= this.getHeight()) {\n throw new IllegalArgumentException('Requested row is outside the image: ' + y);\n }\n const width = this.getWidth();\n if (row === null || row === undefined || row.length < width) {\n row = new Uint8ClampedArray(width);\n }\n const offset = (y + this.top) * this.dataWidth + this.left;\n System.arraycopy(this.yuvData, offset, row, 0, width);\n return row;\n }\n /*@Override*/\n getMatrix() {\n const width = this.getWidth();\n const height = this.getHeight();\n // If the caller asks for the entire underlying image, save the copy and give them the\n // original data. The docs specifically warn that result.length must be ignored.\n if (width === this.dataWidth && height === this.dataHeight) {\n return this.yuvData;\n }\n const area = width * height;\n const matrix = new Uint8ClampedArray(area);\n let inputOffset = this.top * this.dataWidth + this.left;\n // If the width matches the full width of the underlying data, perform a single copy.\n if (width === this.dataWidth) {\n System.arraycopy(this.yuvData, inputOffset, matrix, 0, area);\n return matrix;\n }\n // Otherwise copy one cropped row at a time.\n for (let y = 0; y < height; y++) {\n const outputOffset = y * width;\n System.arraycopy(this.yuvData, inputOffset, matrix, outputOffset, width);\n inputOffset += this.dataWidth;\n }\n return matrix;\n }\n /*@Override*/\n isCropSupported() {\n return true;\n }\n /*@Override*/\n crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n return new PlanarYUVLuminanceSource(this.yuvData, this.dataWidth, this.dataHeight, this.left + left, this.top + top, width, height, false);\n }\n renderThumbnail() {\n const width = this.getWidth() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n const height = this.getHeight() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n const pixels = new Int32Array(width * height);\n const yuv = this.yuvData;\n let inputOffset = this.top * this.dataWidth + this.left;\n for (let y = 0; y < height; y++) {\n const outputOffset = y * width;\n for (let x = 0; x < width; x++) {\n const grey = yuv[inputOffset + x * PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR] & 0xff;\n pixels[outputOffset + x] = 0xFF000000 | (grey * 0x00010101);\n }\n inputOffset += this.dataWidth * PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n }\n return pixels;\n }\n /**\n * @return width of image from {@link #renderThumbnail()}\n */\n getThumbnailWidth() {\n return this.getWidth() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n }\n /**\n * @return height of image from {@link #renderThumbnail()}\n */\n getThumbnailHeight() {\n return this.getHeight() / PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR;\n }\n reverseHorizontal(width /*int*/, height /*int*/) {\n const yuvData = this.yuvData;\n for (let y = 0, rowStart = this.top * this.dataWidth + this.left; y < height; y++, rowStart += this.dataWidth) {\n const middle = rowStart + width / 2;\n for (let x1 = rowStart, x2 = rowStart + width - 1; x1 < middle; x1++, x2--) {\n const temp = yuvData[x1];\n yuvData[x1] = yuvData[x2];\n yuvData[x2] = temp;\n }\n }\n }\n invert() {\n return new InvertedLuminanceSource(this);\n }\n }\n PlanarYUVLuminanceSource.THUMBNAIL_SCALE_FACTOR = 2;\n\n /*\n * Copyright 2009 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * This class is used to help decode images from files which arrive as RGB data from\n * an ARGB pixel array. It does not support rotation.\n *\n * @author dswitkin@google.com (Daniel Switkin)\n * @author Betaminos\n */\n class RGBLuminanceSource extends LuminanceSource {\n constructor(luminances, width /*int*/, height /*int*/, dataWidth /*int*/, dataHeight /*int*/, left /*int*/, top /*int*/) {\n super(width, height);\n this.dataWidth = dataWidth;\n this.dataHeight = dataHeight;\n this.left = left;\n this.top = top;\n if (luminances.BYTES_PER_ELEMENT === 4) { // Int32Array\n const size = width * height;\n const luminancesUint8Array = new Uint8ClampedArray(size);\n for (let offset = 0; offset < size; offset++) {\n const pixel = luminances[offset];\n const r = (pixel >> 16) & 0xff; // red\n const g2 = (pixel >> 7) & 0x1fe; // 2 * green\n const b = pixel & 0xff; // blue\n // Calculate green-favouring average cheaply\n luminancesUint8Array[offset] = /*(byte) */ ((r + g2 + b) / 4) & 0xFF;\n }\n this.luminances = luminancesUint8Array;\n }\n else {\n this.luminances = luminances;\n }\n if (undefined === dataWidth) {\n this.dataWidth = width;\n }\n if (undefined === dataHeight) {\n this.dataHeight = height;\n }\n if (undefined === left) {\n this.left = 0;\n }\n if (undefined === top) {\n this.top = 0;\n }\n if (this.left + width > this.dataWidth || this.top + height > this.dataHeight) {\n throw new IllegalArgumentException('Crop rectangle does not fit within image data.');\n }\n }\n /*@Override*/\n getRow(y /*int*/, row) {\n if (y < 0 || y >= this.getHeight()) {\n throw new IllegalArgumentException('Requested row is outside the image: ' + y);\n }\n const width = this.getWidth();\n if (row === null || row === undefined || row.length < width) {\n row = new Uint8ClampedArray(width);\n }\n const offset = (y + this.top) * this.dataWidth + this.left;\n System.arraycopy(this.luminances, offset, row, 0, width);\n return row;\n }\n /*@Override*/\n getMatrix() {\n const width = this.getWidth();\n const height = this.getHeight();\n // If the caller asks for the entire underlying image, save the copy and give them the\n // original data. The docs specifically warn that result.length must be ignored.\n if (width === this.dataWidth && height === this.dataHeight) {\n return this.luminances;\n }\n const area = width * height;\n const matrix = new Uint8ClampedArray(area);\n let inputOffset = this.top * this.dataWidth + this.left;\n // If the width matches the full width of the underlying data, perform a single copy.\n if (width === this.dataWidth) {\n System.arraycopy(this.luminances, inputOffset, matrix, 0, area);\n return matrix;\n }\n // Otherwise copy one cropped row at a time.\n for (let y = 0; y < height; y++) {\n const outputOffset = y * width;\n System.arraycopy(this.luminances, inputOffset, matrix, outputOffset, width);\n inputOffset += this.dataWidth;\n }\n return matrix;\n }\n /*@Override*/\n isCropSupported() {\n return true;\n }\n /*@Override*/\n crop(left /*int*/, top /*int*/, width /*int*/, height /*int*/) {\n return new RGBLuminanceSource(this.luminances, width, height, this.dataWidth, this.dataHeight, this.left + left, this.top + top);\n }\n invert() {\n return new InvertedLuminanceSource(this);\n }\n }\n\n /**\n * Just to make a shortcut between Java code and TS code.\n */\n class Charset extends CharacterSetECI {\n static forName(name) {\n return this.getCharacterSetECIByName(name);\n }\n }\n\n /**\n * Just to make a shortcut between Java code and TS code.\n */\n class StandardCharsets {\n }\n StandardCharsets.ISO_8859_1 = CharacterSetECI.ISO8859_1;\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Aztec 2D code representation\n *\n * @author Rustam Abdullaev\n */\n /*public final*/ class AztecCode {\n /**\n * @return {@code true} if compact instead of full mode\n */\n isCompact() {\n return this.compact;\n }\n setCompact(compact) {\n this.compact = compact;\n }\n /**\n * @return size in pixels (width and height)\n */\n getSize() {\n return this.size;\n }\n setSize(size) {\n this.size = size;\n }\n /**\n * @return number of levels\n */\n getLayers() {\n return this.layers;\n }\n setLayers(layers) {\n this.layers = layers;\n }\n /**\n * @return number of data codewords\n */\n getCodeWords() {\n return this.codeWords;\n }\n setCodeWords(codeWords) {\n this.codeWords = codeWords;\n }\n /**\n * @return the symbol image\n */\n getMatrix() {\n return this.matrix;\n }\n setMatrix(matrix) {\n this.matrix = matrix;\n }\n }\n\n class Collections {\n /**\n * The singletonList(T) method is used to return an immutable list containing only the specified object.\n */\n static singletonList(item) {\n return [item];\n }\n /**\n * The min(Collection extends T>, Comparator super T>) method is used to return the minimum element of the given collection, according to the order induced by the specified comparator.\n */\n static min(collection, comparator) {\n return collection.sort(comparator)[0];\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n class Token {\n constructor(previous) {\n this.previous = previous;\n }\n getPrevious() {\n return this.previous;\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*final*/ class SimpleToken extends Token {\n constructor(previous, value, bitCount) {\n super(previous);\n this.value = value;\n this.bitCount = bitCount;\n }\n /**\n * @Override\n */\n appendTo(bitArray, text) {\n bitArray.appendBits(this.value, this.bitCount);\n }\n add(value, bitCount) {\n return new SimpleToken(this, value, bitCount);\n }\n addBinaryShift(start, byteCount) {\n // no-op can't binary shift a simple token\n console.warn('addBinaryShift on SimpleToken, this simply returns a copy of this token');\n return new SimpleToken(this, start, byteCount);\n }\n /**\n * @Override\n */\n toString() {\n let value = this.value & ((1 << this.bitCount) - 1);\n value |= 1 << this.bitCount;\n return '<' + Integer.toBinaryString(value | (1 << this.bitCount)).substring(1) + '>';\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /*final*/ class BinaryShiftToken extends SimpleToken {\n constructor(previous, binaryShiftStart, binaryShiftByteCount) {\n super(previous, 0, 0);\n this.binaryShiftStart = binaryShiftStart;\n this.binaryShiftByteCount = binaryShiftByteCount;\n }\n /**\n * @Override\n */\n appendTo(bitArray, text) {\n for (let i = 0; i < this.binaryShiftByteCount; i++) {\n if (i === 0 || (i === 31 && this.binaryShiftByteCount <= 62)) {\n // We need a header before the first character, and before\n // character 31 when the total byte code is <= 62\n bitArray.appendBits(31, 5); // BINARY_SHIFT\n if (this.binaryShiftByteCount > 62) {\n bitArray.appendBits(this.binaryShiftByteCount - 31, 16);\n }\n else if (i === 0) {\n // 1 <= binaryShiftByteCode <= 62\n bitArray.appendBits(Math.min(this.binaryShiftByteCount, 31), 5);\n }\n else {\n // 32 <= binaryShiftCount <= 62 and i == 31\n bitArray.appendBits(this.binaryShiftByteCount - 31, 5);\n }\n }\n bitArray.appendBits(text[this.binaryShiftStart + i], 8);\n }\n }\n addBinaryShift(start, byteCount) {\n // int bitCount = (byteCount * 8) + (byteCount <= 31 ? 10 : byteCount <= 62 ? 20 : 21);\n return new BinaryShiftToken(this, start, byteCount);\n }\n /**\n * @Override\n */\n toString() {\n return '<' + this.binaryShiftStart + '::' + (this.binaryShiftStart + this.binaryShiftByteCount - 1) + '>';\n }\n }\n\n function addBinaryShift(token, start, byteCount) {\n // int bitCount = (byteCount * 8) + (byteCount <= 31 ? 10 : byteCount <= 62 ? 20 : 21);\n return new BinaryShiftToken(token, start, byteCount);\n }\n function add(token, value, bitCount) {\n return new SimpleToken(token, value, bitCount);\n }\n\n const /*final*/ MODE_NAMES = [\n 'UPPER',\n 'LOWER',\n 'DIGIT',\n 'MIXED',\n 'PUNCT'\n ];\n const /*final*/ MODE_UPPER = 0; // 5 bits\n const /*final*/ MODE_LOWER = 1; // 5 bits\n const /*final*/ MODE_DIGIT = 2; // 4 bits\n const /*final*/ MODE_MIXED = 3; // 5 bits\n const /*final*/ MODE_PUNCT = 4; // 5 bits\n const EMPTY_TOKEN = new SimpleToken(null, 0, 0);\n\n // The Latch Table shows, for each pair of Modes, the optimal method for\n // getting from one mode to another. In the worst possible case, this can\n // be up to 14 bits. In the best possible case, we are already there!\n // The high half-word of each entry gives the number of bits.\n // The low half-word of each entry are the actual bits necessary to change\n const LATCH_TABLE = [\n Int32Array.from([\n 0,\n (5 << 16) + 28,\n (5 << 16) + 30,\n (5 << 16) + 29,\n (10 << 16) + (29 << 5) + 30 // UPPER -> MIXED -> PUNCT\n ]),\n Int32Array.from([\n (9 << 16) + (30 << 4) + 14,\n 0,\n (5 << 16) + 30,\n (5 << 16) + 29,\n (10 << 16) + (29 << 5) + 30 // LOWER -> MIXED -> PUNCT\n ]),\n Int32Array.from([\n (4 << 16) + 14,\n (9 << 16) + (14 << 5) + 28,\n 0,\n (9 << 16) + (14 << 5) + 29,\n (14 << 16) + (14 << 10) + (29 << 5) + 30\n // DIGIT -> UPPER -> MIXED -> PUNCT\n ]),\n Int32Array.from([\n (5 << 16) + 29,\n (5 << 16) + 28,\n (10 << 16) + (29 << 5) + 30,\n 0,\n (5 << 16) + 30 // MIXED -> PUNCT\n ]),\n Int32Array.from([\n (5 << 16) + 31,\n (10 << 16) + (31 << 5) + 28,\n (10 << 16) + (31 << 5) + 30,\n (10 << 16) + (31 << 5) + 29,\n 0\n ])\n ];\n\n function static_SHIFT_TABLE(SHIFT_TABLE) {\n for (let table /*Int32Array*/ of SHIFT_TABLE) {\n Arrays.fill(table, -1);\n }\n SHIFT_TABLE[MODE_UPPER][MODE_PUNCT] = 0;\n SHIFT_TABLE[MODE_LOWER][MODE_PUNCT] = 0;\n SHIFT_TABLE[MODE_LOWER][MODE_UPPER] = 28;\n SHIFT_TABLE[MODE_MIXED][MODE_PUNCT] = 0;\n SHIFT_TABLE[MODE_DIGIT][MODE_PUNCT] = 0;\n SHIFT_TABLE[MODE_DIGIT][MODE_UPPER] = 15;\n return SHIFT_TABLE;\n }\n const /*final*/ SHIFT_TABLE = static_SHIFT_TABLE(Arrays.createInt32Array(6, 6)); // mode shift codes, per table\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * State represents all information about a sequence necessary to generate the current output.\n * Note that a state is immutable.\n */\n /*final*/ class State {\n constructor(token, mode, binaryBytes, bitCount) {\n this.token = token;\n this.mode = mode;\n this.binaryShiftByteCount = binaryBytes;\n this.bitCount = bitCount;\n // Make sure we match the token\n // int binaryShiftBitCount = (binaryShiftByteCount * 8) +\n // (binaryShiftByteCount === 0 ? 0 :\n // binaryShiftByteCount <= 31 ? 10 :\n // binaryShiftByteCount <= 62 ? 20 : 21);\n // assert this.bitCount === token.getTotalBitCount() + binaryShiftBitCount;\n }\n getMode() {\n return this.mode;\n }\n getToken() {\n return this.token;\n }\n getBinaryShiftByteCount() {\n return this.binaryShiftByteCount;\n }\n getBitCount() {\n return this.bitCount;\n }\n // Create a new state representing this state with a latch to a (not\n // necessary different) mode, and then a code.\n latchAndAppend(mode, value) {\n // assert binaryShiftByteCount === 0;\n let bitCount = this.bitCount;\n let token = this.token;\n if (mode !== this.mode) {\n let latch = LATCH_TABLE[this.mode][mode];\n token = add(token, latch & 0xffff, latch >> 16);\n bitCount += latch >> 16;\n }\n let latchModeBitCount = mode === MODE_DIGIT ? 4 : 5;\n token = add(token, value, latchModeBitCount);\n return new State(token, mode, 0, bitCount + latchModeBitCount);\n }\n // Create a new state representing this state, with a temporary shift\n // to a different mode to output a single value.\n shiftAndAppend(mode, value) {\n // assert binaryShiftByteCount === 0 && this.mode !== mode;\n let token = this.token;\n let thisModeBitCount = this.mode === MODE_DIGIT ? 4 : 5;\n // Shifts exist only to UPPER and PUNCT, both with tokens size 5.\n token = add(token, SHIFT_TABLE[this.mode][mode], thisModeBitCount);\n token = add(token, value, 5);\n return new State(token, this.mode, 0, this.bitCount + thisModeBitCount + 5);\n }\n // Create a new state representing this state, but an additional character\n // output in Binary Shift mode.\n addBinaryShiftChar(index) {\n let token = this.token;\n let mode = this.mode;\n let bitCount = this.bitCount;\n if (this.mode === MODE_PUNCT || this.mode === MODE_DIGIT) {\n // assert binaryShiftByteCount === 0;\n let latch = LATCH_TABLE[mode][MODE_UPPER];\n token = add(token, latch & 0xffff, latch >> 16);\n bitCount += latch >> 16;\n mode = MODE_UPPER;\n }\n let deltaBitCount = this.binaryShiftByteCount === 0 || this.binaryShiftByteCount === 31\n ? 18\n : this.binaryShiftByteCount === 62\n ? 9\n : 8;\n let result = new State(token, mode, this.binaryShiftByteCount + 1, bitCount + deltaBitCount);\n if (result.binaryShiftByteCount === 2047 + 31) {\n // The string is as long as it's allowed to be. We should end it.\n result = result.endBinaryShift(index + 1);\n }\n return result;\n }\n // Create the state identical to this one, but we are no longer in\n // Binary Shift mode.\n endBinaryShift(index) {\n if (this.binaryShiftByteCount === 0) {\n return this;\n }\n let token = this.token;\n token = addBinaryShift(token, index - this.binaryShiftByteCount, this.binaryShiftByteCount);\n // assert token.getTotalBitCount() === this.bitCount;\n return new State(token, this.mode, 0, this.bitCount);\n }\n // Returns true if \"this\" state is better (equal: or) to be in than \"that\"\n // state under all possible circumstances.\n isBetterThanOrEqualTo(other) {\n let newModeBitCount = this.bitCount + (LATCH_TABLE[this.mode][other.mode] >> 16);\n if (this.binaryShiftByteCount < other.binaryShiftByteCount) {\n // add additional B/S encoding cost of other, if any\n newModeBitCount +=\n State.calculateBinaryShiftCost(other) -\n State.calculateBinaryShiftCost(this);\n }\n else if (this.binaryShiftByteCount > other.binaryShiftByteCount &&\n other.binaryShiftByteCount > 0) {\n // maximum possible additional cost (it: h)\n newModeBitCount += 10;\n }\n return newModeBitCount <= other.bitCount;\n }\n toBitArray(text) {\n // Reverse the tokens, so that they are in the order that they should\n // be output\n let symbols = [];\n for (let token = this.endBinaryShift(text.length).token; token !== null; token = token.getPrevious()) {\n symbols.unshift(token);\n }\n let bitArray = new BitArray();\n // Add each token to the result.\n for (const symbol of symbols) {\n symbol.appendTo(bitArray, text);\n }\n // assert bitArray.getSize() === this.bitCount;\n return bitArray;\n }\n /**\n * @Override\n */\n toString() {\n return StringUtils.format('%s bits=%d bytes=%d', MODE_NAMES[this.mode], this.bitCount, this.binaryShiftByteCount);\n }\n static calculateBinaryShiftCost(state) {\n if (state.binaryShiftByteCount > 62) {\n return 21; // B/S with extended length\n }\n if (state.binaryShiftByteCount > 31) {\n return 20; // two B/S\n }\n if (state.binaryShiftByteCount > 0) {\n return 10; // one B/S\n }\n return 0;\n }\n }\n State.INITIAL_STATE = new State(EMPTY_TOKEN, MODE_UPPER, 0, 0);\n\n function static_CHAR_MAP(CHAR_MAP) {\n const spaceCharCode = StringUtils.getCharCode(' ');\n const pointCharCode = StringUtils.getCharCode('.');\n const commaCharCode = StringUtils.getCharCode(',');\n CHAR_MAP[MODE_UPPER][spaceCharCode] = 1;\n const zUpperCharCode = StringUtils.getCharCode('Z');\n const aUpperCharCode = StringUtils.getCharCode('A');\n for (let c = aUpperCharCode; c <= zUpperCharCode; c++) {\n CHAR_MAP[MODE_UPPER][c] = c - aUpperCharCode + 2;\n }\n CHAR_MAP[MODE_LOWER][spaceCharCode] = 1;\n const zLowerCharCode = StringUtils.getCharCode('z');\n const aLowerCharCode = StringUtils.getCharCode('a');\n for (let c = aLowerCharCode; c <= zLowerCharCode; c++) {\n CHAR_MAP[MODE_LOWER][c] = c - aLowerCharCode + 2;\n }\n CHAR_MAP[MODE_DIGIT][spaceCharCode] = 1;\n const nineCharCode = StringUtils.getCharCode('9');\n const zeroCharCode = StringUtils.getCharCode('0');\n for (let c = zeroCharCode; c <= nineCharCode; c++) {\n CHAR_MAP[MODE_DIGIT][c] = c - zeroCharCode + 2;\n }\n CHAR_MAP[MODE_DIGIT][commaCharCode] = 12;\n CHAR_MAP[MODE_DIGIT][pointCharCode] = 13;\n const mixedTable = [\n '\\x00',\n ' ',\n '\\x01',\n '\\x02',\n '\\x03',\n '\\x04',\n '\\x05',\n '\\x06',\n '\\x07',\n '\\b',\n '\\t',\n '\\n',\n '\\x0b',\n '\\f',\n '\\r',\n '\\x1b',\n '\\x1c',\n '\\x1d',\n '\\x1e',\n '\\x1f',\n '@',\n '\\\\',\n '^',\n '_',\n '`',\n '|',\n '~',\n '\\x7f'\n ];\n for (let i = 0; i < mixedTable.length; i++) {\n CHAR_MAP[MODE_MIXED][StringUtils.getCharCode(mixedTable[i])] = i;\n }\n const punctTable = [\n '\\x00',\n '\\r',\n '\\x00',\n '\\x00',\n '\\x00',\n '\\x00',\n '!',\n '\\'',\n '#',\n '$',\n '%',\n '&',\n '\\'',\n '(',\n ')',\n '*',\n '+',\n ',',\n '-',\n '.',\n '/',\n ':',\n ';',\n '<',\n '=',\n '>',\n '?',\n '[',\n ']',\n '{',\n '}'\n ];\n for (let i = 0; i < punctTable.length; i++) {\n if (StringUtils.getCharCode(punctTable[i]) > 0) {\n CHAR_MAP[MODE_PUNCT][StringUtils.getCharCode(punctTable[i])] = i;\n }\n }\n return CHAR_MAP;\n }\n const CHAR_MAP = static_CHAR_MAP(Arrays.createInt32Array(5, 256));\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * This produces nearly optimal encodings of text into the first-level of\n * encoding used by Aztec code.\n *\n * It uses a dynamic algorithm. For each prefix of the string, it determines\n * a set of encodings that could lead to this prefix. We repeatedly add a\n * character and generate a new set of optimal encodings until we have read\n * through the entire input.\n *\n * @author Frank Yellin\n * @author Rustam Abdullaev\n */\n /*public final*/ class HighLevelEncoder {\n constructor(text) {\n this.text = text;\n }\n /**\n * @return text represented by this encoder encoded as a {@link BitArray}\n */\n encode() {\n const spaceCharCode = StringUtils.getCharCode(' ');\n const lineBreakCharCode = StringUtils.getCharCode('\\n');\n let states = Collections.singletonList(State.INITIAL_STATE);\n for (let index = 0; index < this.text.length; index++) {\n let pairCode;\n let nextChar = index + 1 < this.text.length ? this.text[index + 1] : 0;\n switch (this.text[index]) {\n case StringUtils.getCharCode('\\r'):\n pairCode = nextChar === lineBreakCharCode ? 2 : 0;\n break;\n case StringUtils.getCharCode('.'):\n pairCode = nextChar === spaceCharCode ? 3 : 0;\n break;\n case StringUtils.getCharCode(','):\n pairCode = nextChar === spaceCharCode ? 4 : 0;\n break;\n case StringUtils.getCharCode(':'):\n pairCode = nextChar === spaceCharCode ? 5 : 0;\n break;\n default:\n pairCode = 0;\n }\n if (pairCode > 0) {\n // We have one of the four special PUNCT pairs. Treat them specially.\n // Get a new set of states for the two new characters.\n states = HighLevelEncoder.updateStateListForPair(states, index, pairCode);\n index++;\n }\n else {\n // Get a new set of states for the new character.\n states = this.updateStateListForChar(states, index);\n }\n }\n // We are left with a set of states. Find the shortest one.\n const minState = Collections.min(states, (a, b) => {\n return a.getBitCount() - b.getBitCount();\n });\n // Convert it to a bit array, and return.\n return minState.toBitArray(this.text);\n }\n // We update a set of states for a new character by updating each state\n // for the new character, merging the results, and then removing the\n // non-optimal states.\n updateStateListForChar(states, index) {\n const result = [];\n for (let state /*State*/ of states) {\n this.updateStateForChar(state, index, result);\n }\n return HighLevelEncoder.simplifyStates(result);\n }\n // Return a set of states that represent the possible ways of updating this\n // state for the next character. The resulting set of states are added to\n // the \"result\" list.\n updateStateForChar(state, index, result) {\n let ch = (this.text[index] & 0xff);\n let charInCurrentTable = CHAR_MAP[state.getMode()][ch] > 0;\n let stateNoBinary = null;\n for (let mode /*int*/ = 0; mode <= MODE_PUNCT; mode++) {\n let charInMode = CHAR_MAP[mode][ch];\n if (charInMode > 0) {\n if (stateNoBinary == null) {\n // Only create stateNoBinary the first time it's required.\n stateNoBinary = state.endBinaryShift(index);\n }\n // Try generating the character by latching to its mode\n if (!charInCurrentTable ||\n mode === state.getMode() ||\n mode === MODE_DIGIT) {\n // If the character is in the current table, we don't want to latch to\n // any other mode except possibly digit (which uses only 4 bits). Any\n // other latch would be equally successful *after* this character, and\n // so wouldn't save any bits.\n const latchState = stateNoBinary.latchAndAppend(mode, charInMode);\n result.push(latchState);\n }\n // Try generating the character by switching to its mode.\n if (!charInCurrentTable &&\n SHIFT_TABLE[state.getMode()][mode] >= 0) {\n // It never makes sense to temporarily shift to another mode if the\n // character exists in the current mode. That can never save bits.\n const shiftState = stateNoBinary.shiftAndAppend(mode, charInMode);\n result.push(shiftState);\n }\n }\n }\n if (state.getBinaryShiftByteCount() > 0 ||\n CHAR_MAP[state.getMode()][ch] === 0) {\n // It's never worthwhile to go into binary shift mode if you're not already\n // in binary shift mode, and the character exists in your current mode.\n // That can never save bits over just outputting the char in the current mode.\n let binaryState = state.addBinaryShiftChar(index);\n result.push(binaryState);\n }\n }\n static updateStateListForPair(states, index, pairCode) {\n const result = [];\n for (let state /*State*/ of states) {\n this.updateStateForPair(state, index, pairCode, result);\n }\n return this.simplifyStates(result);\n }\n static updateStateForPair(state, index, pairCode, result) {\n let stateNoBinary = state.endBinaryShift(index);\n // Possibility 1. Latch to C.MODE_PUNCT, and then append this code\n result.push(stateNoBinary.latchAndAppend(MODE_PUNCT, pairCode));\n if (state.getMode() !== MODE_PUNCT) {\n // Possibility 2. Shift to C.MODE_PUNCT, and then append this code.\n // Every state except C.MODE_PUNCT (handled above) can shift\n result.push(stateNoBinary.shiftAndAppend(MODE_PUNCT, pairCode));\n }\n if (pairCode === 3 || pairCode === 4) {\n // both characters are in DIGITS. Sometimes better to just add two digits\n let digitState = stateNoBinary\n .latchAndAppend(MODE_DIGIT, 16 - pairCode) // period or comma in DIGIT\n .latchAndAppend(MODE_DIGIT, 1); // space in DIGIT\n result.push(digitState);\n }\n if (state.getBinaryShiftByteCount() > 0) {\n // It only makes sense to do the characters as binary if we're already\n // in binary mode.\n let binaryState = state\n .addBinaryShiftChar(index)\n .addBinaryShiftChar(index + 1);\n result.push(binaryState);\n }\n }\n static simplifyStates(states) {\n let result = [];\n for (const newState of states) {\n let add = true;\n for (const oldState of result) {\n if (oldState.isBetterThanOrEqualTo(newState)) {\n add = false;\n break;\n }\n if (newState.isBetterThanOrEqualTo(oldState)) {\n // iterator.remove();\n result = result.filter(x => x !== oldState); // remove old state\n }\n }\n if (add) {\n result.push(newState);\n }\n }\n return result;\n }\n }\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // package com.google.zxing.aztec.encoder;\n // import com.google.zxing.common.BitArray;\n // import com.google.zxing.common.BitMatrix;\n // import com.google.zxing.common.reedsolomon.GenericGF;\n // import com.google.zxing.common.reedsolomon.ReedSolomonEncoder;\n /**\n * Generates Aztec 2D barcodes.\n *\n * @author Rustam Abdullaev\n */\n /*public final*/ class Encoder$1 {\n constructor() {\n }\n /**\n * Encodes the given binary content as an Aztec symbol\n *\n * @param data input data string\n * @return Aztec symbol matrix with metadata\n */\n static encodeBytes(data) {\n return Encoder$1.encode(data, Encoder$1.DEFAULT_EC_PERCENT, Encoder$1.DEFAULT_AZTEC_LAYERS);\n }\n /**\n * Encodes the given binary content as an Aztec symbol\n *\n * @param data input data string\n * @param minECCPercent minimal percentage of error check words (According to ISO/IEC 24778:2008,\n * a minimum of 23% + 3 words is recommended)\n * @param userSpecifiedLayers if non-zero, a user-specified value for the number of layers\n * @return Aztec symbol matrix with metadata\n */\n static encode(data, minECCPercent, userSpecifiedLayers) {\n // High-level encode\n let bits = new HighLevelEncoder(data).encode();\n // stuff bits and choose symbol size\n let eccBits = Integer.truncDivision((bits.getSize() * minECCPercent), 100) + 11;\n let totalSizeBits = bits.getSize() + eccBits;\n let compact;\n let layers;\n let totalBitsInLayer;\n let wordSize;\n let stuffedBits;\n if (userSpecifiedLayers !== Encoder$1.DEFAULT_AZTEC_LAYERS) {\n compact = userSpecifiedLayers < 0;\n layers = Math.abs(userSpecifiedLayers);\n if (layers > (compact ? Encoder$1.MAX_NB_BITS_COMPACT : Encoder$1.MAX_NB_BITS)) {\n throw new IllegalArgumentException(StringUtils.format('Illegal value %s for layers', userSpecifiedLayers));\n }\n totalBitsInLayer = Encoder$1.totalBitsInLayer(layers, compact);\n wordSize = Encoder$1.WORD_SIZE[layers];\n let usableBitsInLayers = totalBitsInLayer - (totalBitsInLayer % wordSize);\n stuffedBits = Encoder$1.stuffBits(bits, wordSize);\n if (stuffedBits.getSize() + eccBits > usableBitsInLayers) {\n throw new IllegalArgumentException('Data to large for user specified layer');\n }\n if (compact && stuffedBits.getSize() > wordSize * 64) {\n // Compact format only allows 64 data words, though C4 can hold more words than that\n throw new IllegalArgumentException('Data to large for user specified layer');\n }\n }\n else {\n wordSize = 0;\n stuffedBits = null;\n // We look at the possible table sizes in the order Compact1, Compact2, Compact3,\n // Compact4, Normal4,... Normal(i) for i < 4 isn't typically used since Compact(i+1)\n // is the same size, but has more data.\n for (let i /*int*/ = 0;; i++) {\n if (i > Encoder$1.MAX_NB_BITS) {\n throw new IllegalArgumentException('Data too large for an Aztec code');\n }\n compact = i <= 3;\n layers = compact ? i + 1 : i;\n totalBitsInLayer = Encoder$1.totalBitsInLayer(layers, compact);\n if (totalSizeBits > totalBitsInLayer) {\n continue;\n }\n // [Re]stuff the bits if this is the first opportunity, or if the\n // wordSize has changed\n if (stuffedBits == null || wordSize !== Encoder$1.WORD_SIZE[layers]) {\n wordSize = Encoder$1.WORD_SIZE[layers];\n stuffedBits = Encoder$1.stuffBits(bits, wordSize);\n }\n let usableBitsInLayers = totalBitsInLayer - (totalBitsInLayer % wordSize);\n if (compact && stuffedBits.getSize() > wordSize * 64) {\n // Compact format only allows 64 data words, though C4 can hold more words than that\n continue;\n }\n if (stuffedBits.getSize() + eccBits <= usableBitsInLayers) {\n break;\n }\n }\n }\n let messageBits = Encoder$1.generateCheckWords(stuffedBits, totalBitsInLayer, wordSize);\n // generate mode message\n let messageSizeInWords = stuffedBits.getSize() / wordSize;\n let modeMessage = Encoder$1.generateModeMessage(compact, layers, messageSizeInWords);\n // allocate symbol\n let baseMatrixSize = (compact ? 11 : 14) + layers * 4; // not including alignment lines\n let alignmentMap = new Int32Array(baseMatrixSize);\n let matrixSize;\n if (compact) {\n // no alignment marks in compact mode, alignmentMap is a no-op\n matrixSize = baseMatrixSize;\n for (let i /*int*/ = 0; i < alignmentMap.length; i++) {\n alignmentMap[i] = i;\n }\n }\n else {\n matrixSize = baseMatrixSize + 1 + 2 * Integer.truncDivision((Integer.truncDivision(baseMatrixSize, 2) - 1), 15);\n let origCenter = Integer.truncDivision(baseMatrixSize, 2);\n let center = Integer.truncDivision(matrixSize, 2);\n for (let i /*int*/ = 0; i < origCenter; i++) {\n let newOffset = i + Integer.truncDivision(i, 15);\n alignmentMap[origCenter - i - 1] = center - newOffset - 1;\n alignmentMap[origCenter + i] = center + newOffset + 1;\n }\n }\n let matrix = new BitMatrix(matrixSize);\n // draw data bits\n for (let i /*int*/ = 0, rowOffset = 0; i < layers; i++) {\n let rowSize = (layers - i) * 4 + (compact ? 9 : 12);\n for (let j /*int*/ = 0; j < rowSize; j++) {\n let columnOffset = j * 2;\n for (let k /*int*/ = 0; k < 2; k++) {\n if (messageBits.get(rowOffset + columnOffset + k)) {\n matrix.set(alignmentMap[i * 2 + k], alignmentMap[i * 2 + j]);\n }\n if (messageBits.get(rowOffset + rowSize * 2 + columnOffset + k)) {\n matrix.set(alignmentMap[i * 2 + j], alignmentMap[baseMatrixSize - 1 - i * 2 - k]);\n }\n if (messageBits.get(rowOffset + rowSize * 4 + columnOffset + k)) {\n matrix.set(alignmentMap[baseMatrixSize - 1 - i * 2 - k], alignmentMap[baseMatrixSize - 1 - i * 2 - j]);\n }\n if (messageBits.get(rowOffset + rowSize * 6 + columnOffset + k)) {\n matrix.set(alignmentMap[baseMatrixSize - 1 - i * 2 - j], alignmentMap[i * 2 + k]);\n }\n }\n }\n rowOffset += rowSize * 8;\n }\n // draw mode message\n Encoder$1.drawModeMessage(matrix, compact, matrixSize, modeMessage);\n // draw alignment marks\n if (compact) {\n Encoder$1.drawBullsEye(matrix, Integer.truncDivision(matrixSize, 2), 5);\n }\n else {\n Encoder$1.drawBullsEye(matrix, Integer.truncDivision(matrixSize, 2), 7);\n for (let i /*int*/ = 0, j = 0; i < Integer.truncDivision(baseMatrixSize, 2) - 1; i += 15, j += 16) {\n for (let k /*int*/ = Integer.truncDivision(matrixSize, 2) & 1; k < matrixSize; k += 2) {\n matrix.set(Integer.truncDivision(matrixSize, 2) - j, k);\n matrix.set(Integer.truncDivision(matrixSize, 2) + j, k);\n matrix.set(k, Integer.truncDivision(matrixSize, 2) - j);\n matrix.set(k, Integer.truncDivision(matrixSize, 2) + j);\n }\n }\n }\n let aztec = new AztecCode();\n aztec.setCompact(compact);\n aztec.setSize(matrixSize);\n aztec.setLayers(layers);\n aztec.setCodeWords(messageSizeInWords);\n aztec.setMatrix(matrix);\n return aztec;\n }\n static drawBullsEye(matrix, center, size) {\n for (let i /*int*/ = 0; i < size; i += 2) {\n for (let j /*int*/ = center - i; j <= center + i; j++) {\n matrix.set(j, center - i);\n matrix.set(j, center + i);\n matrix.set(center - i, j);\n matrix.set(center + i, j);\n }\n }\n matrix.set(center - size, center - size);\n matrix.set(center - size + 1, center - size);\n matrix.set(center - size, center - size + 1);\n matrix.set(center + size, center - size);\n matrix.set(center + size, center - size + 1);\n matrix.set(center + size, center + size - 1);\n }\n static generateModeMessage(compact, layers, messageSizeInWords) {\n let modeMessage = new BitArray();\n if (compact) {\n modeMessage.appendBits(layers - 1, 2);\n modeMessage.appendBits(messageSizeInWords - 1, 6);\n modeMessage = Encoder$1.generateCheckWords(modeMessage, 28, 4);\n }\n else {\n modeMessage.appendBits(layers - 1, 5);\n modeMessage.appendBits(messageSizeInWords - 1, 11);\n modeMessage = Encoder$1.generateCheckWords(modeMessage, 40, 4);\n }\n return modeMessage;\n }\n static drawModeMessage(matrix, compact, matrixSize, modeMessage) {\n let center = Integer.truncDivision(matrixSize, 2);\n if (compact) {\n for (let i /*int*/ = 0; i < 7; i++) {\n let offset = center - 3 + i;\n if (modeMessage.get(i)) {\n matrix.set(offset, center - 5);\n }\n if (modeMessage.get(i + 7)) {\n matrix.set(center + 5, offset);\n }\n if (modeMessage.get(20 - i)) {\n matrix.set(offset, center + 5);\n }\n if (modeMessage.get(27 - i)) {\n matrix.set(center - 5, offset);\n }\n }\n }\n else {\n for (let i /*int*/ = 0; i < 10; i++) {\n let offset = center - 5 + i + Integer.truncDivision(i, 5);\n if (modeMessage.get(i)) {\n matrix.set(offset, center - 7);\n }\n if (modeMessage.get(i + 10)) {\n matrix.set(center + 7, offset);\n }\n if (modeMessage.get(29 - i)) {\n matrix.set(offset, center + 7);\n }\n if (modeMessage.get(39 - i)) {\n matrix.set(center - 7, offset);\n }\n }\n }\n }\n static generateCheckWords(bitArray, totalBits, wordSize) {\n // bitArray is guaranteed to be a multiple of the wordSize, so no padding needed\n let messageSizeInWords = bitArray.getSize() / wordSize;\n let rs = new ReedSolomonEncoder(Encoder$1.getGF(wordSize));\n let totalWords = Integer.truncDivision(totalBits, wordSize);\n let messageWords = Encoder$1.bitsToWords(bitArray, wordSize, totalWords);\n rs.encode(messageWords, totalWords - messageSizeInWords);\n let startPad = totalBits % wordSize;\n let messageBits = new BitArray();\n messageBits.appendBits(0, startPad);\n for (const messageWord /*: int*/ of Array.from(messageWords)) {\n messageBits.appendBits(messageWord, wordSize);\n }\n return messageBits;\n }\n static bitsToWords(stuffedBits, wordSize, totalWords) {\n let message = new Int32Array(totalWords);\n let i;\n let n;\n for (i = 0, n = stuffedBits.getSize() / wordSize; i < n; i++) {\n let value = 0;\n for (let j /*int*/ = 0; j < wordSize; j++) {\n value |= stuffedBits.get(i * wordSize + j) ? (1 << wordSize - j - 1) : 0;\n }\n message[i] = value;\n }\n return message;\n }\n static getGF(wordSize) {\n switch (wordSize) {\n case 4:\n return GenericGF.AZTEC_PARAM;\n case 6:\n return GenericGF.AZTEC_DATA_6;\n case 8:\n return GenericGF.AZTEC_DATA_8;\n case 10:\n return GenericGF.AZTEC_DATA_10;\n case 12:\n return GenericGF.AZTEC_DATA_12;\n default:\n throw new IllegalArgumentException('Unsupported word size ' + wordSize);\n }\n }\n static stuffBits(bits, wordSize) {\n let out = new BitArray();\n let n = bits.getSize();\n let mask = (1 << wordSize) - 2;\n for (let i /*int*/ = 0; i < n; i += wordSize) {\n let word = 0;\n for (let j /*int*/ = 0; j < wordSize; j++) {\n if (i + j >= n || bits.get(i + j)) {\n word |= 1 << (wordSize - 1 - j);\n }\n }\n if ((word & mask) === mask) {\n out.appendBits(word & mask, wordSize);\n i--;\n }\n else if ((word & mask) === 0) {\n out.appendBits(word | 1, wordSize);\n i--;\n }\n else {\n out.appendBits(word, wordSize);\n }\n }\n return out;\n }\n static totalBitsInLayer(layers, compact) {\n return ((compact ? 88 : 112) + 16 * layers) * layers;\n }\n }\n Encoder$1.DEFAULT_EC_PERCENT = 33; // default minimal percentage of error check words\n Encoder$1.DEFAULT_AZTEC_LAYERS = 0;\n Encoder$1.MAX_NB_BITS = 32;\n Encoder$1.MAX_NB_BITS_COMPACT = 4;\n Encoder$1.WORD_SIZE = Int32Array.from([\n 4, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12\n ]);\n\n /*\n * Copyright 2013 ZXing authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Renders an Aztec code as a {@link BitMatrix}.\n */\n /*public final*/ class AztecWriter {\n // @Override\n encode(contents, format, width, height) {\n return this.encodeWithHints(contents, format, width, height, null);\n }\n // @Override\n encodeWithHints(contents, format, width, height, hints) {\n let charset = StandardCharsets.ISO_8859_1;\n let eccPercent = Encoder$1.DEFAULT_EC_PERCENT;\n let layers = Encoder$1.DEFAULT_AZTEC_LAYERS;\n if (hints != null) {\n if (hints.has(EncodeHintType$1.CHARACTER_SET)) {\n charset = Charset.forName(hints.get(EncodeHintType$1.CHARACTER_SET).toString());\n }\n if (hints.has(EncodeHintType$1.ERROR_CORRECTION)) {\n eccPercent = Integer.parseInt(hints.get(EncodeHintType$1.ERROR_CORRECTION).toString());\n }\n if (hints.has(EncodeHintType$1.AZTEC_LAYERS)) {\n layers = Integer.parseInt(hints.get(EncodeHintType$1.AZTEC_LAYERS).toString());\n }\n }\n return AztecWriter.encodeLayers(contents, format, width, height, charset, eccPercent, layers);\n }\n static encodeLayers(contents, format, width, height, charset, eccPercent, layers) {\n if (format !== BarcodeFormat$1.AZTEC) {\n throw new IllegalArgumentException('Can only encode AZTEC, but got ' + format);\n }\n let aztec = Encoder$1.encode(StringUtils.getBytes(contents, charset), eccPercent, layers);\n return AztecWriter.renderResult(aztec, width, height);\n }\n static renderResult(code, width, height) {\n let input = code.getMatrix();\n if (input == null) {\n throw new IllegalStateException();\n }\n let inputWidth = input.getWidth();\n let inputHeight = input.getHeight();\n let outputWidth = Math.max(width, inputWidth);\n let outputHeight = Math.max(height, inputHeight);\n let multiple = Math.min(outputWidth / inputWidth, outputHeight / inputHeight);\n let leftPadding = (outputWidth - (inputWidth * multiple)) / 2;\n let topPadding = (outputHeight - (inputHeight * multiple)) / 2;\n let output = new BitMatrix(outputWidth, outputHeight);\n for (let inputY /*int*/ = 0, outputY = topPadding; inputY < inputHeight; inputY++, outputY += multiple) {\n // Write the contents of this row of the barcode\n for (let inputX /*int*/ = 0, outputX = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) {\n if (input.get(inputX, inputY)) {\n output.setRegion(outputX, outputY, multiple, multiple);\n }\n }\n }\n return output;\n }\n }\n\n exports.AbstractExpandedDecoder = AbstractExpandedDecoder;\n exports.ArgumentException = ArgumentException;\n exports.ArithmeticException = ArithmeticException;\n exports.AztecCode = AztecCode;\n exports.AztecCodeReader = AztecReader;\n exports.AztecCodeWriter = AztecWriter;\n exports.AztecDecoder = Decoder;\n exports.AztecDetector = Detector;\n exports.AztecDetectorResult = AztecDetectorResult;\n exports.AztecEncoder = Encoder$1;\n exports.AztecHighLevelEncoder = HighLevelEncoder;\n exports.AztecPoint = Point;\n exports.BarcodeFormat = BarcodeFormat$1;\n exports.Binarizer = Binarizer;\n exports.BinaryBitmap = BinaryBitmap;\n exports.BitArray = BitArray;\n exports.BitMatrix = BitMatrix;\n exports.BitSource = BitSource;\n exports.BrowserAztecCodeReader = BrowserAztecCodeReader;\n exports.BrowserBarcodeReader = BrowserBarcodeReader;\n exports.BrowserCodeReader = BrowserCodeReader;\n exports.BrowserDatamatrixCodeReader = BrowserDatamatrixCodeReader;\n exports.BrowserMultiFormatReader = BrowserMultiFormatReader;\n exports.BrowserPDF417Reader = BrowserPDF417Reader;\n exports.BrowserQRCodeReader = BrowserQRCodeReader;\n exports.BrowserQRCodeSvgWriter = BrowserQRCodeSvgWriter;\n exports.CharacterSetECI = CharacterSetECI;\n exports.ChecksumException = ChecksumException;\n exports.Code128Reader = Code128Reader;\n exports.Code39Reader = Code39Reader;\n exports.DataMatrixDecodedBitStreamParser = DecodedBitStreamParser;\n exports.DataMatrixReader = DataMatrixReader;\n exports.DecodeHintType = DecodeHintType$1;\n exports.DecoderResult = DecoderResult;\n exports.DefaultGridSampler = DefaultGridSampler;\n exports.DetectorResult = DetectorResult;\n exports.EAN13Reader = EAN13Reader;\n exports.EncodeHintType = EncodeHintType$1;\n exports.Exception = Exception;\n exports.FormatException = FormatException;\n exports.GenericGF = GenericGF;\n exports.GenericGFPoly = GenericGFPoly;\n exports.GlobalHistogramBinarizer = GlobalHistogramBinarizer;\n exports.GridSampler = GridSampler;\n exports.GridSamplerInstance = GridSamplerInstance;\n exports.HTMLCanvasElementLuminanceSource = HTMLCanvasElementLuminanceSource;\n exports.HybridBinarizer = HybridBinarizer;\n exports.ITFReader = ITFReader;\n exports.IllegalArgumentException = IllegalArgumentException;\n exports.IllegalStateException = IllegalStateException;\n exports.InvertedLuminanceSource = InvertedLuminanceSource;\n exports.LuminanceSource = LuminanceSource;\n exports.MathUtils = MathUtils;\n exports.MultiFormatOneDReader = MultiFormatOneDReader;\n exports.MultiFormatReader = MultiFormatReader;\n exports.MultiFormatWriter = MultiFormatWriter;\n exports.NotFoundException = NotFoundException;\n exports.OneDReader = OneDReader;\n exports.PDF417DecodedBitStreamParser = DecodedBitStreamParser$2;\n exports.PDF417DecoderErrorCorrection = ErrorCorrection;\n exports.PDF417Reader = PDF417Reader;\n exports.PDF417ResultMetadata = PDF417ResultMetadata;\n exports.PerspectiveTransform = PerspectiveTransform;\n exports.PlanarYUVLuminanceSource = PlanarYUVLuminanceSource;\n exports.QRCodeByteMatrix = ByteMatrix;\n exports.QRCodeDataMask = DataMask;\n exports.QRCodeDecodedBitStreamParser = DecodedBitStreamParser$1;\n exports.QRCodeDecoderErrorCorrectionLevel = ErrorCorrectionLevel;\n exports.QRCodeDecoderFormatInformation = FormatInformation;\n exports.QRCodeEncoder = Encoder;\n exports.QRCodeEncoderQRCode = QRCode;\n exports.QRCodeMaskUtil = MaskUtil;\n exports.QRCodeMatrixUtil = MatrixUtil;\n exports.QRCodeMode = Mode$1;\n exports.QRCodeReader = QRCodeReader;\n exports.QRCodeVersion = Version$1;\n exports.QRCodeWriter = QRCodeWriter;\n exports.RGBLuminanceSource = RGBLuminanceSource;\n exports.RSS14Reader = RSS14Reader;\n exports.RSSExpandedReader = RSSExpandedReader;\n exports.ReaderException = ReaderException;\n exports.ReedSolomonDecoder = ReedSolomonDecoder;\n exports.ReedSolomonEncoder = ReedSolomonEncoder;\n exports.ReedSolomonException = ReedSolomonException;\n exports.Result = Result;\n exports.ResultMetadataType = ResultMetadataType$1;\n exports.ResultPoint = ResultPoint;\n exports.StringUtils = StringUtils;\n exports.UnsupportedOperationException = UnsupportedOperationException;\n exports.VideoInputDevice = VideoInputDevice;\n exports.WhiteRectangleDetector = WhiteRectangleDetector;\n exports.WriterException = WriterException;\n exports.ZXingArrays = Arrays;\n exports.ZXingCharset = Charset;\n exports.ZXingInteger = Integer;\n exports.ZXingStandardCharsets = StandardCharsets;\n exports.ZXingStringBuilder = StringBuilder;\n exports.ZXingStringEncoding = StringEncoding;\n exports.ZXingSystem = System;\n exports.createAbstractExpandedDecoder = createDecoder;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require('@babel/runtime/helpers/regeneratorRuntime')()\nmodule.exports = runtime\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"function getLocalFilePath(path) {\r\n if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {\r\n return path\r\n }\r\n if (path.indexOf('file://') === 0) {\r\n return path\r\n }\r\n if (path.indexOf('/storage/emulated/0/') === 0) {\r\n return path\r\n }\r\n if (path.indexOf('/') === 0) {\r\n var localFilePath = plus.io.convertAbsoluteFileSystem(path)\r\n if (localFilePath !== path) {\r\n return localFilePath\r\n } else {\r\n path = path.substr(1)\r\n }\r\n }\r\n return '_www/' + path\r\n}\r\n\r\nfunction dataUrlToBase64(str) {\r\n var array = str.split(',')\r\n return array[array.length - 1]\r\n}\r\n\r\nvar index = 0\r\nfunction getNewFileId() {\r\n return Date.now() + String(index++)\r\n}\r\n\r\nfunction biggerThan(v1, v2) {\r\n var v1Array = v1.split('.')\r\n var v2Array = v2.split('.')\r\n var update = false\r\n for (var index = 0; index < v2Array.length; index++) {\r\n var diff = v1Array[index] - v2Array[index]\r\n if (diff !== 0) {\r\n update = diff > 0\r\n break\r\n }\r\n }\r\n return update\r\n}\r\n\r\nexport function pathToBase64(path) {\r\n return new Promise(function(resolve, reject) {\r\n if (typeof window === 'object' && 'document' in window) {\r\n if (typeof FileReader === 'function') {\r\n var xhr = new XMLHttpRequest()\r\n xhr.open('GET', path, true)\r\n xhr.responseType = 'blob'\r\n xhr.onload = function() {\r\n if (this.status === 200) {\r\n let fileReader = new FileReader()\r\n fileReader.onload = function(e) {\r\n resolve(e.target.result)\r\n }\r\n fileReader.onerror = reject\r\n fileReader.readAsDataURL(this.response)\r\n }\r\n }\r\n xhr.onerror = reject\r\n xhr.send()\r\n return\r\n }\r\n var canvas = document.createElement('canvas')\r\n var c2x = canvas.getContext('2d')\r\n var img = new Image\r\n img.onload = function() {\r\n canvas.width = img.width\r\n canvas.height = img.height\r\n c2x.drawImage(img, 0, 0)\r\n resolve(canvas.toDataURL())\r\n canvas.height = canvas.width = 0\r\n }\r\n img.onerror = reject\r\n img.src = path\r\n return\r\n }\r\n if (typeof plus === 'object') {\r\n plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {\r\n entry.file(function(file) {\r\n var fileReader = new plus.io.FileReader()\r\n fileReader.onload = function(data) {\r\n resolve(data.target.result)\r\n }\r\n fileReader.onerror = function(error) {\r\n reject(error)\r\n }\r\n fileReader.readAsDataURL(file)\r\n }, function(error) {\r\n reject(error)\r\n })\r\n }, function(error) {\r\n reject(error)\r\n })\r\n return\r\n }\r\n if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {\r\n wx.getFileSystemManager().readFile({\r\n filePath: path,\r\n encoding: 'base64',\r\n success: function(res) {\r\n resolve('data:image/png;base64,' + res.data)\r\n },\r\n fail: function(error) {\r\n reject(error)\r\n }\r\n })\r\n return\r\n }\r\n reject(new Error('not support'))\r\n })\r\n}\r\n\r\nexport function base64ToPath(base64) {\r\n return new Promise(function(resolve, reject) {\r\n if (typeof window === 'object' && 'document' in window) {\r\n base64 = base64.split(',')\r\n var type = base64[0].match(/:(.*?);/)[1]\r\n var str = atob(base64[1])\r\n var n = str.length\r\n var array = new Uint8Array(n)\r\n while (n--) {\r\n array[n] = str.charCodeAt(n)\r\n }\r\n return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))\r\n }\r\n var extName = base64.split(',')[0].match(/data\\:\\S+\\/(\\S+);/)\r\n if (extName) {\r\n extName = extName[1]\r\n } else {\r\n reject(new Error('base64 error'))\r\n }\r\n var fileName = getNewFileId() + '.' + extName\r\n if (typeof plus === 'object') {\r\n var basePath = '_doc'\r\n var dirPath = 'uniapp_temp'\r\n var filePath = basePath + '/' + dirPath + '/' + fileName\r\n if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {\r\n plus.io.resolveLocalFileSystemURL(basePath, function(entry) {\r\n entry.getDirectory(dirPath, {\r\n create: true,\r\n exclusive: false,\r\n }, function(entry) {\r\n entry.getFile(fileName, {\r\n create: true,\r\n exclusive: false,\r\n }, function(entry) {\r\n entry.createWriter(function(writer) {\r\n writer.onwrite = function() {\r\n resolve(filePath)\r\n }\r\n writer.onerror = reject\r\n writer.seek(0)\r\n writer.writeAsBinary(dataUrlToBase64(base64))\r\n }, reject)\r\n }, reject)\r\n }, reject)\r\n }, reject)\r\n return\r\n }\r\n var bitmap = new plus.nativeObj.Bitmap(fileName)\r\n bitmap.loadBase64Data(base64, function() {\r\n bitmap.save(filePath, {}, function() {\r\n bitmap.clear()\r\n resolve(filePath)\r\n }, function(error) {\r\n bitmap.clear()\r\n reject(error)\r\n })\r\n }, function(error) {\r\n bitmap.clear()\r\n reject(error)\r\n })\r\n return\r\n }\r\n if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {\r\n var filePath = wx.env.USER_DATA_PATH + '/' + fileName\r\n wx.getFileSystemManager().writeFile({\r\n filePath: filePath,\r\n data: dataUrlToBase64(base64),\r\n encoding: 'base64',\r\n success: function() {\r\n resolve(filePath)\r\n },\r\n fail: function(error) {\r\n reject(error)\r\n }\r\n })\r\n return\r\n }\r\n reject(new Error('not support'))\r\n })\r\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export const lunar = {\r\n /**\r\n * 农历1900-2100的润大小信息表\r\n * @Array Of Property\r\n * @return Hex\r\n */\r\n lunarInfo: [\r\n 0x04bd8,\r\n 0x04ae0,\r\n 0x0a570,\r\n 0x054d5,\r\n 0x0d260,\r\n 0x0d950,\r\n 0x16554,\r\n 0x056a0,\r\n 0x09ad0,\r\n 0x055d2, //1900-1909\r\n 0x04ae0,\r\n 0x0a5b6,\r\n 0x0a4d0,\r\n 0x0d250,\r\n 0x1d255,\r\n 0x0b540,\r\n 0x0d6a0,\r\n 0x0ada2,\r\n 0x095b0,\r\n 0x14977, //1910-1919\r\n 0x04970,\r\n 0x0a4b0,\r\n 0x0b4b5,\r\n 0x06a50,\r\n 0x06d40,\r\n 0x1ab54,\r\n 0x02b60,\r\n 0x09570,\r\n 0x052f2,\r\n 0x04970, //1920-1929\r\n 0x06566,\r\n 0x0d4a0,\r\n 0x0ea50,\r\n 0x16a95,\r\n 0x05ad0,\r\n 0x02b60,\r\n 0x186e3,\r\n 0x092e0,\r\n 0x1c8d7,\r\n 0x0c950, //1930-1939\r\n 0x0d4a0,\r\n 0x1d8a6,\r\n 0x0b550,\r\n 0x056a0,\r\n 0x1a5b4,\r\n 0x025d0,\r\n 0x092d0,\r\n 0x0d2b2,\r\n 0x0a950,\r\n 0x0b557, //1940-1949\r\n 0x06ca0,\r\n 0x0b550,\r\n 0x15355,\r\n 0x04da0,\r\n 0x0a5b0,\r\n 0x14573,\r\n 0x052b0,\r\n 0x0a9a8,\r\n 0x0e950,\r\n 0x06aa0, //1950-1959\r\n 0x0aea6,\r\n 0x0ab50,\r\n 0x04b60,\r\n 0x0aae4,\r\n 0x0a570,\r\n 0x05260,\r\n 0x0f263,\r\n 0x0d950,\r\n 0x05b57,\r\n 0x056a0, //1960-1969\r\n 0x096d0,\r\n 0x04dd5,\r\n 0x04ad0,\r\n 0x0a4d0,\r\n 0x0d4d4,\r\n 0x0d250,\r\n 0x0d558,\r\n 0x0b540,\r\n 0x0b6a0,\r\n 0x195a6, //1970-1979\r\n 0x095b0,\r\n 0x049b0,\r\n 0x0a974,\r\n 0x0a4b0,\r\n 0x0b27a,\r\n 0x06a50,\r\n 0x06d40,\r\n 0x0af46,\r\n 0x0ab60,\r\n 0x09570, //1980-1989\r\n 0x04af5,\r\n 0x04970,\r\n 0x064b0,\r\n 0x074a3,\r\n 0x0ea50,\r\n 0x06b58,\r\n 0x05ac0,\r\n 0x0ab60,\r\n 0x096d5,\r\n 0x092e0, //1990-1999\r\n 0x0c960,\r\n 0x0d954,\r\n 0x0d4a0,\r\n 0x0da50,\r\n 0x07552,\r\n 0x056a0,\r\n 0x0abb7,\r\n 0x025d0,\r\n 0x092d0,\r\n 0x0cab5, //2000-2009\r\n 0x0a950,\r\n 0x0b4a0,\r\n 0x0baa4,\r\n 0x0ad50,\r\n 0x055d9,\r\n 0x04ba0,\r\n 0x0a5b0,\r\n 0x15176,\r\n 0x052b0,\r\n 0x0a930, //2010-2019\r\n 0x07954,\r\n 0x06aa0,\r\n 0x0ad50,\r\n 0x05b52,\r\n 0x04b60,\r\n 0x0a6e6,\r\n 0x0a4e0,\r\n 0x0d260,\r\n 0x0ea65,\r\n 0x0d530, //2020-2029\r\n 0x05aa0,\r\n 0x076a3,\r\n 0x096d0,\r\n 0x04afb,\r\n 0x04ad0,\r\n 0x0a4d0,\r\n 0x1d0b6,\r\n 0x0d250,\r\n 0x0d520,\r\n 0x0dd45, //2030-2039\r\n 0x0b5a0,\r\n 0x056d0,\r\n 0x055b2,\r\n 0x049b0,\r\n 0x0a577,\r\n 0x0a4b0,\r\n 0x0aa50,\r\n 0x1b255,\r\n 0x06d20,\r\n 0x0ada0, //2040-2049\r\n /**Add By JJonline@JJonline.Cn**/\r\n 0x14b63,\r\n 0x09370,\r\n 0x049f8,\r\n 0x04970,\r\n 0x064b0,\r\n 0x168a6,\r\n 0x0ea50,\r\n 0x06b20,\r\n 0x1a6c4,\r\n 0x0aae0, //2050-2059\r\n 0x092e0,\r\n 0x0d2e3,\r\n 0x0c960,\r\n 0x0d557,\r\n 0x0d4a0,\r\n 0x0da50,\r\n 0x05d55,\r\n 0x056a0,\r\n 0x0a6d0,\r\n 0x055d4, //2060-2069\r\n 0x052d0,\r\n 0x0a9b8,\r\n 0x0a950,\r\n 0x0b4a0,\r\n 0x0b6a6,\r\n 0x0ad50,\r\n 0x055a0,\r\n 0x0aba4,\r\n 0x0a5b0,\r\n 0x052b0, //2070-2079\r\n 0x0b273,\r\n 0x06930,\r\n 0x07337,\r\n 0x06aa0,\r\n 0x0ad50,\r\n 0x14b55,\r\n 0x04b60,\r\n 0x0a570,\r\n 0x054e4,\r\n 0x0d160, //2080-2089\r\n 0x0e968,\r\n 0x0d520,\r\n 0x0daa0,\r\n 0x16aa6,\r\n 0x056d0,\r\n 0x04ae0,\r\n 0x0a9d4,\r\n 0x0a2d0,\r\n 0x0d150,\r\n 0x0f252, //2090-2099\r\n 0x0d520,\r\n ], //2100\r\n\r\n /**\r\n * 公历每个月份的天数普通表\r\n * @Array Of Property\r\n * @return Number\r\n */\r\n solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\r\n\r\n /**\r\n * 天干地支之天干速查表\r\n * @Array Of Property trans[\"甲\",\"乙\",\"丙\",\"丁\",\"戊\",\"己\",\"庚\",\"辛\",\"壬\",\"癸\"]\r\n * @return Cn string\r\n */\r\n Gan: [\r\n \"\\u7532\",\r\n \"\\u4e59\",\r\n \"\\u4e19\",\r\n \"\\u4e01\",\r\n \"\\u620a\",\r\n \"\\u5df1\",\r\n \"\\u5e9a\",\r\n \"\\u8f9b\",\r\n \"\\u58ec\",\r\n \"\\u7678\",\r\n ],\r\n\r\n /**\r\n * 天干地支之地支速查表\r\n * @Array Of Property\r\n * @trans[\"子\",\"丑\",\"寅\",\"卯\",\"辰\",\"巳\",\"午\",\"未\",\"申\",\"酉\",\"戌\",\"亥\"]\r\n * @return Cn string\r\n */\r\n Zhi: [\r\n \"\\u5b50\",\r\n \"\\u4e11\",\r\n \"\\u5bc5\",\r\n \"\\u536f\",\r\n \"\\u8fb0\",\r\n \"\\u5df3\",\r\n \"\\u5348\",\r\n \"\\u672a\",\r\n \"\\u7533\",\r\n \"\\u9149\",\r\n \"\\u620c\",\r\n \"\\u4ea5\",\r\n ],\r\n\r\n /**\r\n * 天干地支之地支速查表<=>生肖\r\n * @Array Of Property\r\n * @trans[\"鼠\",\"牛\",\"虎\",\"兔\",\"龙\",\"蛇\",\"马\",\"羊\",\"猴\",\"鸡\",\"狗\",\"猪\"]\r\n * @return Cn string\r\n */\r\n Animals: [\r\n \"\\u9f20\",\r\n \"\\u725b\",\r\n \"\\u864e\",\r\n \"\\u5154\",\r\n \"\\u9f99\",\r\n \"\\u86c7\",\r\n \"\\u9a6c\",\r\n \"\\u7f8a\",\r\n \"\\u7334\",\r\n \"\\u9e21\",\r\n \"\\u72d7\",\r\n \"\\u732a\",\r\n ],\r\n\r\n /**\r\n * 阳历节日\r\n */\r\n festival: {\r\n \"1-1\": { title: \"元旦\" },\r\n \"2-14\": { title: \"情人节\" },\r\n \"5-1\": { title: \"劳动节\" },\r\n \"5-4\": { title: \"青年节\" },\r\n \"6-1\": { title: \"儿童节\" },\r\n \"9-10\": { title: \"教师节\" },\r\n \"10-1\": { title: \"国庆节\" },\r\n \"12-25\": { title: \"圣诞节\" },\r\n\r\n \"3-8\": { title: \"妇女节\" },\r\n \"3-12\": { title: \"植树节\" },\r\n \"4-1\": { title: \"愚人节\" },\r\n \"4-4\": { title: \"清明节\" },\r\n \"5-12\": { title: \"护士节\" },\r\n \"7-1\": { title: \"建党节\" },\r\n \"8-1\": { title: \"建军节\" },\r\n \"12-24\": { title: \"平安夜\" },\r\n },\r\n\r\n /**\r\n * 农历节日\r\n */\r\n lFestival: {\r\n \"12-30\": { title: \"除夕\" },\r\n \"1-1\": { title: \"春节\" },\r\n \"1-15\": { title: \"元宵节\" },\r\n \"2-2\": { title: \"龙抬头\" },\r\n \"5-5\": { title: \"端午节\" },\r\n \"7-7\": { title: \"七夕节\" },\r\n \"7-15\": { title: \"中元节\" },\r\n \"8-15\": { title: \"中秋节\" },\r\n \"9-9\": { title: \"重阳节\" },\r\n \"10-1\": { title: \"寒衣节\" },\r\n \"10-15\": { title: \"下元节\" },\r\n \"12-8\": { title: \"腊八节\" },\r\n \"12-23\": { title: \"北方小年\" },\r\n \"12-24\": { title: \"南方小年\" },\r\n },\r\n\r\n /**\r\n * 返回默认定义的阳历节日\r\n */\r\n getFestival() {\r\n return this.festival;\r\n },\r\n\r\n /**\r\n * 返回默认定义的内容里节日\r\n */\r\n getLunarFestival() {\r\n return this.lFestival;\r\n },\r\n\r\n /**\r\n *\r\n * @param param {Object} 按照festival的格式输入数据,设置阳历节日\r\n */\r\n setFestival(param = {}) {\r\n this.festival = param;\r\n },\r\n\r\n /**\r\n *\r\n * @param param {Object} 按照lFestival的格式输入数据,设置农历节日\r\n */\r\n setLunarFestival(param = {}) {\r\n this.lFestival = param;\r\n },\r\n\r\n /**\r\n * 24节气速查表\r\n * @Array Of Property\r\n * @trans[\"小寒\",\"大寒\",\"立春\",\"雨水\",\"惊蛰\",\"春分\",\"清明\",\"谷雨\",\"立夏\",\"小满\",\"芒种\",\"夏至\",\"小暑\",\"大暑\",\"立秋\",\"处暑\",\"白露\",\"秋分\",\"寒露\",\"霜降\",\"立冬\",\"小雪\",\"大雪\",\"冬至\"]\r\n * @return Cn string\r\n */\r\n solarTerm: [\r\n \"\\u5c0f\\u5bd2\",\r\n \"\\u5927\\u5bd2\",\r\n \"\\u7acb\\u6625\",\r\n \"\\u96e8\\u6c34\",\r\n \"\\u60ca\\u86f0\",\r\n \"\\u6625\\u5206\",\r\n \"\\u6e05\\u660e\",\r\n \"\\u8c37\\u96e8\",\r\n \"\\u7acb\\u590f\",\r\n \"\\u5c0f\\u6ee1\",\r\n \"\\u8292\\u79cd\",\r\n \"\\u590f\\u81f3\",\r\n \"\\u5c0f\\u6691\",\r\n \"\\u5927\\u6691\",\r\n \"\\u7acb\\u79cb\",\r\n \"\\u5904\\u6691\",\r\n \"\\u767d\\u9732\",\r\n \"\\u79cb\\u5206\",\r\n \"\\u5bd2\\u9732\",\r\n \"\\u971c\\u964d\",\r\n \"\\u7acb\\u51ac\",\r\n \"\\u5c0f\\u96ea\",\r\n \"\\u5927\\u96ea\",\r\n \"\\u51ac\\u81f3\",\r\n ],\r\n\r\n /**\r\n * 1900-2100各年的24节气日期速查表\r\n * @Array Of Property\r\n * @return 0x string For splice\r\n */\r\n sTermInfo: [\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c3598082c95f8c965cc920f\",\r\n \"97bd0b06bdb0722c965ce1cfcc920f\",\r\n \"b027097bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c359801ec95f8c965cc920f\",\r\n \"97bd0b06bdb0722c965ce1cfcc920f\",\r\n \"b027097bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c359801ec95f8c965cc920f\",\r\n \"97bd0b06bdb0722c965ce1cfcc920f\",\r\n \"b027097bd097c36b0b6fc9274c91aa\",\r\n \"9778397bd19801ec9210c965cc920e\",\r\n \"97b6b97bd19801ec95f8c965cc920f\",\r\n \"97bd09801d98082c95f8e1cfcc920f\",\r\n \"97bd097bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd197c36c9210c9274c91aa\",\r\n \"97b6b97bd19801ec95f8c965cc920e\",\r\n \"97bd09801d98082c95f8e1cfcc920f\",\r\n \"97bd097bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36c9210c9274c91aa\",\r\n \"97b6b97bd19801ec95f8c965cc920e\",\r\n \"97bcf97c3598082c95f8e1cfcc920f\",\r\n \"97bd097bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36c9210c9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c3598082c95f8c965cc920f\",\r\n \"97bd097bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c3598082c95f8c965cc920f\",\r\n \"97bd097bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c359801ec95f8c965cc920f\",\r\n \"97bd097bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c359801ec95f8c965cc920f\",\r\n \"97bd097bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf97c359801ec95f8c965cc920f\",\r\n \"97bd097bd07f595b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd19801ec9210c9274c920e\",\r\n \"97b6b97bd19801ec95f8c965cc920f\",\r\n \"97bd07f5307f595b0b0bc920fb0722\",\r\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36c9210c9274c920e\",\r\n \"97b6b97bd19801ec95f8c965cc920f\",\r\n \"97bd07f5307f595b0b0bc920fb0722\",\r\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36c9210c9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bd07f1487f595b0b0bc920fb0722\",\r\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf7f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf7f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf7f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c965cc920e\",\r\n \"97bcf7f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b97bd19801ec9210c9274c920e\",\r\n \"97bcf7f0e47f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"9778397bd097c36b0b6fc9210c91aa\",\r\n \"97b6b97bd197c36c9210c9274c920e\",\r\n \"97bcf7f0e47f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"9778397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36c9210c9274c920e\",\r\n \"97b6b7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f5307f595b0b0bc920fb0722\",\r\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\r\n \"9778397bd097c36b0b70c9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"9778397bd097c36b0b6fc9274c91aa\",\r\n \"97b6b7f0e47f531b0723b0787b0721\",\r\n \"7f0e27f0e47f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"9778397bd097c36b0b6fc9210c91aa\",\r\n \"97b6b7f0e47f149b0723b0787b0721\",\r\n \"7f0e27f0e47f531b0723b0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"9778397bd097c36b0b6fc9210c8dc2\",\r\n \"977837f0e37f149b0723b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f5307f595b0b0bc920fb0722\",\r\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\r\n \"977837f0e37f14998082b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\r\n \"977837f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"977837f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd097c35b0b6fc920fb0722\",\r\n \"977837f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"977837f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"977837f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f149b0723b0787b0721\",\r\n \"7f0e27f0e47f531b0b0bb0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"977837f0e37f14998082b0723b06bd\",\r\n \"7f07e7f0e37f149b0723b0787b0721\",\r\n \"7f0e27f0e47f531b0723b0b6fb0722\",\r\n \"7f0e397bd07f595b0b0bc920fb0722\",\r\n \"977837f0e37f14898082b0723b02d5\",\r\n \"7ec967f0e37f14998082b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\r\n \"7f0e37f0e37f14898082b0723b02d5\",\r\n \"7ec967f0e37f14998082b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e37f0e37f14898082b0723b02d5\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e37f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e37f0e37f14898082b072297c35\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e37f0e37f14898082b072297c35\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e37f0e366aa89801eb072297c35\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f149b0723b0787b0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n \"7f0e37f0e366aa89801eb072297c35\",\r\n \"7ec967f0e37f14998082b0723b06bd\",\r\n \"7f07e7f0e47f149b0723b0787b0721\",\r\n \"7f0e27f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f0e366aa89801eb072297c35\",\r\n \"7ec967f0e37f14998082b0723b06bd\",\r\n \"7f07e7f0e37f14998083b0787b0721\",\r\n \"7f0e27f0e47f531b0723b0b6fb0722\",\r\n \"7f0e37f0e366aa89801eb072297c35\",\r\n \"7ec967f0e37f14898082b0723b02d5\",\r\n \"7f07e7f0e37f14998082b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e36665b66aa89801e9808297c35\",\r\n \"665f67f0e37f14898082b0723b02d5\",\r\n \"7ec967f0e37f14998082b0787b0721\",\r\n \"7f07e7f0e47f531b0723b0b6fb0722\",\r\n \"7f0e36665b66a449801e9808297c35\",\r\n \"665f67f0e37f14898082b0723b02d5\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e36665b66a449801e9808297c35\",\r\n \"665f67f0e37f14898082b072297c35\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e26665b66a449801e9808297c35\",\r\n \"665f67f0e37f1489801eb072297c35\",\r\n \"7ec967f0e37f14998082b0787b06bd\",\r\n \"7f07e7f0e47f531b0723b0b6fb0721\",\r\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\r\n ],\r\n\r\n /**\r\n * 数字转中文速查表\r\n * @Array Of Property\r\n * @trans ['日','一','二','三','四','五','六','七','八','九','十']\r\n * @return Cn string\r\n */\r\n nStr1: [\r\n \"\\u65e5\",\r\n \"\\u4e00\",\r\n \"\\u4e8c\",\r\n \"\\u4e09\",\r\n \"\\u56db\",\r\n \"\\u4e94\",\r\n \"\\u516d\",\r\n \"\\u4e03\",\r\n \"\\u516b\",\r\n \"\\u4e5d\",\r\n \"\\u5341\",\r\n ],\r\n\r\n /**\r\n * 日期转农历称呼速查表\r\n * @Array Of Property\r\n * @trans ['初','十','廿','卅']\r\n * @return Cn string\r\n */\r\n nStr2: [\"\\u521d\", \"\\u5341\", \"\\u5eff\", \"\\u5345\"],\r\n\r\n /**\r\n * 月份转农历称呼速查表\r\n * @Array Of Property\r\n * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']\r\n * @return Cn string\r\n */\r\n nStr3: [\r\n \"\\u6b63\",\r\n \"\\u4e8c\",\r\n \"\\u4e09\",\r\n \"\\u56db\",\r\n \"\\u4e94\",\r\n \"\\u516d\",\r\n \"\\u4e03\",\r\n \"\\u516b\",\r\n \"\\u4e5d\",\r\n \"\\u5341\",\r\n \"\\u51ac\",\r\n \"\\u814a\",\r\n ],\r\n\r\n /**\r\n * 返回农历y年一整年的总天数\r\n * @param y lunar Year\r\n * @return Number\r\n * @eg:var count = calendar.lYearDays(1987) ;//count=387\r\n */\r\n lYearDays: function (y) {\r\n let i,\r\n sum = 348;\r\n for (i = 0x8000; i > 0x8; i >>= 1) {\r\n sum += this.lunarInfo[y - 1900] & i ? 1 : 0;\r\n }\r\n return sum + this.leapDays(y);\r\n },\r\n\r\n /**\r\n * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0\r\n * @param y lunar Year\r\n * @return Number (0-12)\r\n * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6\r\n */\r\n leapMonth: function (y) {\r\n //闰字编码 \\u95f0\r\n return this.lunarInfo[y - 1900] & 0xf;\r\n },\r\n\r\n /**\r\n * 返回农历y年闰月的天数 若该年没有闰月则返回0\r\n * @param y lunar Year\r\n * @return Number (0、29、30)\r\n * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29\r\n */\r\n leapDays: function (y) {\r\n if (this.leapMonth(y)) {\r\n return this.lunarInfo[y - 1900] & 0x10000 ? 30 : 29;\r\n }\r\n return 0;\r\n },\r\n\r\n /**\r\n * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法\r\n * @param y lunar Year\r\n * @param m lunar Month\r\n * @return Number (-1、29、30)\r\n * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29\r\n */\r\n monthDays: function (y, m) {\r\n if (m > 12 || m < 1) {\r\n return -1;\r\n } //月份参数从1至12,参数错误返回-1\r\n return this.lunarInfo[y - 1900] & (0x10000 >> m) ? 30 : 29;\r\n },\r\n\r\n /**\r\n * 返回公历(!)y年m月的天数\r\n * @param y solar Year\r\n * @param m solar Month\r\n * @return Number (-1、28、29、30、31)\r\n * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30\r\n */\r\n solarDays: function (y, m) {\r\n if (m > 12 || m < 1) {\r\n return -1;\r\n } //若参数错误 返回-1\r\n const ms = m - 1;\r\n if (ms === 1) {\r\n //2月份的闰平规律测算后确认返回28或29\r\n return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 ? 29 : 28;\r\n } else {\r\n return this.solarMonth[ms];\r\n }\r\n },\r\n\r\n /**\r\n * 农历年份转换为干支纪年\r\n * @param lYear 农历年的年份数\r\n * @return Cn string\r\n */\r\n toGanZhiYear: function (lYear) {\r\n var ganKey = (lYear - 3) % 10;\r\n var zhiKey = (lYear - 3) % 12;\r\n if (ganKey === 0) ganKey = 10; //如果余数为0则为最后一个天干\r\n if (zhiKey === 0) zhiKey = 12; //如果余数为0则为最后一个地支\r\n return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];\r\n },\r\n\r\n /**\r\n * 公历月、日判断所属星座\r\n * @param cMonth [description]\r\n * @param cDay [description]\r\n * @return Cn string\r\n */\r\n toAstro: function (cMonth, cDay) {\r\n const s =\r\n \"\\u9b54\\u7faf\\u6c34\\u74f6\\u53cc\\u9c7c\\u767d\\u7f8a\\u91d1\\u725b\\u53cc\\u5b50\\u5de8\\u87f9\\u72ee\\u5b50\\u5904\\u5973\\u5929\\u79e4\\u5929\\u874e\\u5c04\\u624b\\u9b54\\u7faf\";\r\n const arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];\r\n return (\r\n s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + \"\\u5ea7\"\r\n ); //座\r\n },\r\n\r\n /**\r\n * 传入offset偏移量返回干支\r\n * @param offset 相对甲子的偏移量\r\n * @return Cn string\r\n */\r\n toGanZhi: function (offset) {\r\n return this.Gan[offset % 10] + this.Zhi[offset % 12];\r\n },\r\n\r\n /**\r\n * 传入公历(!)y年获得该年第n个节气的公历日期\r\n * @param y y公历年(1900-2100)\r\n * @param n n二十四节气中的第几个节气(1~24);从n=1(小寒)算起\r\n * @return day Number\r\n * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春\r\n */\r\n getTerm: function (y, n) {\r\n if (y < 1900 || y > 2100 || n < 1 || n > 24) {\r\n return -1;\r\n }\r\n const _table = this.sTermInfo[y - 1900];\r\n const _calcDay = [];\r\n for (let index = 0; index < _table.length; index += 5) {\r\n const chunk = parseInt(\"0x\" + _table.substr(index, 5)).toString();\r\n _calcDay.push(chunk[0], chunk.substr(1, 2), chunk[3], chunk.substr(4, 2));\r\n }\r\n return parseInt(_calcDay[n - 1]);\r\n },\r\n\r\n /**\r\n * 传入农历数字月份返回汉语通俗表示法\r\n * @param m lunar month\r\n * @return Cn string\r\n * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'\r\n */\r\n toChinaMonth: function (m) {\r\n // 月 => \\u6708\r\n if (m > 12 || m < 1) {\r\n return -1;\r\n } //若参数错误 返回-1\r\n let s = this.nStr3[m - 1];\r\n s += \"\\u6708\"; //加上月字\r\n return s;\r\n },\r\n\r\n /**\r\n * 传入农历日期数字返回汉字表示法\r\n * @param d lunar day\r\n * @return Cn string\r\n * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'\r\n */\r\n toChinaDay: function (d) {\r\n //日 => \\u65e5\r\n let s;\r\n switch (d) {\r\n case 10:\r\n s = \"\\u521d\\u5341\";\r\n break;\r\n case 20:\r\n s = \"\\u4e8c\\u5341\";\r\n break;\r\n case 30:\r\n s = \"\\u4e09\\u5341\";\r\n break;\r\n default:\r\n s = this.nStr2[Math.floor(d / 10)];\r\n s += this.nStr1[d % 10];\r\n }\r\n return s;\r\n },\r\n\r\n /**\r\n * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”\r\n * @param y year\r\n * @return Cn string\r\n * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'\r\n */\r\n getAnimal: function (y) {\r\n return this.Animals[(y - 4) % 12];\r\n },\r\n\r\n /**\r\n * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON\r\n * !important! 公历参数区间1900.1.31~2100.12.31\r\n * @param yPara solar year\r\n * @param mPara solar month\r\n * @param dPara solar day\r\n * @return JSON object\r\n * @eg:console.log(calendar.solar2lunar(1987,11,01));\r\n */\r\n solar2lunar: function (yPara, mPara, dPara) {\r\n let y = parseInt(yPara);\r\n let m = parseInt(mPara);\r\n let d = parseInt(dPara);\r\n //年份限定、上限\r\n if (y < 1900 || y > 2100) {\r\n return -1; // undefined转换为数字变为NaN\r\n }\r\n //公历传参最下限\r\n if (y === 1900 && m === 1 && d < 31) {\r\n return -1;\r\n }\r\n\r\n //未传参 获得当天\r\n let objDate;\r\n if (!y) {\r\n objDate = new Date();\r\n } else {\r\n objDate = new Date(y, parseInt(m) - 1, d);\r\n }\r\n let i,\r\n leap = 0,\r\n temp = 0;\r\n //修正ymd参数\r\n y = objDate.getFullYear();\r\n m = objDate.getMonth() + 1;\r\n d = objDate.getDate();\r\n let offset =\r\n (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) -\r\n Date.UTC(1900, 0, 31)) /\r\n 86400000;\r\n for (i = 1900; i < 2101 && offset > 0; i++) {\r\n temp = this.lYearDays(i);\r\n offset -= temp;\r\n }\r\n if (offset < 0) {\r\n offset += temp;\r\n i--;\r\n }\r\n\r\n //是否今天\r\n let isTodayObj = new Date(),\r\n isToday = false;\r\n if (\r\n isTodayObj.getFullYear() === y &&\r\n isTodayObj.getMonth() + 1 === m &&\r\n isTodayObj.getDate() === d\r\n ) {\r\n isToday = true;\r\n }\r\n //星期几\r\n let nWeek = objDate.getDay(),\r\n cWeek = this.nStr1[nWeek];\r\n //数字表示周几顺应天朝周一开始的惯例\r\n if (nWeek === 0) {\r\n nWeek = 7;\r\n }\r\n //农历年\r\n const year = i;\r\n leap = this.leapMonth(i); //闰哪个月\r\n let isLeap = false;\r\n\r\n //效验闰月\r\n for (i = 1; i < 13 && offset > 0; i++) {\r\n //闰月\r\n if (leap > 0 && i === leap + 1 && isLeap === false) {\r\n --i;\r\n isLeap = true;\r\n temp = this.leapDays(year); //计算农历闰月天数\r\n } else {\r\n temp = this.monthDays(year, i); //计算农历普通月天数\r\n }\r\n //解除闰月\r\n if (isLeap === true && i === leap + 1) {\r\n isLeap = false;\r\n }\r\n offset -= temp;\r\n }\r\n // 闰月导致数组下标重叠取反\r\n if (offset === 0 && leap > 0 && i === leap + 1) {\r\n if (isLeap) {\r\n isLeap = false;\r\n } else {\r\n isLeap = true;\r\n --i;\r\n }\r\n }\r\n if (offset < 0) {\r\n offset += temp;\r\n --i;\r\n }\r\n //农历月\r\n const month = i;\r\n //农历日\r\n const day = offset + 1;\r\n //天干地支处理\r\n const sm = m - 1;\r\n const gzY = this.toGanZhiYear(year);\r\n\r\n // 当月的两个节气\r\n // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`\r\n const firstNode = this.getTerm(y, m * 2 - 1); //返回当月「节」为几日开始\r\n const secondNode = this.getTerm(y, m * 2); //返回当月「节」为几日开始\r\n\r\n // 依据12节气修正干支月\r\n let gzM = this.toGanZhi((y - 1900) * 12 + m + 11);\r\n if (d >= firstNode) {\r\n gzM = this.toGanZhi((y - 1900) * 12 + m + 12);\r\n }\r\n\r\n //传入的日期的节气与否\r\n let isTerm = false;\r\n let Term = null;\r\n if (firstNode === d) {\r\n isTerm = true;\r\n Term = this.solarTerm[m * 2 - 2];\r\n }\r\n if (secondNode === d) {\r\n isTerm = true;\r\n Term = this.solarTerm[m * 2 - 1];\r\n }\r\n //日柱 当月一日与 1900/1/1 相差天数\r\n const dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;\r\n const gzD = this.toGanZhi(dayCyclical + d - 1);\r\n //该日期所属的星座\r\n const astro = this.toAstro(m, d);\r\n\r\n const solarDate = y + \"-\" + m + \"-\" + d;\r\n const lunarDate = year + \"-\" + month + \"-\" + day;\r\n\r\n const festival = this.festival;\r\n const lFestival = this.lFestival;\r\n\r\n const festivalDate = m + \"-\" + d;\r\n let lunarFestivalDate = month + \"-\" + day;\r\n\r\n // bugfix https://github.com/jjonline/calendar.js/issues/29\r\n // 农历节日修正:农历12月小月则29号除夕,大月则30号除夕\r\n // 此处取巧修正:当前为农历12月29号时增加一次判断并且把lunarFestivalDate设置为12-30以正确取得除夕\r\n // 天朝农历节日遇闰月过前不过后的原则,此处取农历12月天数不考虑闰月\r\n // 农历润12月在本工具支持的200年区间内仅1574年出现\r\n if (month === 12 && day === 29 && this.monthDays(year, month) === 29) {\r\n lunarFestivalDate = \"12-30\";\r\n }\r\n return {\r\n date: solarDate,\r\n lunarDate: lunarDate,\r\n festival: festival[festivalDate] ? festival[festivalDate].title : null,\r\n lunarFestival: lFestival[lunarFestivalDate]\r\n ? lFestival[lunarFestivalDate].title\r\n : null,\r\n lYear: year,\r\n lMonth: month,\r\n lDay: day,\r\n Animal: this.getAnimal(year),\r\n IMonthCn: (isLeap ? \"\\u95f0\" : \"\") + this.toChinaMonth(month),\r\n IDayCn: this.toChinaDay(day),\r\n cYear: y,\r\n cMonth: m,\r\n cDay: d,\r\n gzYear: gzY,\r\n gzMonth: gzM,\r\n gzDay: gzD,\r\n isToday: isToday,\r\n isLeap: isLeap,\r\n nWeek: nWeek,\r\n ncWeek: \"\\u661f\\u671f\" + cWeek,\r\n isTerm: isTerm,\r\n Term: Term,\r\n astro: astro,\r\n };\r\n },\r\n\r\n /**\r\n * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON\r\n * !important! 参数区间1900.1.31~2100.12.1\r\n * @param y lunar year\r\n * @param m lunar month\r\n * @param d lunar day\r\n * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]\r\n * @return JSON object\r\n * @eg:console.log(calendar.lunar2solar(1987,9,10));\r\n */\r\n lunar2solar: function (y, m, d, isLeapMonth) {\r\n y = parseInt(y);\r\n m = parseInt(m);\r\n d = parseInt(d);\r\n isLeapMonth = !!isLeapMonth;\r\n const leapOffset = 0;\r\n const leapMonth = this.leapMonth(y);\r\n const leapDay = this.leapDays(y);\r\n if (isLeapMonth && leapMonth !== m) {\r\n return -1;\r\n } //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同\r\n if (\r\n (y === 2100 && m === 12 && d > 1) ||\r\n (y === 1900 && m === 1 && d < 31)\r\n ) {\r\n return -1;\r\n } //超出了最大极限值\r\n const day = this.monthDays(y, m);\r\n let _day = day;\r\n //bugFix 2016-9-25\r\n //if month is leap, _day use leapDays method\r\n if (isLeapMonth) {\r\n _day = this.leapDays(y, m);\r\n }\r\n if (y < 1900 || y > 2100 || d > _day) {\r\n return -1;\r\n } //参数合法性效验\r\n\r\n //计算农历的时间差\r\n let offset = 0;\r\n let i;\r\n for (i = 1900; i < y; i++) {\r\n offset += this.lYearDays(i);\r\n }\r\n let leap = 0,\r\n isAdd = false;\r\n for (i = 1; i < m; i++) {\r\n leap = this.leapMonth(y);\r\n if (!isAdd) {\r\n //处理闰月\r\n if (leap <= i && leap > 0) {\r\n offset += this.leapDays(y);\r\n isAdd = true;\r\n }\r\n }\r\n offset += this.monthDays(y, i);\r\n }\r\n //转换闰月农历 需补充该年闰月的前一个月的时差\r\n if (isLeapMonth) {\r\n offset += day;\r\n }\r\n //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)\r\n const strap = Date.UTC(1900, 1, 30, 0, 0, 0);\r\n const calObj = new Date((offset + d - 31) * 86400000 + strap);\r\n const cY = calObj.getUTCFullYear();\r\n const cM = calObj.getUTCMonth() + 1;\r\n const cD = calObj.getUTCDate();\r\n\r\n return this.solar2lunar(cY, cM, cD);\r\n },\r\n};\r\n","export default {\r\n \"id\": \"2852637\",\r\n \"name\": \"uniui图标库\",\r\n \"font_family\": \"uniicons\",\r\n \"css_prefix_text\": \"uniui-\",\r\n \"description\": \"\",\r\n \"glyphs\": [\r\n {\r\n \"icon_id\": \"25027049\",\r\n \"name\": \"yanse\",\r\n \"font_class\": \"color\",\r\n \"unicode\": \"e6cf\",\r\n \"unicode_decimal\": 59087\r\n },\r\n {\r\n \"icon_id\": \"25027048\",\r\n \"name\": \"wallet\",\r\n \"font_class\": \"wallet\",\r\n \"unicode\": \"e6b1\",\r\n \"unicode_decimal\": 59057\r\n },\r\n {\r\n \"icon_id\": \"25015720\",\r\n \"name\": \"settings-filled\",\r\n \"font_class\": \"settings-filled\",\r\n \"unicode\": \"e6ce\",\r\n \"unicode_decimal\": 59086\r\n },\r\n {\r\n \"icon_id\": \"25015434\",\r\n \"name\": \"shimingrenzheng-filled\",\r\n \"font_class\": \"auth-filled\",\r\n \"unicode\": \"e6cc\",\r\n \"unicode_decimal\": 59084\r\n },\r\n {\r\n \"icon_id\": \"24934246\",\r\n \"name\": \"shop-filled\",\r\n \"font_class\": \"shop-filled\",\r\n \"unicode\": \"e6cd\",\r\n \"unicode_decimal\": 59085\r\n },\r\n {\r\n \"icon_id\": \"24934159\",\r\n \"name\": \"staff-filled-01\",\r\n \"font_class\": \"staff-filled\",\r\n \"unicode\": \"e6cb\",\r\n \"unicode_decimal\": 59083\r\n },\r\n {\r\n \"icon_id\": \"24932461\",\r\n \"name\": \"VIP-filled\",\r\n \"font_class\": \"vip-filled\",\r\n \"unicode\": \"e6c6\",\r\n \"unicode_decimal\": 59078\r\n },\r\n {\r\n \"icon_id\": \"24932462\",\r\n \"name\": \"plus_circle_fill\",\r\n \"font_class\": \"plus-filled\",\r\n \"unicode\": \"e6c7\",\r\n \"unicode_decimal\": 59079\r\n },\r\n {\r\n \"icon_id\": \"24932463\",\r\n \"name\": \"folder_add-filled\",\r\n \"font_class\": \"folder-add-filled\",\r\n \"unicode\": \"e6c8\",\r\n \"unicode_decimal\": 59080\r\n },\r\n {\r\n \"icon_id\": \"24932464\",\r\n \"name\": \"yanse-filled\",\r\n \"font_class\": \"color-filled\",\r\n \"unicode\": \"e6c9\",\r\n \"unicode_decimal\": 59081\r\n },\r\n {\r\n \"icon_id\": \"24932465\",\r\n \"name\": \"tune-filled\",\r\n \"font_class\": \"tune-filled\",\r\n \"unicode\": \"e6ca\",\r\n \"unicode_decimal\": 59082\r\n },\r\n {\r\n \"icon_id\": \"24932455\",\r\n \"name\": \"a-rilidaka-filled\",\r\n \"font_class\": \"calendar-filled\",\r\n \"unicode\": \"e6c0\",\r\n \"unicode_decimal\": 59072\r\n },\r\n {\r\n \"icon_id\": \"24932456\",\r\n \"name\": \"notification-filled\",\r\n \"font_class\": \"notification-filled\",\r\n \"unicode\": \"e6c1\",\r\n \"unicode_decimal\": 59073\r\n },\r\n {\r\n \"icon_id\": \"24932457\",\r\n \"name\": \"wallet-filled\",\r\n \"font_class\": \"wallet-filled\",\r\n \"unicode\": \"e6c2\",\r\n \"unicode_decimal\": 59074\r\n },\r\n {\r\n \"icon_id\": \"24932458\",\r\n \"name\": \"paihangbang-filled\",\r\n \"font_class\": \"medal-filled\",\r\n \"unicode\": \"e6c3\",\r\n \"unicode_decimal\": 59075\r\n },\r\n {\r\n \"icon_id\": \"24932459\",\r\n \"name\": \"gift-filled\",\r\n \"font_class\": \"gift-filled\",\r\n \"unicode\": \"e6c4\",\r\n \"unicode_decimal\": 59076\r\n },\r\n {\r\n \"icon_id\": \"24932460\",\r\n \"name\": \"fire-filled\",\r\n \"font_class\": \"fire-filled\",\r\n \"unicode\": \"e6c5\",\r\n \"unicode_decimal\": 59077\r\n },\r\n {\r\n \"icon_id\": \"24928001\",\r\n \"name\": \"refreshempty\",\r\n \"font_class\": \"refreshempty\",\r\n \"unicode\": \"e6bf\",\r\n \"unicode_decimal\": 59071\r\n },\r\n {\r\n \"icon_id\": \"24926853\",\r\n \"name\": \"location-ellipse\",\r\n \"font_class\": \"location-filled\",\r\n \"unicode\": \"e6af\",\r\n \"unicode_decimal\": 59055\r\n },\r\n {\r\n \"icon_id\": \"24926735\",\r\n \"name\": \"person-filled\",\r\n \"font_class\": \"person-filled\",\r\n \"unicode\": \"e69d\",\r\n \"unicode_decimal\": 59037\r\n },\r\n {\r\n \"icon_id\": \"24926703\",\r\n \"name\": \"personadd-filled\",\r\n \"font_class\": \"personadd-filled\",\r\n \"unicode\": \"e698\",\r\n \"unicode_decimal\": 59032\r\n },\r\n {\r\n \"icon_id\": \"24923351\",\r\n \"name\": \"back\",\r\n \"font_class\": \"back\",\r\n \"unicode\": \"e6b9\",\r\n \"unicode_decimal\": 59065\r\n },\r\n {\r\n \"icon_id\": \"24923352\",\r\n \"name\": \"forward\",\r\n \"font_class\": \"forward\",\r\n \"unicode\": \"e6ba\",\r\n \"unicode_decimal\": 59066\r\n },\r\n {\r\n \"icon_id\": \"24923353\",\r\n \"name\": \"arrowthinright\",\r\n \"font_class\": \"arrow-right\",\r\n \"unicode\": \"e6bb\",\r\n \"unicode_decimal\": 59067\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923353\",\r\n\t\t \"name\": \"arrowthinright\",\r\n\t\t \"font_class\": \"arrowthinright\",\r\n\t\t \"unicode\": \"e6bb\",\r\n\t\t \"unicode_decimal\": 59067\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923354\",\r\n \"name\": \"arrowthinleft\",\r\n \"font_class\": \"arrow-left\",\r\n \"unicode\": \"e6bc\",\r\n \"unicode_decimal\": 59068\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923354\",\r\n\t\t \"name\": \"arrowthinleft\",\r\n\t\t \"font_class\": \"arrowthinleft\",\r\n\t\t \"unicode\": \"e6bc\",\r\n\t\t \"unicode_decimal\": 59068\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923355\",\r\n \"name\": \"arrowthinup\",\r\n \"font_class\": \"arrow-up\",\r\n \"unicode\": \"e6bd\",\r\n \"unicode_decimal\": 59069\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923355\",\r\n\t\t \"name\": \"arrowthinup\",\r\n\t\t \"font_class\": \"arrowthinup\",\r\n\t\t \"unicode\": \"e6bd\",\r\n\t\t \"unicode_decimal\": 59069\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923356\",\r\n \"name\": \"arrowthindown\",\r\n \"font_class\": \"arrow-down\",\r\n \"unicode\": \"e6be\",\r\n \"unicode_decimal\": 59070\r\n },{\r\n \"icon_id\": \"24923356\",\r\n \"name\": \"arrowthindown\",\r\n \"font_class\": \"arrowthindown\",\r\n \"unicode\": \"e6be\",\r\n \"unicode_decimal\": 59070\r\n },\r\n {\r\n \"icon_id\": \"24923349\",\r\n \"name\": \"arrowdown\",\r\n \"font_class\": \"bottom\",\r\n \"unicode\": \"e6b8\",\r\n \"unicode_decimal\": 59064\r\n },{\r\n \"icon_id\": \"24923349\",\r\n \"name\": \"arrowdown\",\r\n \"font_class\": \"arrowdown\",\r\n \"unicode\": \"e6b8\",\r\n \"unicode_decimal\": 59064\r\n },\r\n {\r\n \"icon_id\": \"24923346\",\r\n \"name\": \"arrowright\",\r\n \"font_class\": \"right\",\r\n \"unicode\": \"e6b5\",\r\n \"unicode_decimal\": 59061\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923346\",\r\n\t\t \"name\": \"arrowright\",\r\n\t\t \"font_class\": \"arrowright\",\r\n\t\t \"unicode\": \"e6b5\",\r\n\t\t \"unicode_decimal\": 59061\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923347\",\r\n \"name\": \"arrowup\",\r\n \"font_class\": \"top\",\r\n \"unicode\": \"e6b6\",\r\n \"unicode_decimal\": 59062\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923347\",\r\n\t\t \"name\": \"arrowup\",\r\n\t\t \"font_class\": \"arrowup\",\r\n\t\t \"unicode\": \"e6b6\",\r\n\t\t \"unicode_decimal\": 59062\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923348\",\r\n \"name\": \"arrowleft\",\r\n \"font_class\": \"left\",\r\n \"unicode\": \"e6b7\",\r\n \"unicode_decimal\": 59063\r\n },\r\n\t\t{\r\n\t\t \"icon_id\": \"24923348\",\r\n\t\t \"name\": \"arrowleft\",\r\n\t\t \"font_class\": \"arrowleft\",\r\n\t\t \"unicode\": \"e6b7\",\r\n\t\t \"unicode_decimal\": 59063\r\n\t\t},\r\n {\r\n \"icon_id\": \"24923334\",\r\n \"name\": \"eye\",\r\n \"font_class\": \"eye\",\r\n \"unicode\": \"e651\",\r\n \"unicode_decimal\": 58961\r\n },\r\n {\r\n \"icon_id\": \"24923335\",\r\n \"name\": \"eye-filled\",\r\n \"font_class\": \"eye-filled\",\r\n \"unicode\": \"e66a\",\r\n \"unicode_decimal\": 58986\r\n },\r\n {\r\n \"icon_id\": \"24923336\",\r\n \"name\": \"eye-slash\",\r\n \"font_class\": \"eye-slash\",\r\n \"unicode\": \"e6b3\",\r\n \"unicode_decimal\": 59059\r\n },\r\n {\r\n \"icon_id\": \"24923337\",\r\n \"name\": \"eye-slash-filled\",\r\n \"font_class\": \"eye-slash-filled\",\r\n \"unicode\": \"e6b4\",\r\n \"unicode_decimal\": 59060\r\n },\r\n {\r\n \"icon_id\": \"24923305\",\r\n \"name\": \"info-filled\",\r\n \"font_class\": \"info-filled\",\r\n \"unicode\": \"e649\",\r\n \"unicode_decimal\": 58953\r\n },\r\n {\r\n \"icon_id\": \"24923299\",\r\n \"name\": \"reload-01\",\r\n \"font_class\": \"reload\",\r\n \"unicode\": \"e6b2\",\r\n \"unicode_decimal\": 59058\r\n },\r\n {\r\n \"icon_id\": \"24923195\",\r\n \"name\": \"mic_slash_fill\",\r\n \"font_class\": \"micoff-filled\",\r\n \"unicode\": \"e6b0\",\r\n \"unicode_decimal\": 59056\r\n },\r\n {\r\n \"icon_id\": \"24923165\",\r\n \"name\": \"map-pin-ellipse\",\r\n \"font_class\": \"map-pin-ellipse\",\r\n \"unicode\": \"e6ac\",\r\n \"unicode_decimal\": 59052\r\n },\r\n {\r\n \"icon_id\": \"24923166\",\r\n \"name\": \"map-pin\",\r\n \"font_class\": \"map-pin\",\r\n \"unicode\": \"e6ad\",\r\n \"unicode_decimal\": 59053\r\n },\r\n {\r\n \"icon_id\": \"24923167\",\r\n \"name\": \"location\",\r\n \"font_class\": \"location\",\r\n \"unicode\": \"e6ae\",\r\n \"unicode_decimal\": 59054\r\n },\r\n {\r\n \"icon_id\": \"24923064\",\r\n \"name\": \"starhalf\",\r\n \"font_class\": \"starhalf\",\r\n \"unicode\": \"e683\",\r\n \"unicode_decimal\": 59011\r\n },\r\n {\r\n \"icon_id\": \"24923065\",\r\n \"name\": \"star\",\r\n \"font_class\": \"star\",\r\n \"unicode\": \"e688\",\r\n \"unicode_decimal\": 59016\r\n },\r\n {\r\n \"icon_id\": \"24923066\",\r\n \"name\": \"star-filled\",\r\n \"font_class\": \"star-filled\",\r\n \"unicode\": \"e68f\",\r\n \"unicode_decimal\": 59023\r\n },\r\n {\r\n \"icon_id\": \"24899646\",\r\n \"name\": \"a-rilidaka\",\r\n \"font_class\": \"calendar\",\r\n \"unicode\": \"e6a0\",\r\n \"unicode_decimal\": 59040\r\n },\r\n {\r\n \"icon_id\": \"24899647\",\r\n \"name\": \"fire\",\r\n \"font_class\": \"fire\",\r\n \"unicode\": \"e6a1\",\r\n \"unicode_decimal\": 59041\r\n },\r\n {\r\n \"icon_id\": \"24899648\",\r\n \"name\": \"paihangbang\",\r\n \"font_class\": \"medal\",\r\n \"unicode\": \"e6a2\",\r\n \"unicode_decimal\": 59042\r\n },\r\n {\r\n \"icon_id\": \"24899649\",\r\n \"name\": \"font\",\r\n \"font_class\": \"font\",\r\n \"unicode\": \"e6a3\",\r\n \"unicode_decimal\": 59043\r\n },\r\n {\r\n \"icon_id\": \"24899650\",\r\n \"name\": \"gift\",\r\n \"font_class\": \"gift\",\r\n \"unicode\": \"e6a4\",\r\n \"unicode_decimal\": 59044\r\n },\r\n {\r\n \"icon_id\": \"24899651\",\r\n \"name\": \"link\",\r\n \"font_class\": \"link\",\r\n \"unicode\": \"e6a5\",\r\n \"unicode_decimal\": 59045\r\n },\r\n {\r\n \"icon_id\": \"24899652\",\r\n \"name\": \"notification\",\r\n \"font_class\": \"notification\",\r\n \"unicode\": \"e6a6\",\r\n \"unicode_decimal\": 59046\r\n },\r\n {\r\n \"icon_id\": \"24899653\",\r\n \"name\": \"staff\",\r\n \"font_class\": \"staff\",\r\n \"unicode\": \"e6a7\",\r\n \"unicode_decimal\": 59047\r\n },\r\n {\r\n \"icon_id\": \"24899654\",\r\n \"name\": \"VIP\",\r\n \"font_class\": \"vip\",\r\n \"unicode\": \"e6a8\",\r\n \"unicode_decimal\": 59048\r\n },\r\n {\r\n \"icon_id\": \"24899655\",\r\n \"name\": \"folder_add\",\r\n \"font_class\": \"folder-add\",\r\n \"unicode\": \"e6a9\",\r\n \"unicode_decimal\": 59049\r\n },\r\n {\r\n \"icon_id\": \"24899656\",\r\n \"name\": \"tune\",\r\n \"font_class\": \"tune\",\r\n \"unicode\": \"e6aa\",\r\n \"unicode_decimal\": 59050\r\n },\r\n {\r\n \"icon_id\": \"24899657\",\r\n \"name\": \"shimingrenzheng\",\r\n \"font_class\": \"auth\",\r\n \"unicode\": \"e6ab\",\r\n \"unicode_decimal\": 59051\r\n },\r\n {\r\n \"icon_id\": \"24899565\",\r\n \"name\": \"person\",\r\n \"font_class\": \"person\",\r\n \"unicode\": \"e699\",\r\n \"unicode_decimal\": 59033\r\n },\r\n {\r\n \"icon_id\": \"24899566\",\r\n \"name\": \"email-filled\",\r\n \"font_class\": \"email-filled\",\r\n \"unicode\": \"e69a\",\r\n \"unicode_decimal\": 59034\r\n },\r\n {\r\n \"icon_id\": \"24899567\",\r\n \"name\": \"phone-filled\",\r\n \"font_class\": \"phone-filled\",\r\n \"unicode\": \"e69b\",\r\n \"unicode_decimal\": 59035\r\n },\r\n {\r\n \"icon_id\": \"24899568\",\r\n \"name\": \"phone\",\r\n \"font_class\": \"phone\",\r\n \"unicode\": \"e69c\",\r\n \"unicode_decimal\": 59036\r\n },\r\n {\r\n \"icon_id\": \"24899570\",\r\n \"name\": \"email\",\r\n \"font_class\": \"email\",\r\n \"unicode\": \"e69e\",\r\n \"unicode_decimal\": 59038\r\n },\r\n {\r\n \"icon_id\": \"24899571\",\r\n \"name\": \"personadd\",\r\n \"font_class\": \"personadd\",\r\n \"unicode\": \"e69f\",\r\n \"unicode_decimal\": 59039\r\n },\r\n {\r\n \"icon_id\": \"24899558\",\r\n \"name\": \"chatboxes-filled\",\r\n \"font_class\": \"chatboxes-filled\",\r\n \"unicode\": \"e692\",\r\n \"unicode_decimal\": 59026\r\n },\r\n {\r\n \"icon_id\": \"24899559\",\r\n \"name\": \"contact\",\r\n \"font_class\": \"contact\",\r\n \"unicode\": \"e693\",\r\n \"unicode_decimal\": 59027\r\n },\r\n {\r\n \"icon_id\": \"24899560\",\r\n \"name\": \"chatbubble-filled\",\r\n \"font_class\": \"chatbubble-filled\",\r\n \"unicode\": \"e694\",\r\n \"unicode_decimal\": 59028\r\n },\r\n {\r\n \"icon_id\": \"24899561\",\r\n \"name\": \"contact-filled\",\r\n \"font_class\": \"contact-filled\",\r\n \"unicode\": \"e695\",\r\n \"unicode_decimal\": 59029\r\n },\r\n {\r\n \"icon_id\": \"24899562\",\r\n \"name\": \"chatboxes\",\r\n \"font_class\": \"chatboxes\",\r\n \"unicode\": \"e696\",\r\n \"unicode_decimal\": 59030\r\n },\r\n {\r\n \"icon_id\": \"24899563\",\r\n \"name\": \"chatbubble\",\r\n \"font_class\": \"chatbubble\",\r\n \"unicode\": \"e697\",\r\n \"unicode_decimal\": 59031\r\n },\r\n {\r\n \"icon_id\": \"24881290\",\r\n \"name\": \"upload-filled\",\r\n \"font_class\": \"upload-filled\",\r\n \"unicode\": \"e68e\",\r\n \"unicode_decimal\": 59022\r\n },\r\n {\r\n \"icon_id\": \"24881292\",\r\n \"name\": \"upload\",\r\n \"font_class\": \"upload\",\r\n \"unicode\": \"e690\",\r\n \"unicode_decimal\": 59024\r\n },\r\n {\r\n \"icon_id\": \"24881293\",\r\n \"name\": \"weixin\",\r\n \"font_class\": \"weixin\",\r\n \"unicode\": \"e691\",\r\n \"unicode_decimal\": 59025\r\n },\r\n {\r\n \"icon_id\": \"24881274\",\r\n \"name\": \"compose\",\r\n \"font_class\": \"compose\",\r\n \"unicode\": \"e67f\",\r\n \"unicode_decimal\": 59007\r\n },\r\n {\r\n \"icon_id\": \"24881275\",\r\n \"name\": \"qq\",\r\n \"font_class\": \"qq\",\r\n \"unicode\": \"e680\",\r\n \"unicode_decimal\": 59008\r\n },\r\n {\r\n \"icon_id\": \"24881276\",\r\n \"name\": \"download-filled\",\r\n \"font_class\": \"download-filled\",\r\n \"unicode\": \"e681\",\r\n \"unicode_decimal\": 59009\r\n },\r\n {\r\n \"icon_id\": \"24881277\",\r\n \"name\": \"pengyouquan\",\r\n \"font_class\": \"pyq\",\r\n \"unicode\": \"e682\",\r\n \"unicode_decimal\": 59010\r\n },\r\n {\r\n \"icon_id\": \"24881279\",\r\n \"name\": \"sound\",\r\n \"font_class\": \"sound\",\r\n \"unicode\": \"e684\",\r\n \"unicode_decimal\": 59012\r\n },\r\n {\r\n \"icon_id\": \"24881280\",\r\n \"name\": \"trash-filled\",\r\n \"font_class\": \"trash-filled\",\r\n \"unicode\": \"e685\",\r\n \"unicode_decimal\": 59013\r\n },\r\n {\r\n \"icon_id\": \"24881281\",\r\n \"name\": \"sound-filled\",\r\n \"font_class\": \"sound-filled\",\r\n \"unicode\": \"e686\",\r\n \"unicode_decimal\": 59014\r\n },\r\n {\r\n \"icon_id\": \"24881282\",\r\n \"name\": \"trash\",\r\n \"font_class\": \"trash\",\r\n \"unicode\": \"e687\",\r\n \"unicode_decimal\": 59015\r\n },\r\n {\r\n \"icon_id\": \"24881284\",\r\n \"name\": \"videocam-filled\",\r\n \"font_class\": \"videocam-filled\",\r\n \"unicode\": \"e689\",\r\n \"unicode_decimal\": 59017\r\n },\r\n {\r\n \"icon_id\": \"24881285\",\r\n \"name\": \"spinner-cycle\",\r\n \"font_class\": \"spinner-cycle\",\r\n \"unicode\": \"e68a\",\r\n \"unicode_decimal\": 59018\r\n },\r\n {\r\n \"icon_id\": \"24881286\",\r\n \"name\": \"weibo\",\r\n \"font_class\": \"weibo\",\r\n \"unicode\": \"e68b\",\r\n \"unicode_decimal\": 59019\r\n },\r\n {\r\n \"icon_id\": \"24881288\",\r\n \"name\": \"videocam\",\r\n \"font_class\": \"videocam\",\r\n \"unicode\": \"e68c\",\r\n \"unicode_decimal\": 59020\r\n },\r\n {\r\n \"icon_id\": \"24881289\",\r\n \"name\": \"download\",\r\n \"font_class\": \"download\",\r\n \"unicode\": \"e68d\",\r\n \"unicode_decimal\": 59021\r\n },\r\n {\r\n \"icon_id\": \"24879601\",\r\n \"name\": \"help\",\r\n \"font_class\": \"help\",\r\n \"unicode\": \"e679\",\r\n \"unicode_decimal\": 59001\r\n },\r\n {\r\n \"icon_id\": \"24879602\",\r\n \"name\": \"navigate-filled\",\r\n \"font_class\": \"navigate-filled\",\r\n \"unicode\": \"e67a\",\r\n \"unicode_decimal\": 59002\r\n },\r\n {\r\n \"icon_id\": \"24879603\",\r\n \"name\": \"plusempty\",\r\n \"font_class\": \"plusempty\",\r\n \"unicode\": \"e67b\",\r\n \"unicode_decimal\": 59003\r\n },\r\n {\r\n \"icon_id\": \"24879604\",\r\n \"name\": \"smallcircle\",\r\n \"font_class\": \"smallcircle\",\r\n \"unicode\": \"e67c\",\r\n \"unicode_decimal\": 59004\r\n },\r\n {\r\n \"icon_id\": \"24879605\",\r\n \"name\": \"minus-filled\",\r\n \"font_class\": \"minus-filled\",\r\n \"unicode\": \"e67d\",\r\n \"unicode_decimal\": 59005\r\n },\r\n {\r\n \"icon_id\": \"24879606\",\r\n \"name\": \"micoff\",\r\n \"font_class\": \"micoff\",\r\n \"unicode\": \"e67e\",\r\n \"unicode_decimal\": 59006\r\n },\r\n {\r\n \"icon_id\": \"24879588\",\r\n \"name\": \"closeempty\",\r\n \"font_class\": \"closeempty\",\r\n \"unicode\": \"e66c\",\r\n \"unicode_decimal\": 58988\r\n },\r\n {\r\n \"icon_id\": \"24879589\",\r\n \"name\": \"clear\",\r\n \"font_class\": \"clear\",\r\n \"unicode\": \"e66d\",\r\n \"unicode_decimal\": 58989\r\n },\r\n {\r\n \"icon_id\": \"24879590\",\r\n \"name\": \"navigate\",\r\n \"font_class\": \"navigate\",\r\n \"unicode\": \"e66e\",\r\n \"unicode_decimal\": 58990\r\n },\r\n {\r\n \"icon_id\": \"24879591\",\r\n \"name\": \"minus\",\r\n \"font_class\": \"minus\",\r\n \"unicode\": \"e66f\",\r\n \"unicode_decimal\": 58991\r\n },\r\n {\r\n \"icon_id\": \"24879592\",\r\n \"name\": \"image\",\r\n \"font_class\": \"image\",\r\n \"unicode\": \"e670\",\r\n \"unicode_decimal\": 58992\r\n },\r\n {\r\n \"icon_id\": \"24879593\",\r\n \"name\": \"mic\",\r\n \"font_class\": \"mic\",\r\n \"unicode\": \"e671\",\r\n \"unicode_decimal\": 58993\r\n },\r\n {\r\n \"icon_id\": \"24879594\",\r\n \"name\": \"paperplane\",\r\n \"font_class\": \"paperplane\",\r\n \"unicode\": \"e672\",\r\n \"unicode_decimal\": 58994\r\n },\r\n {\r\n \"icon_id\": \"24879595\",\r\n \"name\": \"close\",\r\n \"font_class\": \"close\",\r\n \"unicode\": \"e673\",\r\n \"unicode_decimal\": 58995\r\n },\r\n {\r\n \"icon_id\": \"24879596\",\r\n \"name\": \"help-filled\",\r\n \"font_class\": \"help-filled\",\r\n \"unicode\": \"e674\",\r\n \"unicode_decimal\": 58996\r\n },\r\n {\r\n \"icon_id\": \"24879597\",\r\n \"name\": \"plus-filled\",\r\n \"font_class\": \"paperplane-filled\",\r\n \"unicode\": \"e675\",\r\n \"unicode_decimal\": 58997\r\n },\r\n {\r\n \"icon_id\": \"24879598\",\r\n \"name\": \"plus\",\r\n \"font_class\": \"plus\",\r\n \"unicode\": \"e676\",\r\n \"unicode_decimal\": 58998\r\n },\r\n {\r\n \"icon_id\": \"24879599\",\r\n \"name\": \"mic-filled\",\r\n \"font_class\": \"mic-filled\",\r\n \"unicode\": \"e677\",\r\n \"unicode_decimal\": 58999\r\n },\r\n {\r\n \"icon_id\": \"24879600\",\r\n \"name\": \"image-filled\",\r\n \"font_class\": \"image-filled\",\r\n \"unicode\": \"e678\",\r\n \"unicode_decimal\": 59000\r\n },\r\n {\r\n \"icon_id\": \"24855900\",\r\n \"name\": \"locked-filled\",\r\n \"font_class\": \"locked-filled\",\r\n \"unicode\": \"e668\",\r\n \"unicode_decimal\": 58984\r\n },\r\n {\r\n \"icon_id\": \"24855901\",\r\n \"name\": \"info\",\r\n \"font_class\": \"info\",\r\n \"unicode\": \"e669\",\r\n \"unicode_decimal\": 58985\r\n },\r\n {\r\n \"icon_id\": \"24855903\",\r\n \"name\": \"locked\",\r\n \"font_class\": \"locked\",\r\n \"unicode\": \"e66b\",\r\n \"unicode_decimal\": 58987\r\n },\r\n {\r\n \"icon_id\": \"24855884\",\r\n \"name\": \"camera-filled\",\r\n \"font_class\": \"camera-filled\",\r\n \"unicode\": \"e658\",\r\n \"unicode_decimal\": 58968\r\n },\r\n {\r\n \"icon_id\": \"24855885\",\r\n \"name\": \"chat-filled\",\r\n \"font_class\": \"chat-filled\",\r\n \"unicode\": \"e659\",\r\n \"unicode_decimal\": 58969\r\n },\r\n {\r\n \"icon_id\": \"24855886\",\r\n \"name\": \"camera\",\r\n \"font_class\": \"camera\",\r\n \"unicode\": \"e65a\",\r\n \"unicode_decimal\": 58970\r\n },\r\n {\r\n \"icon_id\": \"24855887\",\r\n \"name\": \"circle\",\r\n \"font_class\": \"circle\",\r\n \"unicode\": \"e65b\",\r\n \"unicode_decimal\": 58971\r\n },\r\n {\r\n \"icon_id\": \"24855888\",\r\n \"name\": \"checkmarkempty\",\r\n \"font_class\": \"checkmarkempty\",\r\n \"unicode\": \"e65c\",\r\n \"unicode_decimal\": 58972\r\n },\r\n {\r\n \"icon_id\": \"24855889\",\r\n \"name\": \"chat\",\r\n \"font_class\": \"chat\",\r\n \"unicode\": \"e65d\",\r\n \"unicode_decimal\": 58973\r\n },\r\n {\r\n \"icon_id\": \"24855890\",\r\n \"name\": \"circle-filled\",\r\n \"font_class\": \"circle-filled\",\r\n \"unicode\": \"e65e\",\r\n \"unicode_decimal\": 58974\r\n },\r\n {\r\n \"icon_id\": \"24855891\",\r\n \"name\": \"flag\",\r\n \"font_class\": \"flag\",\r\n \"unicode\": \"e65f\",\r\n \"unicode_decimal\": 58975\r\n },\r\n {\r\n \"icon_id\": \"24855892\",\r\n \"name\": \"flag-filled\",\r\n \"font_class\": \"flag-filled\",\r\n \"unicode\": \"e660\",\r\n \"unicode_decimal\": 58976\r\n },\r\n {\r\n \"icon_id\": \"24855893\",\r\n \"name\": \"gear-filled\",\r\n \"font_class\": \"gear-filled\",\r\n \"unicode\": \"e661\",\r\n \"unicode_decimal\": 58977\r\n },\r\n {\r\n \"icon_id\": \"24855894\",\r\n \"name\": \"home\",\r\n \"font_class\": \"home\",\r\n \"unicode\": \"e662\",\r\n \"unicode_decimal\": 58978\r\n },\r\n {\r\n \"icon_id\": \"24855895\",\r\n \"name\": \"home-filled\",\r\n \"font_class\": \"home-filled\",\r\n \"unicode\": \"e663\",\r\n \"unicode_decimal\": 58979\r\n },\r\n {\r\n \"icon_id\": \"24855896\",\r\n \"name\": \"gear\",\r\n \"font_class\": \"gear\",\r\n \"unicode\": \"e664\",\r\n \"unicode_decimal\": 58980\r\n },\r\n {\r\n \"icon_id\": \"24855897\",\r\n \"name\": \"smallcircle-filled\",\r\n \"font_class\": \"smallcircle-filled\",\r\n \"unicode\": \"e665\",\r\n \"unicode_decimal\": 58981\r\n },\r\n {\r\n \"icon_id\": \"24855898\",\r\n \"name\": \"map-filled\",\r\n \"font_class\": \"map-filled\",\r\n \"unicode\": \"e666\",\r\n \"unicode_decimal\": 58982\r\n },\r\n {\r\n \"icon_id\": \"24855899\",\r\n \"name\": \"map\",\r\n \"font_class\": \"map\",\r\n \"unicode\": \"e667\",\r\n \"unicode_decimal\": 58983\r\n },\r\n {\r\n \"icon_id\": \"24855825\",\r\n \"name\": \"refresh-filled\",\r\n \"font_class\": \"refresh-filled\",\r\n \"unicode\": \"e656\",\r\n \"unicode_decimal\": 58966\r\n },\r\n {\r\n \"icon_id\": \"24855826\",\r\n \"name\": \"refresh\",\r\n \"font_class\": \"refresh\",\r\n \"unicode\": \"e657\",\r\n \"unicode_decimal\": 58967\r\n },\r\n {\r\n \"icon_id\": \"24855808\",\r\n \"name\": \"cloud-upload\",\r\n \"font_class\": \"cloud-upload\",\r\n \"unicode\": \"e645\",\r\n \"unicode_decimal\": 58949\r\n },\r\n {\r\n \"icon_id\": \"24855809\",\r\n \"name\": \"cloud-download-filled\",\r\n \"font_class\": \"cloud-download-filled\",\r\n \"unicode\": \"e646\",\r\n \"unicode_decimal\": 58950\r\n },\r\n {\r\n \"icon_id\": \"24855810\",\r\n \"name\": \"cloud-download\",\r\n \"font_class\": \"cloud-download\",\r\n \"unicode\": \"e647\",\r\n \"unicode_decimal\": 58951\r\n },\r\n {\r\n \"icon_id\": \"24855811\",\r\n \"name\": \"cloud-upload-filled\",\r\n \"font_class\": \"cloud-upload-filled\",\r\n \"unicode\": \"e648\",\r\n \"unicode_decimal\": 58952\r\n },\r\n {\r\n \"icon_id\": \"24855813\",\r\n \"name\": \"redo\",\r\n \"font_class\": \"redo\",\r\n \"unicode\": \"e64a\",\r\n \"unicode_decimal\": 58954\r\n },\r\n {\r\n \"icon_id\": \"24855814\",\r\n \"name\": \"images-filled\",\r\n \"font_class\": \"images-filled\",\r\n \"unicode\": \"e64b\",\r\n \"unicode_decimal\": 58955\r\n },\r\n {\r\n \"icon_id\": \"24855815\",\r\n \"name\": \"undo-filled\",\r\n \"font_class\": \"undo-filled\",\r\n \"unicode\": \"e64c\",\r\n \"unicode_decimal\": 58956\r\n },\r\n {\r\n \"icon_id\": \"24855816\",\r\n \"name\": \"more\",\r\n \"font_class\": \"more\",\r\n \"unicode\": \"e64d\",\r\n \"unicode_decimal\": 58957\r\n },\r\n {\r\n \"icon_id\": \"24855817\",\r\n \"name\": \"more-filled\",\r\n \"font_class\": \"more-filled\",\r\n \"unicode\": \"e64e\",\r\n \"unicode_decimal\": 58958\r\n },\r\n {\r\n \"icon_id\": \"24855818\",\r\n \"name\": \"undo\",\r\n \"font_class\": \"undo\",\r\n \"unicode\": \"e64f\",\r\n \"unicode_decimal\": 58959\r\n },\r\n {\r\n \"icon_id\": \"24855819\",\r\n \"name\": \"images\",\r\n \"font_class\": \"images\",\r\n \"unicode\": \"e650\",\r\n \"unicode_decimal\": 58960\r\n },\r\n {\r\n \"icon_id\": \"24855821\",\r\n \"name\": \"paperclip\",\r\n \"font_class\": \"paperclip\",\r\n \"unicode\": \"e652\",\r\n \"unicode_decimal\": 58962\r\n },\r\n {\r\n \"icon_id\": \"24855822\",\r\n \"name\": \"settings\",\r\n \"font_class\": \"settings\",\r\n \"unicode\": \"e653\",\r\n \"unicode_decimal\": 58963\r\n },\r\n {\r\n \"icon_id\": \"24855823\",\r\n \"name\": \"search\",\r\n \"font_class\": \"search\",\r\n \"unicode\": \"e654\",\r\n \"unicode_decimal\": 58964\r\n },\r\n {\r\n \"icon_id\": \"24855824\",\r\n \"name\": \"redo-filled\",\r\n \"font_class\": \"redo-filled\",\r\n \"unicode\": \"e655\",\r\n \"unicode_decimal\": 58965\r\n },\r\n {\r\n \"icon_id\": \"24841702\",\r\n \"name\": \"list\",\r\n \"font_class\": \"list\",\r\n \"unicode\": \"e644\",\r\n \"unicode_decimal\": 58948\r\n },\r\n {\r\n \"icon_id\": \"24841489\",\r\n \"name\": \"mail-open-filled\",\r\n \"font_class\": \"mail-open-filled\",\r\n \"unicode\": \"e63a\",\r\n \"unicode_decimal\": 58938\r\n },\r\n {\r\n \"icon_id\": \"24841491\",\r\n \"name\": \"hand-thumbsdown-filled\",\r\n \"font_class\": \"hand-down-filled\",\r\n \"unicode\": \"e63c\",\r\n \"unicode_decimal\": 58940\r\n },\r\n {\r\n \"icon_id\": \"24841492\",\r\n \"name\": \"hand-thumbsdown\",\r\n \"font_class\": \"hand-down\",\r\n \"unicode\": \"e63d\",\r\n \"unicode_decimal\": 58941\r\n },\r\n {\r\n \"icon_id\": \"24841493\",\r\n \"name\": \"hand-thumbsup-filled\",\r\n \"font_class\": \"hand-up-filled\",\r\n \"unicode\": \"e63e\",\r\n \"unicode_decimal\": 58942\r\n },\r\n {\r\n \"icon_id\": \"24841494\",\r\n \"name\": \"hand-thumbsup\",\r\n \"font_class\": \"hand-up\",\r\n \"unicode\": \"e63f\",\r\n \"unicode_decimal\": 58943\r\n },\r\n {\r\n \"icon_id\": \"24841496\",\r\n \"name\": \"heart-filled\",\r\n \"font_class\": \"heart-filled\",\r\n \"unicode\": \"e641\",\r\n \"unicode_decimal\": 58945\r\n },\r\n {\r\n \"icon_id\": \"24841498\",\r\n \"name\": \"mail-open\",\r\n \"font_class\": \"mail-open\",\r\n \"unicode\": \"e643\",\r\n \"unicode_decimal\": 58947\r\n },\r\n {\r\n \"icon_id\": \"24841488\",\r\n \"name\": \"heart\",\r\n \"font_class\": \"heart\",\r\n \"unicode\": \"e639\",\r\n \"unicode_decimal\": 58937\r\n },\r\n {\r\n \"icon_id\": \"24839963\",\r\n \"name\": \"loop\",\r\n \"font_class\": \"loop\",\r\n \"unicode\": \"e633\",\r\n \"unicode_decimal\": 58931\r\n },\r\n {\r\n \"icon_id\": \"24839866\",\r\n \"name\": \"pulldown\",\r\n \"font_class\": \"pulldown\",\r\n \"unicode\": \"e632\",\r\n \"unicode_decimal\": 58930\r\n },\r\n {\r\n \"icon_id\": \"24813798\",\r\n \"name\": \"scan\",\r\n \"font_class\": \"scan\",\r\n \"unicode\": \"e62a\",\r\n \"unicode_decimal\": 58922\r\n },\r\n {\r\n \"icon_id\": \"24813786\",\r\n \"name\": \"bars\",\r\n \"font_class\": \"bars\",\r\n \"unicode\": \"e627\",\r\n \"unicode_decimal\": 58919\r\n },\r\n {\r\n \"icon_id\": \"24813788\",\r\n \"name\": \"cart-filled\",\r\n \"font_class\": \"cart-filled\",\r\n \"unicode\": \"e629\",\r\n \"unicode_decimal\": 58921\r\n },\r\n {\r\n \"icon_id\": \"24813790\",\r\n \"name\": \"checkbox\",\r\n \"font_class\": \"checkbox\",\r\n \"unicode\": \"e62b\",\r\n \"unicode_decimal\": 58923\r\n },\r\n {\r\n \"icon_id\": \"24813791\",\r\n \"name\": \"checkbox-filled\",\r\n \"font_class\": \"checkbox-filled\",\r\n \"unicode\": \"e62c\",\r\n \"unicode_decimal\": 58924\r\n },\r\n {\r\n \"icon_id\": \"24813794\",\r\n \"name\": \"shop\",\r\n \"font_class\": \"shop\",\r\n \"unicode\": \"e62f\",\r\n \"unicode_decimal\": 58927\r\n },\r\n {\r\n \"icon_id\": \"24813795\",\r\n \"name\": \"headphones\",\r\n \"font_class\": \"headphones\",\r\n \"unicode\": \"e630\",\r\n \"unicode_decimal\": 58928\r\n },\r\n {\r\n \"icon_id\": \"24813796\",\r\n \"name\": \"cart\",\r\n \"font_class\": \"cart\",\r\n \"unicode\": \"e631\",\r\n \"unicode_decimal\": 58929\r\n }\r\n ]\r\n}\r\n","// const defaultOption = {\r\n// \tduration: 300,\r\n// \ttimingFunction: 'linear',\r\n// \tdelay: 0,\r\n// \ttransformOrigin: '50% 50% 0'\r\n// }\r\n\r\n\r\n\r\nclass MPAnimation {\r\n\tconstructor(options, _this) {\r\n\t\tthis.options = options\r\n\t\tthis.animation = uni.createAnimation(options)\r\n\t\tthis.currentStepAnimates = {}\r\n\t\tthis.next = 0\r\n\t\tthis.$ = _this\r\n\r\n\t}\r\n\r\n\t_nvuePushAnimates(type, args) {\r\n\t\tlet aniObj = this.currentStepAnimates[this.next]\r\n\t\tlet styles = {}\r\n\t\tif (!aniObj) {\r\n\t\t\tstyles = {\r\n\t\t\t\tstyles: {},\r\n\t\t\t\tconfig: {}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstyles = aniObj\r\n\t\t}\r\n\t\tif (animateTypes1.includes(type)) {\r\n\t\t\tif (!styles.styles.transform) {\r\n\t\t\t\tstyles.styles.transform = ''\r\n\t\t\t}\r\n\t\t\tlet unit = ''\r\n\t\t\tif(type === 'rotate'){\r\n\t\t\t\tunit = 'deg'\r\n\t\t\t}\r\n\t\t\tstyles.styles.transform += `${type}(${args+unit}) `\r\n\t\t} else {\r\n\t\t\tstyles.styles[type] = `${args}`\r\n\t\t}\r\n\t\tthis.currentStepAnimates[this.next] = styles\r\n\t}\r\n\t_animateRun(styles = {}, config = {}) {\r\n\t\tlet ref = this.$.$refs['ani'].ref\r\n\t\tif (!ref) return\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tnvueAnimation.transition(ref, {\r\n\t\t\t\tstyles,\r\n\t\t\t\t...config\r\n\t\t\t}, res => {\r\n\t\t\t\tresolve()\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\t_nvueNextAnimate(animates, step = 0, fn) {\r\n\t\tlet obj = animates[step]\r\n\t\tif (obj) {\r\n\t\t\tlet {\r\n\t\t\t\tstyles,\r\n\t\t\t\tconfig\r\n\t\t\t} = obj\r\n\t\t\tthis._animateRun(styles, config).then(() => {\r\n\t\t\t\tstep += 1\r\n\t\t\t\tthis._nvueNextAnimate(animates, step, fn)\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tthis.currentStepAnimates = {}\r\n\t\t\ttypeof fn === 'function' && fn()\r\n\t\t\tthis.isEnd = true\r\n\t\t}\r\n\t}\r\n\r\n\tstep(config = {}) {\r\n\r\n\t\tthis.animation.step(config)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\treturn this\r\n\t}\r\n\r\n\trun(fn) {\r\n\r\n\t\tthis.$.animationData = this.animation.export()\r\n\t\tthis.$.timer = setTimeout(() => {\r\n\t\t\ttypeof fn === 'function' && fn()\r\n\t\t}, this.$.durationTime)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t}\r\n}\r\n\r\n\r\nconst animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',\r\n\t'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',\r\n\t'translateZ'\r\n]\r\nconst animateTypes2 = ['opacity', 'backgroundColor']\r\nconst animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom']\r\nanimateTypes1.concat(animateTypes2, animateTypes3).forEach(type => {\r\n\tMPAnimation.prototype[type] = function(...args) {\r\n\r\n\t\tthis.animation[type](...args)\r\n\r\n\r\n\r\n\r\n\t\treturn this\r\n\t}\r\n})\r\n\r\nexport function createAnimation(option, _this) {\r\n\tif(!_this) return\r\n\tclearTimeout(_this.timer)\r\n\treturn new MPAnimation(option, _this)\r\n}\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/components/calendar.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/components/calendar.js.map
new file mode 100644
index 0000000..976e46e
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/components/calendar.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?9855","webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?b44f","webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?47f0","webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?c32f","uni-app:///components/calendar.vue","webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?7729","webpack:///D:/Project/project_wenlv/tourGuide/components/calendar.vue?4114"],"names":["props","isShowLunar","type","default","data","weekList","monthShow","year","month","day","week","nowDay","selectDay","everyDay","weekDates","mounted","methods","changeDate","showLunar","getNowTime","hour","minute","second","getEveryDay","date","dayArry","flag","getWeekday","resetDay","arr","getWeekDates","startDate","preNextDate","getPreviousWeekDates","previousWeekStartDate","previousWeekDates","getNextWeekDates","nextWeekStartDate","nextWeekDates","changeWeekMonth"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAiI;AACjI;AAC4D;AACL;AACsC;;;AAG7F;AAC2K;AAC3K,gBAAgB,qLAAU;AAC1B,EAAE,8EAAM;AACR,EAAE,+FAAM;AACR,EAAE,wGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,mGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAA6oB,CAAgB,0pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;ACsDjqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAGA;EACAA;IACAC;MACAC;MACAC;IACA;EACA;EACAC;IACA;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;IACA;EACA;EACAC;IACA;IACA;IACA;IACA;IACA;IACA;EACA;EACAC;IACA;IACAC;MACA;QACA;QACA;QACA;QACA;QAEA;MACA;IACA;IACA;IACAC;MACA;QACA;QACA;MACA;QACA;MACA;MAEA;IACA;IACA;IACAC;MACA;QACAZ;QACAC;QACAC;QACAW;QACAC;QACAC;MACAd;MACAC;MACA;QACA;UACA;QACA;UACA;QACA;MACA;QACA;MACA;MAEA;IACA;IACA;IACAc;MACA;MACA;MACA;MACAC;MACA;MACAA;MACA;MACA;MACA;QACAA;QACAC;UACAhB;UACAC;UACAc;UACAE;QACA;MACA;;MAEA;MACA;IACA;IACAC;MACA;IACA;IACA;IACAC;MAAA;MACA;MACA;MACAC;QACA;UACA;UACA;YACA;cACA;gBACApB;gBACAC;cACA;YACA;UACA;QACA;MACA;IACA;IACA;IACAoB;MACA;MACA;MACAC;MACA;MACA;QACA;QACAP;QACAV;MACA;MACA;IACA;IACA;IACAkB;MACA;QACA;UACA;UACA;UACA;YACA;YACA;UACA;UACA;YACA;UACA;YACA;UACA;QACA;UACA;UACA;UACA;YACA;YACA;UACA;UACA;YACA;UACA;YACA;UACA;QACA;MACA;QACA;UACA;UACA;QACA;UACA;UACA;QACA;MACA;IACA;IACAC;MACA;MACA;MACAC;;MAEA;MACA;QACA;QACAV;QACAW;MACA;MAEA;MACA;MACA;IACA;IACAC;MACA;MACA;MACAC;;MAEA;MACA;QACA;QACAb;QACAc;MACA;MAEA;MACA;MACA;IACA;IACA;IACAC;MACA;MAEA;MAEA;QACA;QACA;UACA;QACA;UACA;QACA;MACA;QACA;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;;ACrRA;AAAA;AAAA;AAAA;AAAgvC,CAAgB,isCAAG,EAAC,C;;;;;;;;;;;ACApwC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"components/calendar.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./calendar.vue?vue&type=template&id=e9e7bf0e&scoped=true&\"\nvar renderjs\nimport script from \"./calendar.vue?vue&type=script&lang=js&\"\nexport * from \"./calendar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./calendar.vue?vue&type=style&index=0&id=e9e7bf0e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e9e7bf0e\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"components/calendar.vue\"\nexport default component.exports","export * from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./calendar.vue?vue&type=template&id=e9e7bf0e&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n var l0 = _vm.__map(_vm.everyDay, function (item, index) {\n var $orig = _vm.__get_orig(item)\n var m0 = _vm.monthShow && _vm.isShowLunar ? _vm.showLunar(item) : null\n return {\n $orig: $orig,\n m0: m0,\n }\n })\n var l1 = _vm.__map(_vm.weekDates, function (item, index) {\n var $orig = _vm.__get_orig(item)\n var m1 = !_vm.monthShow ? _vm.getNowTime(item) : null\n var m2 = !_vm.monthShow ? _vm.getNowTime(item) : null\n var m3 = !_vm.monthShow ? _vm.getNowTime(item) : null\n var m4 = !_vm.monthShow ? _vm.getNowTime(item) : null\n var g0 =\n !_vm.monthShow && !(_vm.nowDay == m4)\n ? _vm.getNowTime(item).slice(-2)\n : null\n var m5 =\n !_vm.monthShow && _vm.isShowLunar\n ? _vm.showLunar(_vm.getNowTime(item))\n : null\n return {\n $orig: $orig,\n m1: m1,\n m2: m2,\n m3: m3,\n m4: m4,\n g0: g0,\n m5: m5,\n }\n })\n _vm.$mp.data = Object.assign(\n {},\n {\n $root: {\n l0: l0,\n l1: l1,\n },\n }\n )\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./calendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./calendar.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{{ monthShow ? '上一月' : '上一周' }}\r\n\t\t\t\t\r\n\t\t\t\t{{year}}年{{month}}月\r\n\t\t\t\t\r\n\t\t\t\t\t{{ monthShow ? '下一月' : '下一周' }}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{item}}\r\n\t\t\t\t\r\n\t\t\r\n\t\t\t\t item.date) ? 'grayDate' : ''\" v-if=\"monthShow\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ nowDay== item.date ? '今日' : item.day }}\r\n\t\t\t\t\t\t{{showLunar(item)}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\t\t getNowTime(item)) ? 'grayDate' : ''\" v-if=\"!monthShow\">\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ nowDay == getNowTime(item) ? '今日' : getNowTime(item).slice(-2) }}\r\n\t\t\t\t\t\t{{showLunar(getNowTime(item))}}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./calendar.vue?vue&type=style&index=0&id=e9e7bf0e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./calendar.vue?vue&type=style&index=0&id=e9e7bf0e&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539990\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/dialogue/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/dialogue/index.js.map
new file mode 100644
index 0000000..e86e070
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/dialogue/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?9254","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?265e","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?075c","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?80e8","uni-app:///pages/dialogue/index.vue","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?6a19","webpack:///D:/Project/project_wenlv/tourGuide/pages/dialogue/index.vue?f899"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","type","onShow","onLoad","methods","setType","getInfo","scenic_id","goods_id","offset","limit","item","console"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8H;AAC9H;AACyD;AACL;AACsC;;;AAG1F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,4FAAM;AACR,EAAE,qGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,gGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,aAAa,gQAEN;AACP,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAypB,CAAgB,upBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCgC7qB;EACAC;IACA;MACAC;IAEA;EACA;EACAC,2BACA;EACAC;EACAC;IACAC;MACA;IACA;IAEAC;MAAA;MACA;QACAC;QACAC;QACAC;QACAC;MACA;QACA;UACA;UACA;YACAC;YACAA;UACA;UACAC;UACA;YACA;UACA;QACA;MACA;IACA;EAEA;AAEA;AAAA,2B;;;;;;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAwwC,CAAgB,8rCAAG,EAAC,C;;;;;;;;;;;ACA5xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"pages/dialogue/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './pages/dialogue/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=408fa114&scoped=true&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=408fa114&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"408fa114\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"pages/dialogue/index.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=408fa114&scoped=true&\"","var components\ntry {\n components = {\n uniBadge: function () {\n return import(\n /* webpackChunkName: \"uni_modules/uni-badge/components/uni-badge/uni-badge\" */ \"@/uni_modules/uni-badge/components/uni-badge/uni-badge.vue\"\n )\n },\n }\n} catch (e) {\n if (\n e.message.indexOf(\"Cannot find module\") !== -1 &&\n e.message.indexOf(\".vue\") !== -1\n ) {\n console.error(e.message)\n console.error(\"1. 排查组件名称拼写是否正确\")\n console.error(\n \"2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom\"\n )\n console.error(\n \"3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件\"\n )\n } else {\n throw e\n }\n}\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t会话中\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t会话结束\r\n\t\t\t用户离线\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t游客1505\r\n\t\t\t\t\t游客您好,导游,我想去寒山寺和拙政园路线,你您好,导游,我想去寒山寺和拙政园路线,你...\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=408fa114&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=408fa114&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539941\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
new file mode 100644
index 0000000..072d956
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?c49b","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?d874","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?90b2","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?4051","uni-app:///pages/index/index.vue","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?9d00","webpack:///D:/Project/project_wenlv/tourGuide/pages/index/index.vue?7ed6"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","components","calendarVue","data","typeList","title","id","typeIndex","selectDay","sessionList","isChecked","sessionLists","isAllChecked","onLoad","methods","switchChange","item","date","online_type","date_half","classify","getDate","console","changeWork","getList","start_date","end_date","getNowTime","year","month","day","hour","minute","second"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8H;AAC9H;AACyD;AACL;AACsC;;;AAG1F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,4FAAM;AACR,EAAE,qGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,gGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAypB,CAAgB,upBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;eCwC7qB;EACAC;IAAAC;EAAA;EACAC;IACA;MACAC;QACAC;QACAC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACAD;QACAC;MACA,EACA;MACAC;MACAC;MACAC,cACA;QACAJ;QACAK;MACA,GACA;QACAL;QACAK;MACA,GACA;QACAL;QACAK;MACA,EACA;MACAC,eACA;QACAN;QACAK;MACA,EACA;MACAE;IACA;EACA;EACAC;IACA;IACA;EACA;EACAC;IACA;IACAC;MACAC;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MAEA;QACAC;QACAC;QAAA;QACAC;QAAA;QACAC;MACA,6BAEA;IACA;IACAC;MACAC;MACA;MAEA;QAAA;MAAA;MACA;MAEA;IACA;IACAC;MACA;MACA;MACA;MACA;MACA;;MAEA;IAAA,CACA;IACAC;MAAA;MACA;MACA;QACAC;QACAC;QACAN;MACA;QACA;UACA;UACA;YACA;YACA;UACA;YACA;YACA;YACA;YACA;UACA;QACA;MACA;IACA;IACA;IACAO;MACA;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;MACAJ;MACAC;MACA;QACA;UACA;QACA;UACA;QACA;MACA;QACA;MACA;MAEA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;;ACrLA;AAAA;AAAA;AAAA;AAAwwC,CAAgB,8rCAAG,EAAC,C;;;;;;;;;;;ACA5xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"pages/index/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './pages/index/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=57280228&scoped=true&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=57280228&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57280228\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"pages/index/index.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=57280228&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n if (!_vm._isMounted) {\n _vm.e0 = function ($event, index) {\n var _temp = arguments[arguments.length - 1].currentTarget.dataset,\n _temp2 = _temp.eventParams || _temp[\"event-params\"],\n index = _temp2.index\n var _temp, _temp2\n _vm.typeIndex = index\n _vm.getList()\n }\n }\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t·快捷入口\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t立即核销\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t查看订单\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t·我的排班\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{item.title}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t{{item.title}}\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=57280228&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=57280228&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539962\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
new file mode 100644
index 0000000..b6c88ee
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?ac8c","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?7569","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?e6af","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?0763","uni-app:///pages/login/login.vue","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?345e","webpack:///D:/Project/project_wenlv/tourGuide/pages/login/login.vue?cd23"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","form","username","captchaCodeId","password","showPassword","codeImg","onShow","methods","getCodeImg","login","uni","url"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8H;AAC9H;AACyD;AACL;AACsC;;;AAG1F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,4FAAM;AACR,EAAE,qGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,gGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAypB,CAAgB,upBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eC6B7qB;EACAC;IACA;MACAC;QACAC;QACAC;QACAC;MACA;MACAC;MACAC;IACA;EACA;EACAC;IACA;EACA;EACAC;IACA;IACAC;MAAA;MACA;QACA;MACA;IACA;IACAC;MAAA;MACA;QACA;QACA;UACAC;YACAC;UACA;QACA;UACAD;QACA;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAwwC,CAAgB,8rCAAG,EAAC,C;;;;;;;;;;;ACA5xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"pages/login/login.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './pages/login/login.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./login.vue?vue&type=template&id=b237504c&scoped=true&\"\nvar renderjs\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=b237504c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b237504c\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"pages/login/login.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./login.vue?vue&type=template&id=b237504c&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n if (!_vm._isMounted) {\n _vm.e0 = function ($event) {\n _vm.showPassword = false\n }\n _vm.e1 = function ($event) {\n _vm.showPassword = true\n }\n }\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./login.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t立即登录\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./login.vue?vue&type=style&index=0&id=b237504c&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./login.vue?vue&type=style&index=0&id=b237504c&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539948\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/user.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/user.js.map
new file mode 100644
index 0000000..8eb2e26
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/user.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?29e6","webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?8108","uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?34e2","webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?6425","webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?e326","webpack:///D:/Project/project_wenlv/tourGuide/pages/user/user.vue?6734","uni-app:///pages/user/user.vue"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","list","title","path","userInfo","onShow"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAuwC,CAAgB,6rCAAG,EAAC,C;;;;;;;;;;;ACA3xC;AACA,OAAO,KAAU,EAAE,kBAKd;;;;;;;;;;;;;;;;ACNL;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,aAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6H;AAC7H;AACwD;AACL;AACsC;;;AAGzF;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,0EAAM;AACR,EAAE,2FAAM;AACR,EAAE,oGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,+FAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAwpB,CAAgB,spBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eC0B5qB;EACAC;IACA;MACAC,OACA;QACAC;QACAC;MACA,GACA;QACAD;QACAC;MACA,GACA;QACAD;QACAC;MACA,EACA;MACAC;IACA;EACA;EACAC;IAAA;IACA;MACA;IACA;EACA;AACA;AAAA,2B","file":"pages/user/user.js","sourcesContent":["import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./user.vue?vue&type=style&index=0&id=80842834&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./user.vue?vue&type=style&index=0&id=80842834&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539977\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n ","import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './pages/user/user.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./user.vue?vue&type=template&id=80842834&scoped=true&\"\nvar renderjs\nimport script from \"./user.vue?vue&type=script&lang=js&\"\nexport * from \"./user.vue?vue&type=script&lang=js&\"\nimport style0 from \"./user.vue?vue&type=style&index=0&id=80842834&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"80842834\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"pages/user/user.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./user.vue?vue&type=template&id=80842834&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./user.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./user.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{userInfo.nickname}}\r\n\t\t\t\t\t{{userInfo.group_data.name}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t个人信息\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{item.title}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/pages/verification/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/verification/index.js.map
new file mode 100644
index 0000000..c325843
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/pages/verification/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?f04c","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?1ac5","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?d0ac","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?6e8e","uni-app:///pages/verification/index.vue","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?0324","webpack:///D:/Project/project_wenlv/tourGuide/pages/verification/index.vue?ac7f"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","html5QrCode","created","beforeDestroy","methods","getCameras","Html5Qrcode","then","catch","alert","start","facingMode","fps","qrbox","width","height","console","stop"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8H;AAC9H;AACyD;AACL;AACsC;;;AAG1F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,4FAAM;AACR,EAAE,qGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,gGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAypB,CAAgB,upBAAG,EAAC,C;;;;;;;;;;;;;;;;;;ACU7qB;;;;;;;;;;eACA;EACAC;IACA;MACAC;IACA;EACA;EACAC;IACA;EACA;EACAC;IACA;EACA;EACAC;IACAC;MAAA;MACAC,sCACAC;QACA;UACA;UACA;QACA;MACA,GACAC;QACA;QACA;QACAC;MACA;IACA;IACAC;MAAA;MACA,iBACAA;MACA;MACA;QAAAC;MAAA,GACA;QACAC;QAAA;QACAC;UAAAC;UAAAC;QAAA;QACA;MACA,GACA;QACA;QACAC;QACAA;QACA;MACA,EACA,CACAR;QACAQ;QACA;QACA;UACAP;QACA;UACA;UACA;UACA;UACA;UACA;UACA;QACA;MACA;IACA;IACAQ;MACA;QACA;QACAD;MACA,GACAR;QACA;QACAQ;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAwuC,CAAgB,+pCAAG,EAAC,C;;;;;;;;;;;ACA5vC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"pages/verification/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './pages/verification/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=d1e125d2&scoped=true&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=d1e125d2&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d1e125d2\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"pages/verification/index.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=d1e125d2&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"","\n \n\n\n\n \n\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--10-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--10-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=d1e125d2&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--10-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--10-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=d1e125d2&lang=less&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539460\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/index.js.map
new file mode 100644
index 0000000..1c35edd
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/index.vue?1e7d","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/index.vue?5edf","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/index.vue?326d","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/index.vue?24fe"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAkH;AAClH;AACyD;AACL;;;AAGpD;AAC2K;AAC3K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,gFAAM;AACR,EAAE,yFAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,oFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACtBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA0oB,CAAgB,upBAAG,EAAC,C","file":"subPackages/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=32c4cbf2&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/index.vue\"\nexport default component.exports","export * from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=32c4cbf2&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderDetail.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderDetail.js.map
new file mode 100644
index 0000000..4ed408c
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderDetail.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?8f87","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?1e35","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?5882","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?f494","uni-app:///subPackages/order/orderDetail.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?76a3","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderDetail.vue?a89e"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","detail","a","b","c","d","e","f","g","h","i","j","k","l","m"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,oBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoI;AACpI;AAC+D;AACL;AACsC;;;AAGhG;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,iFAAM;AACR,EAAE,kGAAM;AACR,EAAE,2GAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,sGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA+pB,CAAgB,6pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCqEnrB;EACAC;IACA;MACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAA;AAA8wC,CAAgB,osCAAG,EAAC,C;;;;;;;;;;;ACAlyC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/order/orderDetail.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/order/orderDetail.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./orderDetail.vue?vue&type=template&id=0d6c4dc4&scoped=true&\"\nvar renderjs\nimport script from \"./orderDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./orderDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./orderDetail.vue?vue&type=style&index=0&id=0d6c4dc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d6c4dc4\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/order/orderDetail.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderDetail.vue?vue&type=template&id=0d6c4dc4&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderDetail.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\t订单详情\r\n\t\t\t\r\n\t\t\t\t下单日期:\r\n\t\t\t\t{{detail.a}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.b}}\r\n\t\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\r\n\t\t\t产品信息\r\n\t\t\t\r\n\t\t\t\t产品类型:\r\n\t\t\t\t{{detail.c}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t产品类型:\r\n\t\t\t\t{{detail.d}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t产品类型:\r\n\t\t\t\t{{detail.e}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t产品类型:\r\n\t\t\t\t{{detail.f}}\r\n\t\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\r\n\t\t\t订单信息\r\n\t\t\t\r\n\t\t\t\t下单日期:\r\n\t\t\t\t{{detail.g}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.h}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.i}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.j}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t出行人手机号1:\r\n\t\t\t\t{{detail.k}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.l}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{detail.m}}\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderDetail.vue?vue&type=style&index=0&id=0d6c4dc4&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderDetail.vue?vue&type=style&index=0&id=0d6c4dc4&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539830\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderList.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderList.js.map
new file mode 100644
index 0000000..81d3c43
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/order/orderList.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?795a","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?d484","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?1d29","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?5869","uni-app:///subPackages/order/orderList.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?4a8b","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/order/orderList.vue?68fc"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","components","calendarVue","data","list","a","b","c","d","e","f","keywords","methods","getList"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,kBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkI;AAClI;AAC6D;AACL;AACsC;;;AAG9F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,gGAAM;AACR,EAAE,yGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,oGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA6pB,CAAgB,2pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;eCgDjrB;EACAC;IAAAC;EAAA;EACAC;IACA;MACAC,OACA;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;MACA,GACA;QACAL;QACAC;QACAC;QACAC;QACAC;QACAC;MACA,EACA;MACAC;IACA;EACA;EACAC;IACAC,6BAEA;EACA;AACA;AAAA,2B;;;;;;;;;;;;AC9EA;AAAA;AAAA;AAAA;AAA4wC,CAAgB,ksCAAG,EAAC,C;;;;;;;;;;;ACAhyC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/order/orderList.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/order/orderList.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./orderList.vue?vue&type=template&id=46d4a7aa&scoped=true&\"\nvar renderjs\nimport script from \"./orderList.vue?vue&type=script&lang=js&\"\nexport * from \"./orderList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./orderList.vue?vue&type=style&index=0&id=46d4a7aa&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46d4a7aa\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/order/orderList.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderList.vue?vue&type=template&id=46d4a7aa&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderList.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t搜索\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t订单详情\r\n\t\t\t\r\n\t\t\t\t下单日期:\r\n\t\t\t\t{{item.a}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t订单号:\r\n\t\t\t\t{{item.b}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t状态:\r\n\t\t\t\t{{item.c}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t产品类型:\r\n\t\t\t\t{{item.d}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t产品名称:\r\n\t\t\t\t{{item.e}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t预定人手机号:\r\n\t\t\t\t{{item.f}}\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t暂无订单数据\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderList.vue?vue&type=style&index=0&id=46d4a7aa&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./orderList.vue?vue&type=style&index=0&id=46d4a7aa&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539806\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/accountPassword.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/accountPassword.js.map
new file mode 100644
index 0000000..5b64846
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/accountPassword.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?a246","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?b2b5","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?2367","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?2103","uni-app:///subPackages/user/accountPassword.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?9293","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/accountPassword.vue?eb8d"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","userInfo","onShow","console"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,wBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwI;AACxI;AACmE;AACL;AACsC;;;AAGpG;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,qFAAM;AACR,EAAE,sGAAM;AACR,EAAE,+GAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,0GAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAmqB,CAAgB,iqBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCevrB;EACAC;IACA;MACAC;IACA;EACA;EACAC;IACA;IACAC;EACA;AACA;AAAA,2B;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAkxC,CAAgB,wsCAAG,EAAC,C;;;;;;;;;;;ACAtyC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/user/accountPassword.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/user/accountPassword.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./accountPassword.vue?vue&type=template&id=d1d19898&scoped=true&\"\nvar renderjs\nimport script from \"./accountPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./accountPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./accountPassword.vue?vue&type=style&index=0&id=d1d19898&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d1d19898\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/user/accountPassword.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./accountPassword.vue?vue&type=template&id=d1d19898&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./accountPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./accountPassword.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\t登录账号\r\n\t\t\t{{userInfo.mobile}}\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t密码\r\n\t\t\t****** \r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./accountPassword.vue?vue&type=style&index=0&id=d1d19898&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./accountPassword.vue?vue&type=style&index=0&id=d1d19898&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539904\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/infoFilling.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/infoFilling.js.map
new file mode 100644
index 0000000..e0f910b
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/infoFilling.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?ce11","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?8b13","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?7d53","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?dde3","uni-app:///subPackages/user/infoFilling.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?f363","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/infoFilling.vue?ca87"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","valueType","inputValue","inputValueStr","keyNames","key","value","lingoIds","scenicIds","speakText","selectionItem","selection","arr","valueStr","fileList","deleteIndex","deleteMode","onLoad","methods","initData","uni","title","initLingoList","res","valueArr","console","param","name","initScenicList","initSparkleText","text","initVideo","addText","delText","changeSelection","changeItemSelect","selectAll","popSubmit","uploadImage","url","count","success","filePath","header","_this","fail","icon","uploadVideo","removeFile","playVideo","changeDeleteMode","changeDeleteIndex","confirmDelVideo","handleSubmitData","submit","msgType"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,oBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoI;AACpI;AAC+D;AACL;AACsC;;;AAGhG;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,iFAAM;AACR,EAAE,kGAAM;AACR,EAAE,2GAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,sGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,aAAa,sTAEN;AACP,KAAK;AACL;AACA,aAAa,gQAEN;AACP,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5JA;AAAA;AAAA;AAAA;AAA+pB,CAAgB,6pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;ACyInrB;AACA;AAAA;AAAA;AAAA,eACA;EACAC;IACA;MACAC;MACAC;MACAC;MACAC,WACA;QAAAC;QAAAC;MAAA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,GACA;QAAAD;QAAAC;MAAA,EACA;MACAC;MACAC;MACAC;MAEAC;MAAA;MACAC;QAAAC;QAAAN;QAAAO;MAAA;MAAA;;MAEAC;MACAC;MAEAC;IACA;EACA;EACAC;IACA;EACA;EAGAC;IACAC;MAAA;MACAC;QAAAC;MAAA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACA;MACA;MACA;QACA;QACA;UAAA;QAAA;QACA;UACAD;YAAAC;UAAA;QACA;QACA;UACA;QACA;QACA;UACA;QACA;QACA;UACA;QACA;QACA;UACA;QACA;MAEA;QACA;QACA;MACA;IAIA;IACA;IACAC;MAAA;MAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEA;cAAA;gBAAAC;gBACAC;gBACA;kBACAA;oBAAA;kBAAA;gBACA;gBACAC;gBACAC;kBAAAd;kBAAAe;gBAAA;gBACA;kBACA;oBAAA;kBAAA;kBACA;oBAAArB;sBAAA;oBAAA;oBAAAO;sBAAA;oBAAA;kBAAA;gBACA;gBACA;kBACAC;kBACA;kBACAW;gBACA;kBACA;gBACA;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA;IAEA;IACA;IACAG;MAAA;MAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OACA;cAAA;gBAAAL;gBACAC;gBACA;kBACAA;oBAAA;kBAAA;gBACA;gBACAC;gBACA;kBACA;oBAAA;kBAAA;kBACA;oBAAAnB;sBAAA;oBAAA;oBAAAO;sBAAA;oBAAA;kBAAA;gBACA;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA;IACA;IACA;IACAgB;MACA;QACA;UAAAC;QAAA;MACA;MACA;IACA;IACA;IACAC;MACA;QACA;QACA;QACAN;MACA;QACA;MACA;IACA;IAEAO;MACA;QAAAF;MAAA;IACA;IACAG;MACA;IACA;IAGAC;MACA;MACA;QAAAtB;QAAAN;QAAAO;MAAA;MACA;IACA;IACA;IACAsB;MACA;QAAA;MAAA;MACA;QACA;MACA;QACA;MACA;IACA;IACAC;MACA;QAAA;MAAA;IACA;IACA;IACAC;MACA;MACA;QAAA;MAAA;MACA;QACA;QACA;UAAA;QAAA;MACA;MACA;IACA;IAEAC;MACA;MACA;MAIAC;MACAnB;QACAoB;QACAC;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACAF;YACAG;YACAf;YACAgB;cAAA;YAAA;YACAF;cACA;gBACA;gBACA;kBACAG;gBACA;cACA;YAGA;YACAC;cACAzB;gBACAC;gBACAyB;cACA;YACA;UACA;QAEA;QACAD;UACAzB;YACAC;YACAyB;UACA;QACA;MACA;IACA;IACAC;MACA;MACA;MAIAR;MACAnB;MACAA;QACAoB;QACAC;UAEA;UACA;YACAF;YACAG;YACAf;YACAgB;cAAA;YAAA;YACAF;cACArB;cACA;gBACA;gBACA;kBACAwB;gBACA;cACA;YAGA;YACAC;cACAzB;cACAA;gBACAC;gBACAyB;cACA;YACA;UACA;QAEA;QACAD;UACAzB;UACAA;YACAC;YACAyB;UACA;QACA;MACA;IACA;IAEAE;MACA;IACA;IAEAC;MACA;MACA7B;QACAmB;MACA;IACA;IACAW;MACA;MACA;IACA;IACAC;MACA;QAAA;MAAA;MACA;QACA;MACA;QACA;MACA;MACA1B;IACA;IAEA2B;MAAA;MACA;QAAA;MAAA;MACA;IACA;IAGA;IACAC;MACA;MACA;QACA;QACA;UACArD;QACA;QACA;UACAA;QACA;QAEA;QACAA;UACA;YACAM;UACA;QACA;QACA;UAAA;QAAA;QACA;UAAA;QAAA;QACAmB;MACA;MAEA;QACA;UACAL;YACAC;YACAyB;UACA;UACA;QACA;QACA;UAAA;QAAA;QACA;UAAA;QAAA;MACA;MAEA;QACA;QACA;MACA;IACA;IAEAQ;MACA;MACA;MAEAlC;QACAmC;QACAvD;UACAC;UACAC;UACAC;UACAW;QACA;MACA;MACA;IACA;EAEA;AACA;AAAA,2B;;;;;;;;;;;;;ACveA;AAAA;AAAA;AAAA;AAA8wC,CAAgB,osCAAG,EAAC,C;;;;;;;;;;;ACAlyC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/user/infoFilling.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/user/infoFilling.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./infoFilling.vue?vue&type=template&id=6fa2583d&scoped=true&\"\nvar renderjs\nimport script from \"./infoFilling.vue?vue&type=script&lang=js&\"\nexport * from \"./infoFilling.vue?vue&type=script&lang=js&\"\nimport style0 from \"./infoFilling.vue?vue&type=style&index=0&id=6fa2583d&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6fa2583d\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/user/infoFilling.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./infoFilling.vue?vue&type=template&id=6fa2583d&scoped=true&\"","var components\ntry {\n components = {\n uniIcons: function () {\n return import(\n /* webpackChunkName: \"uni_modules/uni-icons/components/uni-icons/uni-icons\" */ \"@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue\"\n )\n },\n uniPopup: function () {\n return import(\n /* webpackChunkName: \"uni_modules/uni-popup/components/uni-popup/uni-popup\" */ \"@/uni_modules/uni-popup/components/uni-popup/uni-popup.vue\"\n )\n },\n }\n} catch (e) {\n if (\n e.message.indexOf(\"Cannot find module\") !== -1 &&\n e.message.indexOf(\".vue\") !== -1\n ) {\n console.error(e.message)\n console.error(\"1. 排查组件名称拼写是否正确\")\n console.error(\n \"2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom\"\n )\n console.error(\n \"3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件\"\n )\n } else {\n throw e\n }\n}\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n var l0 =\n _vm.valueType == \"scenic_ids\"\n ? _vm.__map(_vm.scenicIds, function (item, i) {\n var $orig = _vm.__get_orig(item)\n var g0 = item.value.length\n return {\n $orig: $orig,\n g0: g0,\n }\n })\n : null\n var l1 =\n !(_vm.valueType == \"scenic_ids\") && _vm.valueType == \"lingo_ids\"\n ? _vm.__map(_vm.lingoIds, function (item, i) {\n var $orig = _vm.__get_orig(item)\n var g1 = item.value.length\n return {\n $orig: $orig,\n g1: g1,\n }\n })\n : null\n var m0 =\n !(_vm.valueType == \"scenic_ids\") && _vm.valueType == \"lingo_ids\"\n ? _vm.showImg(\"/uploads/20241202/33e04a3b13241a6705616f6d6db315ce.png\")\n : null\n var g2 =\n !(_vm.valueType == \"scenic_ids\") &&\n !(_vm.valueType == \"lingo_ids\") &&\n !(_vm.valueType == \"sparkle_text\") &&\n _vm.valueType == \"video_list\"\n ? _vm.deleteIndex.length\n : null\n var g3 =\n !(_vm.valueType == \"scenic_ids\") &&\n !(_vm.valueType == \"lingo_ids\") &&\n !(_vm.valueType == \"sparkle_text\") &&\n _vm.valueType == \"video_list\" &&\n g2 > 0\n ? _vm.deleteIndex.length\n : null\n var m1 =\n !(_vm.valueType == \"scenic_ids\") &&\n !(_vm.valueType == \"lingo_ids\") &&\n !(_vm.valueType == \"sparkle_text\") &&\n _vm.valueType == \"video_list\"\n ? _vm.showImg(\"/uploads/20241202/33e04a3b13241a6705616f6d6db315ce.png\")\n : null\n var l2 =\n !(_vm.valueType == \"scenic_ids\") &&\n !(_vm.valueType == \"lingo_ids\") &&\n !(_vm.valueType == \"sparkle_text\") &&\n _vm.valueType == \"video_list\"\n ? _vm.__map(_vm.fileList, function (file, i) {\n var $orig = _vm.__get_orig(file)\n var m2 = _vm.showImg(\n \"/uploads/20241202/44b29b02b77b0a0342bb38c2d9282f49.png\"\n )\n var g4 = _vm.deleteMode ? _vm.deleteIndex.includes(i) : null\n var g5 = _vm.deleteMode ? _vm.deleteIndex.includes(i) : null\n var m3 =\n _vm.deleteMode && !g5\n ? _vm.showImg(\n \"/uploads/20241202/b6e64e71e01a6cfd8ade6c639583357b.png\"\n )\n : null\n var m4 =\n _vm.deleteMode && !!g5\n ? _vm.showImg(\n \"/uploads/20241202/21f56765ccdc74a07fbd3b30a72a87a0.png\"\n )\n : null\n return {\n $orig: $orig,\n m2: m2,\n g4: g4,\n g5: g5,\n m3: m3,\n m4: m4,\n }\n })\n : null\n var g6 = [\"scenic_ids\", \"sparkle_text\", \"video_list\"].includes(_vm.valueType)\n var g7 = [\"scenic_ids\", \"sparkle_text\"].includes(_vm.valueType)\n var g8 = [\"video_list\"].includes(_vm.valueType)\n var l3 = _vm.__map(_vm.selection.arr, function (item, index) {\n var $orig = _vm.__get_orig(item)\n var g9 = _vm.selection.value.includes(item.id)\n var g10 = _vm.selection.value.includes(item.id)\n return {\n $orig: $orig,\n g9: g9,\n g10: g10,\n }\n })\n if (!_vm._isMounted) {\n _vm.e0 = function ($event) {\n return _vm.$refs.popup.close()\n }\n }\n _vm.$mp.data = Object.assign(\n {},\n {\n $root: {\n l0: l0,\n l1: l1,\n m0: m0,\n g2: g2,\n g3: g3,\n m1: m1,\n l2: l2,\n g6: g6,\n g7: g7,\n g8: g8,\n l3: l3,\n },\n }\n )\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./infoFilling.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./infoFilling.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{item.name}}\r\n\t\t\t\t\t0\" class=\"text-overflow\" >{{item.valueStr}}\r\n\t\t\t\t\t请选择\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{item.name}}\r\n\t\t\t\t\t0\" class=\"text-overflow\" >{{item.valueStr}}\r\n\t\t\t\t\t请选择\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t证明材料\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tx\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{i==0?'主亮点':`副亮点${i}`}}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t+ 添加更多\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t0\" class=\"del-num\">{{deleteIndex.length}}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t上传视频\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t保存\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t取消\r\n\t\t\t\t保存\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t取消\r\n\t\t\t\t\t保存\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t取消删除\r\n\t\t\t\t\t确认删除\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./infoFilling.vue?vue&type=style&index=0&id=6fa2583d&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./infoFilling.vue?vue&type=style&index=0&id=6fa2583d&scoped=true&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539857\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNewDetail.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNewDetail.js.map
new file mode 100644
index 0000000..b5511aa
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNewDetail.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?3dcc","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?1487","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?8a92","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?84c5","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?0c55","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNewDetail.vue?69b8"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,oBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoI;AACpI;AAC+D;AACL;AACsC;;;AAGhG;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,iFAAM;AACR,EAAE,kGAAM;AACR,EAAE,2GAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,sGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA+pB,CAAgB,6pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAnrB;AAAA;AAAA;AAAA;AAA8wC,CAAgB,osCAAG,EAAC,C;;;;;;;;;;;ACAlyC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/user/myNewDetail.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/user/myNewDetail.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./myNewDetail.vue?vue&type=template&id=d58395de&scoped=true&\"\nvar renderjs\nimport script from \"./myNewDetail.vue?vue&type=script&lang=js&\"\nexport * from \"./myNewDetail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myNewDetail.vue?vue&type=style&index=0&id=d58395de&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d58395de\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/user/myNewDetail.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNewDetail.vue?vue&type=template&id=d58395de&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNewDetail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNewDetail.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNewDetail.vue?vue&type=style&index=0&id=d58395de&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNewDetail.vue?vue&type=style&index=0&id=d58395de&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539899\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNews.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNews.js.map
new file mode 100644
index 0000000..b15bd36
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/myNews.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?38d7","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?1dce","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?5cce","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?142d","uni-app:///subPackages/user/myNews.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?87c7","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/myNews.vue?1a74"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","list","title","time","isRead"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,eAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+H;AAC/H;AAC0D;AACL;AACsC;;;AAG3F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,4EAAM;AACR,EAAE,6FAAM;AACR,EAAE,sGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,iGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA0pB,CAAgB,wpBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eCY9qB;EACAC;IACA;MACAC,OACA;QACAC;QACAC;QACAC;MACA,GACA;QACAF;QACAC;QACAC;MACA;IAEA;EACA;AACA;AAAA,2B;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAywC,CAAgB,+rCAAG,EAAC,C;;;;;;;;;;;ACA7xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/user/myNews.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/user/myNews.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./myNews.vue?vue&type=template&id=0f3ba3fa&scoped=true&\"\nvar renderjs\nimport script from \"./myNews.vue?vue&type=script&lang=js&\"\nexport * from \"./myNews.vue?vue&type=script&lang=js&\"\nimport style0 from \"./myNews.vue?vue&type=style&index=0&id=0f3ba3fa&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f3ba3fa\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/user/myNews.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNews.vue?vue&type=template&id=0f3ba3fa&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNews.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNews.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{{item.title}} \r\n\t\t\t\r\n\t\t\t{{item.time}}\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNews.vue?vue&type=style&index=0&id=0f3ba3fa&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myNews.vue?vue&type=style&index=0&id=0f3ba3fa&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539915\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/userInfo.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/userInfo.js.map
new file mode 100644
index 0000000..601c697
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/user/userInfo.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?4b7a","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?2e9f","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?2937","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?83f5","uni-app:///subPackages/user/userInfo.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?1dbc","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/user/userInfo.vue?3dcb"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","info","nickname","mobile","avatar","gender","genderStr","group_id","group_idStr","certificate_number","duration","lingo_ids","lingo_idsStr","lingo_idsFileList","scenic_ids","scenic_idsStr","bio","video_list","sparkle_text","sparkle_textStr","groupIds","mounted","uni","beforeUnmount","console","beforeDestroy","onLoad","methods","getUserInfo","id","initSelect","uploadAvator","url","count","success","filePath","name","header","_this","fail","title","icon","selectSex","itemList","selectRank","changeValue","inputValue","updateInfo","submit","method","lingo_image_list","content","showCancel"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,iBAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAiI;AACjI;AAC4D;AACL;AACsC;;;AAG7F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,8EAAM;AACR,EAAE,+FAAM;AACR,EAAE,wGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,mGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAA4pB,CAAgB,0pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;ACiFhrB;AAAA;AAAA;AAAA,eACA;EACAC;IAEA;MACAC;QACAC;QAAAC;QAAAC;QACAC;QAAAC;QACAC;QAAAC;QACAC;QAAAC;QACAC;QAAAC;QAAAC;QACAC;QAAAC;QACAC;QAAAC;QACAC;QACAC;MACA;MAEAC;IAEA;EACA;EACAC;IACAC;EACA;EACAC;IACAC;IACAF;EACA;EACAG;IACAD;IACAF;EACA;EAEAI;IACA;IACA;EACA;EACAC;IACA;IACAC;MAAA;MACA;QACA;QACA;QACA;QACA;UACAf;YAAA;UAAA;UACAI;YAAA;UAAA;QACA;QAEA;UACAY;UAAAzB;UACAF;UAAAC;UACAM;UACAC;UAAAM;UACAX;UAAAC;UACAC;UAAAC;UAEAG;UACAC;UACAC;UAEAC;UACAC;UAEAG;UACAC;YAAA;UAAA;UAEAF;QACA;MACA;IACA;IAEAa;MAAA;MACA;MACA;QACA;MACA;IACA;IAEA;IACAC;MACA;MACA;MAIAC;MACAV;QACAW;QACAC;UACA;UACA;YACAF;YACAG;YACAC;YACAC;cAAA;YAAA;YACAH;cACA;gBACA;gBACA;kBACAI;gBACA;cACA;YAGA;YACAC;cACAjB;gBACAkB;gBACAC;cACA;YACA;UACA;QAEA;QACAF;UACAjB;YACAkB;YACAC;UACA;QACA;MACA;IACA;IACAC;MACA;MACA;MACA;MACApB;QACAqB;QACAT;UACA;UACAI;UACAA;QAEA;QACAC;UACAf;QACA;MACA;IACA;IACAoB;MACA;MACA;QAAA;MAAA;MACA;QAAA;MAAA;MACAtB;QACAqB;QACAT;UACA;UACAI;UACAA;QAEA;QACAC;UACAf;QACA;MACA;IACA;IAEA;IACAqB;MACA;MACA;QACAvB;MACA;MACA;QACAA;MACA;MACA;QACAwB;MACA;MAEAxB;QACAU;MACA;IACA;IAEA;IACAe;MACA;QACAvB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;UACA;QACA;QACA;UACA;QACA;QAEAA;MAEA;IACA;IAIAwB;MAAA;MACA;MACA;MACA;MACA;MACA;MACA;QACA1B;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;MACA;MACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACA;QACAnB;UAAAkB;UAAAC;QAAA;QACA;MACA;MACAjB;MAEA;QACAyB;MAAA,GACA;QACAC;QACAjC;QACAC;MAAA,EACA;MACA;MACA;MACA;MACA;MAIAI;QACAkB;QACAW;QACAjB;UACA;YACA;cACAV;cACA;gBACAF;kBACAkB;kBACAW;kBACAC;kBACAlB;oBACA;sBACA;oBACA;kBACA;gBACA;cACA;YACA;UACA;QACA;MACA;IACA;EAEA;AACA;AAAA,2B;;;;;;;;;;;;;AClXA;AAAA;AAAA;AAAA;AAA2wC,CAAgB,isCAAG,EAAC,C;;;;;;;;;;;ACA/xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/user/userInfo.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/user/userInfo.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./userInfo.vue?vue&type=template&id=4eea0e7d&scoped=true&\"\nvar renderjs\nimport script from \"./userInfo.vue?vue&type=script&lang=js&\"\nexport * from \"./userInfo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./userInfo.vue?vue&type=style&index=0&id=4eea0e7d&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4eea0e7d\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/user/userInfo.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=template&id=4eea0e7d&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n var g0 = _vm.info.video_list.length\n var g1 = g0 > 0 ? _vm.info.video_list.length : null\n _vm.$mp.data = Object.assign(\n {},\n {\n $root: {\n g0: g0,\n g1: g1,\n },\n }\n )\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t·基础信息\r\n\t\t\t\r\n\t\t\t\t
头像\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t姓名\r\n\t\t\t\t{{info.nickname}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t性别\r\n\t\t\t\t{{info.genderStr}}\r\n\t\t\t\t请选择\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t手机号\r\n\t\t\t\t{{info.mobile}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t·工作相关\r\n\t\t\t\r\n\t\t\t\t导游等级\r\n\t\t\t\t{{info.group_idStr}}\r\n\t\t\t\t请选择\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t导游证号\r\n\t\t\t\t{{info.certificate_number}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t工作年限\r\n\t\t\t\t{{info.duration}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t语言能力\r\n\t\t\t\t{{info.lingo_idsStr}}\r\n\t\t\t\t请选择\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t擅长景区\r\n\t\t\t\t{{info.scenic_idsStr}}\r\n\t\t\t\t请选择\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t个性签名\r\n\t\t\t\t{{info.bio}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t核心亮点\r\n\t\t\t\t{{info.sparkle_textStr}}\r\n\t\t\t\t请填写\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t·讲解视频\r\n\t\t\t\r\n\t\t\t\t讲解视频\r\n\t\t\t\t0\">{{info.video_list.length}}\r\n\t\t\t\t请选择\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t保存修改\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=style&index=0&id=4eea0e7d&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=style&index=0&id=4eea0e7d&scoped=true&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539932\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/video/index.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/video/index.js.map
new file mode 100644
index 0000000..2ba06f2
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/subPackages/video/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?9d57","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?01ff","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?8000","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?d235","uni-app:///subPackages/video/index.vue","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?ed96","webpack:///D:/Project/project_wenlv/tourGuide/subPackages/video/index.vue?5cee"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page","data","url","onLoad","console"],"mappings":";;;;;;;;;;;;;AAAA;AAGA;AACA;AAHA;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAG1DC,UAAU,CAACC,cAAI,CAAC,C;;;;;;;;;;;;;ACLhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA8H;AAC9H;AACyD;AACL;AACsC;;;AAG1F;AAC8K;AAC9K,gBAAgB,qLAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,4FAAM;AACR,EAAE,qGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,gGAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAypB,CAAgB,upBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;eCO7qB;EACAC;IACA;MACAC;IACA;EACA;EACAC;IACAC;IACA;MACA;IACA;MACA;IACA;IACAA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAwwC,CAAgB,8rCAAG,EAAC,C;;;;;;;;;;;ACA5xC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"subPackages/video/index.js","sourcesContent":["import 'uni-pages';\n// @ts-ignore\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './subPackages/video/index.vue'\ncreatePage(Page)","import { render, staticRenderFns, recyclableRender, components } from \"./index.vue?vue&type=template&id=be137d44&scoped=true&\"\nvar renderjs\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=be137d44&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"be137d44\",\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"subPackages/video/index.vue\"\nexport default component.exports","export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=template&id=be137d44&scoped=true&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=script&lang=js&\"","\r\n \r\n\t \r\n \r\n\r\n \r\n\r\n \r\n\r\n ","import mod from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=be137d44&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./index.vue?vue&type=style&index=0&id=be137d44&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123539792\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-badge/components/uni-badge/uni-badge.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-badge/components/uni-badge/uni-badge.js.map
new file mode 100644
index 0000000..37763e0
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-badge/components/uni-badge/uni-badge.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?7e1c","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?725c","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?ab22","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?6f0c","uni-app:///uni_modules/uni-badge/components/uni-badge/uni-badge.vue","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?ab13","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?13ed"],"names":["name","emits","props","type","default","inverted","isDot","maxNum","absolute","offset","text","size","customStyle","data","computed","width","classNames","positionStyle","h","w","rightTop","right","top","rightBottom","bottom","leftBottom","left","leftTop","dotStyle","minWidth","height","padding","borderRadius","displayValue","methods","onClick"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsH;AACtH;AAC6D;AACL;AACc;;;AAGtE;AACoL;AACpL,gBAAgB,qLAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,oFAAM;AACR,EAAE,6FAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,wFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAA2rB,CAAgB,2pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;ACS/sB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvBA,gBAyBA;EACAA;EACAC;EACAC;IACAC;MACAA;MACAC;IACA;IACAC;MACAF;MACAC;IACA;IACAE;MACAH;MACAC;IACA;IACAG;MACAJ;MACAC;IACA;IACAI;MACAL;MACAC;IACA;IACAK;MACAN;MACAC;QACA;MACA;IACA;IACAM;MACAP;MACAC;IACA;IACAO;MACAR;MACAC;IACA;IACAQ;MACAT;MACAC;QACA;MACA;IACA;EACA;EACAS;IACA;EACA;EACAC;IACAC;MACA;IACA;IACAC;MACA,IACAX,WAIA,KAJAA;QACAF,OAGA,KAHAA;QACAQ,OAEA,KAFAA;QACAH,WACA,KADAA;MAEA,QACAH,oDACA,sBACA,sBACAG,sCACA;IACA;IACAS;MACA;MACA;QACAC;MACA;QACAC;QACAD;MACA;MACA;MACA;MAEA;QACAE;UACAC;UACAC;QACA;QACAC;UACAF;UACAG;QACA;QACAC;UACAC;UACAF;QACA;QACAG;UACAD;UACAJ;QACA;MACA;MACA;MACA;IACA;IACAM;MACA;MACA;QACAb;QACAc;QACAC;QACAC;QACAC;MACA;IACA;IACAC;MACA,IACA3B,QAGA,KAHAA;QACAI,OAEA,KAFAA;QACAH,SACA,KADAA;MAEA;IACA;EACA;EACA2B;IACAC;MACA;IACA;EACA;AACA;AAAA,4B;;;;;;;;;;;;AC5JA;AAAA;AAAA;AAAA;AAA0yC,CAAgB,0qCAAG,EAAC,C;;;;;;;;;;;ACA9zC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"uni_modules/uni-badge/components/uni-badge/uni-badge.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./uni-badge.vue?vue&type=template&id=7c66581c&\"\nvar renderjs\nimport script from \"./uni-badge.vue?vue&type=script&lang=js&\"\nexport * from \"./uni-badge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uni-badge.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-badge/components/uni-badge/uni-badge.vue\"\nexport default component.exports","export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=template&id=7c66581c&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n var s0 = _vm.text\n ? _vm.__get_style([_vm.positionStyle, _vm.customStyle, _vm.dotStyle])\n : null\n _vm.$mp.data = Object.assign(\n {},\n {\n $root: {\n s0: s0,\n },\n }\n )\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t\t\r\n\t\t{{displayValue}}\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123540053\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
new file mode 100644
index 0000000..e3b9e60
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?bf53","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?3dbd","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?6526","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?7b69","uni-app:///uni_modules/uni-icons/components/uni-icons/uni-icons.vue","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?f11b","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?96db"],"names":["name","emits","props","type","default","color","size","customPrefix","data","icons","computed","unicode","iconSize","methods","_onClick"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsH;AACtH;AAC6D;AACL;AACc;;;AAGtE;AACoL;AACpL,gBAAgB,qLAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,oFAAM;AACR,EAAE,6FAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,wFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAA2rB,CAAgB,2pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;ACU/sB;;;;;;;;;;;AACA;EACA;EACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,eAUA;EACAA;EACAC;EACAC;IACAC;MACAA;MACAC;IACA;IACAC;MACAF;MACAC;IACA;IACAE;MACAH;MACAC;IACA;IACAG;MACAJ;MACAC;IACA;EACA;EACAI;IACA;MACAC;IACA;EACA;EACAC;IACAC;MAAA;MACA;QAAA;MAAA;MACA;QACA;MACA;MACA;IACA;IACAC;MACA;IACA;EACA;EACAC;IACAC;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAA0yC,CAAgB,0qCAAG,EAAC,C;;;;;;;;;;;ACA9zC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"uni_modules/uni-icons/components/uni-icons/uni-icons.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./uni-icons.vue?vue&type=template&id=a2e81f6e&\"\nvar renderjs\nimport script from \"./uni-icons.vue?vue&type=script&lang=js&\"\nexport * from \"./uni-icons.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uni-icons.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-icons/components/uni-icons/uni-icons.vue\"\nexport default component.exports","export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=template&id=a2e81f6e&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\t{{unicode}}\r\n\t\r\n\t\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123540116\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
new file mode 100644
index 0000000..5a63187
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?d3e3","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?4a71","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?4591","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?4c2b","uni-app:///uni_modules/uni-popup/components/uni-popup/uni-popup.vue","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?37ba","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-popup/components/uni-popup/uni-popup.vue?d87c"],"names":["name","components","emits","props","animation","type","default","isMaskClick","maskClick","backgroundColor","safeArea","maskBackgroundColor","watch","handler","immediate","isDesktop","showPopup","data","duration","ani","showTrans","popupWidth","popupHeight","config","top","bottom","center","left","right","message","dialog","share","maskClass","position","transClass","maskShow","mkclick","popupstyle","computed","bg","mounted","uni","windowWidth","windowHeight","windowTop","screenHeight","safeAreaInsets","fixSize","destroyed","created","methods","setH5Visible","closeMask","disableMask","clear","e","open","clearTimeout","direction","console","show","close","touchstart","onTap","paddingBottom","display","flexDirection","justifyContent","alignItems"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsH;AACtH;AAC6D;AACL;AACc;;;AAGtE;AACoL;AACpL,gBAAgB,qLAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,oFAAM;AACR,EAAE,6FAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,wFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,aAAa,mWAEN;AACP,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAA2rB,CAAgB,2pBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACuB/sB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArBA,eAuBA;EACAA;EACAC,aAIA;EACAC;EACAC;IACA;IACAC;MACAC;MACAC;IACA;IACA;IACA;IACAD;MACAA;MACAC;IACA;IACA;IACAC;MACAF;MACAC;IACA;IACA;IACAE;MACAH;MACAC;IACA;IACAG;MACAJ;MACAC;IACA;IACAI;MACAL;MACAC;IACA;IACAK;MACAN;MACAC;IACA;EACA;EAEAM;IACA;AACA;AACA;IACAP;MACAQ;QACA;QACA;MACA;MACAC;IACA;IACAC;MACAF;QACA;QACA;MACA;MACAC;IACA;IACA;AACA;AACA;AACA;IACAN;MACAK;QACA;MACA;MACAC;IACA;IACAP;MACAM;QACA;MACA;MACAC;IACA;IACA;IACAE,qCAKA;EACA;EACAC;IACA;MACAC;MACAC;MACAH;MACAI;MACAC;MACAC;MACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;MACA;MACAC;QACAC;QACAR;QACAD;QACAG;QACAC;QACAnB;MACA;MACAyB;QACAD;QACAN;QACAC;MACA;MACAO;MACAC;MACAC;IACA;EACA;EACAC;IACAvB;MACA;IACA;IACAwB;MACA;QACA;MACA;MACA;IACA;EACA;EACAC;IAAA;IACA;MACA,4BAOAC;QANAC;QACAC;QACAC;QACAlC;QACAmC;QACAC;MAEA;MACA;MACA;MACA;QAEA;MAKA;QACA;MACA;IACA;IACAC;EAOA;EAEA;EACAC;IACA;EACA;EAQAC;IACA;IACA;MACA;IACA;MACA;IACA;IACA;MACA;IACA;MACA;IACA;IACA;IACA;IACA;IACA;IACA;EACA;EACAC;IACAC,uCAKA;IACA;AACA;AACA;IACAC;MACA;IACA;IACA;AACA;AACA;IACAC;MACA;IACA;IACA;IACAC;MAEAC;MAEA;IACA;IAEAC;MACA;MACA;QACAC;QACA;MACA;MACA;MACA;QACAC;MACA;MACA;QACAC;QACA;MACA;MACA;MACA;QACAC;QACAvD;MACA;IACA;IACAwD;MAAA;MACA;MACA;QACAD;QACAvD;MACA;MACAoD;MACA;MACA;MACA;QACA;MACA;IACA;IACA;IACAK;MACA;IACA;IAEAC;MACA;QACA;QACA;QACA;MACA;MACA;MACA;MACA;IACA;IACA;AACA;AACA;IACAvC;MAAA;MACA;MACA;MACA;QACAS;QACAN;QACAC;QACAnB;MACA;MACA;MACA;MACA;MACA;MACA;QACA;UACA;QACA;MACA;IACA;IACA;AACA;AACA;IACAgB;MACA;MACA;MACA;QACAQ;QACAN;QACAC;QACAH;QACAuC;QACAvD;MACA;MACA;MACA;MACA;MACA;IACA;IACA;AACA;AACA;IACAiB;MACA;MACA;MACA;QACAO;QAEAgC;QACAC;QAEAzC;QACAE;QACAC;QACAJ;QACA2C;QACAC;MACA;MACA;MACA;MACA;MACA;IACA;IACAzC;MACA;MACA;MACA;QACAM;QACAN;QACAF;QACAD;QACAf;QAEAwD;QACAC;MAEA;MACA;MACA;MACA;MACA;IACA;IACAtC;MACA;MACA;MACA;QACAK;QACAR;QACAG;QACAJ;QACAf;QAEAwD;QACAC;MAEA;MACA;MACA;MACA;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;;ACpaA;AAAA;AAAA;AAAA;AAA0yC,CAAgB,0qCAAG,EAAC,C;;;;;;;;;;;ACA9zC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"uni_modules/uni-popup/components/uni-popup/uni-popup.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./uni-popup.vue?vue&type=template&id=7c43d41b&\"\nvar renderjs\nimport script from \"./uni-popup.vue?vue&type=script&lang=js&\"\nexport * from \"./uni-popup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uni-popup.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-popup/components/uni-popup/uni-popup.vue\"\nexport default component.exports","export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-popup.vue?vue&type=template&id=7c43d41b&\"","var components\ntry {\n components = {\n uniTransition: function () {\n return import(\n /* webpackChunkName: \"uni_modules/uni-transition/components/uni-transition/uni-transition\" */ \"@/uni_modules/uni-transition/components/uni-transition/uni-transition.vue\"\n )\n },\n }\n} catch (e) {\n if (\n e.message.indexOf(\"Cannot find module\") !== -1 &&\n e.message.indexOf(\".vue\") !== -1\n ) {\n console.error(e.message)\n console.error(\"1. 排查组件名称拼写是否正确\")\n console.error(\n \"2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom\"\n )\n console.error(\n \"3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件\"\n )\n } else {\n throw e\n }\n}\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-popup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-popup.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-popup.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-popup.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1733123540045\n var cssReload = require(\"D:/Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"/\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
new file mode 100644
index 0000000..b7aca9b
--- /dev/null
+++ b/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?64d8","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?4f82","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?4eae","webpack:///D:/Project/project_wenlv/tourGuide/uni_modules/uni-transition/components/uni-transition/uni-transition.vue?3ab2","uni-app:///uni_modules/uni-transition/components/uni-transition/uni-transition.vue"],"names":["name","emits","props","show","type","default","modeClass","duration","styles","customClass","data","isShow","transform","opacity","animationData","durationTime","config","watch","handler","immediate","computed","stylesObject","transformStyles","created","timingFunction","transformOrigin","delay","methods","init","onClick","detail","step","console","run","open","clearTimeout","close","styleInit","buildStyle","tranfromInit","aniNum","buildTranfrom","animationType","fade","animationMode","toLine"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2H;AAC3H;AACkE;AACL;;;AAG7D;AACoL;AACpL,gBAAgB,qLAAU;AAC1B,EAAE,oFAAM;AACR,EAAE,yFAAM;AACR,EAAE,kGAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,6FAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACtBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAgsB,CAAgB,gqBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;ACKptB;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA,gBAgBA;EACAA;EACAC;EACAC;IACAC;MACAC;MACAC;IACA;IACAC;MACAF;MACAC;QACA;MACA;IACA;IACAE;MACAH;MACAC;IACA;IACAG;MACAJ;MACAC;QACA;MACA;IACA;IACAI;MACAL;MACAC;IACA;EACA;EACAK;IACA;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;IACA;EACA;EACAC;IACAd;MACAe;QACA;UACA;QACA;UACA;UACA;YACA;UACA;QACA;MACA;MACAC;IACA;EACA;EACAC;IACA;IACAC;MACA,6CACA;QACA;MAAA,EACA;MACA;MACA;QACA;QACAT;MACA;MACA;IACA;IACA;IACAU;MACA;IACA;EACA;EACAC;IACA;IACA;MACAhB;MACAiB;MACAC;MACAC;IACA;IACA;EACA;EACAC;IACA;AACA;AACA;IACAC;MAAA;MACA;QACA;MACA;MACA;IACA;IACA;AACA;AACA;IACAC;MACA;QACAC;MACA;IACA;IACA;AACA;AACA;AACA;IACAC;MAAA;MACA;MACA;QACA;UACA;YAAA;YACA;UACA;YACA;UACA;QACA;UACAC;QACA;MACA;MACA;MACA;IACA;IACA;AACA;AACA;IACAC;MACA;MACA;IACA;IACA;IACAC;MAAA;MACAC;MACA;MACA;MACA;QAAAtB;QAAAD;MACA;QACA;MACA;MACA;MACA;MACA;QACA;QACA;UACA;UACA;UACA;UACA;YACAkB;UACA;QACA;MACA;IACA;IACA;IACAM;MAAA;MACA;MACA,wBACAL,OACAE;QACA;QACA;QACA;QACA;UAAApB;UAAAD;QACA;QACA;QACA;UACAkB;QACA;MACA;IACA;IACA;IACAO;MAAA;MACA;QACAzB;MACA;MACA;QACA;UACAJ;QACA;UACAA;QACA;MACA;MACA;QACA8B;MACA;QACA;UACAA;QACA;MACA;MACA;IACA;IACA;IACAC;MAAA;MACA;QACA;QACA;UACAC;QACA;UACAA;UACA;YACAA;UACA;UACA;YACAA;UACA;UACA;YACAA;UACA;UACA;YACAA;UACA;QACA;QACA;MACA;MACA;QACAC;MACA;QACA;UACAA;QACA;MACA;MAEA;IACA;IACAC;MACA;QACAC;QACA;QACA;QACA;QACA;QACA;QACA;MACA;IACA;IACA;IACAC;MACA;QACAD;QACA;QACA;QACA;QACA;QACA;QACA;MACA;IACA;IACA;IACAE;MACA;IACA;EACA;AACA;AAAA,4B","file":"uni_modules/uni-transition/components/uni-transition/uni-transition.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./uni-transition.vue?vue&type=template&id=6369f8c4&\"\nvar renderjs\nimport script from \"./uni-transition.vue?vue&type=script&lang=js&\"\nexport * from \"./uni-transition.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-transition/components/uni-transition/uni-transition.vue\"\nexport default component.exports","export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--17-0!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-transition.vue?vue&type=template&id=6369f8c4&\"","var components\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-transition.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-transition.vue?vue&type=script&lang=js&\"","\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/app.js b/unpackage/dist/dev/mp-weixin/app.js
new file mode 100644
index 0000000..2bb776e
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/app.js
@@ -0,0 +1,4 @@
+
+require('./common/runtime.js')
+require('./common/vendor.js')
+require('./common/main.js')
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/app.json b/unpackage/dist/dev/mp-weixin/app.json
new file mode 100644
index 0000000..aa3d519
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/app.json
@@ -0,0 +1,61 @@
+{
+ "pages": [
+ "pages/index/index",
+ "pages/dialogue/index",
+ "pages/verification/index",
+ "pages/user/user",
+ "pages/login/login"
+ ],
+ "subPackages": [
+ {
+ "root": "subPackages",
+ "pages": [
+ "index",
+ "user/myNews",
+ "user/myNewDetail",
+ "user/userInfo",
+ "user/accountPassword",
+ "video/index",
+ "order/orderList",
+ "order/orderDetail",
+ "user/infoFilling"
+ ]
+ }
+ ],
+ "window": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "uni-app",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "color": "#666666",
+ "selectedColor": "#96684F",
+ "borderStyle": "black",
+ "backgroundColor": "#ffffff",
+ "fontSize": "24rpx",
+ "height": "100rpx",
+ "iconWidth": "40rpx",
+ "list": [
+ {
+ "pagePath": "pages/index/index",
+ "iconPath": "/static/images/home.png",
+ "selectedIconPath": "/static/images/homes.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/verification/index",
+ "iconPath": "/static/images/hx.png",
+ "selectedIconPath": "/static/images/hxs.png",
+ "text": "核销"
+ },
+ {
+ "pagePath": "pages/user/user",
+ "iconPath": "/static/images/user.png",
+ "selectedIconPath": "/static/images/users.png",
+ "text": "我的"
+ }
+ ]
+ },
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/app.wxss b/unpackage/dist/dev/mp-weixin/app.wxss
new file mode 100644
index 0000000..705b297
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/app.wxss
@@ -0,0 +1,3 @@
+@import './common/main.wxss';
+
+[data-custom-hidden="true"],[bind-data-custom-hidden="true"]{display: none !important;}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/common/main.js b/unpackage/dist/dev/mp-weixin/common/main.js
new file mode 100644
index 0000000..8a9c74f
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/common/main.js
@@ -0,0 +1,157 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/main"],{
+
+/***/ 0:
+/*!**************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/main.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(wx, createApp) {
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
+__webpack_require__(/*! uni-pages */ 26);
+var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
+var _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 27));
+var _store = _interopRequireDefault(__webpack_require__(/*! ./store */ 33));
+__webpack_require__(/*! @/static/js/request.js */ 36);
+__webpack_require__(/*! @/static/js/CommonFunction.js */ 37);
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
+// @ts-ignore
+wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+_vue.default.config.productionTip = false;
+
+// 去除生产环境console
+// if (uni.getSystemInfoSync().platform !== "devtools") {
+// console.log = () => {}
+// }
+
+_App.default.mpType = 'app';
+var app = new _vue.default(_objectSpread({
+ store: _store.default
+}, _App.default));
+createApp(app).$mount();
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["createApp"]))
+
+/***/ }),
+
+/***/ 27:
+/*!**************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/App.vue ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 28);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=scss& */ 30);
+/* harmony import */ var _Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 32);
+var render, staticRenderFns, recyclableRender, components
+var renderjs
+
+
+
+
+
+/* normalize component */
+
+var component = Object(_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
+ _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
+ render,
+ staticRenderFns,
+ false,
+ null,
+ null,
+ null,
+ false,
+ components,
+ renderjs
+)
+
+component.options.__file = "App.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 28:
+/*!***************************************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/App.vue?vue&type=script&lang=js& ***!
+ \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js& */ 29);
+/* harmony import */ var _Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_Program_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
+
+/***/ }),
+
+/***/ 29:
+/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Project/project_wenlv/tourGuide/App.vue?vue&type=script&lang=js& ***!
+ \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _default = {
+ onLaunch: function onLaunch() {
+ console.warn('当前组件仅支持 uni_modules 目录结构 ,请升级 HBuilderX 到 3.1.0 版本以上!');
+ console.log('App Launch');
+ },
+ onShow: function onShow() {
+ console.log('App Show');
+ },
+ onHide: function onHide() {
+ console.log('App Hide');
+ }
+};
+exports.default = _default;
+
+/***/ }),
+
+/***/ 30:
+/*!************************************************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/App.vue?vue&type=style&index=0&lang=scss& ***!
+ \************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../Program/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=scss& */ 31);
+/* harmony import */ var _Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_Program_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_Program_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_Program_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_Program_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
+
+/***/ }),
+
+/***/ 31:
+/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Project/project_wenlv/tourGuide/App.vue?vue&type=style&index=0&lang=scss& ***!
+ \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+ if(false) { var cssReload; }
+
+
+/***/ })
+
+},[[0,"common/runtime","common/vendor"]]]);
+//# sourceMappingURL=../../.sourcemap/mp-weixin/common/main.js.map
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/common/main.wxss b/unpackage/dist/dev/mp-weixin/common/main.wxss
new file mode 100644
index 0000000..0861bad
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/common/main.wxss
@@ -0,0 +1,2463 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+/*每个页面公共css */
+/* 水平间距 */
+._a {
+ text-decoration: none;
+}
+input {
+ outline: none;
+ border: none;
+}
+view {
+ box-sizing: border-box;
+}
+.flex-between {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+.flex-center {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.flex-around {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+}
+.flex-start {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+}
+.flex-column {
+ display: flex;
+ flex-direction: column;
+}
+/*单行隐藏*/
+.text-overflow {
+ overflow-x: hidden;
+ overflow-y: inherit;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+/* 两行隐藏 */
+.text-overflowRows {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -webkit-line-clamp: 2;
+ word-break: break-all;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+}
+.finished-text {
+ text-align: center;
+ font-size: 24rpx;
+ padding: 30rpx 0;
+ color: #999999;
+}
+.flex{
+ display: flex;
+}
+.flex-shrink-0{
+ flex-shrink: 0;
+}
+.flex-1{
+ flex: 1;
+}
+.flex-wrap{
+ flex-wrap: wrap;
+}
+.w-full{
+ width: 100%;
+}
+.w-1rpx{
+ width: 1rpx;
+}
+.h-1rpx{
+ height: 1rpx;
+}
+.relative{
+ position: relative;
+}
+.absolute{
+ position: absolute;
+}
+.flex-items-center{
+ align-items: center;
+}
+.no-scrollbar::-webkit-scrollbar{
+ display: none;
+}
+.font-bold{
+ font-weight: bold;
+}
+.uni-border {
+ border: 1px #F0F0F0 solid;
+}
+.uni-primary {
+ color: #2979ff;
+}
+.uni-primary-bg {
+ background-color: #2979ff;
+}
+.uni-primary-disable {
+ color: #8fb9ff;
+}
+.uni-primary-disable-bg {
+ background-color: #8fb9ff;
+}
+.uni-primary-light {
+ color: #a9c9ff;
+}
+.uni-primary-light-bg {
+ background-color: #a9c9ff;
+}
+.uni-success {
+ color: #18bc37;
+}
+.uni-success-bg {
+ background-color: #18bc37;
+}
+.uni-success-disable {
+ color: #51e96e;
+}
+.uni-success-disable-bg {
+ background-color: #51e96e;
+}
+.uni-success-light {
+ color: #68ec81;
+}
+.uni-success-light-bg {
+ background-color: #68ec81;
+}
+.uni-warning {
+ color: #f3a73f;
+}
+.uni-warning-bg {
+ background-color: #f3a73f;
+}
+.uni-warning-disable {
+ color: #f9d39f;
+}
+.uni-warning-disable-bg {
+ background-color: #f9d39f;
+}
+.uni-warning-light {
+ color: #fbdeb7;
+}
+.uni-warning-light-bg {
+ background-color: #fbdeb7;
+}
+.uni-error {
+ color: #e43d33;
+}
+.uni-error-bg {
+ background-color: #e43d33;
+}
+.uni-error-disable {
+ color: #f0938d;
+}
+.uni-error-disable-bg {
+ background-color: #f0938d;
+}
+.uni-error-light {
+ color: #f3a8a4;
+}
+.uni-error-light-bg {
+ background-color: #f3a8a4;
+}
+.uni-info {
+ color: #8f939c;
+}
+.uni-info-bg {
+ background-color: #8f939c;
+}
+.uni-info-disable {
+ color: #c5c7cc;
+}
+.uni-info-disable-bg {
+ background-color: #c5c7cc;
+}
+.uni-info-light {
+ color: #d3d4d8;
+}
+.uni-info-light-bg {
+ background-color: #d3d4d8;
+}
+.uni-main-color {
+ color: #3a3a3a;
+}
+.uni-main-color-bg {
+ background-color: #3a3a3a;
+}
+.uni-base-color {
+ color: #6a6a6a;
+}
+.uni-base-color-bg {
+ background-color: #6a6a6a;
+}
+.uni-secondary-color {
+ color: #909399;
+}
+.uni-secondary-color-bg {
+ background-color: #909399;
+}
+.uni-extra-color {
+ color: #c7c7c7;
+}
+.uni-extra-color-bg {
+ background-color: #c7c7c7;
+}
+.uni-bg-color {
+ color: #ffffff;
+}
+.uni-bg-color-bg {
+ background-color: #ffffff;
+}
+.uni-border-1 {
+ color: #F0F0F0;
+}
+.uni-border-1-bg {
+ background-color: #F0F0F0;
+}
+.uni-border-2 {
+ color: #EDEDED;
+}
+.uni-border-2-bg {
+ background-color: #EDEDED;
+}
+.uni-border-3 {
+ color: #DCDCDC;
+}
+.uni-border-3-bg {
+ background-color: #DCDCDC;
+}
+.uni-border-4 {
+ color: #B9B9B9;
+}
+.uni-border-4-bg {
+ background-color: #B9B9B9;
+}
+.uni-black {
+ color: #000000;
+}
+.uni-black-bg {
+ background-color: #000000;
+}
+.uni-white {
+ color: #ffffff;
+}
+.uni-white-bg {
+ background-color: #ffffff;
+}
+.uni-transparent {
+ color: rgba(0, 0, 0, 0);
+}
+.uni-transparent-bg {
+ background-color: rgba(0, 0, 0, 0);
+}
+.uni-shadow-sm {
+ box-shadow: 0 0 5px rgba(216, 216, 216, 0.5);
+}
+.uni-shadow-base {
+ box-shadow: 0 1px 8px 1px rgba(165, 165, 165, 0.2);
+}
+.uni-shadow-lg {
+ box-shadow: 0px 1px 10px 2px rgba(165, 164, 164, 0.5);
+}
+.uni-mask {
+ background-color: rgba(0, 0, 0, 0.4);
+}
+.uni-mt-0 {
+ margin-top: 0px;
+}
+.uni-mt-n0 {
+ margin-top: 0px;
+}
+.uni-mr-0 {
+ margin-right: 0px;
+}
+.uni-mr-n0 {
+ margin-right: 0px;
+}
+.uni-mb-0 {
+ margin-bottom: 0px;
+}
+.uni-mb-n0 {
+ margin-bottom: 0px;
+}
+.uni-ml-0 {
+ margin-left: 0px;
+}
+.uni-ml-n0 {
+ margin-left: 0px;
+}
+.uni-mx-0 {
+ margin-left: 0px;
+ margin-right: 0px;
+}
+.uni-mx-n0 {
+ margin-left: 0px;
+ margin-right: 0px;
+}
+.uni-my-0 {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+.uni-my-n0 {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+.uni-ma-0 {
+ margin: 0px;
+}
+.uni-ma-n0 {
+ margin: 0px;
+}
+.uni-mt-1 {
+ margin-top: 2px;
+}
+.uni-mt-n1 {
+ margin-top: -2px;
+}
+.uni-mr-1 {
+ margin-right: 2px;
+}
+.uni-mr-n1 {
+ margin-right: -2px;
+}
+.uni-mb-1 {
+ margin-bottom: 2px;
+}
+.uni-mb-n1 {
+ margin-bottom: -2px;
+}
+.uni-ml-1 {
+ margin-left: 2px;
+}
+.uni-ml-n1 {
+ margin-left: -2px;
+}
+.uni-mx-1 {
+ margin-left: 2px;
+ margin-right: 2px;
+}
+.uni-mx-n1 {
+ margin-left: -2px;
+ margin-right: -2px;
+}
+.uni-my-1 {
+ margin-top: 2px;
+ margin-bottom: 2px;
+}
+.uni-my-n1 {
+ margin-top: -2px;
+ margin-bottom: -2px;
+}
+.uni-ma-1 {
+ margin: 2px;
+}
+.uni-ma-n1 {
+ margin: -2px;
+}
+.uni-mt-2 {
+ margin-top: 4px;
+}
+.uni-mt-n2 {
+ margin-top: -4px;
+}
+.uni-mr-2 {
+ margin-right: 4px;
+}
+.uni-mr-n2 {
+ margin-right: -4px;
+}
+.uni-mb-2 {
+ margin-bottom: 4px;
+}
+.uni-mb-n2 {
+ margin-bottom: -4px;
+}
+.uni-ml-2 {
+ margin-left: 4px;
+}
+.uni-ml-n2 {
+ margin-left: -4px;
+}
+.uni-mx-2 {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+.uni-mx-n2 {
+ margin-left: -4px;
+ margin-right: -4px;
+}
+.uni-my-2 {
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+.uni-my-n2 {
+ margin-top: -4px;
+ margin-bottom: -4px;
+}
+.uni-ma-2 {
+ margin: 4px;
+}
+.uni-ma-n2 {
+ margin: -4px;
+}
+.uni-mt-3 {
+ margin-top: 6px;
+}
+.uni-mt-n3 {
+ margin-top: -6px;
+}
+.uni-mr-3 {
+ margin-right: 6px;
+}
+.uni-mr-n3 {
+ margin-right: -6px;
+}
+.uni-mb-3 {
+ margin-bottom: 6px;
+}
+.uni-mb-n3 {
+ margin-bottom: -6px;
+}
+.uni-ml-3 {
+ margin-left: 6px;
+}
+.uni-ml-n3 {
+ margin-left: -6px;
+}
+.uni-mx-3 {
+ margin-left: 6px;
+ margin-right: 6px;
+}
+.uni-mx-n3 {
+ margin-left: -6px;
+ margin-right: -6px;
+}
+.uni-my-3 {
+ margin-top: 6px;
+ margin-bottom: 6px;
+}
+.uni-my-n3 {
+ margin-top: -6px;
+ margin-bottom: -6px;
+}
+.uni-ma-3 {
+ margin: 6px;
+}
+.uni-ma-n3 {
+ margin: -6px;
+}
+.uni-mt-4 {
+ margin-top: 8px;
+}
+.uni-mt-n4 {
+ margin-top: -8px;
+}
+.uni-mr-4 {
+ margin-right: 8px;
+}
+.uni-mr-n4 {
+ margin-right: -8px;
+}
+.uni-mb-4 {
+ margin-bottom: 8px;
+}
+.uni-mb-n4 {
+ margin-bottom: -8px;
+}
+.uni-ml-4 {
+ margin-left: 8px;
+}
+.uni-ml-n4 {
+ margin-left: -8px;
+}
+.uni-mx-4 {
+ margin-left: 8px;
+ margin-right: 8px;
+}
+.uni-mx-n4 {
+ margin-left: -8px;
+ margin-right: -8px;
+}
+.uni-my-4 {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+.uni-my-n4 {
+ margin-top: -8px;
+ margin-bottom: -8px;
+}
+.uni-ma-4 {
+ margin: 8px;
+}
+.uni-ma-n4 {
+ margin: -8px;
+}
+.uni-mt-5 {
+ margin-top: 10px;
+}
+.uni-mt-n5 {
+ margin-top: -10px;
+}
+.uni-mr-5 {
+ margin-right: 10px;
+}
+.uni-mr-n5 {
+ margin-right: -10px;
+}
+.uni-mb-5 {
+ margin-bottom: 10px;
+}
+.uni-mb-n5 {
+ margin-bottom: -10px;
+}
+.uni-ml-5 {
+ margin-left: 10px;
+}
+.uni-ml-n5 {
+ margin-left: -10px;
+}
+.uni-mx-5 {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+.uni-mx-n5 {
+ margin-left: -10px;
+ margin-right: -10px;
+}
+.uni-my-5 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.uni-my-n5 {
+ margin-top: -10px;
+ margin-bottom: -10px;
+}
+.uni-ma-5 {
+ margin: 10px;
+}
+.uni-ma-n5 {
+ margin: -10px;
+}
+.uni-mt-6 {
+ margin-top: 12px;
+}
+.uni-mt-n6 {
+ margin-top: -12px;
+}
+.uni-mr-6 {
+ margin-right: 12px;
+}
+.uni-mr-n6 {
+ margin-right: -12px;
+}
+.uni-mb-6 {
+ margin-bottom: 12px;
+}
+.uni-mb-n6 {
+ margin-bottom: -12px;
+}
+.uni-ml-6 {
+ margin-left: 12px;
+}
+.uni-ml-n6 {
+ margin-left: -12px;
+}
+.uni-mx-6 {
+ margin-left: 12px;
+ margin-right: 12px;
+}
+.uni-mx-n6 {
+ margin-left: -12px;
+ margin-right: -12px;
+}
+.uni-my-6 {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+.uni-my-n6 {
+ margin-top: -12px;
+ margin-bottom: -12px;
+}
+.uni-ma-6 {
+ margin: 12px;
+}
+.uni-ma-n6 {
+ margin: -12px;
+}
+.uni-mt-7 {
+ margin-top: 14px;
+}
+.uni-mt-n7 {
+ margin-top: -14px;
+}
+.uni-mr-7 {
+ margin-right: 14px;
+}
+.uni-mr-n7 {
+ margin-right: -14px;
+}
+.uni-mb-7 {
+ margin-bottom: 14px;
+}
+.uni-mb-n7 {
+ margin-bottom: -14px;
+}
+.uni-ml-7 {
+ margin-left: 14px;
+}
+.uni-ml-n7 {
+ margin-left: -14px;
+}
+.uni-mx-7 {
+ margin-left: 14px;
+ margin-right: 14px;
+}
+.uni-mx-n7 {
+ margin-left: -14px;
+ margin-right: -14px;
+}
+.uni-my-7 {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.uni-my-n7 {
+ margin-top: -14px;
+ margin-bottom: -14px;
+}
+.uni-ma-7 {
+ margin: 14px;
+}
+.uni-ma-n7 {
+ margin: -14px;
+}
+.uni-mt-8 {
+ margin-top: 16px;
+}
+.uni-mt-n8 {
+ margin-top: -16px;
+}
+.uni-mr-8 {
+ margin-right: 16px;
+}
+.uni-mr-n8 {
+ margin-right: -16px;
+}
+.uni-mb-8 {
+ margin-bottom: 16px;
+}
+.uni-mb-n8 {
+ margin-bottom: -16px;
+}
+.uni-ml-8 {
+ margin-left: 16px;
+}
+.uni-ml-n8 {
+ margin-left: -16px;
+}
+.uni-mx-8 {
+ margin-left: 16px;
+ margin-right: 16px;
+}
+.uni-mx-n8 {
+ margin-left: -16px;
+ margin-right: -16px;
+}
+.uni-my-8 {
+ margin-top: 16px;
+ margin-bottom: 16px;
+}
+.uni-my-n8 {
+ margin-top: -16px;
+ margin-bottom: -16px;
+}
+.uni-ma-8 {
+ margin: 16px;
+}
+.uni-ma-n8 {
+ margin: -16px;
+}
+.uni-mt-9 {
+ margin-top: 18px;
+}
+.uni-mt-n9 {
+ margin-top: -18px;
+}
+.uni-mr-9 {
+ margin-right: 18px;
+}
+.uni-mr-n9 {
+ margin-right: -18px;
+}
+.uni-mb-9 {
+ margin-bottom: 18px;
+}
+.uni-mb-n9 {
+ margin-bottom: -18px;
+}
+.uni-ml-9 {
+ margin-left: 18px;
+}
+.uni-ml-n9 {
+ margin-left: -18px;
+}
+.uni-mx-9 {
+ margin-left: 18px;
+ margin-right: 18px;
+}
+.uni-mx-n9 {
+ margin-left: -18px;
+ margin-right: -18px;
+}
+.uni-my-9 {
+ margin-top: 18px;
+ margin-bottom: 18px;
+}
+.uni-my-n9 {
+ margin-top: -18px;
+ margin-bottom: -18px;
+}
+.uni-ma-9 {
+ margin: 18px;
+}
+.uni-ma-n9 {
+ margin: -18px;
+}
+.uni-mt-10 {
+ margin-top: 20px;
+}
+.uni-mt-n10 {
+ margin-top: -20px;
+}
+.uni-mr-10 {
+ margin-right: 20px;
+}
+.uni-mr-n10 {
+ margin-right: -20px;
+}
+.uni-mb-10 {
+ margin-bottom: 20px;
+}
+.uni-mb-n10 {
+ margin-bottom: -20px;
+}
+.uni-ml-10 {
+ margin-left: 20px;
+}
+.uni-ml-n10 {
+ margin-left: -20px;
+}
+.uni-mx-10 {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+.uni-mx-n10 {
+ margin-left: -20px;
+ margin-right: -20px;
+}
+.uni-my-10 {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+.uni-my-n10 {
+ margin-top: -20px;
+ margin-bottom: -20px;
+}
+.uni-ma-10 {
+ margin: 20px;
+}
+.uni-ma-n10 {
+ margin: -20px;
+}
+.uni-mt-11 {
+ margin-top: 22px;
+}
+.uni-mt-n11 {
+ margin-top: -22px;
+}
+.uni-mr-11 {
+ margin-right: 22px;
+}
+.uni-mr-n11 {
+ margin-right: -22px;
+}
+.uni-mb-11 {
+ margin-bottom: 22px;
+}
+.uni-mb-n11 {
+ margin-bottom: -22px;
+}
+.uni-ml-11 {
+ margin-left: 22px;
+}
+.uni-ml-n11 {
+ margin-left: -22px;
+}
+.uni-mx-11 {
+ margin-left: 22px;
+ margin-right: 22px;
+}
+.uni-mx-n11 {
+ margin-left: -22px;
+ margin-right: -22px;
+}
+.uni-my-11 {
+ margin-top: 22px;
+ margin-bottom: 22px;
+}
+.uni-my-n11 {
+ margin-top: -22px;
+ margin-bottom: -22px;
+}
+.uni-ma-11 {
+ margin: 22px;
+}
+.uni-ma-n11 {
+ margin: -22px;
+}
+.uni-mt-12 {
+ margin-top: 24px;
+}
+.uni-mt-n12 {
+ margin-top: -24px;
+}
+.uni-mr-12 {
+ margin-right: 24px;
+}
+.uni-mr-n12 {
+ margin-right: -24px;
+}
+.uni-mb-12 {
+ margin-bottom: 24px;
+}
+.uni-mb-n12 {
+ margin-bottom: -24px;
+}
+.uni-ml-12 {
+ margin-left: 24px;
+}
+.uni-ml-n12 {
+ margin-left: -24px;
+}
+.uni-mx-12 {
+ margin-left: 24px;
+ margin-right: 24px;
+}
+.uni-mx-n12 {
+ margin-left: -24px;
+ margin-right: -24px;
+}
+.uni-my-12 {
+ margin-top: 24px;
+ margin-bottom: 24px;
+}
+.uni-my-n12 {
+ margin-top: -24px;
+ margin-bottom: -24px;
+}
+.uni-ma-12 {
+ margin: 24px;
+}
+.uni-ma-n12 {
+ margin: -24px;
+}
+.uni-mt-13 {
+ margin-top: 26px;
+}
+.uni-mt-n13 {
+ margin-top: -26px;
+}
+.uni-mr-13 {
+ margin-right: 26px;
+}
+.uni-mr-n13 {
+ margin-right: -26px;
+}
+.uni-mb-13 {
+ margin-bottom: 26px;
+}
+.uni-mb-n13 {
+ margin-bottom: -26px;
+}
+.uni-ml-13 {
+ margin-left: 26px;
+}
+.uni-ml-n13 {
+ margin-left: -26px;
+}
+.uni-mx-13 {
+ margin-left: 26px;
+ margin-right: 26px;
+}
+.uni-mx-n13 {
+ margin-left: -26px;
+ margin-right: -26px;
+}
+.uni-my-13 {
+ margin-top: 26px;
+ margin-bottom: 26px;
+}
+.uni-my-n13 {
+ margin-top: -26px;
+ margin-bottom: -26px;
+}
+.uni-ma-13 {
+ margin: 26px;
+}
+.uni-ma-n13 {
+ margin: -26px;
+}
+.uni-mt-14 {
+ margin-top: 28px;
+}
+.uni-mt-n14 {
+ margin-top: -28px;
+}
+.uni-mr-14 {
+ margin-right: 28px;
+}
+.uni-mr-n14 {
+ margin-right: -28px;
+}
+.uni-mb-14 {
+ margin-bottom: 28px;
+}
+.uni-mb-n14 {
+ margin-bottom: -28px;
+}
+.uni-ml-14 {
+ margin-left: 28px;
+}
+.uni-ml-n14 {
+ margin-left: -28px;
+}
+.uni-mx-14 {
+ margin-left: 28px;
+ margin-right: 28px;
+}
+.uni-mx-n14 {
+ margin-left: -28px;
+ margin-right: -28px;
+}
+.uni-my-14 {
+ margin-top: 28px;
+ margin-bottom: 28px;
+}
+.uni-my-n14 {
+ margin-top: -28px;
+ margin-bottom: -28px;
+}
+.uni-ma-14 {
+ margin: 28px;
+}
+.uni-ma-n14 {
+ margin: -28px;
+}
+.uni-mt-15 {
+ margin-top: 30px;
+}
+.uni-mt-n15 {
+ margin-top: -30px;
+}
+.uni-mr-15 {
+ margin-right: 30px;
+}
+.uni-mr-n15 {
+ margin-right: -30px;
+}
+.uni-mb-15 {
+ margin-bottom: 30px;
+}
+.uni-mb-n15 {
+ margin-bottom: -30px;
+}
+.uni-ml-15 {
+ margin-left: 30px;
+}
+.uni-ml-n15 {
+ margin-left: -30px;
+}
+.uni-mx-15 {
+ margin-left: 30px;
+ margin-right: 30px;
+}
+.uni-mx-n15 {
+ margin-left: -30px;
+ margin-right: -30px;
+}
+.uni-my-15 {
+ margin-top: 30px;
+ margin-bottom: 30px;
+}
+.uni-my-n15 {
+ margin-top: -30px;
+ margin-bottom: -30px;
+}
+.uni-ma-15 {
+ margin: 30px;
+}
+.uni-ma-n15 {
+ margin: -30px;
+}
+.uni-mt-16 {
+ margin-top: 32px;
+}
+.uni-mt-n16 {
+ margin-top: -32px;
+}
+.uni-mr-16 {
+ margin-right: 32px;
+}
+.uni-mr-n16 {
+ margin-right: -32px;
+}
+.uni-mb-16 {
+ margin-bottom: 32px;
+}
+.uni-mb-n16 {
+ margin-bottom: -32px;
+}
+.uni-ml-16 {
+ margin-left: 32px;
+}
+.uni-ml-n16 {
+ margin-left: -32px;
+}
+.uni-mx-16 {
+ margin-left: 32px;
+ margin-right: 32px;
+}
+.uni-mx-n16 {
+ margin-left: -32px;
+ margin-right: -32px;
+}
+.uni-my-16 {
+ margin-top: 32px;
+ margin-bottom: 32px;
+}
+.uni-my-n16 {
+ margin-top: -32px;
+ margin-bottom: -32px;
+}
+.uni-ma-16 {
+ margin: 32px;
+}
+.uni-ma-n16 {
+ margin: -32px;
+}
+.uni-pt-0 {
+ padding-top: 0px;
+}
+.uni-pt-n0 {
+ padding-top: 0px;
+}
+.uni-pr-0 {
+ padding-right: 0px;
+}
+.uni-pr-n0 {
+ padding-right: 0px;
+}
+.uni-pb-0 {
+ padding-bottom: 0px;
+}
+.uni-pb-n0 {
+ padding-bottom: 0px;
+}
+.uni-pl-0 {
+ padding-left: 0px;
+}
+.uni-pl-n0 {
+ padding-left: 0px;
+}
+.uni-px-0 {
+ padding-left: 0px;
+ padding-right: 0px;
+}
+.uni-px-n0 {
+ padding-left: 0px;
+ padding-right: 0px;
+}
+.uni-py-0 {
+ padding-top: 0px;
+ padding-bottom: 0px;
+}
+.uni-py-n0 {
+ padding-top: 0px;
+ padding-bottom: 0px;
+}
+.uni-pa-0 {
+ padding: 0px;
+}
+.uni-pa-n0 {
+ padding: 0px;
+}
+.uni-pt-1 {
+ padding-top: 2px;
+}
+.uni-pt-n1 {
+ padding-top: -2px;
+}
+.uni-pr-1 {
+ padding-right: 2px;
+}
+.uni-pr-n1 {
+ padding-right: -2px;
+}
+.uni-pb-1 {
+ padding-bottom: 2px;
+}
+.uni-pb-n1 {
+ padding-bottom: -2px;
+}
+.uni-pl-1 {
+ padding-left: 2px;
+}
+.uni-pl-n1 {
+ padding-left: -2px;
+}
+.uni-px-1 {
+ padding-left: 2px;
+ padding-right: 2px;
+}
+.uni-px-n1 {
+ padding-left: -2px;
+ padding-right: -2px;
+}
+.uni-py-1 {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+.uni-py-n1 {
+ padding-top: -2px;
+ padding-bottom: -2px;
+}
+.uni-pa-1 {
+ padding: 2px;
+}
+.uni-pa-n1 {
+ padding: -2px;
+}
+.uni-pt-2 {
+ padding-top: 4px;
+}
+.uni-pt-n2 {
+ padding-top: -4px;
+}
+.uni-pr-2 {
+ padding-right: 4px;
+}
+.uni-pr-n2 {
+ padding-right: -4px;
+}
+.uni-pb-2 {
+ padding-bottom: 4px;
+}
+.uni-pb-n2 {
+ padding-bottom: -4px;
+}
+.uni-pl-2 {
+ padding-left: 4px;
+}
+.uni-pl-n2 {
+ padding-left: -4px;
+}
+.uni-px-2 {
+ padding-left: 4px;
+ padding-right: 4px;
+}
+.uni-px-n2 {
+ padding-left: -4px;
+ padding-right: -4px;
+}
+.uni-py-2 {
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+.uni-py-n2 {
+ padding-top: -4px;
+ padding-bottom: -4px;
+}
+.uni-pa-2 {
+ padding: 4px;
+}
+.uni-pa-n2 {
+ padding: -4px;
+}
+.uni-pt-3 {
+ padding-top: 6px;
+}
+.uni-pt-n3 {
+ padding-top: -6px;
+}
+.uni-pr-3 {
+ padding-right: 6px;
+}
+.uni-pr-n3 {
+ padding-right: -6px;
+}
+.uni-pb-3 {
+ padding-bottom: 6px;
+}
+.uni-pb-n3 {
+ padding-bottom: -6px;
+}
+.uni-pl-3 {
+ padding-left: 6px;
+}
+.uni-pl-n3 {
+ padding-left: -6px;
+}
+.uni-px-3 {
+ padding-left: 6px;
+ padding-right: 6px;
+}
+.uni-px-n3 {
+ padding-left: -6px;
+ padding-right: -6px;
+}
+.uni-py-3 {
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+.uni-py-n3 {
+ padding-top: -6px;
+ padding-bottom: -6px;
+}
+.uni-pa-3 {
+ padding: 6px;
+}
+.uni-pa-n3 {
+ padding: -6px;
+}
+.uni-pt-4 {
+ padding-top: 8px;
+}
+.uni-pt-n4 {
+ padding-top: -8px;
+}
+.uni-pr-4 {
+ padding-right: 8px;
+}
+.uni-pr-n4 {
+ padding-right: -8px;
+}
+.uni-pb-4 {
+ padding-bottom: 8px;
+}
+.uni-pb-n4 {
+ padding-bottom: -8px;
+}
+.uni-pl-4 {
+ padding-left: 8px;
+}
+.uni-pl-n4 {
+ padding-left: -8px;
+}
+.uni-px-4 {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.uni-px-n4 {
+ padding-left: -8px;
+ padding-right: -8px;
+}
+.uni-py-4 {
+ padding-top: 8px;
+ padding-bottom: 8px;
+}
+.uni-py-n4 {
+ padding-top: -8px;
+ padding-bottom: -8px;
+}
+.uni-pa-4 {
+ padding: 8px;
+}
+.uni-pa-n4 {
+ padding: -8px;
+}
+.uni-pt-5 {
+ padding-top: 10px;
+}
+.uni-pt-n5 {
+ padding-top: -10px;
+}
+.uni-pr-5 {
+ padding-right: 10px;
+}
+.uni-pr-n5 {
+ padding-right: -10px;
+}
+.uni-pb-5 {
+ padding-bottom: 10px;
+}
+.uni-pb-n5 {
+ padding-bottom: -10px;
+}
+.uni-pl-5 {
+ padding-left: 10px;
+}
+.uni-pl-n5 {
+ padding-left: -10px;
+}
+.uni-px-5 {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.uni-px-n5 {
+ padding-left: -10px;
+ padding-right: -10px;
+}
+.uni-py-5 {
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+.uni-py-n5 {
+ padding-top: -10px;
+ padding-bottom: -10px;
+}
+.uni-pa-5 {
+ padding: 10px;
+}
+.uni-pa-n5 {
+ padding: -10px;
+}
+.uni-pt-6 {
+ padding-top: 12px;
+}
+.uni-pt-n6 {
+ padding-top: -12px;
+}
+.uni-pr-6 {
+ padding-right: 12px;
+}
+.uni-pr-n6 {
+ padding-right: -12px;
+}
+.uni-pb-6 {
+ padding-bottom: 12px;
+}
+.uni-pb-n6 {
+ padding-bottom: -12px;
+}
+.uni-pl-6 {
+ padding-left: 12px;
+}
+.uni-pl-n6 {
+ padding-left: -12px;
+}
+.uni-px-6 {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.uni-px-n6 {
+ padding-left: -12px;
+ padding-right: -12px;
+}
+.uni-py-6 {
+ padding-top: 12px;
+ padding-bottom: 12px;
+}
+.uni-py-n6 {
+ padding-top: -12px;
+ padding-bottom: -12px;
+}
+.uni-pa-6 {
+ padding: 12px;
+}
+.uni-pa-n6 {
+ padding: -12px;
+}
+.uni-pt-7 {
+ padding-top: 14px;
+}
+.uni-pt-n7 {
+ padding-top: -14px;
+}
+.uni-pr-7 {
+ padding-right: 14px;
+}
+.uni-pr-n7 {
+ padding-right: -14px;
+}
+.uni-pb-7 {
+ padding-bottom: 14px;
+}
+.uni-pb-n7 {
+ padding-bottom: -14px;
+}
+.uni-pl-7 {
+ padding-left: 14px;
+}
+.uni-pl-n7 {
+ padding-left: -14px;
+}
+.uni-px-7 {
+ padding-left: 14px;
+ padding-right: 14px;
+}
+.uni-px-n7 {
+ padding-left: -14px;
+ padding-right: -14px;
+}
+.uni-py-7 {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+.uni-py-n7 {
+ padding-top: -14px;
+ padding-bottom: -14px;
+}
+.uni-pa-7 {
+ padding: 14px;
+}
+.uni-pa-n7 {
+ padding: -14px;
+}
+.uni-pt-8 {
+ padding-top: 16px;
+}
+.uni-pt-n8 {
+ padding-top: -16px;
+}
+.uni-pr-8 {
+ padding-right: 16px;
+}
+.uni-pr-n8 {
+ padding-right: -16px;
+}
+.uni-pb-8 {
+ padding-bottom: 16px;
+}
+.uni-pb-n8 {
+ padding-bottom: -16px;
+}
+.uni-pl-8 {
+ padding-left: 16px;
+}
+.uni-pl-n8 {
+ padding-left: -16px;
+}
+.uni-px-8 {
+ padding-left: 16px;
+ padding-right: 16px;
+}
+.uni-px-n8 {
+ padding-left: -16px;
+ padding-right: -16px;
+}
+.uni-py-8 {
+ padding-top: 16px;
+ padding-bottom: 16px;
+}
+.uni-py-n8 {
+ padding-top: -16px;
+ padding-bottom: -16px;
+}
+.uni-pa-8 {
+ padding: 16px;
+}
+.uni-pa-n8 {
+ padding: -16px;
+}
+.uni-pt-9 {
+ padding-top: 18px;
+}
+.uni-pt-n9 {
+ padding-top: -18px;
+}
+.uni-pr-9 {
+ padding-right: 18px;
+}
+.uni-pr-n9 {
+ padding-right: -18px;
+}
+.uni-pb-9 {
+ padding-bottom: 18px;
+}
+.uni-pb-n9 {
+ padding-bottom: -18px;
+}
+.uni-pl-9 {
+ padding-left: 18px;
+}
+.uni-pl-n9 {
+ padding-left: -18px;
+}
+.uni-px-9 {
+ padding-left: 18px;
+ padding-right: 18px;
+}
+.uni-px-n9 {
+ padding-left: -18px;
+ padding-right: -18px;
+}
+.uni-py-9 {
+ padding-top: 18px;
+ padding-bottom: 18px;
+}
+.uni-py-n9 {
+ padding-top: -18px;
+ padding-bottom: -18px;
+}
+.uni-pa-9 {
+ padding: 18px;
+}
+.uni-pa-n9 {
+ padding: -18px;
+}
+.uni-pt-10 {
+ padding-top: 20px;
+}
+.uni-pt-n10 {
+ padding-top: -20px;
+}
+.uni-pr-10 {
+ padding-right: 20px;
+}
+.uni-pr-n10 {
+ padding-right: -20px;
+}
+.uni-pb-10 {
+ padding-bottom: 20px;
+}
+.uni-pb-n10 {
+ padding-bottom: -20px;
+}
+.uni-pl-10 {
+ padding-left: 20px;
+}
+.uni-pl-n10 {
+ padding-left: -20px;
+}
+.uni-px-10 {
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.uni-px-n10 {
+ padding-left: -20px;
+ padding-right: -20px;
+}
+.uni-py-10 {
+ padding-top: 20px;
+ padding-bottom: 20px;
+}
+.uni-py-n10 {
+ padding-top: -20px;
+ padding-bottom: -20px;
+}
+.uni-pa-10 {
+ padding: 20px;
+}
+.uni-pa-n10 {
+ padding: -20px;
+}
+.uni-pt-11 {
+ padding-top: 22px;
+}
+.uni-pt-n11 {
+ padding-top: -22px;
+}
+.uni-pr-11 {
+ padding-right: 22px;
+}
+.uni-pr-n11 {
+ padding-right: -22px;
+}
+.uni-pb-11 {
+ padding-bottom: 22px;
+}
+.uni-pb-n11 {
+ padding-bottom: -22px;
+}
+.uni-pl-11 {
+ padding-left: 22px;
+}
+.uni-pl-n11 {
+ padding-left: -22px;
+}
+.uni-px-11 {
+ padding-left: 22px;
+ padding-right: 22px;
+}
+.uni-px-n11 {
+ padding-left: -22px;
+ padding-right: -22px;
+}
+.uni-py-11 {
+ padding-top: 22px;
+ padding-bottom: 22px;
+}
+.uni-py-n11 {
+ padding-top: -22px;
+ padding-bottom: -22px;
+}
+.uni-pa-11 {
+ padding: 22px;
+}
+.uni-pa-n11 {
+ padding: -22px;
+}
+.uni-pt-12 {
+ padding-top: 24px;
+}
+.uni-pt-n12 {
+ padding-top: -24px;
+}
+.uni-pr-12 {
+ padding-right: 24px;
+}
+.uni-pr-n12 {
+ padding-right: -24px;
+}
+.uni-pb-12 {
+ padding-bottom: 24px;
+}
+.uni-pb-n12 {
+ padding-bottom: -24px;
+}
+.uni-pl-12 {
+ padding-left: 24px;
+}
+.uni-pl-n12 {
+ padding-left: -24px;
+}
+.uni-px-12 {
+ padding-left: 24px;
+ padding-right: 24px;
+}
+.uni-px-n12 {
+ padding-left: -24px;
+ padding-right: -24px;
+}
+.uni-py-12 {
+ padding-top: 24px;
+ padding-bottom: 24px;
+}
+.uni-py-n12 {
+ padding-top: -24px;
+ padding-bottom: -24px;
+}
+.uni-pa-12 {
+ padding: 24px;
+}
+.uni-pa-n12 {
+ padding: -24px;
+}
+.uni-pt-13 {
+ padding-top: 26px;
+}
+.uni-pt-n13 {
+ padding-top: -26px;
+}
+.uni-pr-13 {
+ padding-right: 26px;
+}
+.uni-pr-n13 {
+ padding-right: -26px;
+}
+.uni-pb-13 {
+ padding-bottom: 26px;
+}
+.uni-pb-n13 {
+ padding-bottom: -26px;
+}
+.uni-pl-13 {
+ padding-left: 26px;
+}
+.uni-pl-n13 {
+ padding-left: -26px;
+}
+.uni-px-13 {
+ padding-left: 26px;
+ padding-right: 26px;
+}
+.uni-px-n13 {
+ padding-left: -26px;
+ padding-right: -26px;
+}
+.uni-py-13 {
+ padding-top: 26px;
+ padding-bottom: 26px;
+}
+.uni-py-n13 {
+ padding-top: -26px;
+ padding-bottom: -26px;
+}
+.uni-pa-13 {
+ padding: 26px;
+}
+.uni-pa-n13 {
+ padding: -26px;
+}
+.uni-pt-14 {
+ padding-top: 28px;
+}
+.uni-pt-n14 {
+ padding-top: -28px;
+}
+.uni-pr-14 {
+ padding-right: 28px;
+}
+.uni-pr-n14 {
+ padding-right: -28px;
+}
+.uni-pb-14 {
+ padding-bottom: 28px;
+}
+.uni-pb-n14 {
+ padding-bottom: -28px;
+}
+.uni-pl-14 {
+ padding-left: 28px;
+}
+.uni-pl-n14 {
+ padding-left: -28px;
+}
+.uni-px-14 {
+ padding-left: 28px;
+ padding-right: 28px;
+}
+.uni-px-n14 {
+ padding-left: -28px;
+ padding-right: -28px;
+}
+.uni-py-14 {
+ padding-top: 28px;
+ padding-bottom: 28px;
+}
+.uni-py-n14 {
+ padding-top: -28px;
+ padding-bottom: -28px;
+}
+.uni-pa-14 {
+ padding: 28px;
+}
+.uni-pa-n14 {
+ padding: -28px;
+}
+.uni-pt-15 {
+ padding-top: 30px;
+}
+.uni-pt-n15 {
+ padding-top: -30px;
+}
+.uni-pr-15 {
+ padding-right: 30px;
+}
+.uni-pr-n15 {
+ padding-right: -30px;
+}
+.uni-pb-15 {
+ padding-bottom: 30px;
+}
+.uni-pb-n15 {
+ padding-bottom: -30px;
+}
+.uni-pl-15 {
+ padding-left: 30px;
+}
+.uni-pl-n15 {
+ padding-left: -30px;
+}
+.uni-px-15 {
+ padding-left: 30px;
+ padding-right: 30px;
+}
+.uni-px-n15 {
+ padding-left: -30px;
+ padding-right: -30px;
+}
+.uni-py-15 {
+ padding-top: 30px;
+ padding-bottom: 30px;
+}
+.uni-py-n15 {
+ padding-top: -30px;
+ padding-bottom: -30px;
+}
+.uni-pa-15 {
+ padding: 30px;
+}
+.uni-pa-n15 {
+ padding: -30px;
+}
+.uni-pt-16 {
+ padding-top: 32px;
+}
+.uni-pt-n16 {
+ padding-top: -32px;
+}
+.uni-pr-16 {
+ padding-right: 32px;
+}
+.uni-pr-n16 {
+ padding-right: -32px;
+}
+.uni-pb-16 {
+ padding-bottom: 32px;
+}
+.uni-pb-n16 {
+ padding-bottom: -32px;
+}
+.uni-pl-16 {
+ padding-left: 32px;
+}
+.uni-pl-n16 {
+ padding-left: -32px;
+}
+.uni-px-16 {
+ padding-left: 32px;
+ padding-right: 32px;
+}
+.uni-px-n16 {
+ padding-left: -32px;
+ padding-right: -32px;
+}
+.uni-py-16 {
+ padding-top: 32px;
+ padding-bottom: 32px;
+}
+.uni-py-n16 {
+ padding-top: -32px;
+ padding-bottom: -32px;
+}
+.uni-pa-16 {
+ padding: 32px;
+}
+.uni-pa-n16 {
+ padding: -32px;
+}
+.uni-radius-0 {
+ border-radius: 0;
+}
+.uni-radius {
+ border-radius: 5px;
+}
+.uni-radius-lg {
+ border-radius: 10px;
+}
+.uni-radius-xl {
+ border-radius: 30px;
+}
+.uni-radius-pill {
+ border-radius: 9999px;
+}
+.uni-radius-circle {
+ border-radius: 50%;
+}
+.uni-radius-t-0 {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.uni-radius-t {
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+}
+.uni-radius-t-lg {
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+}
+.uni-radius-t-xl {
+ border-top-left-radius: 30px;
+ border-top-right-radius: 30px;
+}
+.uni-radius-t-pill {
+ border-top-left-radius: 9999px;
+ border-top-right-radius: 9999px;
+}
+.uni-radius-t-circle {
+ border-top-left-radius: 50%;
+ border-top-right-radius: 50%;
+}
+.uni-radius-r-0 {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.uni-radius-r {
+ border-top-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+.uni-radius-r-lg {
+ border-top-right-radius: 10px;
+ border-bottom-right-radius: 10px;
+}
+.uni-radius-r-xl {
+ border-top-right-radius: 30px;
+ border-bottom-right-radius: 30px;
+}
+.uni-radius-r-pill {
+ border-top-right-radius: 9999px;
+ border-bottom-right-radius: 9999px;
+}
+.uni-radius-r-circle {
+ border-top-right-radius: 50%;
+ border-bottom-right-radius: 50%;
+}
+.uni-radius-b-0 {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.uni-radius-b {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+}
+.uni-radius-b-lg {
+ border-bottom-left-radius: 10px;
+ border-bottom-right-radius: 10px;
+}
+.uni-radius-b-xl {
+ border-bottom-left-radius: 30px;
+ border-bottom-right-radius: 30px;
+}
+.uni-radius-b-pill {
+ border-bottom-left-radius: 9999px;
+ border-bottom-right-radius: 9999px;
+}
+.uni-radius-b-circle {
+ border-bottom-left-radius: 50%;
+ border-bottom-right-radius: 50%;
+}
+.uni-radius-l-0 {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.uni-radius-l {
+ border-top-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+}
+.uni-radius-l-lg {
+ border-top-left-radius: 10px;
+ border-bottom-left-radius: 10px;
+}
+.uni-radius-l-xl {
+ border-top-left-radius: 30px;
+ border-bottom-left-radius: 30px;
+}
+.uni-radius-l-pill {
+ border-top-left-radius: 9999px;
+ border-bottom-left-radius: 9999px;
+}
+.uni-radius-l-circle {
+ border-top-left-radius: 50%;
+ border-bottom-left-radius: 50%;
+}
+.uni-radius-tl-0 {
+ border-top-left-radius: 0;
+}
+.uni-radius-tl {
+ border-top-left-radius: 5px;
+}
+.uni-radius-tl-lg {
+ border-top-left-radius: 10px;
+}
+.uni-radius-tl-xl {
+ border-top-left-radius: 30px;
+}
+.uni-radius-tl-pill {
+ border-top-left-radius: 9999px;
+}
+.uni-radius-tl-circle {
+ border-top-left-radius: 50%;
+}
+.uni-radius-tr-0 {
+ border-top-right-radius: 0;
+}
+.uni-radius-tr {
+ border-top-right-radius: 5px;
+}
+.uni-radius-tr-lg {
+ border-top-right-radius: 10px;
+}
+.uni-radius-tr-xl {
+ border-top-right-radius: 30px;
+}
+.uni-radius-tr-pill {
+ border-top-right-radius: 9999px;
+}
+.uni-radius-tr-circle {
+ border-top-right-radius: 50%;
+}
+.uni-radius-br-0 {
+ border-bottom-right-radius: 0;
+}
+.uni-radius-br {
+ border-bottom-right-radius: 5px;
+}
+.uni-radius-br-lg {
+ border-bottom-right-radius: 10px;
+}
+.uni-radius-br-xl {
+ border-bottom-right-radius: 30px;
+}
+.uni-radius-br-pill {
+ border-bottom-right-radius: 9999px;
+}
+.uni-radius-br-circle {
+ border-bottom-right-radius: 50%;
+}
+.uni-radius-bl-0 {
+ border-bottom-left-radius: 0;
+}
+.uni-radius-bl {
+ border-bottom-left-radius: 5px;
+}
+.uni-radius-bl-lg {
+ border-bottom-left-radius: 10px;
+}
+.uni-radius-bl-xl {
+ border-bottom-left-radius: 30px;
+}
+.uni-radius-bl-pill {
+ border-bottom-left-radius: 9999px;
+}
+.uni-radius-bl-circle {
+ border-bottom-left-radius: 50%;
+}
+.uni-h1 {
+ font-size: 32px;
+ font-weight: 300;
+ line-height: 50px;
+}
+.uni-h2 {
+ font-size: 28px;
+ font-weight: 300;
+ line-height: 40px;
+}
+.uni-h3 {
+ font-size: 24px;
+ font-weight: 400;
+ line-height: 32px;
+}
+.uni-h4 {
+ font-size: 20px;
+ font-weight: 400;
+ line-height: 30px;
+}
+.uni-h5 {
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 24px;
+}
+.uni-h6 {
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 18px;
+}
+.uni-subtitle {
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 20px;
+}
+.uni-body {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 22px;
+}
+.uni-caption {
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 20px;
+}
+.uni-btn {
+ margin: 5px;
+ color: #393939;
+ border: 1px solid #ccc;
+ font-size: 16px;
+ font-weight: 200;
+ background-color: #F9F9F9;
+ overflow: visible;
+}
+.uni-btn::after {
+ border: none;
+}
+.uni-btn:not([type]), .uni-btn[type=default] {
+ color: #999;
+}
+.uni-btn:not([type])[loading], .uni-btn[type=default][loading] {
+ background: none;
+}
+.uni-btn:not([type])[loading]::before, .uni-btn[type=default][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn:not([type])[disabled], .uni-btn[type=default][disabled] {
+ color: #d6d6d6;
+}
+.uni-btn:not([type])[disabled], .uni-btn:not([type])[disabled][loading], .uni-btn:not([type])[disabled]:active, .uni-btn[type=default][disabled], .uni-btn[type=default][disabled][loading], .uni-btn[type=default][disabled]:active {
+ color: #d6d6d6;
+ background-color: #fafafa;
+ border-color: #f0f0f0;
+}
+.uni-btn:not([type])[plain], .uni-btn[type=default][plain] {
+ color: #999;
+ background: none;
+ border-color: #F0F0F0;
+}
+.uni-btn:not([type])[plain]:not([hover-class]):active, .uni-btn[type=default][plain]:not([hover-class]):active {
+ background: none;
+ color: #cccccc;
+ border-color: #e6e6e6;
+ outline: none;
+}
+.uni-btn:not([type])[plain][disabled], .uni-btn:not([type])[plain][disabled][loading], .uni-btn:not([type])[plain][disabled]:active, .uni-btn[type=default][plain][disabled], .uni-btn[type=default][plain][disabled][loading], .uni-btn[type=default][plain][disabled]:active {
+ background: none;
+ color: #d6d6d6;
+ border-color: #f0f0f0;
+}
+.uni-btn:not([hover-class]):active {
+ color: gray;
+}
+.uni-btn[size=mini] {
+ font-size: 16px;
+ font-weight: 200;
+ border-radius: 8px;
+}
+.uni-btn.uni-btn-small {
+ font-size: 14px;
+}
+.uni-btn.uni-btn-mini {
+ font-size: 12px;
+}
+.uni-btn.uni-btn-radius {
+ border-radius: 999px;
+}
+.uni-btn[type=primary] {
+ color: #fff;
+ background-color: #2979ff;
+ border-color: #266feb;
+}
+.uni-btn[type=primary]:not([hover-class]):active {
+ background: #256de6;
+ border-color: #2161cc;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=primary][loading] {
+ color: #fff;
+ background-color: #2979ff;
+ border-color: #266feb;
+}
+.uni-btn[type=primary][loading]:not([hover-class]):active {
+ background: #256de6;
+ border-color: #2161cc;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=primary][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=primary][disabled], .uni-btn[type=primary][disabled][loading], .uni-btn[type=primary][disabled]:not([hover-class]):active {
+ color: #fff;
+ border-color: #80adfa;
+ background-color: #94bcff;
+}
+.uni-btn[type=primary][plain] {
+ color: #2979ff;
+ background-color: #eaf2ff;
+ border-color: #bfd7ff;
+}
+.uni-btn[type=primary][plain]:not([hover-class]):active {
+ background: #d4e4ff;
+ color: #2979ff;
+ outline: none;
+ border-color: #94bcff;
+}
+.uni-btn[type=primary][plain][loading] {
+ color: #2979ff;
+ background-color: #eaf2ff;
+ border-color: #bfd7ff;
+}
+.uni-btn[type=primary][plain][loading]:not([hover-class]):active {
+ background: #d4e4ff;
+ color: #2979ff;
+ outline: none;
+ border-color: #94bcff;
+}
+.uni-btn[type=primary][plain][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=primary][plain][disabled], .uni-btn[type=primary][plain][disabled]:active {
+ color: #7fafff;
+ background-color: #eaf2ff;
+ border-color: #d4e4ff;
+}
+.uni-btn[type=success] {
+ color: #fff;
+ background-color: #18bc37;
+ border-color: #16ad33;
+}
+.uni-btn[type=success]:not([hover-class]):active {
+ background: #16a932;
+ border-color: #13962c;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=success][loading] {
+ color: #fff;
+ background-color: #18bc37;
+ border-color: #16ad33;
+}
+.uni-btn[type=success][loading]:not([hover-class]):active {
+ background: #16a932;
+ border-color: #13962c;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=success][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=success][disabled], .uni-btn[type=success][disabled][loading], .uni-btn[type=success][disabled]:not([hover-class]):active {
+ color: #fff;
+ border-color: #89c794;
+ background-color: #8cde9b;
+}
+.uni-btn[type=success][plain] {
+ color: #18bc37;
+ background-color: #e8f8eb;
+ border-color: #baebc3;
+}
+.uni-btn[type=success][plain]:not([hover-class]):active {
+ background: #d1f2d7;
+ color: #18bc37;
+ outline: none;
+ border-color: #8cde9b;
+}
+.uni-btn[type=success][plain][loading] {
+ color: #18bc37;
+ background-color: #e8f8eb;
+ border-color: #baebc3;
+}
+.uni-btn[type=success][plain][loading]:not([hover-class]):active {
+ background: #d1f2d7;
+ color: #18bc37;
+ outline: none;
+ border-color: #8cde9b;
+}
+.uni-btn[type=success][plain][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=success][plain][disabled], .uni-btn[type=success][plain][disabled]:active {
+ color: #74d787;
+ background-color: #e8f8eb;
+ border-color: #d1f2d7;
+}
+.uni-btn[type=error] {
+ color: #fff;
+ background-color: #e43d33;
+ border-color: #d2382f;
+}
+.uni-btn[type=error]:not([hover-class]):active {
+ background: #cd372e;
+ border-color: #b63129;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=error][loading] {
+ color: #fff;
+ background-color: #e43d33;
+ border-color: #d2382f;
+}
+.uni-btn[type=error][loading]:not([hover-class]):active {
+ background: #cd372e;
+ border-color: #b63129;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=error][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=error][disabled], .uni-btn[type=error][disabled][loading], .uni-btn[type=error][disabled]:not([hover-class]):active {
+ color: #fff;
+ border-color: #e4928d;
+ background-color: #f29e99;
+}
+.uni-btn[type=error][plain] {
+ color: #e43d33;
+ background-color: #fceceb;
+ border-color: #f7c5c2;
+}
+.uni-btn[type=error][plain]:not([hover-class]):active {
+ background: #fad8d6;
+ color: #e43d33;
+ outline: none;
+ border-color: #f29e99;
+}
+.uni-btn[type=error][plain][loading] {
+ color: #e43d33;
+ background-color: #fceceb;
+ border-color: #f7c5c2;
+}
+.uni-btn[type=error][plain][loading]:not([hover-class]):active {
+ background: #fad8d6;
+ color: #e43d33;
+ outline: none;
+ border-color: #f29e99;
+}
+.uni-btn[type=error][plain][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=error][plain][disabled], .uni-btn[type=error][plain][disabled]:active {
+ color: #ef8b85;
+ background-color: #fceceb;
+ border-color: #fad8d6;
+}
+.uni-btn[type=warning] {
+ color: #fff;
+ background-color: #f3a73f;
+ border-color: #e09a3a;
+}
+.uni-btn[type=warning]:not([hover-class]):active {
+ background: #db9639;
+ border-color: #c28632;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=warning][loading] {
+ color: #fff;
+ background-color: #f3a73f;
+ border-color: #e09a3a;
+}
+.uni-btn[type=warning][loading]:not([hover-class]):active {
+ background: #db9639;
+ border-color: #c28632;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=warning][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=warning][disabled], .uni-btn[type=warning][disabled][loading], .uni-btn[type=warning][disabled]:not([hover-class]):active {
+ color: #fff;
+ border-color: #f8c887;
+ background-color: #f9d39f;
+}
+.uni-btn[type=warning][plain] {
+ color: #f3a73f;
+ background-color: #fef6ec;
+ border-color: #fbe5c5;
+}
+.uni-btn[type=warning][plain]:not([hover-class]):active {
+ background: #fdedd9;
+ color: #f3a73f;
+ outline: none;
+ border-color: #f9d39f;
+}
+.uni-btn[type=warning][plain][loading] {
+ color: #f3a73f;
+ background-color: #fef6ec;
+ border-color: #fbe5c5;
+}
+.uni-btn[type=warning][plain][loading]:not([hover-class]):active {
+ background: #fdedd9;
+ color: #f3a73f;
+ outline: none;
+ border-color: #f9d39f;
+}
+.uni-btn[type=warning][plain][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=warning][plain][disabled], .uni-btn[type=warning][plain][disabled]:active {
+ color: #f8ca8c;
+ background-color: #fef6ec;
+ border-color: #fdedd9;
+}
+.uni-btn[type=info] {
+ color: #fff;
+ background-color: #8f939c;
+ border-color: #848790;
+}
+.uni-btn[type=info]:not([hover-class]):active {
+ background: #81848c;
+ border-color: #72767d;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=info][loading] {
+ color: #fff;
+ background-color: #8f939c;
+ border-color: #848790;
+}
+.uni-btn[type=info][loading]:not([hover-class]):active {
+ background: #81848c;
+ border-color: #72767d;
+ color: #fff;
+ outline: none;
+}
+.uni-btn[type=info][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=info][disabled], .uni-btn[type=info][disabled][loading], .uni-btn[type=info][disabled]:not([hover-class]):active {
+ color: #fff;
+ border-color: #babcc1;
+ background-color: #c7c9ce;
+}
+.uni-btn[type=info][plain] {
+ color: #8f939c;
+ background-color: #f4f4f5;
+ border-color: #dddfe1;
+}
+.uni-btn[type=info][plain]:not([hover-class]):active {
+ background: #e9e9eb;
+ color: #8f939c;
+ outline: none;
+ border-color: #c7c9ce;
+}
+.uni-btn[type=info][plain][loading] {
+ color: #8f939c;
+ background-color: #f4f4f5;
+ border-color: #dddfe1;
+}
+.uni-btn[type=info][plain][loading]:not([hover-class]):active {
+ background: #e9e9eb;
+ color: #8f939c;
+ outline: none;
+ border-color: #c7c9ce;
+}
+.uni-btn[type=info][plain][loading]::before {
+ margin-right: 5px;
+}
+.uni-btn[type=info][plain][disabled], .uni-btn[type=info][plain][disabled]:active {
+ color: #bcbec4;
+ background-color: #f4f4f5;
+ border-color: #e9e9eb;
+}
+page {
+ background-color: #f5f5f5;
+}
+.example-info {
+ font-size: 14px;
+ color: #333;
+ padding: 10px;
+}
+
diff --git a/unpackage/dist/dev/mp-weixin/common/runtime.js b/unpackage/dist/dev/mp-weixin/common/runtime.js
new file mode 100644
index 0000000..a07bcfd
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/common/runtime.js
@@ -0,0 +1,273 @@
+
+ !function(){try{var a=Function("return this")();a&&!a.Math&&(Object.assign(a,{isFinite:isFinite,Array:Array,Date:Date,Error:Error,Function:Function,Math:Math,Object:Object,RegExp:RegExp,String:String,TypeError:TypeError,setTimeout:setTimeout,clearTimeout:clearTimeout,setInterval:setInterval,clearInterval:clearInterval}),"undefined"!=typeof Reflect&&(a.Reflect=Reflect))}catch(a){}}();
+ /******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1];
+/******/ var executeModules = data[2];
+/******/
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ // add entry modules from loaded chunk to deferred list
+/******/ deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ // run deferred modules when all chunks ready
+/******/ return checkDeferredModules();
+/******/ };
+/******/ function checkDeferredModules() {
+/******/ var result;
+/******/ for(var i = 0; i < deferredModules.length; i++) {
+/******/ var deferredModule = deferredModules[i];
+/******/ var fulfilled = true;
+/******/ for(var j = 1; j < deferredModule.length; j++) {
+/******/ var depId = deferredModule[j];
+/******/ if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ }
+/******/ if(fulfilled) {
+/******/ deferredModules.splice(i--, 1);
+/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ }
+/******/ }
+/******/
+/******/ return result;
+/******/ }
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded CSS chunks
+/******/ var installedCssChunks = {
+/******/ "common/runtime": 0
+/******/ }
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ // Promise = chunk loading, 0 = chunk loaded
+/******/ var installedChunks = {
+/******/ "common/runtime": 0
+/******/ };
+/******/
+/******/ var deferredModules = [];
+/******/
+/******/ // script path function
+/******/ function jsonpScriptSrc(chunkId) {
+/******/ return __webpack_require__.p + "" + chunkId + ".js"
+/******/ }
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/ // This file contains only the entry chunk.
+/******/ // The chunk loading function for additional chunks
+/******/ __webpack_require__.e = function requireEnsure(chunkId) {
+/******/ var promises = [];
+/******/
+/******/
+/******/ // mini-css-extract-plugin CSS loading
+/******/ var cssChunks = {"components/calendar":1,"uni_modules/uni-badge/components/uni-badge/uni-badge":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1,"uni_modules/uni-popup/components/uni-popup/uni-popup":1};
+/******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
+/******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
+/******/ promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
+/******/ var href = "" + ({"components/calendar":"components/calendar","uni_modules/uni-badge/components/uni-badge/uni-badge":"uni_modules/uni-badge/components/uni-badge/uni-badge","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons","uni_modules/uni-popup/components/uni-popup/uni-popup":"uni_modules/uni-popup/components/uni-popup/uni-popup","uni_modules/uni-transition/components/uni-transition/uni-transition":"uni_modules/uni-transition/components/uni-transition/uni-transition"}[chunkId]||chunkId) + ".wxss";
+/******/ var fullhref = __webpack_require__.p + href;
+/******/ var existingLinkTags = document.getElementsByTagName("link");
+/******/ for(var i = 0; i < existingLinkTags.length; i++) {
+/******/ var tag = existingLinkTags[i];
+/******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href");
+/******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return resolve();
+/******/ }
+/******/ var existingStyleTags = document.getElementsByTagName("style");
+/******/ for(var i = 0; i < existingStyleTags.length; i++) {
+/******/ var tag = existingStyleTags[i];
+/******/ var dataHref = tag.getAttribute("data-href");
+/******/ if(dataHref === href || dataHref === fullhref) return resolve();
+/******/ }
+/******/ var linkTag = document.createElement("link");
+/******/ linkTag.rel = "stylesheet";
+/******/ linkTag.type = "text/css";
+/******/ linkTag.onload = resolve;
+/******/ linkTag.onerror = function(event) {
+/******/ var request = event && event.target && event.target.src || fullhref;
+/******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + request + ")");
+/******/ err.code = "CSS_CHUNK_LOAD_FAILED";
+/******/ err.request = request;
+/******/ delete installedCssChunks[chunkId]
+/******/ linkTag.parentNode.removeChild(linkTag)
+/******/ reject(err);
+/******/ };
+/******/ linkTag.href = fullhref;
+/******/
+/******/ var head = document.getElementsByTagName("head")[0];
+/******/ head.appendChild(linkTag);
+/******/ }).then(function() {
+/******/ installedCssChunks[chunkId] = 0;
+/******/ }));
+/******/ }
+/******/
+/******/ // JSONP chunk loading for javascript
+/******/
+/******/ var installedChunkData = installedChunks[chunkId];
+/******/ if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ // a Promise means "currently loading".
+/******/ if(installedChunkData) {
+/******/ promises.push(installedChunkData[2]);
+/******/ } else {
+/******/ // setup Promise in chunk cache
+/******/ var promise = new Promise(function(resolve, reject) {
+/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ });
+/******/ promises.push(installedChunkData[2] = promise);
+/******/
+/******/ // start chunk loading
+/******/ var script = document.createElement('script');
+/******/ var onScriptComplete;
+/******/
+/******/ script.charset = 'utf-8';
+/******/ script.timeout = 120;
+/******/ if (__webpack_require__.nc) {
+/******/ script.setAttribute("nonce", __webpack_require__.nc);
+/******/ }
+/******/ script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ // create error before stack unwound to get useful stacktrace later
+/******/ var error = new Error();
+/******/ onScriptComplete = function (event) {
+/******/ // avoid mem leaks in IE.
+/******/ script.onerror = script.onload = null;
+/******/ clearTimeout(timeout);
+/******/ var chunk = installedChunks[chunkId];
+/******/ if(chunk !== 0) {
+/******/ if(chunk) {
+/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ var realSrc = event && event.target && event.target.src;
+/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ error.name = 'ChunkLoadError';
+/******/ error.type = errorType;
+/******/ error.request = realSrc;
+/******/ chunk[1](error);
+/******/ }
+/******/ installedChunks[chunkId] = undefined;
+/******/ }
+/******/ };
+/******/ var timeout = setTimeout(function(){
+/******/ onScriptComplete({ type: 'timeout', target: script });
+/******/ }, 120000);
+/******/ script.onerror = script.onload = onScriptComplete;
+/******/ document.head.appendChild(script);
+/******/ }
+/******/ }
+/******/ return Promise.all(promises);
+/******/ };
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "/";
+/******/
+/******/ // on error function for async loading
+/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ var jsonpArray = global["webpackJsonp"] = global["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // run deferred modules from other chunks
+/******/ checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);
+//# sourceMappingURL=../../.sourcemap/mp-weixin/common/runtime.js.map
+
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-weixin/common/vendor.js b/unpackage/dist/dev/mp-weixin/common/vendor.js
new file mode 100644
index 0000000..58863ce
--- /dev/null
+++ b/unpackage/dist/dev/mp-weixin/common/vendor.js
@@ -0,0 +1,24456 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/vendor"],[
+/* 0 */,
+/* 1 */
+/*!*********************************************************!*\
+ !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var objectKeys = ['qy', 'env', 'error', 'version', 'lanDebug', 'cloud', 'serviceMarket', 'router', 'worklet', '__webpack_require_UNI_MP_PLUGIN__'];
+var singlePageDisableKey = ['lanDebug', 'router', 'worklet'];
+var target = typeof globalThis !== 'undefined' ? globalThis : function () {
+ return this;
+}();
+var key = ['w', 'x'].join('');
+var oldWx = target[key];
+var launchOption = oldWx.getLaunchOptionsSync ? oldWx.getLaunchOptionsSync() : null;
+function isWxKey(key) {
+ if (launchOption && launchOption.scene === 1154 && singlePageDisableKey.includes(key)) {
+ return false;
+ }
+ return objectKeys.indexOf(key) > -1 || typeof oldWx[key] === 'function';
+}
+function initWx() {
+ var newWx = {};
+ for (var _key in oldWx) {
+ if (isWxKey(_key)) {
+ // TODO wrapper function
+ newWx[_key] = oldWx[_key];
+ }
+ }
+ return newWx;
+}
+target[key] = initWx();
+var _default = target[key];
+exports.default = _default;
+
+/***/ }),
+/* 2 */
+/*!************************************************************!*\
+ !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(wx, global) {
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createApp = createApp;
+exports.createComponent = createComponent;
+exports.createPage = createPage;
+exports.createPlugin = createPlugin;
+exports.createSubpackageApp = createSubpackageApp;
+exports.default = void 0;
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
+var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
+var _construct2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/construct */ 15));
+var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 18));
+var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
+var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 22);
+var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
+var realAtob;
+var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
+if (typeof atob !== 'function') {
+ realAtob = function realAtob(str) {
+ str = String(str).replace(/[\t\n\f\r ]+/g, '');
+ if (!b64re.test(str)) {
+ throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
+ }
+
+ // Adding the padding if missing, for semplicity
+ str += '=='.slice(2 - (str.length & 3));
+ var bitmap;
+ var result = '';
+ var r1;
+ var r2;
+ var i = 0;
+ for (; i < str.length;) {
+ bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 | (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));
+ result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
+ }
+ return result;
+ };
+} else {
+ // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
+ realAtob = atob;
+}
+function b64DecodeUnicode(str) {
+ return decodeURIComponent(realAtob(str).split('').map(function (c) {
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
+ }).join(''));
+}
+function getCurrentUserInfo() {
+ var token = wx.getStorageSync('uni_id_token') || '';
+ var tokenArr = token.split('.');
+ if (!token || tokenArr.length !== 3) {
+ return {
+ uid: null,
+ role: [],
+ permission: [],
+ tokenExpired: 0
+ };
+ }
+ var userInfo;
+ try {
+ userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
+ } catch (error) {
+ throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
+ }
+ userInfo.tokenExpired = userInfo.exp * 1000;
+ delete userInfo.exp;
+ delete userInfo.iat;
+ return userInfo;
+}
+function uniIdMixin(Vue) {
+ Vue.prototype.uniIDHasRole = function (roleId) {
+ var _getCurrentUserInfo = getCurrentUserInfo(),
+ role = _getCurrentUserInfo.role;
+ return role.indexOf(roleId) > -1;
+ };
+ Vue.prototype.uniIDHasPermission = function (permissionId) {
+ var _getCurrentUserInfo2 = getCurrentUserInfo(),
+ permission = _getCurrentUserInfo2.permission;
+ return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
+ };
+ Vue.prototype.uniIDTokenValid = function () {
+ var _getCurrentUserInfo3 = getCurrentUserInfo(),
+ tokenExpired = _getCurrentUserInfo3.tokenExpired;
+ return tokenExpired > Date.now();
+ };
+}
+var _toString = Object.prototype.toString;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+function isFn(fn) {
+ return typeof fn === 'function';
+}
+function isStr(str) {
+ return typeof str === 'string';
+}
+function isObject(obj) {
+ return obj !== null && (0, _typeof2.default)(obj) === 'object';
+}
+function isPlainObject(obj) {
+ return _toString.call(obj) === '[object Object]';
+}
+function hasOwn(obj, key) {
+ return hasOwnProperty.call(obj, key);
+}
+function noop() {}
+
+/**
+ * Create a cached version of a pure function.
+ */
+function cached(fn) {
+ var cache = Object.create(null);
+ return function cachedFn(str) {
+ var hit = cache[str];
+ return hit || (cache[str] = fn(str));
+ };
+}
+
+/**
+ * Camelize a hyphen-delimited string.
+ */
+var camelizeRE = /-(\w)/g;
+var camelize = cached(function (str) {
+ return str.replace(camelizeRE, function (_, c) {
+ return c ? c.toUpperCase() : '';
+ });
+});
+function sortObject(obj) {
+ var sortObj = {};
+ if (isPlainObject(obj)) {
+ Object.keys(obj).sort().forEach(function (key) {
+ sortObj[key] = obj[key];
+ });
+ }
+ return !Object.keys(sortObj) ? obj : sortObj;
+}
+var HOOKS = ['invoke', 'success', 'fail', 'complete', 'returnValue'];
+var globalInterceptors = {};
+var scopedInterceptors = {};
+function mergeHook(parentVal, childVal) {
+ var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;
+ return res ? dedupeHooks(res) : res;
+}
+function dedupeHooks(hooks) {
+ var res = [];
+ for (var i = 0; i < hooks.length; i++) {
+ if (res.indexOf(hooks[i]) === -1) {
+ res.push(hooks[i]);
+ }
+ }
+ return res;
+}
+function removeHook(hooks, hook) {
+ var index = hooks.indexOf(hook);
+ if (index !== -1) {
+ hooks.splice(index, 1);
+ }
+}
+function mergeInterceptorHook(interceptor, option) {
+ Object.keys(option).forEach(function (hook) {
+ if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
+ interceptor[hook] = mergeHook(interceptor[hook], option[hook]);
+ }
+ });
+}
+function removeInterceptorHook(interceptor, option) {
+ if (!interceptor || !option) {
+ return;
+ }
+ Object.keys(option).forEach(function (hook) {
+ if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
+ removeHook(interceptor[hook], option[hook]);
+ }
+ });
+}
+function addInterceptor(method, option) {
+ if (typeof method === 'string' && isPlainObject(option)) {
+ mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);
+ } else if (isPlainObject(method)) {
+ mergeInterceptorHook(globalInterceptors, method);
+ }
+}
+function removeInterceptor(method, option) {
+ if (typeof method === 'string') {
+ if (isPlainObject(option)) {
+ removeInterceptorHook(scopedInterceptors[method], option);
+ } else {
+ delete scopedInterceptors[method];
+ }
+ } else if (isPlainObject(method)) {
+ removeInterceptorHook(globalInterceptors, method);
+ }
+}
+function wrapperHook(hook, params) {
+ return function (data) {
+ return hook(data, params) || data;
+ };
+}
+function isPromise(obj) {
+ return !!obj && ((0, _typeof2.default)(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
+}
+function queue(hooks, data, params) {
+ var promise = false;
+ for (var i = 0; i < hooks.length; i++) {
+ var hook = hooks[i];
+ if (promise) {
+ promise = Promise.resolve(wrapperHook(hook, params));
+ } else {
+ var res = hook(data, params);
+ if (isPromise(res)) {
+ promise = Promise.resolve(res);
+ }
+ if (res === false) {
+ return {
+ then: function then() {}
+ };
+ }
+ }
+ }
+ return promise || {
+ then: function then(callback) {
+ return callback(data);
+ }
+ };
+}
+function wrapperOptions(interceptor) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ ['success', 'fail', 'complete'].forEach(function (name) {
+ if (Array.isArray(interceptor[name])) {
+ var oldCallback = options[name];
+ options[name] = function callbackInterceptor(res) {
+ queue(interceptor[name], res, options).then(function (res) {
+ /* eslint-disable no-mixed-operators */
+ return isFn(oldCallback) && oldCallback(res) || res;
+ });
+ };
+ }
+ });
+ return options;
+}
+function wrapperReturnValue(method, returnValue) {
+ var returnValueHooks = [];
+ if (Array.isArray(globalInterceptors.returnValue)) {
+ returnValueHooks.push.apply(returnValueHooks, (0, _toConsumableArray2.default)(globalInterceptors.returnValue));
+ }
+ var interceptor = scopedInterceptors[method];
+ if (interceptor && Array.isArray(interceptor.returnValue)) {
+ returnValueHooks.push.apply(returnValueHooks, (0, _toConsumableArray2.default)(interceptor.returnValue));
+ }
+ returnValueHooks.forEach(function (hook) {
+ returnValue = hook(returnValue) || returnValue;
+ });
+ return returnValue;
+}
+function getApiInterceptorHooks(method) {
+ var interceptor = Object.create(null);
+ Object.keys(globalInterceptors).forEach(function (hook) {
+ if (hook !== 'returnValue') {
+ interceptor[hook] = globalInterceptors[hook].slice();
+ }
+ });
+ var scopedInterceptor = scopedInterceptors[method];
+ if (scopedInterceptor) {
+ Object.keys(scopedInterceptor).forEach(function (hook) {
+ if (hook !== 'returnValue') {
+ interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);
+ }
+ });
+ }
+ return interceptor;
+}
+function invokeApi(method, api, options) {
+ for (var _len = arguments.length, params = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
+ params[_key - 3] = arguments[_key];
+ }
+ var interceptor = getApiInterceptorHooks(method);
+ if (interceptor && Object.keys(interceptor).length) {
+ if (Array.isArray(interceptor.invoke)) {
+ var res = queue(interceptor.invoke, options);
+ return res.then(function (options) {
+ // 重新访问 getApiInterceptorHooks, 允许 invoke 中再次调用 addInterceptor,removeInterceptor
+ return api.apply(void 0, [wrapperOptions(getApiInterceptorHooks(method), options)].concat(params));
+ });
+ } else {
+ return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
+ }
+ }
+ return api.apply(void 0, [options].concat(params));
+}
+var promiseInterceptor = {
+ returnValue: function returnValue(res) {
+ if (!isPromise(res)) {
+ return res;
+ }
+ return new Promise(function (resolve, reject) {
+ res.then(function (res) {
+ if (res[0]) {
+ reject(res[0]);
+ } else {
+ resolve(res[1]);
+ }
+ });
+ });
+ }
+};
+var SYNC_API_RE = /^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting|initUTS|requireUTS|registerUTS/;
+var CONTEXT_API_RE = /^create|Manager$/;
+
+// Context例外情况
+var CONTEXT_API_RE_EXC = ['createBLEConnection'];
+
+// 同步例外情况
+var ASYNC_API = ['createBLEConnection', 'createPushMessage'];
+var CALLBACK_API_RE = /^on|^off/;
+function isContextApi(name) {
+ return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1;
+}
+function isSyncApi(name) {
+ return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1;
+}
+function isCallbackApi(name) {
+ return CALLBACK_API_RE.test(name) && name !== 'onPush';
+}
+function handlePromise(promise) {
+ return promise.then(function (data) {
+ return [null, data];
+ }).catch(function (err) {
+ return [err];
+ });
+}
+function shouldPromise(name) {
+ if (isContextApi(name) || isSyncApi(name) || isCallbackApi(name)) {
+ return false;
+ }
+ return true;
+}
+
+/* eslint-disable no-extend-native */
+if (!Promise.prototype.finally) {
+ Promise.prototype.finally = function (callback) {
+ var promise = this.constructor;
+ return this.then(function (value) {
+ return promise.resolve(callback()).then(function () {
+ return value;
+ });
+ }, function (reason) {
+ return promise.resolve(callback()).then(function () {
+ throw reason;
+ });
+ });
+ };
+}
+function promisify(name, api) {
+ if (!shouldPromise(name) || !isFn(api)) {
+ return api;
+ }
+ return function promiseApi() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ params[_key2 - 1] = arguments[_key2];
+ }
+ if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {
+ return wrapperReturnValue(name, invokeApi.apply(void 0, [name, api, options].concat(params)));
+ }
+ return wrapperReturnValue(name, handlePromise(new Promise(function (resolve, reject) {
+ invokeApi.apply(void 0, [name, api, Object.assign({}, options, {
+ success: resolve,
+ fail: reject
+ })].concat(params));
+ })));
+ };
+}
+var EPS = 1e-4;
+var BASE_DEVICE_WIDTH = 750;
+var isIOS = false;
+var deviceWidth = 0;
+var deviceDPR = 0;
+function checkDeviceWidth() {
+ var _wx$getSystemInfoSync = wx.getSystemInfoSync(),
+ platform = _wx$getSystemInfoSync.platform,
+ pixelRatio = _wx$getSystemInfoSync.pixelRatio,
+ windowWidth = _wx$getSystemInfoSync.windowWidth; // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni
+
+ deviceWidth = windowWidth;
+ deviceDPR = pixelRatio;
+ isIOS = platform === 'ios';
+}
+function upx2px(number, newDeviceWidth) {
+ if (deviceWidth === 0) {
+ checkDeviceWidth();
+ }
+ number = Number(number);
+ if (number === 0) {
+ return 0;
+ }
+ var result = number / BASE_DEVICE_WIDTH * (newDeviceWidth || deviceWidth);
+ if (result < 0) {
+ result = -result;
+ }
+ result = Math.floor(result + EPS);
+ if (result === 0) {
+ if (deviceDPR === 1 || !isIOS) {
+ result = 1;
+ } else {
+ result = 0.5;
+ }
+ }
+ return number < 0 ? -result : result;
+}
+var LOCALE_ZH_HANS = 'zh-Hans';
+var LOCALE_ZH_HANT = 'zh-Hant';
+var LOCALE_EN = 'en';
+var LOCALE_FR = 'fr';
+var LOCALE_ES = 'es';
+var messages = {};
+var locale;
+{
+ locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
+}
+function initI18nMessages() {
+ if (!isEnableLocale()) {
+ return;
+ }
+ var localeKeys = Object.keys(__uniConfig.locales);
+ if (localeKeys.length) {
+ localeKeys.forEach(function (locale) {
+ var curMessages = messages[locale];
+ var userMessages = __uniConfig.locales[locale];
+ if (curMessages) {
+ Object.assign(curMessages, userMessages);
+ } else {
+ messages[locale] = userMessages;
+ }
+ });
+ }
+}
+initI18nMessages();
+var i18n = (0, _uniI18n.initVueI18n)(locale, {});
+var t = i18n.t;
+var i18nMixin = i18n.mixin = {
+ beforeCreate: function beforeCreate() {
+ var _this = this;
+ var unwatch = i18n.i18n.watchLocale(function () {
+ _this.$forceUpdate();
+ });
+ this.$once('hook:beforeDestroy', function () {
+ unwatch();
+ });
+ },
+ methods: {
+ $$t: function $$t(key, values) {
+ return t(key, values);
+ }
+ }
+};
+var setLocale = i18n.setLocale;
+var getLocale = i18n.getLocale;
+function initAppLocale(Vue, appVm, locale) {
+ var state = Vue.observable({
+ locale: locale || i18n.getLocale()
+ });
+ var localeWatchers = [];
+ appVm.$watchLocale = function (fn) {
+ localeWatchers.push(fn);
+ };
+ Object.defineProperty(appVm, '$locale', {
+ get: function get() {
+ return state.locale;
+ },
+ set: function set(v) {
+ state.locale = v;
+ localeWatchers.forEach(function (watch) {
+ return watch(v);
+ });
+ }
+ });
+}
+function isEnableLocale() {
+ return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length;
+}
+function include(str, parts) {
+ return !!parts.find(function (part) {
+ return str.indexOf(part) !== -1;
+ });
+}
+function startsWith(str, parts) {
+ return parts.find(function (part) {
+ return str.indexOf(part) === 0;
+ });
+}
+function normalizeLocale(locale, messages) {
+ if (!locale) {
+ return;
+ }
+ locale = locale.trim().replace(/_/g, '-');
+ if (messages && messages[locale]) {
+ return locale;
+ }
+ locale = locale.toLowerCase();
+ if (locale === 'chinese') {
+ // 支付宝
+ return LOCALE_ZH_HANS;
+ }
+ if (locale.indexOf('zh') === 0) {
+ if (locale.indexOf('-hans') > -1) {
+ return LOCALE_ZH_HANS;
+ }
+ if (locale.indexOf('-hant') > -1) {
+ return LOCALE_ZH_HANT;
+ }
+ if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
+ return LOCALE_ZH_HANT;
+ }
+ return LOCALE_ZH_HANS;
+ }
+ var lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);
+ if (lang) {
+ return lang;
+ }
+}
+// export function initI18n() {
+// const localeKeys = Object.keys(__uniConfig.locales || {})
+// if (localeKeys.length) {
+// localeKeys.forEach((locale) =>
+// i18n.add(locale, __uniConfig.locales[locale])
+// )
+// }
+// }
+
+function getLocale$1() {
+ // 优先使用 $locale
+ if (isFn(getApp)) {
+ var app = getApp({
+ allowDefault: true
+ });
+ if (app && app.$vm) {
+ return app.$vm.$locale;
+ }
+ }
+ return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
+}
+function setLocale$1(locale) {
+ var app = isFn(getApp) ? getApp() : false;
+ if (!app) {
+ return false;
+ }
+ var oldLocale = app.$vm.$locale;
+ if (oldLocale !== locale) {
+ app.$vm.$locale = locale;
+ onLocaleChangeCallbacks.forEach(function (fn) {
+ return fn({
+ locale: locale
+ });
+ });
+ return true;
+ }
+ return false;
+}
+var onLocaleChangeCallbacks = [];
+function onLocaleChange(fn) {
+ if (onLocaleChangeCallbacks.indexOf(fn) === -1) {
+ onLocaleChangeCallbacks.push(fn);
+ }
+}
+if (typeof global !== 'undefined') {
+ global.getLocale = getLocale$1;
+}
+var interceptors = {
+ promiseInterceptor: promiseInterceptor
+};
+var baseApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ upx2px: upx2px,
+ getLocale: getLocale$1,
+ setLocale: setLocale$1,
+ onLocaleChange: onLocaleChange,
+ addInterceptor: addInterceptor,
+ removeInterceptor: removeInterceptor,
+ interceptors: interceptors
+});
+function findExistsPageIndex(url) {
+ var pages = getCurrentPages();
+ var len = pages.length;
+ while (len--) {
+ var page = pages[len];
+ if (page.$page && page.$page.fullPath === url) {
+ return len;
+ }
+ }
+ return -1;
+}
+var redirectTo = {
+ name: function name(fromArgs) {
+ if (fromArgs.exists === 'back' && fromArgs.delta) {
+ return 'navigateBack';
+ }
+ return 'redirectTo';
+ },
+ args: function args(fromArgs) {
+ if (fromArgs.exists === 'back' && fromArgs.url) {
+ var existsPageIndex = findExistsPageIndex(fromArgs.url);
+ if (existsPageIndex !== -1) {
+ var delta = getCurrentPages().length - 1 - existsPageIndex;
+ if (delta > 0) {
+ fromArgs.delta = delta;
+ }
+ }
+ }
+ }
+};
+var previewImage = {
+ args: function args(fromArgs) {
+ var currentIndex = parseInt(fromArgs.current);
+ if (isNaN(currentIndex)) {
+ return;
+ }
+ var urls = fromArgs.urls;
+ if (!Array.isArray(urls)) {
+ return;
+ }
+ var len = urls.length;
+ if (!len) {
+ return;
+ }
+ if (currentIndex < 0) {
+ currentIndex = 0;
+ } else if (currentIndex >= len) {
+ currentIndex = len - 1;
+ }
+ if (currentIndex > 0) {
+ fromArgs.current = urls[currentIndex];
+ fromArgs.urls = urls.filter(function (item, index) {
+ return index < currentIndex ? item !== urls[currentIndex] : true;
+ });
+ } else {
+ fromArgs.current = urls[0];
+ }
+ return {
+ indicator: false,
+ loop: false
+ };
+ }
+};
+var UUID_KEY = '__DC_STAT_UUID';
+var deviceId;
+function useDeviceId(result) {
+ deviceId = deviceId || wx.getStorageSync(UUID_KEY);
+ if (!deviceId) {
+ deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);
+ wx.setStorage({
+ key: UUID_KEY,
+ data: deviceId
+ });
+ }
+ result.deviceId = deviceId;
+}
+function addSafeAreaInsets(result) {
+ if (result.safeArea) {
+ var safeArea = result.safeArea;
+ result.safeAreaInsets = {
+ top: safeArea.top,
+ left: safeArea.left,
+ right: result.windowWidth - safeArea.right,
+ bottom: result.screenHeight - safeArea.bottom
+ };
+ }
+}
+function populateParameters(result) {
+ var _result$brand = result.brand,
+ brand = _result$brand === void 0 ? '' : _result$brand,
+ _result$model = result.model,
+ model = _result$model === void 0 ? '' : _result$model,
+ _result$system = result.system,
+ system = _result$system === void 0 ? '' : _result$system,
+ _result$language = result.language,
+ language = _result$language === void 0 ? '' : _result$language,
+ theme = result.theme,
+ version = result.version,
+ platform = result.platform,
+ fontSizeSetting = result.fontSizeSetting,
+ SDKVersion = result.SDKVersion,
+ pixelRatio = result.pixelRatio,
+ deviceOrientation = result.deviceOrientation;
+ // const isQuickApp = "mp-weixin".indexOf('quickapp-webview') !== -1
+
+ var extraParam = {};
+
+ // osName osVersion
+ var osName = '';
+ var osVersion = '';
+ {
+ osName = system.split(' ')[0] || '';
+ osVersion = system.split(' ')[1] || '';
+ }
+ var hostVersion = version;
+
+ // deviceType
+ var deviceType = getGetDeviceType(result, model);
+
+ // deviceModel
+ var deviceBrand = getDeviceBrand(brand);
+
+ // hostName
+ var _hostName = getHostName(result);
+
+ // deviceOrientation
+ var _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持
+
+ // devicePixelRatio
+ var _devicePixelRatio = pixelRatio;
+
+ // SDKVersion
+ var _SDKVersion = SDKVersion;
+
+ // hostLanguage
+ var hostLanguage = language.replace(/_/g, '-');
+
+ // wx.getAccountInfoSync
+
+ var parameters = {
+ appId: "__UNI__9BF1085",
+ appName: "daoyou",
+ appVersion: "1.0.0",
+ appVersionCode: "100",
+ appLanguage: getAppLanguage(hostLanguage),
+ uniCompileVersion: "4.15",
+ uniRuntimeVersion: "4.15",
+ uniPlatform: undefined || "mp-weixin",
+ deviceBrand: deviceBrand,
+ deviceModel: model,
+ deviceType: deviceType,
+ devicePixelRatio: _devicePixelRatio,
+ deviceOrientation: _deviceOrientation,
+ osName: osName.toLocaleLowerCase(),
+ osVersion: osVersion,
+ hostTheme: theme,
+ hostVersion: hostVersion,
+ hostLanguage: hostLanguage,
+ hostName: _hostName,
+ hostSDKVersion: _SDKVersion,
+ hostFontSizeSetting: fontSizeSetting,
+ windowTop: 0,
+ windowBottom: 0,
+ // TODO
+ osLanguage: undefined,
+ osTheme: undefined,
+ ua: undefined,
+ hostPackageName: undefined,
+ browserName: undefined,
+ browserVersion: undefined
+ };
+ Object.assign(result, parameters, extraParam);
+}
+function getGetDeviceType(result, model) {
+ var deviceType = result.deviceType || 'phone';
+ {
+ var deviceTypeMaps = {
+ ipad: 'pad',
+ windows: 'pc',
+ mac: 'pc'
+ };
+ var deviceTypeMapsKeys = Object.keys(deviceTypeMaps);
+ var _model = model.toLocaleLowerCase();
+ for (var index = 0; index < deviceTypeMapsKeys.length; index++) {
+ var _m = deviceTypeMapsKeys[index];
+ if (_model.indexOf(_m) !== -1) {
+ deviceType = deviceTypeMaps[_m];
+ break;
+ }
+ }
+ }
+ return deviceType;
+}
+function getDeviceBrand(brand) {
+ var deviceBrand = brand;
+ if (deviceBrand) {
+ deviceBrand = brand.toLocaleLowerCase();
+ }
+ return deviceBrand;
+}
+function getAppLanguage(defaultLanguage) {
+ return getLocale$1 ? getLocale$1() : defaultLanguage;
+}
+function getHostName(result) {
+ var _platform = 'WeChat';
+ var _hostName = result.hostName || _platform; // mp-jd
+ {
+ if (result.environment) {
+ _hostName = result.environment;
+ } else if (result.host && result.host.env) {
+ _hostName = result.host.env;
+ }
+ }
+ return _hostName;
+}
+var getSystemInfo = {
+ returnValue: function returnValue(result) {
+ useDeviceId(result);
+ addSafeAreaInsets(result);
+ populateParameters(result);
+ }
+};
+var showActionSheet = {
+ args: function args(fromArgs) {
+ if ((0, _typeof2.default)(fromArgs) === 'object') {
+ fromArgs.alertText = fromArgs.title;
+ }
+ }
+};
+var getAppBaseInfo = {
+ returnValue: function returnValue(result) {
+ var _result = result,
+ version = _result.version,
+ language = _result.language,
+ SDKVersion = _result.SDKVersion,
+ theme = _result.theme;
+ var _hostName = getHostName(result);
+ var hostLanguage = language.replace('_', '-');
+ result = sortObject(Object.assign(result, {
+ appId: "__UNI__9BF1085",
+ appName: "daoyou",
+ appVersion: "1.0.0",
+ appVersionCode: "100",
+ appLanguage: getAppLanguage(hostLanguage),
+ hostVersion: version,
+ hostLanguage: hostLanguage,
+ hostName: _hostName,
+ hostSDKVersion: SDKVersion,
+ hostTheme: theme
+ }));
+ }
+};
+var getDeviceInfo = {
+ returnValue: function returnValue(result) {
+ var _result2 = result,
+ brand = _result2.brand,
+ model = _result2.model;
+ var deviceType = getGetDeviceType(result, model);
+ var deviceBrand = getDeviceBrand(brand);
+ useDeviceId(result);
+ result = sortObject(Object.assign(result, {
+ deviceType: deviceType,
+ deviceBrand: deviceBrand,
+ deviceModel: model
+ }));
+ }
+};
+var getWindowInfo = {
+ returnValue: function returnValue(result) {
+ addSafeAreaInsets(result);
+ result = sortObject(Object.assign(result, {
+ windowTop: 0,
+ windowBottom: 0
+ }));
+ }
+};
+var getAppAuthorizeSetting = {
+ returnValue: function returnValue(result) {
+ var locationReducedAccuracy = result.locationReducedAccuracy;
+ result.locationAccuracy = 'unsupported';
+ if (locationReducedAccuracy === true) {
+ result.locationAccuracy = 'reduced';
+ } else if (locationReducedAccuracy === false) {
+ result.locationAccuracy = 'full';
+ }
+ }
+};
+
+// import navigateTo from 'uni-helpers/navigate-to'
+
+var compressImage = {
+ args: function args(fromArgs) {
+ // https://developers.weixin.qq.com/community/develop/doc/000c08940c865011298e0a43256800?highLine=compressHeight
+ if (fromArgs.compressedHeight && !fromArgs.compressHeight) {
+ fromArgs.compressHeight = fromArgs.compressedHeight;
+ }
+ if (fromArgs.compressedWidth && !fromArgs.compressWidth) {
+ fromArgs.compressWidth = fromArgs.compressedWidth;
+ }
+ }
+};
+var protocols = {
+ redirectTo: redirectTo,
+ // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP
+ previewImage: previewImage,
+ getSystemInfo: getSystemInfo,
+ getSystemInfoSync: getSystemInfo,
+ showActionSheet: showActionSheet,
+ getAppBaseInfo: getAppBaseInfo,
+ getDeviceInfo: getDeviceInfo,
+ getWindowInfo: getWindowInfo,
+ getAppAuthorizeSetting: getAppAuthorizeSetting,
+ compressImage: compressImage
+};
+var todos = ['vibrate', 'preloadPage', 'unPreloadPage', 'loadSubPackage'];
+var canIUses = [];
+var CALLBACKS = ['success', 'fail', 'cancel', 'complete'];
+function processCallback(methodName, method, returnValue) {
+ return function (res) {
+ return method(processReturnValue(methodName, res, returnValue));
+ };
+}
+function processArgs(methodName, fromArgs) {
+ var argsOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var returnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+ var keepFromArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
+ if (isPlainObject(fromArgs)) {
+ // 一般 api 的参数解析
+ var toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
+ if (isFn(argsOption)) {
+ argsOption = argsOption(fromArgs, toArgs) || {};
+ }
+ for (var key in fromArgs) {
+ if (hasOwn(argsOption, key)) {
+ var keyOption = argsOption[key];
+ if (isFn(keyOption)) {
+ keyOption = keyOption(fromArgs[key], fromArgs, toArgs);
+ }
+ if (!keyOption) {
+ // 不支持的参数
+ console.warn("The '".concat(methodName, "' method of platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support option '").concat(key, "'"));
+ } else if (isStr(keyOption)) {
+ // 重写参数 key
+ toArgs[keyOption] = fromArgs[key];
+ } else if (isPlainObject(keyOption)) {
+ // {name:newName,value:value}可重新指定参数 key:value
+ toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;
+ }
+ } else if (CALLBACKS.indexOf(key) !== -1) {
+ if (isFn(fromArgs[key])) {
+ toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);
+ }
+ } else {
+ if (!keepFromArgs) {
+ toArgs[key] = fromArgs[key];
+ }
+ }
+ }
+ return toArgs;
+ } else if (isFn(fromArgs)) {
+ fromArgs = processCallback(methodName, fromArgs, returnValue);
+ }
+ return fromArgs;
+}
+function processReturnValue(methodName, res, returnValue) {
+ var keepReturnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+ if (isFn(protocols.returnValue)) {
+ // 处理通用 returnValue
+ res = protocols.returnValue(methodName, res);
+ }
+ return processArgs(methodName, res, returnValue, {}, keepReturnValue);
+}
+function wrapper(methodName, method) {
+ if (hasOwn(protocols, methodName)) {
+ var protocol = protocols[methodName];
+ if (!protocol) {
+ // 暂不支持的 api
+ return function () {
+ console.error("Platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support '".concat(methodName, "'."));
+ };
+ }
+ return function (arg1, arg2) {
+ // 目前 api 最多两个参数
+ var options = protocol;
+ if (isFn(protocol)) {
+ options = protocol(arg1);
+ }
+ arg1 = processArgs(methodName, arg1, options.args, options.returnValue);
+ var args = [arg1];
+ if (typeof arg2 !== 'undefined') {
+ args.push(arg2);
+ }
+ if (isFn(options.name)) {
+ methodName = options.name(arg1);
+ } else if (isStr(options.name)) {
+ methodName = options.name;
+ }
+ var returnValue = wx[methodName].apply(wx, args);
+ if (isSyncApi(methodName)) {
+ // 同步 api
+ return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName));
+ }
+ return returnValue;
+ };
+ }
+ return method;
+}
+var todoApis = Object.create(null);
+var TODOS = ['onTabBarMidButtonTap', 'subscribePush', 'unsubscribePush', 'onPush', 'offPush', 'share'];
+function createTodoApi(name) {
+ return function todoApi(_ref) {
+ var fail = _ref.fail,
+ complete = _ref.complete;
+ var res = {
+ errMsg: "".concat(name, ":fail method '").concat(name, "' not supported")
+ };
+ isFn(fail) && fail(res);
+ isFn(complete) && complete(res);
+ };
+}
+TODOS.forEach(function (name) {
+ todoApis[name] = createTodoApi(name);
+});
+var providers = {
+ oauth: ['weixin'],
+ share: ['weixin'],
+ payment: ['wxpay'],
+ push: ['weixin']
+};
+function getProvider(_ref2) {
+ var service = _ref2.service,
+ success = _ref2.success,
+ fail = _ref2.fail,
+ complete = _ref2.complete;
+ var res = false;
+ if (providers[service]) {
+ res = {
+ errMsg: 'getProvider:ok',
+ service: service,
+ provider: providers[service]
+ };
+ isFn(success) && success(res);
+ } else {
+ res = {
+ errMsg: 'getProvider:fail service not found'
+ };
+ isFn(fail) && fail(res);
+ }
+ isFn(complete) && complete(res);
+}
+var extraApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ getProvider: getProvider
+});
+var getEmitter = function () {
+ var Emitter;
+ return function getUniEmitter() {
+ if (!Emitter) {
+ Emitter = new _vue.default();
+ }
+ return Emitter;
+ };
+}();
+function apply(ctx, method, args) {
+ return ctx[method].apply(ctx, args);
+}
+function $on() {
+ return apply(getEmitter(), '$on', Array.prototype.slice.call(arguments));
+}
+function $off() {
+ return apply(getEmitter(), '$off', Array.prototype.slice.call(arguments));
+}
+function $once() {
+ return apply(getEmitter(), '$once', Array.prototype.slice.call(arguments));
+}
+function $emit() {
+ return apply(getEmitter(), '$emit', Array.prototype.slice.call(arguments));
+}
+var eventApi = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ $on: $on,
+ $off: $off,
+ $once: $once,
+ $emit: $emit
+});
+
+/**
+ * 框架内 try-catch
+ */
+/**
+ * 开发者 try-catch
+ */
+function tryCatch(fn) {
+ return function () {
+ try {
+ return fn.apply(fn, arguments);
+ } catch (e) {
+ // TODO
+ console.error(e);
+ }
+ };
+}
+function getApiCallbacks(params) {
+ var apiCallbacks = {};
+ for (var name in params) {
+ var param = params[name];
+ if (isFn(param)) {
+ apiCallbacks[name] = tryCatch(param);
+ delete params[name];
+ }
+ }
+ return apiCallbacks;
+}
+var cid;
+var cidErrMsg;
+var enabled;
+function normalizePushMessage(message) {
+ try {
+ return JSON.parse(message);
+ } catch (e) {}
+ return message;
+}
+function invokePushCallback(args) {
+ if (args.type === 'enabled') {
+ enabled = true;
+ } else if (args.type === 'clientId') {
+ cid = args.cid;
+ cidErrMsg = args.errMsg;
+ invokeGetPushCidCallbacks(cid, args.errMsg);
+ } else if (args.type === 'pushMsg') {
+ var message = {
+ type: 'receive',
+ data: normalizePushMessage(args.message)
+ };
+ for (var i = 0; i < onPushMessageCallbacks.length; i++) {
+ var callback = onPushMessageCallbacks[i];
+ callback(message);
+ // 该消息已被阻止
+ if (message.stopped) {
+ break;
+ }
+ }
+ } else if (args.type === 'click') {
+ onPushMessageCallbacks.forEach(function (callback) {
+ callback({
+ type: 'click',
+ data: normalizePushMessage(args.message)
+ });
+ });
+ }
+}
+var getPushCidCallbacks = [];
+function invokeGetPushCidCallbacks(cid, errMsg) {
+ getPushCidCallbacks.forEach(function (callback) {
+ callback(cid, errMsg);
+ });
+ getPushCidCallbacks.length = 0;
+}
+function getPushClientId(args) {
+ if (!isPlainObject(args)) {
+ args = {};
+ }
+ var _getApiCallbacks = getApiCallbacks(args),
+ success = _getApiCallbacks.success,
+ fail = _getApiCallbacks.fail,
+ complete = _getApiCallbacks.complete;
+ var hasSuccess = isFn(success);
+ var hasFail = isFn(fail);
+ var hasComplete = isFn(complete);
+ Promise.resolve().then(function () {
+ if (typeof enabled === 'undefined') {
+ enabled = false;
+ cid = '';
+ cidErrMsg = 'uniPush is not enabled';
+ }
+ getPushCidCallbacks.push(function (cid, errMsg) {
+ var res;
+ if (cid) {
+ res = {
+ errMsg: 'getPushClientId:ok',
+ cid: cid
+ };
+ hasSuccess && success(res);
+ } else {
+ res = {
+ errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')
+ };
+ hasFail && fail(res);
+ }
+ hasComplete && complete(res);
+ });
+ if (typeof cid !== 'undefined') {
+ invokeGetPushCidCallbacks(cid, cidErrMsg);
+ }
+ });
+}
+var onPushMessageCallbacks = [];
+// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现
+var onPushMessage = function onPushMessage(fn) {
+ if (onPushMessageCallbacks.indexOf(fn) === -1) {
+ onPushMessageCallbacks.push(fn);
+ }
+};
+var offPushMessage = function offPushMessage(fn) {
+ if (!fn) {
+ onPushMessageCallbacks.length = 0;
+ } else {
+ var index = onPushMessageCallbacks.indexOf(fn);
+ if (index > -1) {
+ onPushMessageCallbacks.splice(index, 1);
+ }
+ }
+};
+var baseInfo = wx.getAppBaseInfo && wx.getAppBaseInfo();
+if (!baseInfo) {
+ baseInfo = wx.getSystemInfoSync();
+}
+var host = baseInfo ? baseInfo.host : null;
+var shareVideoMessage = host && host.env === 'SAAASDK' ? wx.miniapp.shareVideoMessage : wx.shareVideoMessage;
+var api = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ shareVideoMessage: shareVideoMessage,
+ getPushClientId: getPushClientId,
+ onPushMessage: onPushMessage,
+ offPushMessage: offPushMessage,
+ invokePushCallback: invokePushCallback
+});
+var mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];
+function findVmByVueId(vm, vuePid) {
+ var $children = vm.$children;
+ // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)
+ for (var i = $children.length - 1; i >= 0; i--) {
+ var childVm = $children[i];
+ if (childVm.$scope._$vueId === vuePid) {
+ return childVm;
+ }
+ }
+ // 反向递归查找
+ var parentVm;
+ for (var _i = $children.length - 1; _i >= 0; _i--) {
+ parentVm = findVmByVueId($children[_i], vuePid);
+ if (parentVm) {
+ return parentVm;
+ }
+ }
+}
+function initBehavior(options) {
+ return Behavior(options);
+}
+function isPage() {
+ return !!this.route;
+}
+function initRelation(detail) {
+ this.triggerEvent('__l', detail);
+}
+function selectAllComponents(mpInstance, selector, $refs) {
+ var components = mpInstance.selectAllComponents(selector) || [];
+ components.forEach(function (component) {
+ var ref = component.dataset.ref;
+ $refs[ref] = component.$vm || toSkip(component);
+ {
+ if (component.dataset.vueGeneric === 'scoped') {
+ component.selectAllComponents('.scoped-ref').forEach(function (scopedComponent) {
+ selectAllComponents(scopedComponent, selector, $refs);
+ });
+ }
+ }
+ });
+}
+function syncRefs(refs, newRefs) {
+ var oldKeys = (0, _construct2.default)(Set, (0, _toConsumableArray2.default)(Object.keys(refs)));
+ var newKeys = Object.keys(newRefs);
+ newKeys.forEach(function (key) {
+ var oldValue = refs[key];
+ var newValue = newRefs[key];
+ if (Array.isArray(oldValue) && Array.isArray(newValue) && oldValue.length === newValue.length && newValue.every(function (value) {
+ return oldValue.includes(value);
+ })) {
+ return;
+ }
+ refs[key] = newValue;
+ oldKeys.delete(key);
+ });
+ oldKeys.forEach(function (key) {
+ delete refs[key];
+ });
+ return refs;
+}
+function initRefs(vm) {
+ var mpInstance = vm.$scope;
+ var refs = {};
+ Object.defineProperty(vm, '$refs', {
+ get: function get() {
+ var $refs = {};
+ selectAllComponents(mpInstance, '.vue-ref', $refs);
+ // TODO 暂不考虑 for 中的 scoped
+ var forComponents = mpInstance.selectAllComponents('.vue-ref-in-for') || [];
+ forComponents.forEach(function (component) {
+ var ref = component.dataset.ref;
+ if (!$refs[ref]) {
+ $refs[ref] = [];
+ }
+ $refs[ref].push(component.$vm || toSkip(component));
+ });
+ return syncRefs(refs, $refs);
+ }
+ });
+}
+function handleLink(event) {
+ var _ref3 = event.detail || event.value,
+ vuePid = _ref3.vuePid,
+ vueOptions = _ref3.vueOptions; // detail 是微信,value 是百度(dipatch)
+
+ var parentVm;
+ if (vuePid) {
+ parentVm = findVmByVueId(this.$vm, vuePid);
+ }
+ if (!parentVm) {
+ parentVm = this.$vm;
+ }
+ vueOptions.parent = parentVm;
+}
+function markMPComponent(component) {
+ // 在 Vue 中标记为小程序组件
+ var IS_MP = '__v_isMPComponent';
+ Object.defineProperty(component, IS_MP, {
+ configurable: true,
+ enumerable: false,
+ value: true
+ });
+ return component;
+}
+function toSkip(obj) {
+ var OB = '__ob__';
+ var SKIP = '__v_skip';
+ if (isObject(obj) && Object.isExtensible(obj)) {
+ // 避免被 @vue/composition-api 观测
+ Object.defineProperty(obj, OB, {
+ configurable: true,
+ enumerable: false,
+ value: (0, _defineProperty2.default)({}, SKIP, true)
+ });
+ }
+ return obj;
+}
+var WORKLET_RE = /_(.*)_worklet_factory_/;
+function initWorkletMethods(mpMethods, vueMethods) {
+ if (vueMethods) {
+ Object.keys(vueMethods).forEach(function (name) {
+ var matches = name.match(WORKLET_RE);
+ if (matches) {
+ var workletName = matches[1];
+ mpMethods[name] = vueMethods[name];
+ mpMethods[workletName] = vueMethods[workletName];
+ }
+ });
+ }
+}
+var MPPage = Page;
+var MPComponent = Component;
+var customizeRE = /:/g;
+var customize = cached(function (str) {
+ return camelize(str.replace(customizeRE, '-'));
+});
+function initTriggerEvent(mpInstance) {
+ var oldTriggerEvent = mpInstance.triggerEvent;
+ var newTriggerEvent = function newTriggerEvent(event) {
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
+ args[_key3 - 1] = arguments[_key3];
+ }
+ // 事件名统一转驼峰格式,仅处理:当前组件为 vue 组件、当前组件为 vue 组件子组件
+ if (this.$vm || this.dataset && this.dataset.comType) {
+ event = customize(event);
+ } else {
+ // 针对微信/QQ小程序单独补充驼峰格式事件,以兼容历史项目
+ var newEvent = customize(event);
+ if (newEvent !== event) {
+ oldTriggerEvent.apply(this, [newEvent].concat(args));
+ }
+ }
+ return oldTriggerEvent.apply(this, [event].concat(args));
+ };
+ try {
+ // 京东小程序 triggerEvent 为只读
+ mpInstance.triggerEvent = newTriggerEvent;
+ } catch (error) {
+ mpInstance._triggerEvent = newTriggerEvent;
+ }
+}
+function initHook(name, options, isComponent) {
+ var oldHook = options[name];
+ options[name] = function () {
+ markMPComponent(this);
+ initTriggerEvent(this);
+ if (oldHook) {
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+ return oldHook.apply(this, args);
+ }
+ };
+}
+if (!MPPage.__$wrappered) {
+ MPPage.__$wrappered = true;
+ Page = function Page() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ initHook('onLoad', options);
+ return MPPage(options);
+ };
+ Page.after = MPPage.after;
+ Component = function Component() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ initHook('created', options);
+ return MPComponent(options);
+ };
+}
+var PAGE_EVENT_HOOKS = ['onPullDownRefresh', 'onReachBottom', 'onAddToFavorites', 'onShareTimeline', 'onShareAppMessage', 'onPageScroll', 'onResize', 'onTabItemTap'];
+function initMocks(vm, mocks) {
+ var mpInstance = vm.$mp[vm.mpType];
+ mocks.forEach(function (mock) {
+ if (hasOwn(mpInstance, mock)) {
+ vm[mock] = mpInstance[mock];
+ }
+ });
+}
+function hasHook(hook, vueOptions) {
+ if (!vueOptions) {
+ return true;
+ }
+ if (_vue.default.options && Array.isArray(_vue.default.options[hook])) {
+ return true;
+ }
+ vueOptions = vueOptions.default || vueOptions;
+ if (isFn(vueOptions)) {
+ if (isFn(vueOptions.extendOptions[hook])) {
+ return true;
+ }
+ if (vueOptions.super && vueOptions.super.options && Array.isArray(vueOptions.super.options[hook])) {
+ return true;
+ }
+ return false;
+ }
+ if (isFn(vueOptions[hook]) || Array.isArray(vueOptions[hook])) {
+ return true;
+ }
+ var mixins = vueOptions.mixins;
+ if (Array.isArray(mixins)) {
+ return !!mixins.find(function (mixin) {
+ return hasHook(hook, mixin);
+ });
+ }
+}
+function initHooks(mpOptions, hooks, vueOptions) {
+ hooks.forEach(function (hook) {
+ if (hasHook(hook, vueOptions)) {
+ mpOptions[hook] = function (args) {
+ return this.$vm && this.$vm.__call_hook(hook, args);
+ };
+ }
+ });
+}
+function initUnknownHooks(mpOptions, vueOptions) {
+ var excludes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+ findHooks(vueOptions).forEach(function (hook) {
+ return initHook$1(mpOptions, hook, excludes);
+ });
+}
+function findHooks(vueOptions) {
+ var hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+ if (vueOptions) {
+ Object.keys(vueOptions).forEach(function (name) {
+ if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {
+ hooks.push(name);
+ }
+ });
+ }
+ return hooks;
+}
+function initHook$1(mpOptions, hook, excludes) {
+ if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
+ mpOptions[hook] = function (args) {
+ return this.$vm && this.$vm.__call_hook(hook, args);
+ };
+ }
+}
+function initVueComponent(Vue, vueOptions) {
+ vueOptions = vueOptions.default || vueOptions;
+ var VueComponent;
+ if (isFn(vueOptions)) {
+ VueComponent = vueOptions;
+ } else {
+ VueComponent = Vue.extend(vueOptions);
+ }
+ vueOptions = VueComponent.options;
+ return [VueComponent, vueOptions];
+}
+function initSlots(vm, vueSlots) {
+ if (Array.isArray(vueSlots) && vueSlots.length) {
+ var $slots = Object.create(null);
+ vueSlots.forEach(function (slotName) {
+ $slots[slotName] = true;
+ });
+ vm.$scopedSlots = vm.$slots = $slots;
+ }
+}
+function initVueIds(vueIds, mpInstance) {
+ vueIds = (vueIds || '').split(',');
+ var len = vueIds.length;
+ if (len === 1) {
+ mpInstance._$vueId = vueIds[0];
+ } else if (len === 2) {
+ mpInstance._$vueId = vueIds[0];
+ mpInstance._$vuePid = vueIds[1];
+ }
+}
+function initData(vueOptions, context) {
+ var data = vueOptions.data || {};
+ var methods = vueOptions.methods || {};
+ if (typeof data === 'function') {
+ try {
+ data = data.call(context); // 支持 Vue.prototype 上挂的数据
+ } catch (e) {
+ if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"daoyou","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
+ }
+ }
+ } else {
+ try {
+ // 对 data 格式化
+ data = JSON.parse(JSON.stringify(data));
+ } catch (e) {}
+ }
+ if (!isPlainObject(data)) {
+ data = {};
+ }
+ Object.keys(methods).forEach(function (methodName) {
+ if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {
+ data[methodName] = methods[methodName];
+ }
+ });
+ return data;
+}
+var PROP_TYPES = [String, Number, Boolean, Object, Array, null];
+function createObserver(name) {
+ return function observer(newVal, oldVal) {
+ if (this.$vm) {
+ this.$vm[name] = newVal; // 为了触发其他非 render watcher
+ }
+ };
+}
+
+function initBehaviors(vueOptions, initBehavior) {
+ var vueBehaviors = vueOptions.behaviors;
+ var vueExtends = vueOptions.extends;
+ var vueMixins = vueOptions.mixins;
+ var vueProps = vueOptions.props;
+ if (!vueProps) {
+ vueOptions.props = vueProps = [];
+ }
+ var behaviors = [];
+ if (Array.isArray(vueBehaviors)) {
+ vueBehaviors.forEach(function (behavior) {
+ behaviors.push(behavior.replace('uni://', "wx".concat("://")));
+ if (behavior === 'uni://form-field') {
+ if (Array.isArray(vueProps)) {
+ vueProps.push('name');
+ vueProps.push('value');
+ } else {
+ vueProps.name = {
+ type: String,
+ default: ''
+ };
+ vueProps.value = {
+ type: [String, Number, Boolean, Array, Object, Date],
+ default: ''
+ };
+ }
+ }
+ });
+ }
+ if (isPlainObject(vueExtends) && vueExtends.props) {
+ behaviors.push(initBehavior({
+ properties: initProperties(vueExtends.props, true)
+ }));
+ }
+ if (Array.isArray(vueMixins)) {
+ vueMixins.forEach(function (vueMixin) {
+ if (isPlainObject(vueMixin) && vueMixin.props) {
+ behaviors.push(initBehavior({
+ properties: initProperties(vueMixin.props, true)
+ }));
+ }
+ });
+ }
+ return behaviors;
+}
+function parsePropType(key, type, defaultValue, file) {
+ // [String]=>String
+ if (Array.isArray(type) && type.length === 1) {
+ return type[0];
+ }
+ return type;
+}
+function initProperties(props) {
+ var isBehavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+ var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var options = arguments.length > 3 ? arguments[3] : undefined;
+ var properties = {};
+ if (!isBehavior) {
+ properties.vueId = {
+ type: String,
+ value: ''
+ };
+ {
+ if (options.virtualHost) {
+ properties.virtualHostStyle = {
+ type: null,
+ value: ''
+ };
+ properties.virtualHostClass = {
+ type: null,
+ value: ''
+ };
+ }
+ }
+ // scopedSlotsCompiler auto
+ properties.scopedSlotsCompiler = {
+ type: String,
+ value: ''
+ };
+ properties.vueSlots = {
+ // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
+ type: null,
+ value: [],
+ observer: function observer(newVal, oldVal) {
+ var $slots = Object.create(null);
+ newVal.forEach(function (slotName) {
+ $slots[slotName] = true;
+ });
+ this.setData({
+ $slots: $slots
+ });
+ }
+ };
+ }
+ if (Array.isArray(props)) {
+ // ['title']
+ props.forEach(function (key) {
+ properties[key] = {
+ type: null,
+ observer: createObserver(key)
+ };
+ });
+ } else if (isPlainObject(props)) {
+ // {title:{type:String,default:''},content:String}
+ Object.keys(props).forEach(function (key) {
+ var opts = props[key];
+ if (isPlainObject(opts)) {
+ // title:{type:String,default:''}
+ var value = opts.default;
+ if (isFn(value)) {
+ value = value();
+ }
+ opts.type = parsePropType(key, opts.type);
+ properties[key] = {
+ type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,
+ value: value,
+ observer: createObserver(key)
+ };
+ } else {
+ // content:String
+ var type = parsePropType(key, opts);
+ properties[key] = {
+ type: PROP_TYPES.indexOf(type) !== -1 ? type : null,
+ observer: createObserver(key)
+ };
+ }
+ });
+ }
+ return properties;
+}
+function wrapper$1(event) {
+ // TODO 又得兼容 mpvue 的 mp 对象
+ try {
+ event.mp = JSON.parse(JSON.stringify(event));
+ } catch (e) {}
+ event.stopPropagation = noop;
+ event.preventDefault = noop;
+ event.target = event.target || {};
+ if (!hasOwn(event, 'detail')) {
+ event.detail = {};
+ }
+ if (hasOwn(event, 'markerId')) {
+ event.detail = (0, _typeof2.default)(event.detail) === 'object' ? event.detail : {};
+ event.detail.markerId = event.markerId;
+ }
+ if (isPlainObject(event.detail)) {
+ event.target = Object.assign({}, event.target, event.detail);
+ }
+ return event;
+}
+function getExtraValue(vm, dataPathsArray) {
+ var context = vm;
+ dataPathsArray.forEach(function (dataPathArray) {
+ var dataPath = dataPathArray[0];
+ var value = dataPathArray[2];
+ if (dataPath || typeof value !== 'undefined') {
+ // ['','',index,'disable']
+ var propPath = dataPathArray[1];
+ var valuePath = dataPathArray[3];
+ var vFor;
+ if (Number.isInteger(dataPath)) {
+ vFor = dataPath;
+ } else if (!dataPath) {
+ vFor = context;
+ } else if (typeof dataPath === 'string' && dataPath) {
+ if (dataPath.indexOf('#s#') === 0) {
+ vFor = dataPath.substr(3);
+ } else {
+ vFor = vm.__get_value(dataPath, context);
+ }
+ }
+ if (Number.isInteger(vFor)) {
+ context = value;
+ } else if (!propPath) {
+ context = vFor[value];
+ } else {
+ if (Array.isArray(vFor)) {
+ context = vFor.find(function (vForItem) {
+ return vm.__get_value(propPath, vForItem) === value;
+ });
+ } else if (isPlainObject(vFor)) {
+ context = Object.keys(vFor).find(function (vForKey) {
+ return vm.__get_value(propPath, vFor[vForKey]) === value;
+ });
+ } else {
+ console.error('v-for 暂不支持循环数据:', vFor);
+ }
+ }
+ if (valuePath) {
+ context = vm.__get_value(valuePath, context);
+ }
+ }
+ });
+ return context;
+}
+function processEventExtra(vm, extra, event, __args__) {
+ var extraObj = {};
+ if (Array.isArray(extra) && extra.length) {
+ /**
+ *[
+ * ['data.items', 'data.id', item.data.id],
+ * ['metas', 'id', meta.id]
+ *],
+ *[
+ * ['data.items', 'data.id', item.data.id],
+ * ['metas', 'id', meta.id]
+ *],
+ *'test'
+ */
+ extra.forEach(function (dataPath, index) {
+ if (typeof dataPath === 'string') {
+ if (!dataPath) {
+ // model,prop.sync
+ extraObj['$' + index] = vm;
+ } else {
+ if (dataPath === '$event') {
+ // $event
+ extraObj['$' + index] = event;
+ } else if (dataPath === 'arguments') {
+ extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__;
+ } else if (dataPath.indexOf('$event.') === 0) {
+ // $event.target.value
+ extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);
+ } else {
+ extraObj['$' + index] = vm.__get_value(dataPath);
+ }
+ }
+ } else {
+ extraObj['$' + index] = getExtraValue(vm, dataPath);
+ }
+ });
+ }
+ return extraObj;
+}
+function getObjByArray(arr) {
+ var obj = {};
+ for (var i = 1; i < arr.length; i++) {
+ var element = arr[i];
+ obj[element[0]] = element[1];
+ }
+ return obj;
+}
+function processEventArgs(vm, event) {
+ var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+ var extra = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
+ var isCustom = arguments.length > 4 ? arguments[4] : undefined;
+ var methodName = arguments.length > 5 ? arguments[5] : undefined;
+ var isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
+
+ // fixed 用户直接触发 mpInstance.triggerEvent
+ var __args__ = isPlainObject(event.detail) ? event.detail.__args__ || [event.detail] : [event.detail];
+ if (isCustom) {
+ // 自定义事件
+ isCustomMPEvent = event.currentTarget && event.currentTarget.dataset && event.currentTarget.dataset.comType === 'wx';
+ if (!args.length) {
+ // 无参数,直接传入 event 或 detail 数组
+ if (isCustomMPEvent) {
+ return [event];
+ }
+ return __args__;
+ }
+ }
+ var extraObj = processEventExtra(vm, extra, event, __args__);
+ var ret = [];
+ args.forEach(function (arg) {
+ if (arg === '$event') {
+ if (methodName === '__set_model' && !isCustom) {
+ // input v-model value
+ ret.push(event.target.value);
+ } else {
+ if (isCustom && !isCustomMPEvent) {
+ ret.push(__args__[0]);
+ } else {
+ // wxcomponent 组件或内置组件
+ ret.push(event);
+ }
+ }
+ } else {
+ if (Array.isArray(arg) && arg[0] === 'o') {
+ ret.push(getObjByArray(arg));
+ } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
+ ret.push(extraObj[arg]);
+ } else {
+ ret.push(arg);
+ }
+ }
+ });
+ return ret;
+}
+var ONCE = '~';
+var CUSTOM = '^';
+function isMatchEventType(eventType, optType) {
+ return eventType === optType || optType === 'regionchange' && (eventType === 'begin' || eventType === 'end');
+}
+function getContextVm(vm) {
+ var $parent = vm.$parent;
+ // 父组件是 scoped slots 或者其他自定义组件时继续查找
+ while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {
+ $parent = $parent.$parent;
+ }
+ return $parent && $parent.$parent;
+}
+function handleEvent(event) {
+ var _this2 = this;
+ event = wrapper$1(event);
+
+ // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]
+ var dataset = (event.currentTarget || event.target).dataset;
+ if (!dataset) {
+ return console.warn('事件信息不存在');
+ }
+ var eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰
+ if (!eventOpts) {
+ return console.warn('事件信息不存在');
+ }
+
+ // [['handle',[1,2,a]],['handle1',[1,2,a]]]
+ var eventType = event.type;
+ var ret = [];
+ eventOpts.forEach(function (eventOpt) {
+ var type = eventOpt[0];
+ var eventsArray = eventOpt[1];
+ var isCustom = type.charAt(0) === CUSTOM;
+ type = isCustom ? type.slice(1) : type;
+ var isOnce = type.charAt(0) === ONCE;
+ type = isOnce ? type.slice(1) : type;
+ if (eventsArray && isMatchEventType(eventType, type)) {
+ eventsArray.forEach(function (eventArray) {
+ var methodName = eventArray[0];
+ if (methodName) {
+ var handlerCtx = _this2.$vm;
+ if (handlerCtx.$options.generic) {
+ // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots
+ handlerCtx = getContextVm(handlerCtx) || handlerCtx;
+ }
+ if (methodName === '$emit') {
+ handlerCtx.$emit.apply(handlerCtx, processEventArgs(_this2.$vm, event, eventArray[1], eventArray[2], isCustom, methodName));
+ return;
+ }
+ var handler = handlerCtx[methodName];
+ if (!isFn(handler)) {
+ var _type = _this2.$vm.mpType === 'page' ? 'Page' : 'Component';
+ var path = _this2.route || _this2.is;
+ throw new Error("".concat(_type, " \"").concat(path, "\" does not have a method \"").concat(methodName, "\""));
+ }
+ if (isOnce) {
+ if (handler.once) {
+ return;
+ }
+ handler.once = true;
+ }
+ var params = processEventArgs(_this2.$vm, event, eventArray[1], eventArray[2], isCustom, methodName);
+ params = Array.isArray(params) ? params : [];
+ // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据
+ if (/=\s*\S+\.eventParams\s*\|\|\s*\S+\[['"]event-params['"]\]/.test(handler.toString())) {
+ // eslint-disable-next-line no-sparse-arrays
+ params = params.concat([,,,,,,,,,, event]);
+ }
+ ret.push(handler.apply(handlerCtx, params));
+ }
+ });
+ }
+ });
+ if (eventType === 'input' && ret.length === 1 && typeof ret[0] !== 'undefined') {
+ return ret[0];
+ }
+}
+var eventChannels = {};
+function getEventChannel(id) {
+ var eventChannel = eventChannels[id];
+ delete eventChannels[id];
+ return eventChannel;
+}
+var hooks = ['onShow', 'onHide', 'onError', 'onPageNotFound', 'onThemeChange', 'onUnhandledRejection'];
+function initEventChannel() {
+ _vue.default.prototype.getOpenerEventChannel = function () {
+ // 微信小程序使用自身getOpenerEventChannel
+ {
+ return this.$scope.getOpenerEventChannel();
+ }
+ };
+ var callHook = _vue.default.prototype.__call_hook;
+ _vue.default.prototype.__call_hook = function (hook, args) {
+ if (hook === 'onLoad' && args && args.__id__) {
+ this.__eventChannel__ = getEventChannel(args.__id__);
+ delete args.__id__;
+ }
+ return callHook.call(this, hook, args);
+ };
+}
+function initScopedSlotsParams() {
+ var center = {};
+ var parents = {};
+ function currentId(fn) {
+ var vueIds = this.$options.propsData.vueId;
+ if (vueIds) {
+ var vueId = vueIds.split(',')[0];
+ fn(vueId);
+ }
+ }
+ _vue.default.prototype.$hasSSP = function (vueId) {
+ var slot = center[vueId];
+ if (!slot) {
+ parents[vueId] = this;
+ this.$on('hook:destroyed', function () {
+ delete parents[vueId];
+ });
+ }
+ return slot;
+ };
+ _vue.default.prototype.$getSSP = function (vueId, name, needAll) {
+ var slot = center[vueId];
+ if (slot) {
+ var params = slot[name] || [];
+ if (needAll) {
+ return params;
+ }
+ return params[0];
+ }
+ };
+ _vue.default.prototype.$setSSP = function (name, value) {
+ var index = 0;
+ currentId.call(this, function (vueId) {
+ var slot = center[vueId];
+ var params = slot[name] = slot[name] || [];
+ params.push(value);
+ index = params.length - 1;
+ });
+ return index;
+ };
+ _vue.default.prototype.$initSSP = function () {
+ currentId.call(this, function (vueId) {
+ center[vueId] = {};
+ });
+ };
+ _vue.default.prototype.$callSSP = function () {
+ currentId.call(this, function (vueId) {
+ if (parents[vueId]) {
+ parents[vueId].$forceUpdate();
+ }
+ });
+ };
+ _vue.default.mixin({
+ destroyed: function destroyed() {
+ var propsData = this.$options.propsData;
+ var vueId = propsData && propsData.vueId;
+ if (vueId) {
+ delete center[vueId];
+ delete parents[vueId];
+ }
+ }
+ });
+}
+function parseBaseApp(vm, _ref4) {
+ var mocks = _ref4.mocks,
+ initRefs = _ref4.initRefs;
+ initEventChannel();
+ {
+ initScopedSlotsParams();
+ }
+ if (vm.$options.store) {
+ _vue.default.prototype.$store = vm.$options.store;
+ }
+ uniIdMixin(_vue.default);
+ _vue.default.prototype.mpHost = "mp-weixin";
+ _vue.default.mixin({
+ beforeCreate: function beforeCreate() {
+ if (!this.$options.mpType) {
+ return;
+ }
+ this.mpType = this.$options.mpType;
+ this.$mp = (0, _defineProperty2.default)({
+ data: {}
+ }, this.mpType, this.$options.mpInstance);
+ this.$scope = this.$options.mpInstance;
+ delete this.$options.mpType;
+ delete this.$options.mpInstance;
+ if (this.mpType === 'page' && typeof getApp === 'function') {
+ // hack vue-i18n
+ var app = getApp();
+ if (app.$vm && app.$vm.$i18n) {
+ this._i18n = app.$vm.$i18n;
+ }
+ }
+ if (this.mpType !== 'app') {
+ initRefs(this);
+ initMocks(this, mocks);
+ }
+ }
+ });
+ var appOptions = {
+ onLaunch: function onLaunch(args) {
+ if (this.$vm) {
+ // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
+ return;
+ }
+ {
+ if (wx.canIUse && !wx.canIUse('nextTick')) {
+ // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断
+ console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');
+ }
+ }
+ this.$vm = vm;
+ this.$vm.$mp = {
+ app: this
+ };
+ this.$vm.$scope = this;
+ // vm 上也挂载 globalData
+ this.$vm.globalData = this.globalData;
+ this.$vm._isMounted = true;
+ this.$vm.__call_hook('mounted', args);
+ this.$vm.__call_hook('onLaunch', args);
+ }
+ };
+
+ // 兼容旧版本 globalData
+ appOptions.globalData = vm.$options.globalData || {};
+ // 将 methods 中的方法挂在 getApp() 中
+ var methods = vm.$options.methods;
+ if (methods) {
+ Object.keys(methods).forEach(function (name) {
+ appOptions[name] = methods[name];
+ });
+ }
+ initAppLocale(_vue.default, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);
+ initHooks(appOptions, hooks);
+ initUnknownHooks(appOptions, vm.$options);
+ return appOptions;
+}
+function parseApp(vm) {
+ return parseBaseApp(vm, {
+ mocks: mocks,
+ initRefs: initRefs
+ });
+}
+function createApp(vm) {
+ App(parseApp(vm));
+ return vm;
+}
+var encodeReserveRE = /[!'()*]/g;
+var encodeReserveReplacer = function encodeReserveReplacer(c) {
+ return '%' + c.charCodeAt(0).toString(16);
+};
+var commaRE = /%2C/g;
+
+// fixed encodeURIComponent which is more conformant to RFC3986:
+// - escapes [!'()*]
+// - preserve commas
+var encode = function encode(str) {
+ return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');
+};
+function stringifyQuery(obj) {
+ var encodeStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : encode;
+ var res = obj ? Object.keys(obj).map(function (key) {
+ var val = obj[key];
+ if (val === undefined) {
+ return '';
+ }
+ if (val === null) {
+ return encodeStr(key);
+ }
+ if (Array.isArray(val)) {
+ var result = [];
+ val.forEach(function (val2) {
+ if (val2 === undefined) {
+ return;
+ }
+ if (val2 === null) {
+ result.push(encodeStr(key));
+ } else {
+ result.push(encodeStr(key) + '=' + encodeStr(val2));
+ }
+ });
+ return result.join('&');
+ }
+ return encodeStr(key) + '=' + encodeStr(val);
+ }).filter(function (x) {
+ return x.length > 0;
+ }).join('&') : null;
+ return res ? "?".concat(res) : '';
+}
+function parseBaseComponent(vueComponentOptions) {
+ var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ isPage = _ref5.isPage,
+ initRelation = _ref5.initRelation;
+ var needVueOptions = arguments.length > 2 ? arguments[2] : undefined;
+ var _initVueComponent = initVueComponent(_vue.default, vueComponentOptions),
+ _initVueComponent2 = (0, _slicedToArray2.default)(_initVueComponent, 2),
+ VueComponent = _initVueComponent2[0],
+ vueOptions = _initVueComponent2[1];
+ var options = _objectSpread({
+ multipleSlots: true,
+ // styleIsolation: 'apply-shared',
+ addGlobalClass: true
+ }, vueOptions.options || {});
+ {
+ // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项
+ if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {
+ Object.assign(options, vueOptions['mp-weixin'].options);
+ }
+ }
+ var componentOptions = {
+ options: options,
+ data: initData(vueOptions, _vue.default.prototype),
+ behaviors: initBehaviors(vueOptions, initBehavior),
+ properties: initProperties(vueOptions.props, false, vueOptions.__file, options),
+ lifetimes: {
+ attached: function attached() {
+ var properties = this.properties;
+ var options = {
+ mpType: isPage.call(this) ? 'page' : 'component',
+ mpInstance: this,
+ propsData: properties
+ };
+ initVueIds(properties.vueId, this);
+
+ // 处理父子关系
+ initRelation.call(this, {
+ vuePid: this._$vuePid,
+ vueOptions: options
+ });
+
+ // 初始化 vue 实例
+ this.$vm = new VueComponent(options);
+
+ // 处理$slots,$scopedSlots(暂不支持动态变化$slots)
+ initSlots(this.$vm, properties.vueSlots);
+
+ // 触发首次 setData
+ this.$vm.$mount();
+ },
+ ready: function ready() {
+ // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发
+ // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800
+ if (this.$vm) {
+ this.$vm._isMounted = true;
+ this.$vm.__call_hook('mounted');
+ this.$vm.__call_hook('onReady');
+ }
+ },
+ detached: function detached() {
+ this.$vm && this.$vm.$destroy();
+ }
+ },
+ pageLifetimes: {
+ show: function show(args) {
+ this.$vm && this.$vm.__call_hook('onPageShow', args);
+ },
+ hide: function hide() {
+ this.$vm && this.$vm.__call_hook('onPageHide');
+ },
+ resize: function resize(size) {
+ this.$vm && this.$vm.__call_hook('onPageResize', size);
+ }
+ },
+ methods: {
+ __l: handleLink,
+ __e: handleEvent
+ }
+ };
+ // externalClasses
+ if (vueOptions.externalClasses) {
+ componentOptions.externalClasses = vueOptions.externalClasses;
+ }
+ if (Array.isArray(vueOptions.wxsCallMethods)) {
+ vueOptions.wxsCallMethods.forEach(function (callMethod) {
+ componentOptions.methods[callMethod] = function (args) {
+ return this.$vm[callMethod](args);
+ };
+ });
+ }
+ if (needVueOptions) {
+ return [componentOptions, vueOptions, VueComponent];
+ }
+ if (isPage) {
+ return componentOptions;
+ }
+ return [componentOptions, VueComponent];
+}
+function parseComponent(vueComponentOptions, needVueOptions) {
+ return parseBaseComponent(vueComponentOptions, {
+ isPage: isPage,
+ initRelation: initRelation
+ }, needVueOptions);
+}
+var hooks$1 = ['onShow', 'onHide', 'onUnload'];
+hooks$1.push.apply(hooks$1, PAGE_EVENT_HOOKS);
+function parseBasePage(vuePageOptions) {
+ var _parseComponent = parseComponent(vuePageOptions, true),
+ _parseComponent2 = (0, _slicedToArray2.default)(_parseComponent, 2),
+ pageOptions = _parseComponent2[0],
+ vueOptions = _parseComponent2[1];
+ initHooks(pageOptions.methods, hooks$1, vueOptions);
+ pageOptions.methods.onLoad = function (query) {
+ this.options = query;
+ var copyQuery = Object.assign({}, query);
+ delete copyQuery.__id__;
+ this.$page = {
+ fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)
+ };
+ this.$vm.$mp.query = query; // 兼容 mpvue
+ this.$vm.__call_hook('onLoad', query);
+ };
+ {
+ initUnknownHooks(pageOptions.methods, vuePageOptions, ['onReady']);
+ }
+ {
+ initWorkletMethods(pageOptions.methods, vueOptions.methods);
+ }
+ return pageOptions;
+}
+function parsePage(vuePageOptions) {
+ return parseBasePage(vuePageOptions);
+}
+function createPage(vuePageOptions) {
+ {
+ return Component(parsePage(vuePageOptions));
+ }
+}
+function createComponent(vueOptions) {
+ {
+ return Component(parseComponent(vueOptions));
+ }
+}
+function createSubpackageApp(vm) {
+ var appOptions = parseApp(vm);
+ var app = getApp({
+ allowDefault: true
+ });
+ vm.$scope = app;
+ var globalData = app.globalData;
+ if (globalData) {
+ Object.keys(appOptions.globalData).forEach(function (name) {
+ if (!hasOwn(globalData, name)) {
+ globalData[name] = appOptions.globalData[name];
+ }
+ });
+ }
+ Object.keys(appOptions).forEach(function (name) {
+ if (!hasOwn(app, name)) {
+ app[name] = appOptions[name];
+ }
+ });
+ if (isFn(appOptions.onShow) && wx.onAppShow) {
+ wx.onAppShow(function () {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+ vm.__call_hook('onShow', args);
+ });
+ }
+ if (isFn(appOptions.onHide) && wx.onAppHide) {
+ wx.onAppHide(function () {
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
+ args[_key6] = arguments[_key6];
+ }
+ vm.__call_hook('onHide', args);
+ });
+ }
+ if (isFn(appOptions.onLaunch)) {
+ var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
+ vm.__call_hook('onLaunch', args);
+ }
+ return vm;
+}
+function createPlugin(vm) {
+ var appOptions = parseApp(vm);
+ if (isFn(appOptions.onShow) && wx.onAppShow) {
+ wx.onAppShow(function () {
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
+ args[_key7] = arguments[_key7];
+ }
+ vm.__call_hook('onShow', args);
+ });
+ }
+ if (isFn(appOptions.onHide) && wx.onAppHide) {
+ wx.onAppHide(function () {
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
+ args[_key8] = arguments[_key8];
+ }
+ vm.__call_hook('onHide', args);
+ });
+ }
+ if (isFn(appOptions.onLaunch)) {
+ var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
+ vm.__call_hook('onLaunch', args);
+ }
+ return vm;
+}
+todos.forEach(function (todoApi) {
+ protocols[todoApi] = false;
+});
+canIUses.forEach(function (canIUseApi) {
+ var apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name : canIUseApi;
+ if (!wx.canIUse(apiName)) {
+ protocols[canIUseApi] = false;
+ }
+});
+var uni = {};
+if (typeof Proxy !== 'undefined' && "mp-weixin" !== 'app-plus') {
+ uni = new Proxy({}, {
+ get: function get(target, name) {
+ if (hasOwn(target, name)) {
+ return target[name];
+ }
+ if (baseApi[name]) {
+ return baseApi[name];
+ }
+ if (api[name]) {
+ return promisify(name, api[name]);
+ }
+ {
+ if (extraApi[name]) {
+ return promisify(name, extraApi[name]);
+ }
+ if (todoApis[name]) {
+ return promisify(name, todoApis[name]);
+ }
+ }
+ if (eventApi[name]) {
+ return eventApi[name];
+ }
+ return promisify(name, wrapper(name, wx[name]));
+ },
+ set: function set(target, name, value) {
+ target[name] = value;
+ return true;
+ }
+ });
+} else {
+ Object.keys(baseApi).forEach(function (name) {
+ uni[name] = baseApi[name];
+ });
+ {
+ Object.keys(todoApis).forEach(function (name) {
+ uni[name] = promisify(name, todoApis[name]);
+ });
+ Object.keys(extraApi).forEach(function (name) {
+ uni[name] = promisify(name, extraApi[name]);
+ });
+ }
+ Object.keys(eventApi).forEach(function (name) {
+ uni[name] = eventApi[name];
+ });
+ Object.keys(api).forEach(function (name) {
+ uni[name] = promisify(name, api[name]);
+ });
+ Object.keys(wx).forEach(function (name) {
+ if (hasOwn(wx, name) || hasOwn(protocols, name)) {
+ uni[name] = promisify(name, wrapper(name, wx[name]));
+ }
+ });
+}
+wx.createApp = createApp;
+wx.createPage = createPage;
+wx.createComponent = createComponent;
+wx.createSubpackageApp = createSubpackageApp;
+wx.createPlugin = createPlugin;
+var uni$1 = uni;
+var _default = uni$1;
+exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 3)))
+
+/***/ }),
+/* 3 */
+/*!***********************************!*\
+ !*** (webpack)/buildin/global.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+ return this;
+})();
+
+try {
+ // This works if eval is allowed (see CSP)
+ g = g || new Function("return this")();
+} catch (e) {
+ // This works if the window reference is available
+ if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 4 */
+/*!**********************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
+ \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ "default": obj
+ };
+}
+module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 5 */
+/*!**************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 6);
+var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 7);
+var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 8);
+var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 10);
+function _slicedToArray(arr, i) {
+ return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
+module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 6 */
+/*!***************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 7 */
+/*!*********************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
+ \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _iterableToArrayLimit(r, l) {
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (null != t) {
+ var e,
+ n,
+ i,
+ u,
+ a = [],
+ f = !0,
+ o = !1;
+ try {
+ if (i = (t = t.call(r)).next, 0 === l) {
+ if (Object(t) !== t) return;
+ f = !1;
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) {
+ ;
+ }
+ } catch (r) {
+ o = !0, n = r;
+ } finally {
+ try {
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
+ } finally {
+ if (o) throw n;
+ }
+ }
+ return a;
+ }
+}
+module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 8 */
+/*!***************************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
+ \***************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 9);
+function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
+module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 9 */
+/*!*****************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
+ \*****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
+ arr2[i] = arr[i];
+ }
+ return arr2;
+}
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 10 */
+/*!****************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
+ \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 11 */
+/*!***************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 12);
+function _defineProperty(obj, key, value) {
+ key = toPropertyKey(key);
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 12 */
+/*!**************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
+var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 14);
+function toPropertyKey(t) {
+ var i = toPrimitive(t, "string");
+ return "symbol" == _typeof(i) ? i : i + "";
+}
+module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 13 */
+/*!*******************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _typeof(o) {
+ "@babel/helpers - typeof";
+
+ return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+ return typeof o;
+ } : function (o) {
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
+}
+module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 14 */
+/*!************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
+function toPrimitive(t, r) {
+ if ("object" != _typeof(t) || !t) return t;
+ var e = t[Symbol.toPrimitive];
+ if (void 0 !== e) {
+ var i = e.call(t, r || "default");
+ if ("object" != _typeof(i)) return i;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return ("string" === r ? String : Number)(t);
+}
+module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 15 */
+/*!**********************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/construct.js ***!
+ \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 16);
+var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 17);
+function _construct(t, e, r) {
+ if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
+ var o = [null];
+ o.push.apply(o, e);
+ var p = new (t.bind.apply(t, o))();
+ return r && setPrototypeOf(p, r.prototype), p;
+}
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 16 */
+/*!***************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _setPrototypeOf(o, p) {
+ module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+ return _setPrototypeOf(o, p);
+}
+module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 17 */
+/*!*************************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
+ \*************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _isNativeReflectConstruct() {
+ try {
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+ } catch (t) {}
+ return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
+ return !!t;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
+}
+module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 18 */
+/*!******************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 19);
+var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 20);
+var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 8);
+var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 21);
+function _toConsumableArray(arr) {
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
+}
+module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 19 */
+/*!******************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 9);
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
+}
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 20 */
+/*!****************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
+ \****************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+}
+module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 21 */
+/*!******************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 22 */
+/*!*************************************************************!*\
+ !*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni, global) {
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.LOCALE_ZH_HANT = exports.LOCALE_ZH_HANS = exports.LOCALE_FR = exports.LOCALE_ES = exports.LOCALE_EN = exports.I18n = exports.Formatter = void 0;
+exports.compileI18nJsonStr = compileI18nJsonStr;
+exports.hasI18nJson = hasI18nJson;
+exports.initVueI18n = initVueI18n;
+exports.isI18nStr = isI18nStr;
+exports.isString = void 0;
+exports.normalizeLocale = normalizeLocale;
+exports.parseI18nJson = parseI18nJson;
+exports.resolveLocale = resolveLocale;
+var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
+var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
+var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
+var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
+var isObject = function isObject(val) {
+ return val !== null && (0, _typeof2.default)(val) === 'object';
+};
+var defaultDelimiters = ['{', '}'];
+var BaseFormatter = /*#__PURE__*/function () {
+ function BaseFormatter() {
+ (0, _classCallCheck2.default)(this, BaseFormatter);
+ this._caches = Object.create(null);
+ }
+ (0, _createClass2.default)(BaseFormatter, [{
+ key: "interpolate",
+ value: function interpolate(message, values) {
+ var delimiters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultDelimiters;
+ if (!values) {
+ return [message];
+ }
+ var tokens = this._caches[message];
+ if (!tokens) {
+ tokens = parse(message, delimiters);
+ this._caches[message] = tokens;
+ }
+ return compile(tokens, values);
+ }
+ }]);
+ return BaseFormatter;
+}();
+exports.Formatter = BaseFormatter;
+var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
+var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
+function parse(format, _ref) {
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
+ startDelimiter = _ref2[0],
+ endDelimiter = _ref2[1];
+ var tokens = [];
+ var position = 0;
+ var text = '';
+ while (position < format.length) {
+ var char = format[position++];
+ if (char === startDelimiter) {
+ if (text) {
+ tokens.push({
+ type: 'text',
+ value: text
+ });
+ }
+ text = '';
+ var sub = '';
+ char = format[position++];
+ while (char !== undefined && char !== endDelimiter) {
+ sub += char;
+ char = format[position++];
+ }
+ var isClosed = char === endDelimiter;
+ var type = RE_TOKEN_LIST_VALUE.test(sub) ? 'list' : isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ? 'named' : 'unknown';
+ tokens.push({
+ value: sub,
+ type: type
+ });
+ }
+ // else if (char === '%') {
+ // // when found rails i18n syntax, skip text capture
+ // if (format[position] !== '{') {
+ // text += char
+ // }
+ // }
+ else {
+ text += char;
+ }
+ }
+ text && tokens.push({
+ type: 'text',
+ value: text
+ });
+ return tokens;
+}
+function compile(tokens, values) {
+ var compiled = [];
+ var index = 0;
+ var mode = Array.isArray(values) ? 'list' : isObject(values) ? 'named' : 'unknown';
+ if (mode === 'unknown') {
+ return compiled;
+ }
+ while (index < tokens.length) {
+ var token = tokens[index];
+ switch (token.type) {
+ case 'text':
+ compiled.push(token.value);
+ break;
+ case 'list':
+ compiled.push(values[parseInt(token.value, 10)]);
+ break;
+ case 'named':
+ if (mode === 'named') {
+ compiled.push(values[token.value]);
+ } else {
+ if (true) {
+ console.warn("Type of token '".concat(token.type, "' and format of value '").concat(mode, "' don't match!"));
+ }
+ }
+ break;
+ case 'unknown':
+ if (true) {
+ console.warn("Detect 'unknown' type of token!");
+ }
+ break;
+ }
+ index++;
+ }
+ return compiled;
+}
+var LOCALE_ZH_HANS = 'zh-Hans';
+exports.LOCALE_ZH_HANS = LOCALE_ZH_HANS;
+var LOCALE_ZH_HANT = 'zh-Hant';
+exports.LOCALE_ZH_HANT = LOCALE_ZH_HANT;
+var LOCALE_EN = 'en';
+exports.LOCALE_EN = LOCALE_EN;
+var LOCALE_FR = 'fr';
+exports.LOCALE_FR = LOCALE_FR;
+var LOCALE_ES = 'es';
+exports.LOCALE_ES = LOCALE_ES;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var hasOwn = function hasOwn(val, key) {
+ return hasOwnProperty.call(val, key);
+};
+var defaultFormatter = new BaseFormatter();
+function include(str, parts) {
+ return !!parts.find(function (part) {
+ return str.indexOf(part) !== -1;
+ });
+}
+function startsWith(str, parts) {
+ return parts.find(function (part) {
+ return str.indexOf(part) === 0;
+ });
+}
+function normalizeLocale(locale, messages) {
+ if (!locale) {
+ return;
+ }
+ locale = locale.trim().replace(/_/g, '-');
+ if (messages && messages[locale]) {
+ return locale;
+ }
+ locale = locale.toLowerCase();
+ if (locale === 'chinese') {
+ // 支付宝
+ return LOCALE_ZH_HANS;
+ }
+ if (locale.indexOf('zh') === 0) {
+ if (locale.indexOf('-hans') > -1) {
+ return LOCALE_ZH_HANS;
+ }
+ if (locale.indexOf('-hant') > -1) {
+ return LOCALE_ZH_HANT;
+ }
+ if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
+ return LOCALE_ZH_HANT;
+ }
+ return LOCALE_ZH_HANS;
+ }
+ var locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];
+ if (messages && Object.keys(messages).length > 0) {
+ locales = Object.keys(messages);
+ }
+ var lang = startsWith(locale, locales);
+ if (lang) {
+ return lang;
+ }
+}
+var I18n = /*#__PURE__*/function () {
+ function I18n(_ref3) {
+ var locale = _ref3.locale,
+ fallbackLocale = _ref3.fallbackLocale,
+ messages = _ref3.messages,
+ watcher = _ref3.watcher,
+ formater = _ref3.formater;
+ (0, _classCallCheck2.default)(this, I18n);
+ this.locale = LOCALE_EN;
+ this.fallbackLocale = LOCALE_EN;
+ this.message = {};
+ this.messages = {};
+ this.watchers = [];
+ if (fallbackLocale) {
+ this.fallbackLocale = fallbackLocale;
+ }
+ this.formater = formater || defaultFormatter;
+ this.messages = messages || {};
+ this.setLocale(locale || LOCALE_EN);
+ if (watcher) {
+ this.watchLocale(watcher);
+ }
+ }
+ (0, _createClass2.default)(I18n, [{
+ key: "setLocale",
+ value: function setLocale(locale) {
+ var _this = this;
+ var oldLocale = this.locale;
+ this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;
+ if (!this.messages[this.locale]) {
+ // 可能初始化时不存在
+ this.messages[this.locale] = {};
+ }
+ this.message = this.messages[this.locale];
+ // 仅发生变化时,通知
+ if (oldLocale !== this.locale) {
+ this.watchers.forEach(function (watcher) {
+ watcher(_this.locale, oldLocale);
+ });
+ }
+ }
+ }, {
+ key: "getLocale",
+ value: function getLocale() {
+ return this.locale;
+ }
+ }, {
+ key: "watchLocale",
+ value: function watchLocale(fn) {
+ var _this2 = this;
+ var index = this.watchers.push(fn) - 1;
+ return function () {
+ _this2.watchers.splice(index, 1);
+ };
+ }
+ }, {
+ key: "add",
+ value: function add(locale, message) {
+ var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+ var curMessages = this.messages[locale];
+ if (curMessages) {
+ if (override) {
+ Object.assign(curMessages, message);
+ } else {
+ Object.keys(message).forEach(function (key) {
+ if (!hasOwn(curMessages, key)) {
+ curMessages[key] = message[key];
+ }
+ });
+ }
+ } else {
+ this.messages[locale] = message;
+ }
+ }
+ }, {
+ key: "f",
+ value: function f(message, values, delimiters) {
+ return this.formater.interpolate(message, values, delimiters).join('');
+ }
+ }, {
+ key: "t",
+ value: function t(key, locale, values) {
+ var message = this.message;
+ if (typeof locale === 'string') {
+ locale = normalizeLocale(locale, this.messages);
+ locale && (message = this.messages[locale]);
+ } else {
+ values = locale;
+ }
+ if (!hasOwn(message, key)) {
+ console.warn("Cannot translate the value of keypath ".concat(key, ". Use the value of keypath as default."));
+ return key;
+ }
+ return this.formater.interpolate(message[key], values).join('');
+ }
+ }]);
+ return I18n;
+}();
+exports.I18n = I18n;
+function watchAppLocale(appVm, i18n) {
+ // 需要保证 watch 的触发在组件渲染之前
+ if (appVm.$watchLocale) {
+ // vue2
+ appVm.$watchLocale(function (newLocale) {
+ i18n.setLocale(newLocale);
+ });
+ } else {
+ appVm.$watch(function () {
+ return appVm.$locale;
+ }, function (newLocale) {
+ i18n.setLocale(newLocale);
+ });
+ }
+}
+function getDefaultLocale() {
+ if (typeof uni !== 'undefined' && uni.getLocale) {
+ return uni.getLocale();
+ }
+ // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale
+ if (typeof global !== 'undefined' && global.getLocale) {
+ return global.getLocale();
+ }
+ return LOCALE_EN;
+}
+function initVueI18n(locale) {
+ var messages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var fallbackLocale = arguments.length > 2 ? arguments[2] : undefined;
+ var watcher = arguments.length > 3 ? arguments[3] : undefined;
+ // 兼容旧版本入参
+ if (typeof locale !== 'string') {
+ var _ref4 = [messages, locale];
+ locale = _ref4[0];
+ messages = _ref4[1];
+ }
+ if (typeof locale !== 'string') {
+ // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined
+ locale = getDefaultLocale();
+ }
+ if (typeof fallbackLocale !== 'string') {
+ fallbackLocale = typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale || LOCALE_EN;
+ }
+ var i18n = new I18n({
+ locale: locale,
+ fallbackLocale: fallbackLocale,
+ messages: messages,
+ watcher: watcher
+ });
+ var _t = function t(key, values) {
+ if (typeof getApp !== 'function') {
+ // app view
+ /* eslint-disable no-func-assign */
+ _t = function t(key, values) {
+ return i18n.t(key, values);
+ };
+ } else {
+ var isWatchedAppLocale = false;
+ _t = function t(key, values) {
+ var appVm = getApp().$vm;
+ // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化
+ // options: {
+ // type: Array,
+ // default () {
+ // return [{
+ // icon: 'shop',
+ // text: t("uni-goods-nav.options.shop"),
+ // }, {
+ // icon: 'cart',
+ // text: t("uni-goods-nav.options.cart")
+ // }]
+ // }
+ // },
+ if (appVm) {
+ // 触发响应式
+ appVm.$locale;
+ if (!isWatchedAppLocale) {
+ isWatchedAppLocale = true;
+ watchAppLocale(appVm, i18n);
+ }
+ }
+ return i18n.t(key, values);
+ };
+ }
+ return _t(key, values);
+ };
+ return {
+ i18n: i18n,
+ f: function f(message, values, delimiters) {
+ return i18n.f(message, values, delimiters);
+ },
+ t: function t(key, values) {
+ return _t(key, values);
+ },
+ add: function add(locale, message) {
+ var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
+ return i18n.add(locale, message, override);
+ },
+ watch: function watch(fn) {
+ return i18n.watchLocale(fn);
+ },
+ getLocale: function getLocale() {
+ return i18n.getLocale();
+ },
+ setLocale: function setLocale(newLocale) {
+ return i18n.setLocale(newLocale);
+ }
+ };
+}
+var isString = function isString(val) {
+ return typeof val === 'string';
+};
+exports.isString = isString;
+var formater;
+function hasI18nJson(jsonObj, delimiters) {
+ if (!formater) {
+ formater = new BaseFormatter();
+ }
+ return walkJsonObj(jsonObj, function (jsonObj, key) {
+ var value = jsonObj[key];
+ if (isString(value)) {
+ if (isI18nStr(value, delimiters)) {
+ return true;
+ }
+ } else {
+ return hasI18nJson(value, delimiters);
+ }
+ });
+}
+function parseI18nJson(jsonObj, values, delimiters) {
+ if (!formater) {
+ formater = new BaseFormatter();
+ }
+ walkJsonObj(jsonObj, function (jsonObj, key) {
+ var value = jsonObj[key];
+ if (isString(value)) {
+ if (isI18nStr(value, delimiters)) {
+ jsonObj[key] = compileStr(value, values, delimiters);
+ }
+ } else {
+ parseI18nJson(value, values, delimiters);
+ }
+ });
+ return jsonObj;
+}
+function compileI18nJsonStr(jsonStr, _ref5) {
+ var locale = _ref5.locale,
+ locales = _ref5.locales,
+ delimiters = _ref5.delimiters;
+ if (!isI18nStr(jsonStr, delimiters)) {
+ return jsonStr;
+ }
+ if (!formater) {
+ formater = new BaseFormatter();
+ }
+ var localeValues = [];
+ Object.keys(locales).forEach(function (name) {
+ if (name !== locale) {
+ localeValues.push({
+ locale: name,
+ values: locales[name]
+ });
+ }
+ });
+ localeValues.unshift({
+ locale: locale,
+ values: locales[locale]
+ });
+ try {
+ return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);
+ } catch (e) {}
+ return jsonStr;
+}
+function isI18nStr(value, delimiters) {
+ return value.indexOf(delimiters[0]) > -1;
+}
+function compileStr(value, values, delimiters) {
+ return formater.interpolate(value, values, delimiters).join('');
+}
+function compileValue(jsonObj, key, localeValues, delimiters) {
+ var value = jsonObj[key];
+ if (isString(value)) {
+ // 存在国际化
+ if (isI18nStr(value, delimiters)) {
+ jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);
+ if (localeValues.length > 1) {
+ // 格式化国际化语言
+ var valueLocales = jsonObj[key + 'Locales'] = {};
+ localeValues.forEach(function (localValue) {
+ valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);
+ });
+ }
+ }
+ } else {
+ compileJsonObj(value, localeValues, delimiters);
+ }
+}
+function compileJsonObj(jsonObj, localeValues, delimiters) {
+ walkJsonObj(jsonObj, function (jsonObj, key) {
+ compileValue(jsonObj, key, localeValues, delimiters);
+ });
+ return jsonObj;
+}
+function walkJsonObj(jsonObj, walk) {
+ if (Array.isArray(jsonObj)) {
+ for (var i = 0; i < jsonObj.length; i++) {
+ if (walk(jsonObj, i)) {
+ return true;
+ }
+ }
+ } else if (isObject(jsonObj)) {
+ for (var key in jsonObj) {
+ if (walk(jsonObj, key)) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+function resolveLocale(locales) {
+ return function (locale) {
+ if (!locale) {
+ return locale;
+ }
+ locale = normalizeLocale(locale) || locale;
+ return resolveLocaleChain(locale).find(function (locale) {
+ return locales.indexOf(locale) > -1;
+ });
+ };
+}
+function resolveLocaleChain(locale) {
+ var chain = [];
+ var tokens = locale.split('-');
+ while (tokens.length) {
+ chain.push(tokens.join('-'));
+ tokens.pop();
+ }
+ return chain;
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"], __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 3)))
+
+/***/ }),
+/* 23 */
+/*!***************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 24 */
+/*!************************************************************!*\
+ !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 12);
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
+ }
+}
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", {
+ writable: false
+ });
+ return Constructor;
+}
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
+
+/***/ }),
+/* 25 */
+/*!******************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js ***!
+ \******************************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* WEBPACK VAR INJECTION */(function(global) {/*!
+ * Vue.js v2.6.11
+ * (c) 2014-2023 Evan You
+ * Released under the MIT License.
+ */
+/* */
+
+var emptyObject = Object.freeze({});
+
+// These helpers produce better VM code in JS engines due to their
+// explicitness and function inlining.
+function isUndef (v) {
+ return v === undefined || v === null
+}
+
+function isDef (v) {
+ return v !== undefined && v !== null
+}
+
+function isTrue (v) {
+ return v === true
+}
+
+function isFalse (v) {
+ return v === false
+}
+
+/**
+ * Check if value is primitive.
+ */
+function isPrimitive (value) {
+ return (
+ typeof value === 'string' ||
+ typeof value === 'number' ||
+ // $flow-disable-line
+ typeof value === 'symbol' ||
+ typeof value === 'boolean'
+ )
+}
+
+/**
+ * Quick object check - this is primarily used to tell
+ * Objects from primitive values when we know the value
+ * is a JSON-compliant type.
+ */
+function isObject (obj) {
+ return obj !== null && typeof obj === 'object'
+}
+
+/**
+ * Get the raw type string of a value, e.g., [object Object].
+ */
+var _toString = Object.prototype.toString;
+
+function toRawType (value) {
+ return _toString.call(value).slice(8, -1)
+}
+
+/**
+ * Strict object type check. Only returns true
+ * for plain JavaScript objects.
+ */
+function isPlainObject (obj) {
+ return _toString.call(obj) === '[object Object]'
+}
+
+function isRegExp (v) {
+ return _toString.call(v) === '[object RegExp]'
+}
+
+/**
+ * Check if val is a valid array index.
+ */
+function isValidArrayIndex (val) {
+ var n = parseFloat(String(val));
+ return n >= 0 && Math.floor(n) === n && isFinite(val)
+}
+
+function isPromise (val) {
+ return (
+ isDef(val) &&
+ typeof val.then === 'function' &&
+ typeof val.catch === 'function'
+ )
+}
+
+/**
+ * Convert a value to a string that is actually rendered.
+ */
+function toString (val) {
+ return val == null
+ ? ''
+ : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
+ ? JSON.stringify(val, null, 2)
+ : String(val)
+}
+
+/**
+ * Convert an input value to a number for persistence.
+ * If the conversion fails, return original string.
+ */
+function toNumber (val) {
+ var n = parseFloat(val);
+ return isNaN(n) ? val : n
+}
+
+/**
+ * Make a map and return a function for checking if a key
+ * is in that map.
+ */
+function makeMap (
+ str,
+ expectsLowerCase
+) {
+ var map = Object.create(null);
+ var list = str.split(',');
+ for (var i = 0; i < list.length; i++) {
+ map[list[i]] = true;
+ }
+ return expectsLowerCase
+ ? function (val) { return map[val.toLowerCase()]; }
+ : function (val) { return map[val]; }
+}
+
+/**
+ * Check if a tag is a built-in tag.
+ */
+var isBuiltInTag = makeMap('slot,component', true);
+
+/**
+ * Check if an attribute is a reserved attribute.
+ */
+var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
+
+/**
+ * Remove an item from an array.
+ */
+function remove (arr, item) {
+ if (arr.length) {
+ var index = arr.indexOf(item);
+ if (index > -1) {
+ return arr.splice(index, 1)
+ }
+ }
+}
+
+/**
+ * Check whether an object has the property.
+ */
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+function hasOwn (obj, key) {
+ return hasOwnProperty.call(obj, key)
+}
+
+/**
+ * Create a cached version of a pure function.
+ */
+function cached (fn) {
+ var cache = Object.create(null);
+ return (function cachedFn (str) {
+ var hit = cache[str];
+ return hit || (cache[str] = fn(str))
+ })
+}
+
+/**
+ * Camelize a hyphen-delimited string.
+ */
+var camelizeRE = /-(\w)/g;
+var camelize = cached(function (str) {
+ return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
+});
+
+/**
+ * Capitalize a string.
+ */
+var capitalize = cached(function (str) {
+ return str.charAt(0).toUpperCase() + str.slice(1)
+});
+
+/**
+ * Hyphenate a camelCase string.
+ */
+var hyphenateRE = /\B([A-Z])/g;
+var hyphenate = cached(function (str) {
+ return str.replace(hyphenateRE, '-$1').toLowerCase()
+});
+
+/**
+ * Simple bind polyfill for environments that do not support it,
+ * e.g., PhantomJS 1.x. Technically, we don't need this anymore
+ * since native bind is now performant enough in most browsers.
+ * But removing it would mean breaking code that was able to run in
+ * PhantomJS 1.x, so this must be kept for backward compatibility.
+ */
+
+/* istanbul ignore next */
+function polyfillBind (fn, ctx) {
+ function boundFn (a) {
+ var l = arguments.length;
+ return l
+ ? l > 1
+ ? fn.apply(ctx, arguments)
+ : fn.call(ctx, a)
+ : fn.call(ctx)
+ }
+
+ boundFn._length = fn.length;
+ return boundFn
+}
+
+function nativeBind (fn, ctx) {
+ return fn.bind(ctx)
+}
+
+var bind = Function.prototype.bind
+ ? nativeBind
+ : polyfillBind;
+
+/**
+ * Convert an Array-like object to a real Array.
+ */
+function toArray (list, start) {
+ start = start || 0;
+ var i = list.length - start;
+ var ret = new Array(i);
+ while (i--) {
+ ret[i] = list[i + start];
+ }
+ return ret
+}
+
+/**
+ * Mix properties into target object.
+ */
+function extend (to, _from) {
+ for (var key in _from) {
+ to[key] = _from[key];
+ }
+ return to
+}
+
+/**
+ * Merge an Array of Objects into a single Object.
+ */
+function toObject (arr) {
+ var res = {};
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i]) {
+ extend(res, arr[i]);
+ }
+ }
+ return res
+}
+
+/* eslint-disable no-unused-vars */
+
+/**
+ * Perform no operation.
+ * Stubbing args to make Flow happy without leaving useless transpiled code
+ * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
+ */
+function noop (a, b, c) {}
+
+/**
+ * Always return false.
+ */
+var no = function (a, b, c) { return false; };
+
+/* eslint-enable no-unused-vars */
+
+/**
+ * Return the same value.
+ */
+var identity = function (_) { return _; };
+
+/**
+ * Check if two values are loosely equal - that is,
+ * if they are plain objects, do they have the same shape?
+ */
+function looseEqual (a, b) {
+ if (a === b) { return true }
+ var isObjectA = isObject(a);
+ var isObjectB = isObject(b);
+ if (isObjectA && isObjectB) {
+ try {
+ var isArrayA = Array.isArray(a);
+ var isArrayB = Array.isArray(b);
+ if (isArrayA && isArrayB) {
+ return a.length === b.length && a.every(function (e, i) {
+ return looseEqual(e, b[i])
+ })
+ } else if (a instanceof Date && b instanceof Date) {
+ return a.getTime() === b.getTime()
+ } else if (!isArrayA && !isArrayB) {
+ var keysA = Object.keys(a);
+ var keysB = Object.keys(b);
+ return keysA.length === keysB.length && keysA.every(function (key) {
+ return looseEqual(a[key], b[key])
+ })
+ } else {
+ /* istanbul ignore next */
+ return false
+ }
+ } catch (e) {
+ /* istanbul ignore next */
+ return false
+ }
+ } else if (!isObjectA && !isObjectB) {
+ return String(a) === String(b)
+ } else {
+ return false
+ }
+}
+
+/**
+ * Return the first index at which a loosely equal value can be
+ * found in the array (if value is a plain object, the array must
+ * contain an object of the same shape), or -1 if it is not present.
+ */
+function looseIndexOf (arr, val) {
+ for (var i = 0; i < arr.length; i++) {
+ if (looseEqual(arr[i], val)) { return i }
+ }
+ return -1
+}
+
+/**
+ * Ensure a function is called only once.
+ */
+function once (fn) {
+ var called = false;
+ return function () {
+ if (!called) {
+ called = true;
+ fn.apply(this, arguments);
+ }
+ }
+}
+
+var ASSET_TYPES = [
+ 'component',
+ 'directive',
+ 'filter'
+];
+
+var LIFECYCLE_HOOKS = [
+ 'beforeCreate',
+ 'created',
+ 'beforeMount',
+ 'mounted',
+ 'beforeUpdate',
+ 'updated',
+ 'beforeDestroy',
+ 'destroyed',
+ 'activated',
+ 'deactivated',
+ 'errorCaptured',
+ 'serverPrefetch'
+];
+
+/* */
+
+
+
+var config = ({
+ /**
+ * Option merge strategies (used in core/util/options)
+ */
+ // $flow-disable-line
+ optionMergeStrategies: Object.create(null),
+
+ /**
+ * Whether to suppress warnings.
+ */
+ silent: false,
+
+ /**
+ * Show production mode tip message on boot?
+ */
+ productionTip: "development" !== 'production',
+
+ /**
+ * Whether to enable devtools
+ */
+ devtools: "development" !== 'production',
+
+ /**
+ * Whether to record perf
+ */
+ performance: false,
+
+ /**
+ * Error handler for watcher errors
+ */
+ errorHandler: null,
+
+ /**
+ * Warn handler for watcher warns
+ */
+ warnHandler: null,
+
+ /**
+ * Ignore certain custom elements
+ */
+ ignoredElements: [],
+
+ /**
+ * Custom user key aliases for v-on
+ */
+ // $flow-disable-line
+ keyCodes: Object.create(null),
+
+ /**
+ * Check if a tag is reserved so that it cannot be registered as a
+ * component. This is platform-dependent and may be overwritten.
+ */
+ isReservedTag: no,
+
+ /**
+ * Check if an attribute is reserved so that it cannot be used as a component
+ * prop. This is platform-dependent and may be overwritten.
+ */
+ isReservedAttr: no,
+
+ /**
+ * Check if a tag is an unknown element.
+ * Platform-dependent.
+ */
+ isUnknownElement: no,
+
+ /**
+ * Get the namespace of an element
+ */
+ getTagNamespace: noop,
+
+ /**
+ * Parse the real tag name for the specific platform.
+ */
+ parsePlatformTagName: identity,
+
+ /**
+ * Check if an attribute must be bound using property, e.g. value
+ * Platform-dependent.
+ */
+ mustUseProp: no,
+
+ /**
+ * Perform updates asynchronously. Intended to be used by Vue Test Utils
+ * This will significantly reduce performance if set to false.
+ */
+ async: true,
+
+ /**
+ * Exposed for legacy reasons
+ */
+ _lifecycleHooks: LIFECYCLE_HOOKS
+});
+
+/* */
+
+/**
+ * unicode letters used for parsing html tags, component names and property paths.
+ * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
+ * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
+ */
+var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
+
+/**
+ * Check if a string starts with $ or _
+ */
+function isReserved (str) {
+ var c = (str + '').charCodeAt(0);
+ return c === 0x24 || c === 0x5F
+}
+
+/**
+ * Define a property.
+ */
+function def (obj, key, val, enumerable) {
+ Object.defineProperty(obj, key, {
+ value: val,
+ enumerable: !!enumerable,
+ writable: true,
+ configurable: true
+ });
+}
+
+/**
+ * Parse simple path.
+ */
+var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
+function parsePath (path) {
+ if (bailRE.test(path)) {
+ return
+ }
+ var segments = path.split('.');
+ return function (obj) {
+ for (var i = 0; i < segments.length; i++) {
+ if (!obj) { return }
+ obj = obj[segments[i]];
+ }
+ return obj
+ }
+}
+
+/* */
+
+// can we use __proto__?
+var hasProto = '__proto__' in {};
+
+// Browser environment sniffing
+var inBrowser = typeof window !== 'undefined';
+var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
+var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
+var UA = inBrowser && window.navigator.userAgent.toLowerCase();
+var isIE = UA && /msie|trident/.test(UA);
+var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
+var isEdge = UA && UA.indexOf('edge/') > 0;
+var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
+var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
+var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
+var isPhantomJS = UA && /phantomjs/.test(UA);
+var isFF = UA && UA.match(/firefox\/(\d+)/);
+
+// Firefox has a "watch" function on Object.prototype...
+var nativeWatch = ({}).watch;
+if (inBrowser) {
+ try {
+ var opts = {};
+ Object.defineProperty(opts, 'passive', ({
+ get: function get () {
+ }
+ })); // https://github.com/facebook/flow/issues/285
+ window.addEventListener('test-passive', null, opts);
+ } catch (e) {}
+}
+
+// this needs to be lazy-evaled because vue may be required before
+// vue-server-renderer can set VUE_ENV
+var _isServer;
+var isServerRendering = function () {
+ if (_isServer === undefined) {
+ /* istanbul ignore if */
+ if (!inBrowser && !inWeex && typeof global !== 'undefined') {
+ // detect presence of vue-server-renderer and avoid
+ // Webpack shimming the process
+ _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';
+ } else {
+ _isServer = false;
+ }
+ }
+ return _isServer
+};
+
+// detect devtools
+var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+
+/* istanbul ignore next */
+function isNative (Ctor) {
+ return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
+}
+
+var hasSymbol =
+ typeof Symbol !== 'undefined' && isNative(Symbol) &&
+ typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
+
+var _Set;
+/* istanbul ignore if */ // $flow-disable-line
+if (typeof Set !== 'undefined' && isNative(Set)) {
+ // use native Set when available.
+ _Set = Set;
+} else {
+ // a non-standard Set polyfill that only works with primitive keys.
+ _Set = /*@__PURE__*/(function () {
+ function Set () {
+ this.set = Object.create(null);
+ }
+ Set.prototype.has = function has (key) {
+ return this.set[key] === true
+ };
+ Set.prototype.add = function add (key) {
+ this.set[key] = true;
+ };
+ Set.prototype.clear = function clear () {
+ this.set = Object.create(null);
+ };
+
+ return Set;
+ }());
+}
+
+/* */
+
+var warn = noop;
+var tip = noop;
+var generateComponentTrace = (noop); // work around flow check
+var formatComponentName = (noop);
+
+if (true) {
+ var hasConsole = typeof console !== 'undefined';
+ var classifyRE = /(?:^|[-_])(\w)/g;
+ var classify = function (str) { return str
+ .replace(classifyRE, function (c) { return c.toUpperCase(); })
+ .replace(/[-_]/g, ''); };
+
+ warn = function (msg, vm) {
+ var trace = vm ? generateComponentTrace(vm) : '';
+
+ if (config.warnHandler) {
+ config.warnHandler.call(null, msg, vm, trace);
+ } else if (hasConsole && (!config.silent)) {
+ console.error(("[Vue warn]: " + msg + trace));
+ }
+ };
+
+ tip = function (msg, vm) {
+ if (hasConsole && (!config.silent)) {
+ console.warn("[Vue tip]: " + msg + (
+ vm ? generateComponentTrace(vm) : ''
+ ));
+ }
+ };
+
+ formatComponentName = function (vm, includeFile) {
+ if (vm.$root === vm) {
+ if (vm.$options && vm.$options.__file) { // fixed by xxxxxx
+ return ('') + vm.$options.__file
+ }
+ return ''
+ }
+ var options = typeof vm === 'function' && vm.cid != null
+ ? vm.options
+ : vm._isVue
+ ? vm.$options || vm.constructor.options
+ : vm;
+ var name = options.name || options._componentTag;
+ var file = options.__file;
+ if (!name && file) {
+ var match = file.match(/([^/\\]+)\.vue$/);
+ name = match && match[1];
+ }
+
+ return (
+ (name ? ("<" + (classify(name)) + ">") : "") +
+ (file && includeFile !== false ? (" at " + file) : '')
+ )
+ };
+
+ var repeat = function (str, n) {
+ var res = '';
+ while (n) {
+ if (n % 2 === 1) { res += str; }
+ if (n > 1) { str += str; }
+ n >>= 1;
+ }
+ return res
+ };
+
+ generateComponentTrace = function (vm) {
+ if (vm._isVue && vm.$parent) {
+ var tree = [];
+ var currentRecursiveSequence = 0;
+ while (vm && vm.$options.name !== 'PageBody') {
+ if (tree.length > 0) {
+ var last = tree[tree.length - 1];
+ if (last.constructor === vm.constructor) {
+ currentRecursiveSequence++;
+ vm = vm.$parent;
+ continue
+ } else if (currentRecursiveSequence > 0) {
+ tree[tree.length - 1] = [last, currentRecursiveSequence];
+ currentRecursiveSequence = 0;
+ }
+ }
+ !vm.$options.isReserved && tree.push(vm);
+ vm = vm.$parent;
+ }
+ return '\n\nfound in\n\n' + tree
+ .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
+ ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
+ : formatComponentName(vm))); })
+ .join('\n')
+ } else {
+ return ("\n\n(found in " + (formatComponentName(vm)) + ")")
+ }
+ };
+}
+
+/* */
+
+var uid = 0;
+
+/**
+ * A dep is an observable that can have multiple
+ * directives subscribing to it.
+ */
+var Dep = function Dep () {
+ this.id = uid++;
+ this.subs = [];
+};
+
+Dep.prototype.addSub = function addSub (sub) {
+ this.subs.push(sub);
+};
+
+Dep.prototype.removeSub = function removeSub (sub) {
+ remove(this.subs, sub);
+};
+
+Dep.prototype.depend = function depend () {
+ if (Dep.SharedObject.target) {
+ Dep.SharedObject.target.addDep(this);
+ }
+};
+
+Dep.prototype.notify = function notify () {
+ // stabilize the subscriber list first
+ var subs = this.subs.slice();
+ if ( true && !config.async) {
+ // subs aren't sorted in scheduler if not running async
+ // we need to sort them now to make sure they fire in correct
+ // order
+ subs.sort(function (a, b) { return a.id - b.id; });
+ }
+ for (var i = 0, l = subs.length; i < l; i++) {
+ subs[i].update();
+ }
+};
+
+// The current target watcher being evaluated.
+// This is globally unique because only one watcher
+// can be evaluated at a time.
+// fixed by xxxxxx (nvue shared vuex)
+/* eslint-disable no-undef */
+Dep.SharedObject = {};
+Dep.SharedObject.target = null;
+Dep.SharedObject.targetStack = [];
+
+function pushTarget (target) {
+ Dep.SharedObject.targetStack.push(target);
+ Dep.SharedObject.target = target;
+ Dep.target = target;
+}
+
+function popTarget () {
+ Dep.SharedObject.targetStack.pop();
+ Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];
+ Dep.target = Dep.SharedObject.target;
+}
+
+/* */
+
+var VNode = function VNode (
+ tag,
+ data,
+ children,
+ text,
+ elm,
+ context,
+ componentOptions,
+ asyncFactory
+) {
+ this.tag = tag;
+ this.data = data;
+ this.children = children;
+ this.text = text;
+ this.elm = elm;
+ this.ns = undefined;
+ this.context = context;
+ this.fnContext = undefined;
+ this.fnOptions = undefined;
+ this.fnScopeId = undefined;
+ this.key = data && data.key;
+ this.componentOptions = componentOptions;
+ this.componentInstance = undefined;
+ this.parent = undefined;
+ this.raw = false;
+ this.isStatic = false;
+ this.isRootInsert = true;
+ this.isComment = false;
+ this.isCloned = false;
+ this.isOnce = false;
+ this.asyncFactory = asyncFactory;
+ this.asyncMeta = undefined;
+ this.isAsyncPlaceholder = false;
+};
+
+var prototypeAccessors = { child: { configurable: true } };
+
+// DEPRECATED: alias for componentInstance for backwards compat.
+/* istanbul ignore next */
+prototypeAccessors.child.get = function () {
+ return this.componentInstance
+};
+
+Object.defineProperties( VNode.prototype, prototypeAccessors );
+
+var createEmptyVNode = function (text) {
+ if ( text === void 0 ) text = '';
+
+ var node = new VNode();
+ node.text = text;
+ node.isComment = true;
+ return node
+};
+
+function createTextVNode (val) {
+ return new VNode(undefined, undefined, undefined, String(val))
+}
+
+// optimized shallow clone
+// used for static nodes and slot nodes because they may be reused across
+// multiple renders, cloning them avoids errors when DOM manipulations rely
+// on their elm reference.
+function cloneVNode (vnode) {
+ var cloned = new VNode(
+ vnode.tag,
+ vnode.data,
+ // #7975
+ // clone children array to avoid mutating original in case of cloning
+ // a child.
+ vnode.children && vnode.children.slice(),
+ vnode.text,
+ vnode.elm,
+ vnode.context,
+ vnode.componentOptions,
+ vnode.asyncFactory
+ );
+ cloned.ns = vnode.ns;
+ cloned.isStatic = vnode.isStatic;
+ cloned.key = vnode.key;
+ cloned.isComment = vnode.isComment;
+ cloned.fnContext = vnode.fnContext;
+ cloned.fnOptions = vnode.fnOptions;
+ cloned.fnScopeId = vnode.fnScopeId;
+ cloned.asyncMeta = vnode.asyncMeta;
+ cloned.isCloned = true;
+ return cloned
+}
+
+/*
+ * not type checking this file because flow doesn't play well with
+ * dynamically accessing methods on Array prototype
+ */
+
+var arrayProto = Array.prototype;
+var arrayMethods = Object.create(arrayProto);
+
+var methodsToPatch = [
+ 'push',
+ 'pop',
+ 'shift',
+ 'unshift',
+ 'splice',
+ 'sort',
+ 'reverse'
+];
+
+/**
+ * Intercept mutating methods and emit events
+ */
+methodsToPatch.forEach(function (method) {
+ // cache original method
+ var original = arrayProto[method];
+ def(arrayMethods, method, function mutator () {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ var result = original.apply(this, args);
+ var ob = this.__ob__;
+ var inserted;
+ switch (method) {
+ case 'push':
+ case 'unshift':
+ inserted = args;
+ break
+ case 'splice':
+ inserted = args.slice(2);
+ break
+ }
+ if (inserted) { ob.observeArray(inserted); }
+ // notify change
+ ob.dep.notify();
+ return result
+ });
+});
+
+/* */
+
+var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
+
+/**
+ * In some cases we may want to disable observation inside a component's
+ * update computation.
+ */
+var shouldObserve = true;
+
+function toggleObserving (value) {
+ shouldObserve = value;
+}
+
+/**
+ * Observer class that is attached to each observed
+ * object. Once attached, the observer converts the target
+ * object's property keys into getter/setters that
+ * collect dependencies and dispatch updates.
+ */
+var Observer = function Observer (value) {
+ this.value = value;
+ this.dep = new Dep();
+ this.vmCount = 0;
+ def(value, '__ob__', this);
+ if (Array.isArray(value)) {
+ if (hasProto) {
+ {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑
+ if(value.push !== value.__proto__.push){
+ copyAugment(value, arrayMethods, arrayKeys);
+ } else {
+ protoAugment(value, arrayMethods);
+ }
+ }
+ } else {
+ copyAugment(value, arrayMethods, arrayKeys);
+ }
+ this.observeArray(value);
+ } else {
+ this.walk(value);
+ }
+};
+
+/**
+ * Walk through all properties and convert them into
+ * getter/setters. This method should only be called when
+ * value type is Object.
+ */
+Observer.prototype.walk = function walk (obj) {
+ var keys = Object.keys(obj);
+ for (var i = 0; i < keys.length; i++) {
+ defineReactive$$1(obj, keys[i]);
+ }
+};
+
+/**
+ * Observe a list of Array items.
+ */
+Observer.prototype.observeArray = function observeArray (items) {
+ for (var i = 0, l = items.length; i < l; i++) {
+ observe(items[i]);
+ }
+};
+
+// helpers
+
+/**
+ * Augment a target Object or Array by intercepting
+ * the prototype chain using __proto__
+ */
+function protoAugment (target, src) {
+ /* eslint-disable no-proto */
+ target.__proto__ = src;
+ /* eslint-enable no-proto */
+}
+
+/**
+ * Augment a target Object or Array by defining
+ * hidden properties.
+ */
+/* istanbul ignore next */
+function copyAugment (target, src, keys) {
+ for (var i = 0, l = keys.length; i < l; i++) {
+ var key = keys[i];
+ def(target, key, src[key]);
+ }
+}
+
+/**
+ * Attempt to create an observer instance for a value,
+ * returns the new observer if successfully observed,
+ * or the existing observer if the value already has one.
+ */
+function observe (value, asRootData) {
+ if (!isObject(value) || value instanceof VNode) {
+ return
+ }
+ var ob;
+ if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
+ ob = value.__ob__;
+ } else if (
+ shouldObserve &&
+ !isServerRendering() &&
+ (Array.isArray(value) || isPlainObject(value)) &&
+ Object.isExtensible(value) &&
+ !value._isVue &&
+ !value.__v_isMPComponent
+ ) {
+ ob = new Observer(value);
+ }
+ if (asRootData && ob) {
+ ob.vmCount++;
+ }
+ return ob
+}
+
+/**
+ * Define a reactive property on an Object.
+ */
+function defineReactive$$1 (
+ obj,
+ key,
+ val,
+ customSetter,
+ shallow
+) {
+ var dep = new Dep();
+
+ var property = Object.getOwnPropertyDescriptor(obj, key);
+ if (property && property.configurable === false) {
+ return
+ }
+
+ // cater for pre-defined getter/setters
+ var getter = property && property.get;
+ var setter = property && property.set;
+ if ((!getter || setter) && arguments.length === 2) {
+ val = obj[key];
+ }
+
+ var childOb = !shallow && observe(val);
+ Object.defineProperty(obj, key, {
+ enumerable: true,
+ configurable: true,
+ get: function reactiveGetter () {
+ var value = getter ? getter.call(obj) : val;
+ if (Dep.SharedObject.target) { // fixed by xxxxxx
+ dep.depend();
+ if (childOb) {
+ childOb.dep.depend();
+ if (Array.isArray(value)) {
+ dependArray(value);
+ }
+ }
+ }
+ return value
+ },
+ set: function reactiveSetter (newVal) {
+ var value = getter ? getter.call(obj) : val;
+ /* eslint-disable no-self-compare */
+ if (newVal === value || (newVal !== newVal && value !== value)) {
+ return
+ }
+ /* eslint-enable no-self-compare */
+ if ( true && customSetter) {
+ customSetter();
+ }
+ // #7981: for accessor properties without setter
+ if (getter && !setter) { return }
+ if (setter) {
+ setter.call(obj, newVal);
+ } else {
+ val = newVal;
+ }
+ childOb = !shallow && observe(newVal);
+ dep.notify();
+ }
+ });
+}
+
+/**
+ * Set a property on an object. Adds the new property and
+ * triggers change notification if the property doesn't
+ * already exist.
+ */
+function set (target, key, val) {
+ if ( true &&
+ (isUndef(target) || isPrimitive(target))
+ ) {
+ warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
+ }
+ if (Array.isArray(target) && isValidArrayIndex(key)) {
+ target.length = Math.max(target.length, key);
+ target.splice(key, 1, val);
+ return val
+ }
+ if (key in target && !(key in Object.prototype)) {
+ target[key] = val;
+ return val
+ }
+ var ob = (target).__ob__;
+ if (target._isVue || (ob && ob.vmCount)) {
+ true && warn(
+ 'Avoid adding reactive properties to a Vue instance or its root $data ' +
+ 'at runtime - declare it upfront in the data option.'
+ );
+ return val
+ }
+ if (!ob) {
+ target[key] = val;
+ return val
+ }
+ defineReactive$$1(ob.value, key, val);
+ ob.dep.notify();
+ return val
+}
+
+/**
+ * Delete a property and trigger change if necessary.
+ */
+function del (target, key) {
+ if ( true &&
+ (isUndef(target) || isPrimitive(target))
+ ) {
+ warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
+ }
+ if (Array.isArray(target) && isValidArrayIndex(key)) {
+ target.splice(key, 1);
+ return
+ }
+ var ob = (target).__ob__;
+ if (target._isVue || (ob && ob.vmCount)) {
+ true && warn(
+ 'Avoid deleting properties on a Vue instance or its root $data ' +
+ '- just set it to null.'
+ );
+ return
+ }
+ if (!hasOwn(target, key)) {
+ return
+ }
+ delete target[key];
+ if (!ob) {
+ return
+ }
+ ob.dep.notify();
+}
+
+/**
+ * Collect dependencies on array elements when the array is touched, since
+ * we cannot intercept array element access like property getters.
+ */
+function dependArray (value) {
+ for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
+ e = value[i];
+ e && e.__ob__ && e.__ob__.dep.depend();
+ if (Array.isArray(e)) {
+ dependArray(e);
+ }
+ }
+}
+
+/* */
+
+/**
+ * Option overwriting strategies are functions that handle
+ * how to merge a parent option value and a child option
+ * value into the final value.
+ */
+var strats = config.optionMergeStrategies;
+
+/**
+ * Options with restrictions
+ */
+if (true) {
+ strats.el = strats.propsData = function (parent, child, vm, key) {
+ if (!vm) {
+ warn(
+ "option \"" + key + "\" can only be used during instance " +
+ 'creation with the `new` keyword.'
+ );
+ }
+ return defaultStrat(parent, child)
+ };
+}
+
+/**
+ * Helper that recursively merges two data objects together.
+ */
+function mergeData (to, from) {
+ if (!from) { return to }
+ var key, toVal, fromVal;
+
+ var keys = hasSymbol
+ ? Reflect.ownKeys(from)
+ : Object.keys(from);
+
+ for (var i = 0; i < keys.length; i++) {
+ key = keys[i];
+ // in case the object is already observed...
+ if (key === '__ob__') { continue }
+ toVal = to[key];
+ fromVal = from[key];
+ if (!hasOwn(to, key)) {
+ set(to, key, fromVal);
+ } else if (
+ toVal !== fromVal &&
+ isPlainObject(toVal) &&
+ isPlainObject(fromVal)
+ ) {
+ mergeData(toVal, fromVal);
+ }
+ }
+ return to
+}
+
+/**
+ * Data
+ */
+function mergeDataOrFn (
+ parentVal,
+ childVal,
+ vm
+) {
+ if (!vm) {
+ // in a Vue.extend merge, both should be functions
+ if (!childVal) {
+ return parentVal
+ }
+ if (!parentVal) {
+ return childVal
+ }
+ // when parentVal & childVal are both present,
+ // we need to return a function that returns the
+ // merged result of both functions... no need to
+ // check if parentVal is a function here because
+ // it has to be a function to pass previous merges.
+ return function mergedDataFn () {
+ return mergeData(
+ typeof childVal === 'function' ? childVal.call(this, this) : childVal,
+ typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
+ )
+ }
+ } else {
+ return function mergedInstanceDataFn () {
+ // instance merge
+ var instanceData = typeof childVal === 'function'
+ ? childVal.call(vm, vm)
+ : childVal;
+ var defaultData = typeof parentVal === 'function'
+ ? parentVal.call(vm, vm)
+ : parentVal;
+ if (instanceData) {
+ return mergeData(instanceData, defaultData)
+ } else {
+ return defaultData
+ }
+ }
+ }
+}
+
+strats.data = function (
+ parentVal,
+ childVal,
+ vm
+) {
+ if (!vm) {
+ if (childVal && typeof childVal !== 'function') {
+ true && warn(
+ 'The "data" option should be a function ' +
+ 'that returns a per-instance value in component ' +
+ 'definitions.',
+ vm
+ );
+
+ return parentVal
+ }
+ return mergeDataOrFn(parentVal, childVal)
+ }
+
+ return mergeDataOrFn(parentVal, childVal, vm)
+};
+
+/**
+ * Hooks and props are merged as arrays.
+ */
+function mergeHook (
+ parentVal,
+ childVal
+) {
+ var res = childVal
+ ? parentVal
+ ? parentVal.concat(childVal)
+ : Array.isArray(childVal)
+ ? childVal
+ : [childVal]
+ : parentVal;
+ return res
+ ? dedupeHooks(res)
+ : res
+}
+
+function dedupeHooks (hooks) {
+ var res = [];
+ for (var i = 0; i < hooks.length; i++) {
+ if (res.indexOf(hooks[i]) === -1) {
+ res.push(hooks[i]);
+ }
+ }
+ return res
+}
+
+LIFECYCLE_HOOKS.forEach(function (hook) {
+ strats[hook] = mergeHook;
+});
+
+/**
+ * Assets
+ *
+ * When a vm is present (instance creation), we need to do
+ * a three-way merge between constructor options, instance
+ * options and parent options.
+ */
+function mergeAssets (
+ parentVal,
+ childVal,
+ vm,
+ key
+) {
+ var res = Object.create(parentVal || null);
+ if (childVal) {
+ true && assertObjectType(key, childVal, vm);
+ return extend(res, childVal)
+ } else {
+ return res
+ }
+}
+
+ASSET_TYPES.forEach(function (type) {
+ strats[type + 's'] = mergeAssets;
+});
+
+/**
+ * Watchers.
+ *
+ * Watchers hashes should not overwrite one
+ * another, so we merge them as arrays.
+ */
+strats.watch = function (
+ parentVal,
+ childVal,
+ vm,
+ key
+) {
+ // work around Firefox's Object.prototype.watch...
+ if (parentVal === nativeWatch) { parentVal = undefined; }
+ if (childVal === nativeWatch) { childVal = undefined; }
+ /* istanbul ignore if */
+ if (!childVal) { return Object.create(parentVal || null) }
+ if (true) {
+ assertObjectType(key, childVal, vm);
+ }
+ if (!parentVal) { return childVal }
+ var ret = {};
+ extend(ret, parentVal);
+ for (var key$1 in childVal) {
+ var parent = ret[key$1];
+ var child = childVal[key$1];
+ if (parent && !Array.isArray(parent)) {
+ parent = [parent];
+ }
+ ret[key$1] = parent
+ ? parent.concat(child)
+ : Array.isArray(child) ? child : [child];
+ }
+ return ret
+};
+
+/**
+ * Other object hashes.
+ */
+strats.props =
+strats.methods =
+strats.inject =
+strats.computed = function (
+ parentVal,
+ childVal,
+ vm,
+ key
+) {
+ if (childVal && "development" !== 'production') {
+ assertObjectType(key, childVal, vm);
+ }
+ if (!parentVal) { return childVal }
+ var ret = Object.create(null);
+ extend(ret, parentVal);
+ if (childVal) { extend(ret, childVal); }
+ return ret
+};
+strats.provide = mergeDataOrFn;
+
+/**
+ * Default strategy.
+ */
+var defaultStrat = function (parentVal, childVal) {
+ return childVal === undefined
+ ? parentVal
+ : childVal
+};
+
+/**
+ * Validate component names
+ */
+function checkComponents (options) {
+ for (var key in options.components) {
+ validateComponentName(key);
+ }
+}
+
+function validateComponentName (name) {
+ if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
+ warn(
+ 'Invalid component name: "' + name + '". Component names ' +
+ 'should conform to valid custom element name in html5 specification.'
+ );
+ }
+ if (isBuiltInTag(name) || config.isReservedTag(name)) {
+ warn(
+ 'Do not use built-in or reserved HTML elements as component ' +
+ 'id: ' + name
+ );
+ }
+}
+
+/**
+ * Ensure all props option syntax are normalized into the
+ * Object-based format.
+ */
+function normalizeProps (options, vm) {
+ var props = options.props;
+ if (!props) { return }
+ var res = {};
+ var i, val, name;
+ if (Array.isArray(props)) {
+ i = props.length;
+ while (i--) {
+ val = props[i];
+ if (typeof val === 'string') {
+ name = camelize(val);
+ res[name] = { type: null };
+ } else if (true) {
+ warn('props must be strings when using array syntax.');
+ }
+ }
+ } else if (isPlainObject(props)) {
+ for (var key in props) {
+ val = props[key];
+ name = camelize(key);
+ res[name] = isPlainObject(val)
+ ? val
+ : { type: val };
+ }
+ } else if (true) {
+ warn(
+ "Invalid value for option \"props\": expected an Array or an Object, " +
+ "but got " + (toRawType(props)) + ".",
+ vm
+ );
+ }
+ options.props = res;
+}
+
+/**
+ * Normalize all injections into Object-based format
+ */
+function normalizeInject (options, vm) {
+ var inject = options.inject;
+ if (!inject) { return }
+ var normalized = options.inject = {};
+ if (Array.isArray(inject)) {
+ for (var i = 0; i < inject.length; i++) {
+ normalized[inject[i]] = { from: inject[i] };
+ }
+ } else if (isPlainObject(inject)) {
+ for (var key in inject) {
+ var val = inject[key];
+ normalized[key] = isPlainObject(val)
+ ? extend({ from: key }, val)
+ : { from: val };
+ }
+ } else if (true) {
+ warn(
+ "Invalid value for option \"inject\": expected an Array or an Object, " +
+ "but got " + (toRawType(inject)) + ".",
+ vm
+ );
+ }
+}
+
+/**
+ * Normalize raw function directives into object format.
+ */
+function normalizeDirectives (options) {
+ var dirs = options.directives;
+ if (dirs) {
+ for (var key in dirs) {
+ var def$$1 = dirs[key];
+ if (typeof def$$1 === 'function') {
+ dirs[key] = { bind: def$$1, update: def$$1 };
+ }
+ }
+ }
+}
+
+function assertObjectType (name, value, vm) {
+ if (!isPlainObject(value)) {
+ warn(
+ "Invalid value for option \"" + name + "\": expected an Object, " +
+ "but got " + (toRawType(value)) + ".",
+ vm
+ );
+ }
+}
+
+/**
+ * Merge two option objects into a new one.
+ * Core utility used in both instantiation and inheritance.
+ */
+function mergeOptions (
+ parent,
+ child,
+ vm
+) {
+ if (true) {
+ checkComponents(child);
+ }
+
+ if (typeof child === 'function') {
+ child = child.options;
+ }
+
+ normalizeProps(child, vm);
+ normalizeInject(child, vm);
+ normalizeDirectives(child);
+
+ // Apply extends and mixins on the child options,
+ // but only if it is a raw options object that isn't
+ // the result of another mergeOptions call.
+ // Only merged options has the _base property.
+ if (!child._base) {
+ if (child.extends) {
+ parent = mergeOptions(parent, child.extends, vm);
+ }
+ if (child.mixins) {
+ for (var i = 0, l = child.mixins.length; i < l; i++) {
+ parent = mergeOptions(parent, child.mixins[i], vm);
+ }
+ }
+ }
+
+ var options = {};
+ var key;
+ for (key in parent) {
+ mergeField(key);
+ }
+ for (key in child) {
+ if (!hasOwn(parent, key)) {
+ mergeField(key);
+ }
+ }
+ function mergeField (key) {
+ var strat = strats[key] || defaultStrat;
+ options[key] = strat(parent[key], child[key], vm, key);
+ }
+ return options
+}
+
+/**
+ * Resolve an asset.
+ * This function is used because child instances need access
+ * to assets defined in its ancestor chain.
+ */
+function resolveAsset (
+ options,
+ type,
+ id,
+ warnMissing
+) {
+ /* istanbul ignore if */
+ if (typeof id !== 'string') {
+ return
+ }
+ var assets = options[type];
+ // check local registration variations first
+ if (hasOwn(assets, id)) { return assets[id] }
+ var camelizedId = camelize(id);
+ if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
+ var PascalCaseId = capitalize(camelizedId);
+ if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
+ // fallback to prototype chain
+ var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
+ if ( true && warnMissing && !res) {
+ warn(
+ 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
+ options
+ );
+ }
+ return res
+}
+
+/* */
+
+
+
+function validateProp (
+ key,
+ propOptions,
+ propsData,
+ vm
+) {
+ var prop = propOptions[key];
+ var absent = !hasOwn(propsData, key);
+ var value = propsData[key];
+ // boolean casting
+ var booleanIndex = getTypeIndex(Boolean, prop.type);
+ if (booleanIndex > -1) {
+ if (absent && !hasOwn(prop, 'default')) {
+ value = false;
+ } else if (value === '' || value === hyphenate(key)) {
+ // only cast empty string / same name to boolean if
+ // boolean has higher priority
+ var stringIndex = getTypeIndex(String, prop.type);
+ if (stringIndex < 0 || booleanIndex < stringIndex) {
+ value = true;
+ }
+ }
+ }
+ // check default value
+ if (value === undefined) {
+ value = getPropDefaultValue(vm, prop, key);
+ // since the default value is a fresh copy,
+ // make sure to observe it.
+ var prevShouldObserve = shouldObserve;
+ toggleObserving(true);
+ observe(value);
+ toggleObserving(prevShouldObserve);
+ }
+ if (
+ true
+ ) {
+ assertProp(prop, key, value, vm, absent);
+ }
+ return value
+}
+
+/**
+ * Get the default value of a prop.
+ */
+function getPropDefaultValue (vm, prop, key) {
+ // no default, return undefined
+ if (!hasOwn(prop, 'default')) {
+ return undefined
+ }
+ var def = prop.default;
+ // warn against non-factory defaults for Object & Array
+ if ( true && isObject(def)) {
+ warn(
+ 'Invalid default value for prop "' + key + '": ' +
+ 'Props with type Object/Array must use a factory function ' +
+ 'to return the default value.',
+ vm
+ );
+ }
+ // the raw prop value was also undefined from previous render,
+ // return previous default value to avoid unnecessary watcher trigger
+ if (vm && vm.$options.propsData &&
+ vm.$options.propsData[key] === undefined &&
+ vm._props[key] !== undefined
+ ) {
+ return vm._props[key]
+ }
+ // call factory function for non-Function types
+ // a value is Function if its prototype is function even across different execution context
+ return typeof def === 'function' && getType(prop.type) !== 'Function'
+ ? def.call(vm)
+ : def
+}
+
+/**
+ * Assert whether a prop is valid.
+ */
+function assertProp (
+ prop,
+ name,
+ value,
+ vm,
+ absent
+) {
+ if (prop.required && absent) {
+ warn(
+ 'Missing required prop: "' + name + '"',
+ vm
+ );
+ return
+ }
+ if (value == null && !prop.required) {
+ return
+ }
+ var type = prop.type;
+ var valid = !type || type === true;
+ var expectedTypes = [];
+ if (type) {
+ if (!Array.isArray(type)) {
+ type = [type];
+ }
+ for (var i = 0; i < type.length && !valid; i++) {
+ var assertedType = assertType(value, type[i]);
+ expectedTypes.push(assertedType.expectedType || '');
+ valid = assertedType.valid;
+ }
+ }
+
+ if (!valid) {
+ warn(
+ getInvalidTypeMessage(name, value, expectedTypes),
+ vm
+ );
+ return
+ }
+ var validator = prop.validator;
+ if (validator) {
+ if (!validator(value)) {
+ warn(
+ 'Invalid prop: custom validator check failed for prop "' + name + '".',
+ vm
+ );
+ }
+ }
+}
+
+var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
+
+function assertType (value, type) {
+ var valid;
+ var expectedType = getType(type);
+ if (simpleCheckRE.test(expectedType)) {
+ var t = typeof value;
+ valid = t === expectedType.toLowerCase();
+ // for primitive wrapper objects
+ if (!valid && t === 'object') {
+ valid = value instanceof type;
+ }
+ } else if (expectedType === 'Object') {
+ valid = isPlainObject(value);
+ } else if (expectedType === 'Array') {
+ valid = Array.isArray(value);
+ } else {
+ valid = value instanceof type;
+ }
+ return {
+ valid: valid,
+ expectedType: expectedType
+ }
+}
+
+/**
+ * Use function string name to check built-in types,
+ * because a simple equality check will fail when running
+ * across different vms / iframes.
+ */
+function getType (fn) {
+ var match = fn && fn.toString().match(/^\s*function (\w+)/);
+ return match ? match[1] : ''
+}
+
+function isSameType (a, b) {
+ return getType(a) === getType(b)
+}
+
+function getTypeIndex (type, expectedTypes) {
+ if (!Array.isArray(expectedTypes)) {
+ return isSameType(expectedTypes, type) ? 0 : -1
+ }
+ for (var i = 0, len = expectedTypes.length; i < len; i++) {
+ if (isSameType(expectedTypes[i], type)) {
+ return i
+ }
+ }
+ return -1
+}
+
+function getInvalidTypeMessage (name, value, expectedTypes) {
+ var message = "Invalid prop: type check failed for prop \"" + name + "\"." +
+ " Expected " + (expectedTypes.map(capitalize).join(', '));
+ var expectedType = expectedTypes[0];
+ var receivedType = toRawType(value);
+ var expectedValue = styleValue(value, expectedType);
+ var receivedValue = styleValue(value, receivedType);
+ // check if we need to specify expected value
+ if (expectedTypes.length === 1 &&
+ isExplicable(expectedType) &&
+ !isBoolean(expectedType, receivedType)) {
+ message += " with value " + expectedValue;
+ }
+ message += ", got " + receivedType + " ";
+ // check if we need to specify received value
+ if (isExplicable(receivedType)) {
+ message += "with value " + receivedValue + ".";
+ }
+ return message
+}
+
+function styleValue (value, type) {
+ if (type === 'String') {
+ return ("\"" + value + "\"")
+ } else if (type === 'Number') {
+ return ("" + (Number(value)))
+ } else {
+ return ("" + value)
+ }
+}
+
+function isExplicable (value) {
+ var explicitTypes = ['string', 'number', 'boolean'];
+ return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })
+}
+
+function isBoolean () {
+ var args = [], len = arguments.length;
+ while ( len-- ) args[ len ] = arguments[ len ];
+
+ return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })
+}
+
+/* */
+
+function handleError (err, vm, info) {
+ // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
+ // See: https://github.com/vuejs/vuex/issues/1505
+ pushTarget();
+ try {
+ if (vm) {
+ var cur = vm;
+ while ((cur = cur.$parent)) {
+ var hooks = cur.$options.errorCaptured;
+ if (hooks) {
+ for (var i = 0; i < hooks.length; i++) {
+ try {
+ var capture = hooks[i].call(cur, err, vm, info) === false;
+ if (capture) { return }
+ } catch (e) {
+ globalHandleError(e, cur, 'errorCaptured hook');
+ }
+ }
+ }
+ }
+ }
+ globalHandleError(err, vm, info);
+ } finally {
+ popTarget();
+ }
+}
+
+function invokeWithErrorHandling (
+ handler,
+ context,
+ args,
+ vm,
+ info
+) {
+ var res;
+ try {
+ res = args ? handler.apply(context, args) : handler.call(context);
+ if (res && !res._isVue && isPromise(res) && !res._handled) {
+ res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
+ // issue #9511
+ // avoid catch triggering multiple times when nested calls
+ res._handled = true;
+ }
+ } catch (e) {
+ handleError(e, vm, info);
+ }
+ return res
+}
+
+function globalHandleError (err, vm, info) {
+ if (config.errorHandler) {
+ try {
+ return config.errorHandler.call(null, err, vm, info)
+ } catch (e) {
+ // if the user intentionally throws the original error in the handler,
+ // do not log it twice
+ if (e !== err) {
+ logError(e, null, 'config.errorHandler');
+ }
+ }
+ }
+ logError(err, vm, info);
+}
+
+function logError (err, vm, info) {
+ if (true) {
+ warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
+ }
+ /* istanbul ignore else */
+ if ((inBrowser || inWeex) && typeof console !== 'undefined') {
+ console.error(err);
+ } else {
+ throw err
+ }
+}
+
+/* */
+
+var callbacks = [];
+var pending = false;
+
+function flushCallbacks () {
+ pending = false;
+ var copies = callbacks.slice(0);
+ callbacks.length = 0;
+ for (var i = 0; i < copies.length; i++) {
+ copies[i]();
+ }
+}
+
+// Here we have async deferring wrappers using microtasks.
+// In 2.5 we used (macro) tasks (in combination with microtasks).
+// However, it has subtle problems when state is changed right before repaint
+// (e.g. #6813, out-in transitions).
+// Also, using (macro) tasks in event handler would cause some weird behaviors
+// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
+// So we now use microtasks everywhere, again.
+// A major drawback of this tradeoff is that there are some scenarios
+// where microtasks have too high a priority and fire in between supposedly
+// sequential events (e.g. #4521, #6690, which have workarounds)
+// or even between bubbling of the same event (#6566).
+var timerFunc;
+
+// The nextTick behavior leverages the microtask queue, which can be accessed
+// via either native Promise.then or MutationObserver.
+// MutationObserver has wider support, however it is seriously bugged in
+// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
+// completely stops working after triggering a few times... so, if native
+// Promise is available, we will use it:
+/* istanbul ignore next, $flow-disable-line */
+if (typeof Promise !== 'undefined' && isNative(Promise)) {
+ var p = Promise.resolve();
+ timerFunc = function () {
+ p.then(flushCallbacks);
+ // In problematic UIWebViews, Promise.then doesn't completely break, but
+ // it can get stuck in a weird state where callbacks are pushed into the
+ // microtask queue but the queue isn't being flushed, until the browser
+ // needs to do some other work, e.g. handle a timer. Therefore we can
+ // "force" the microtask queue to be flushed by adding an empty timer.
+ if (isIOS) { setTimeout(noop); }
+ };
+} else if (!isIE && typeof MutationObserver !== 'undefined' && (
+ isNative(MutationObserver) ||
+ // PhantomJS and iOS 7.x
+ MutationObserver.toString() === '[object MutationObserverConstructor]'
+)) {
+ // Use MutationObserver where native Promise is not available,
+ // e.g. PhantomJS, iOS7, Android 4.4
+ // (#6466 MutationObserver is unreliable in IE11)
+ var counter = 1;
+ var observer = new MutationObserver(flushCallbacks);
+ var textNode = document.createTextNode(String(counter));
+ observer.observe(textNode, {
+ characterData: true
+ });
+ timerFunc = function () {
+ counter = (counter + 1) % 2;
+ textNode.data = String(counter);
+ };
+} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
+ // Fallback to setImmediate.
+ // Technically it leverages the (macro) task queue,
+ // but it is still a better choice than setTimeout.
+ timerFunc = function () {
+ setImmediate(flushCallbacks);
+ };
+} else {
+ // Fallback to setTimeout.
+ timerFunc = function () {
+ setTimeout(flushCallbacks, 0);
+ };
+}
+
+function nextTick (cb, ctx) {
+ var _resolve;
+ callbacks.push(function () {
+ if (cb) {
+ try {
+ cb.call(ctx);
+ } catch (e) {
+ handleError(e, ctx, 'nextTick');
+ }
+ } else if (_resolve) {
+ _resolve(ctx);
+ }
+ });
+ if (!pending) {
+ pending = true;
+ timerFunc();
+ }
+ // $flow-disable-line
+ if (!cb && typeof Promise !== 'undefined') {
+ return new Promise(function (resolve) {
+ _resolve = resolve;
+ })
+ }
+}
+
+/* */
+
+/* not type checking this file because flow doesn't play well with Proxy */
+
+var initProxy;
+
+if (true) {
+ var allowedGlobals = makeMap(
+ 'Infinity,undefined,NaN,isFinite,isNaN,' +
+ 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
+ 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
+ 'require' // for Webpack/Browserify
+ );
+
+ var warnNonPresent = function (target, key) {
+ warn(
+ "Property or method \"" + key + "\" is not defined on the instance but " +
+ 'referenced during render. Make sure that this property is reactive, ' +
+ 'either in the data option, or for class-based components, by ' +
+ 'initializing the property. ' +
+ 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
+ target
+ );
+ };
+
+ var warnReservedPrefix = function (target, key) {
+ warn(
+ "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " +
+ 'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
+ 'prevent conflicts with Vue internals. ' +
+ 'See: https://vuejs.org/v2/api/#data',
+ target
+ );
+ };
+
+ var hasProxy =
+ typeof Proxy !== 'undefined' && isNative(Proxy);
+
+ if (hasProxy) {
+ var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
+ config.keyCodes = new Proxy(config.keyCodes, {
+ set: function set (target, key, value) {
+ if (isBuiltInModifier(key)) {
+ warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
+ return false
+ } else {
+ target[key] = value;
+ return true
+ }
+ }
+ });
+ }
+
+ var hasHandler = {
+ has: function has (target, key) {
+ var has = key in target;
+ var isAllowed = allowedGlobals(key) ||
+ (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));
+ if (!has && !isAllowed) {
+ if (key in target.$data) { warnReservedPrefix(target, key); }
+ else { warnNonPresent(target, key); }
+ }
+ return has || !isAllowed
+ }
+ };
+
+ var getHandler = {
+ get: function get (target, key) {
+ if (typeof key === 'string' && !(key in target)) {
+ if (key in target.$data) { warnReservedPrefix(target, key); }
+ else { warnNonPresent(target, key); }
+ }
+ return target[key]
+ }
+ };
+
+ initProxy = function initProxy (vm) {
+ if (hasProxy) {
+ // determine which proxy handler to use
+ var options = vm.$options;
+ var handlers = options.render && options.render._withStripped
+ ? getHandler
+ : hasHandler;
+ vm._renderProxy = new Proxy(vm, handlers);
+ } else {
+ vm._renderProxy = vm;
+ }
+ };
+}
+
+/* */
+
+var seenObjects = new _Set();
+
+/**
+ * Recursively traverse an object to evoke all converted
+ * getters, so that every nested property inside the object
+ * is collected as a "deep" dependency.
+ */
+function traverse (val) {
+ _traverse(val, seenObjects);
+ seenObjects.clear();
+}
+
+function _traverse (val, seen) {
+ var i, keys;
+ var isA = Array.isArray(val);
+ if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
+ return
+ }
+ if (val.__ob__) {
+ var depId = val.__ob__.dep.id;
+ if (seen.has(depId)) {
+ return
+ }
+ seen.add(depId);
+ }
+ if (isA) {
+ i = val.length;
+ while (i--) { _traverse(val[i], seen); }
+ } else {
+ keys = Object.keys(val);
+ i = keys.length;
+ while (i--) { _traverse(val[keys[i]], seen); }
+ }
+}
+
+var mark;
+var measure;
+
+if (true) {
+ var perf = inBrowser && window.performance;
+ /* istanbul ignore if */
+ if (
+ perf &&
+ perf.mark &&
+ perf.measure &&
+ perf.clearMarks &&
+ perf.clearMeasures
+ ) {
+ mark = function (tag) { return perf.mark(tag); };
+ measure = function (name, startTag, endTag) {
+ perf.measure(name, startTag, endTag);
+ perf.clearMarks(startTag);
+ perf.clearMarks(endTag);
+ // perf.clearMeasures(name)
+ };
+ }
+}
+
+/* */
+
+var normalizeEvent = cached(function (name) {
+ var passive = name.charAt(0) === '&';
+ name = passive ? name.slice(1) : name;
+ var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
+ name = once$$1 ? name.slice(1) : name;
+ var capture = name.charAt(0) === '!';
+ name = capture ? name.slice(1) : name;
+ return {
+ name: name,
+ once: once$$1,
+ capture: capture,
+ passive: passive
+ }
+});
+
+function createFnInvoker (fns, vm) {
+ function invoker () {
+ var arguments$1 = arguments;
+
+ var fns = invoker.fns;
+ if (Array.isArray(fns)) {
+ var cloned = fns.slice();
+ for (var i = 0; i < cloned.length; i++) {
+ invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
+ }
+ } else {
+ // return handler return value for single handlers
+ return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler")
+ }
+ }
+ invoker.fns = fns;
+ return invoker
+}
+
+function updateListeners (
+ on,
+ oldOn,
+ add,
+ remove$$1,
+ createOnceHandler,
+ vm
+) {
+ var name, def$$1, cur, old, event;
+ for (name in on) {
+ def$$1 = cur = on[name];
+ old = oldOn[name];
+ event = normalizeEvent(name);
+ if (isUndef(cur)) {
+ true && warn(
+ "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
+ vm
+ );
+ } else if (isUndef(old)) {
+ if (isUndef(cur.fns)) {
+ cur = on[name] = createFnInvoker(cur, vm);
+ }
+ if (isTrue(event.once)) {
+ cur = on[name] = createOnceHandler(event.name, cur, event.capture);
+ }
+ add(event.name, cur, event.capture, event.passive, event.params);
+ } else if (cur !== old) {
+ old.fns = cur;
+ on[name] = old;
+ }
+ }
+ for (name in oldOn) {
+ if (isUndef(on[name])) {
+ event = normalizeEvent(name);
+ remove$$1(event.name, oldOn[name], event.capture);
+ }
+ }
+}
+
+/* */
+
+/* */
+
+// fixed by xxxxxx (mp properties)
+function extractPropertiesFromVNodeData(data, Ctor, res, context) {
+ var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;
+ if (isUndef(propOptions)) {
+ return res
+ }
+ var externalClasses = Ctor.options.mpOptions.externalClasses || [];
+ var attrs = data.attrs;
+ var props = data.props;
+ if (isDef(attrs) || isDef(props)) {
+ for (var key in propOptions) {
+ var altKey = hyphenate(key);
+ var result = checkProp(res, props, key, altKey, true) ||
+ checkProp(res, attrs, key, altKey, false);
+ // externalClass
+ if (
+ result &&
+ res[key] &&
+ externalClasses.indexOf(altKey) !== -1 &&
+ context[camelize(res[key])]
+ ) {
+ // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)
+ res[key] = context[camelize(res[key])];
+ }
+ }
+ }
+ return res
+}
+
+function extractPropsFromVNodeData (
+ data,
+ Ctor,
+ tag,
+ context// fixed by xxxxxx
+) {
+ // we are only extracting raw values here.
+ // validation and default values are handled in the child
+ // component itself.
+ var propOptions = Ctor.options.props;
+ if (isUndef(propOptions)) {
+ // fixed by xxxxxx
+ return extractPropertiesFromVNodeData(data, Ctor, {}, context)
+ }
+ var res = {};
+ var attrs = data.attrs;
+ var props = data.props;
+ if (isDef(attrs) || isDef(props)) {
+ for (var key in propOptions) {
+ var altKey = hyphenate(key);
+ if (true) {
+ var keyInLowerCase = key.toLowerCase();
+ if (
+ key !== keyInLowerCase &&
+ attrs && hasOwn(attrs, keyInLowerCase)
+ ) {
+ tip(
+ "Prop \"" + keyInLowerCase + "\" is passed to component " +
+ (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
+ " \"" + key + "\". " +
+ "Note that HTML attributes are case-insensitive and camelCased " +
+ "props need to use their kebab-case equivalents when using in-DOM " +
+ "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
+ );
+ }
+ }
+ checkProp(res, props, key, altKey, true) ||
+ checkProp(res, attrs, key, altKey, false);
+ }
+ }
+ // fixed by xxxxxx
+ return extractPropertiesFromVNodeData(data, Ctor, res, context)
+}
+
+function checkProp (
+ res,
+ hash,
+ key,
+ altKey,
+ preserve
+) {
+ if (isDef(hash)) {
+ if (hasOwn(hash, key)) {
+ res[key] = hash[key];
+ if (!preserve) {
+ delete hash[key];
+ }
+ return true
+ } else if (hasOwn(hash, altKey)) {
+ res[key] = hash[altKey];
+ if (!preserve) {
+ delete hash[altKey];
+ }
+ return true
+ }
+ }
+ return false
+}
+
+/* */
+
+// The template compiler attempts to minimize the need for normalization by
+// statically analyzing the template at compile time.
+//
+// For plain HTML markup, normalization can be completely skipped because the
+// generated render function is guaranteed to return Array. There are
+// two cases where extra normalization is needed:
+
+// 1. When the children contains components - because a functional component
+// may return an Array instead of a single root. In this case, just a simple
+// normalization is needed - if any child is an Array, we flatten the whole
+// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
+// because functional components already normalize their own children.
+function simpleNormalizeChildren (children) {
+ for (var i = 0; i < children.length; i++) {
+ if (Array.isArray(children[i])) {
+ return Array.prototype.concat.apply([], children)
+ }
+ }
+ return children
+}
+
+// 2. When the children contains constructs that always generated nested Arrays,
+// e.g. , , v-for, or when the children is provided by user
+// with hand-written render functions / JSX. In such cases a full normalization
+// is needed to cater to all possible types of children values.
+function normalizeChildren (children) {
+ return isPrimitive(children)
+ ? [createTextVNode(children)]
+ : Array.isArray(children)
+ ? normalizeArrayChildren(children)
+ : undefined
+}
+
+function isTextNode (node) {
+ return isDef(node) && isDef(node.text) && isFalse(node.isComment)
+}
+
+function normalizeArrayChildren (children, nestedIndex) {
+ var res = [];
+ var i, c, lastIndex, last;
+ for (i = 0; i < children.length; i++) {
+ c = children[i];
+ if (isUndef(c) || typeof c === 'boolean') { continue }
+ lastIndex = res.length - 1;
+ last = res[lastIndex];
+ // nested
+ if (Array.isArray(c)) {
+ if (c.length > 0) {
+ c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
+ // merge adjacent text nodes
+ if (isTextNode(c[0]) && isTextNode(last)) {
+ res[lastIndex] = createTextVNode(last.text + (c[0]).text);
+ c.shift();
+ }
+ res.push.apply(res, c);
+ }
+ } else if (isPrimitive(c)) {
+ if (isTextNode(last)) {
+ // merge adjacent text nodes
+ // this is necessary for SSR hydration because text nodes are
+ // essentially merged when rendered to HTML strings
+ res[lastIndex] = createTextVNode(last.text + c);
+ } else if (c !== '') {
+ // convert primitive to vnode
+ res.push(createTextVNode(c));
+ }
+ } else {
+ if (isTextNode(c) && isTextNode(last)) {
+ // merge adjacent text nodes
+ res[lastIndex] = createTextVNode(last.text + c.text);
+ } else {
+ // default key for nested array children (likely generated by v-for)
+ if (isTrue(children._isVList) &&
+ isDef(c.tag) &&
+ isUndef(c.key) &&
+ isDef(nestedIndex)) {
+ c.key = "__vlist" + nestedIndex + "_" + i + "__";
+ }
+ res.push(c);
+ }
+ }
+ }
+ return res
+}
+
+/* */
+
+function initProvide (vm) {
+ var provide = vm.$options.provide;
+ if (provide) {
+ vm._provided = typeof provide === 'function'
+ ? provide.call(vm)
+ : provide;
+ }
+}
+
+function initInjections (vm) {
+ var result = resolveInject(vm.$options.inject, vm);
+ if (result) {
+ toggleObserving(false);
+ Object.keys(result).forEach(function (key) {
+ /* istanbul ignore else */
+ if (true) {
+ defineReactive$$1(vm, key, result[key], function () {
+ warn(
+ "Avoid mutating an injected value directly since the changes will be " +
+ "overwritten whenever the provided component re-renders. " +
+ "injection being mutated: \"" + key + "\"",
+ vm
+ );
+ });
+ } else {}
+ });
+ toggleObserving(true);
+ }
+}
+
+function resolveInject (inject, vm) {
+ if (inject) {
+ // inject is :any because flow is not smart enough to figure out cached
+ var result = Object.create(null);
+ var keys = hasSymbol
+ ? Reflect.ownKeys(inject)
+ : Object.keys(inject);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ // #6574 in case the inject object is observed...
+ if (key === '__ob__') { continue }
+ var provideKey = inject[key].from;
+ var source = vm;
+ while (source) {
+ if (source._provided && hasOwn(source._provided, provideKey)) {
+ result[key] = source._provided[provideKey];
+ break
+ }
+ source = source.$parent;
+ }
+ if (!source) {
+ if ('default' in inject[key]) {
+ var provideDefault = inject[key].default;
+ result[key] = typeof provideDefault === 'function'
+ ? provideDefault.call(vm)
+ : provideDefault;
+ } else if (true) {
+ warn(("Injection \"" + key + "\" not found"), vm);
+ }
+ }
+ }
+ return result
+ }
+}
+
+/* */
+
+
+
+/**
+ * Runtime helper for resolving raw children VNodes into a slot object.
+ */
+function resolveSlots (
+ children,
+ context
+) {
+ if (!children || !children.length) {
+ return {}
+ }
+ var slots = {};
+ for (var i = 0, l = children.length; i < l; i++) {
+ var child = children[i];
+ var data = child.data;
+ // remove slot attribute if the node is resolved as a Vue slot node
+ if (data && data.attrs && data.attrs.slot) {
+ delete data.attrs.slot;
+ }
+ // named slots should only be respected if the vnode was rendered in the
+ // same context.
+ if ((child.context === context || child.fnContext === context) &&
+ data && data.slot != null
+ ) {
+ var name = data.slot;
+ var slot = (slots[name] || (slots[name] = []));
+ if (child.tag === 'template') {
+ slot.push.apply(slot, child.children || []);
+ } else {
+ slot.push(child);
+ }
+ } else {
+ // fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page
+ if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){
+ (slots['page'] || (slots['page'] = [])).push(child);
+ }else{
+ (slots.default || (slots.default = [])).push(child);
+ }
+ }
+ }
+ // ignore slots that contains only whitespace
+ for (var name$1 in slots) {
+ if (slots[name$1].every(isWhitespace)) {
+ delete slots[name$1];
+ }
+ }
+ return slots
+}
+
+function isWhitespace (node) {
+ return (node.isComment && !node.asyncFactory) || node.text === ' '
+}
+
+/* */
+
+function normalizeScopedSlots (
+ slots,
+ normalSlots,
+ prevSlots
+) {
+ var res;
+ var hasNormalSlots = Object.keys(normalSlots).length > 0;
+ var isStable = slots ? !!slots.$stable : !hasNormalSlots;
+ var key = slots && slots.$key;
+ if (!slots) {
+ res = {};
+ } else if (slots._normalized) {
+ // fast path 1: child component re-render only, parent did not change
+ return slots._normalized
+ } else if (
+ isStable &&
+ prevSlots &&
+ prevSlots !== emptyObject &&
+ key === prevSlots.$key &&
+ !hasNormalSlots &&
+ !prevSlots.$hasNormal
+ ) {
+ // fast path 2: stable scoped slots w/ no normal slots to proxy,
+ // only need to normalize once
+ return prevSlots
+ } else {
+ res = {};
+ for (var key$1 in slots) {
+ if (slots[key$1] && key$1[0] !== '$') {
+ res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
+ }
+ }
+ }
+ // expose normal slots on scopedSlots
+ for (var key$2 in normalSlots) {
+ if (!(key$2 in res)) {
+ res[key$2] = proxyNormalSlot(normalSlots, key$2);
+ }
+ }
+ // avoriaz seems to mock a non-extensible $scopedSlots object
+ // and when that is passed down this would cause an error
+ if (slots && Object.isExtensible(slots)) {
+ (slots)._normalized = res;
+ }
+ def(res, '$stable', isStable);
+ def(res, '$key', key);
+ def(res, '$hasNormal', hasNormalSlots);
+ return res
+}
+
+function normalizeScopedSlot(normalSlots, key, fn) {
+ var normalized = function () {
+ var res = arguments.length ? fn.apply(null, arguments) : fn({});
+ res = res && typeof res === 'object' && !Array.isArray(res)
+ ? [res] // single vnode
+ : normalizeChildren(res);
+ return res && (
+ res.length === 0 ||
+ (res.length === 1 && res[0].isComment) // #9658
+ ) ? undefined
+ : res
+ };
+ // this is a slot using the new v-slot syntax without scope. although it is
+ // compiled as a scoped slot, render fn users would expect it to be present
+ // on this.$slots because the usage is semantically a normal slot.
+ if (fn.proxy) {
+ Object.defineProperty(normalSlots, key, {
+ get: normalized,
+ enumerable: true,
+ configurable: true
+ });
+ }
+ return normalized
+}
+
+function proxyNormalSlot(slots, key) {
+ return function () { return slots[key]; }
+}
+
+/* */
+
+/**
+ * Runtime helper for rendering v-for lists.
+ */
+function renderList (
+ val,
+ render
+) {
+ var ret, i, l, keys, key;
+ if (Array.isArray(val) || typeof val === 'string') {
+ ret = new Array(val.length);
+ for (i = 0, l = val.length; i < l; i++) {
+ ret[i] = render(val[i], i, i, i); // fixed by xxxxxx
+ }
+ } else if (typeof val === 'number') {
+ ret = new Array(val);
+ for (i = 0; i < val; i++) {
+ ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx
+ }
+ } else if (isObject(val)) {
+ if (hasSymbol && val[Symbol.iterator]) {
+ ret = [];
+ var iterator = val[Symbol.iterator]();
+ var result = iterator.next();
+ while (!result.done) {
+ ret.push(render(result.value, ret.length, i, i++)); // fixed by xxxxxx
+ result = iterator.next();
+ }
+ } else {
+ keys = Object.keys(val);
+ ret = new Array(keys.length);
+ for (i = 0, l = keys.length; i < l; i++) {
+ key = keys[i];
+ ret[i] = render(val[key], key, i, i); // fixed by xxxxxx
+ }
+ }
+ }
+ if (!isDef(ret)) {
+ ret = [];
+ }
+ (ret)._isVList = true;
+ return ret
+}
+
+/* */
+
+/**
+ * Runtime helper for rendering
+ */
+function renderSlot (
+ name,
+ fallback,
+ props,
+ bindObject
+) {
+ var scopedSlotFn = this.$scopedSlots[name];
+ var nodes;
+ if (scopedSlotFn) { // scoped slot
+ props = props || {};
+ if (bindObject) {
+ if ( true && !isObject(bindObject)) {
+ warn(
+ 'slot v-bind without argument expects an Object',
+ this
+ );
+ }
+ props = extend(extend({}, bindObject), props);
+ }
+ // fixed by xxxxxx app-plus scopedSlot
+ nodes = scopedSlotFn(props, this, props._i) || fallback;
+ } else {
+ nodes = this.$slots[name] || fallback;
+ }
+
+ var target = props && props.slot;
+ if (target) {
+ return this.$createElement('template', { slot: target }, nodes)
+ } else {
+ return nodes
+ }
+}
+
+/* */
+
+/**
+ * Runtime helper for resolving filters
+ */
+function resolveFilter (id) {
+ return resolveAsset(this.$options, 'filters', id, true) || identity
+}
+
+/* */
+
+function isKeyNotMatch (expect, actual) {
+ if (Array.isArray(expect)) {
+ return expect.indexOf(actual) === -1
+ } else {
+ return expect !== actual
+ }
+}
+
+/**
+ * Runtime helper for checking keyCodes from config.
+ * exposed as Vue.prototype._k
+ * passing in eventKeyName as last argument separately for backwards compat
+ */
+function checkKeyCodes (
+ eventKeyCode,
+ key,
+ builtInKeyCode,
+ eventKeyName,
+ builtInKeyName
+) {
+ var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
+ if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
+ return isKeyNotMatch(builtInKeyName, eventKeyName)
+ } else if (mappedKeyCode) {
+ return isKeyNotMatch(mappedKeyCode, eventKeyCode)
+ } else if (eventKeyName) {
+ return hyphenate(eventKeyName) !== key
+ }
+}
+
+/* */
+
+/**
+ * Runtime helper for merging v-bind="object" into a VNode's data.
+ */
+function bindObjectProps (
+ data,
+ tag,
+ value,
+ asProp,
+ isSync
+) {
+ if (value) {
+ if (!isObject(value)) {
+ true && warn(
+ 'v-bind without argument expects an Object or Array value',
+ this
+ );
+ } else {
+ if (Array.isArray(value)) {
+ value = toObject(value);
+ }
+ var hash;
+ var loop = function ( key ) {
+ if (
+ key === 'class' ||
+ key === 'style' ||
+ isReservedAttribute(key)
+ ) {
+ hash = data;
+ } else {
+ var type = data.attrs && data.attrs.type;
+ hash = asProp || config.mustUseProp(tag, type, key)
+ ? data.domProps || (data.domProps = {})
+ : data.attrs || (data.attrs = {});
+ }
+ var camelizedKey = camelize(key);
+ var hyphenatedKey = hyphenate(key);
+ if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
+ hash[key] = value[key];
+
+ if (isSync) {
+ var on = data.on || (data.on = {});
+ on[("update:" + key)] = function ($event) {
+ value[key] = $event;
+ };
+ }
+ }
+ };
+
+ for (var key in value) loop( key );
+ }
+ }
+ return data
+}
+
+/* */
+
+/**
+ * Runtime helper for rendering static trees.
+ */
+function renderStatic (
+ index,
+ isInFor
+) {
+ var cached = this._staticTrees || (this._staticTrees = []);
+ var tree = cached[index];
+ // if has already-rendered static tree and not inside v-for,
+ // we can reuse the same tree.
+ if (tree && !isInFor) {
+ return tree
+ }
+ // otherwise, render a fresh tree.
+ tree = cached[index] = this.$options.staticRenderFns[index].call(
+ this._renderProxy,
+ null,
+ this // for render fns generated for functional component templates
+ );
+ markStatic(tree, ("__static__" + index), false);
+ return tree
+}
+
+/**
+ * Runtime helper for v-once.
+ * Effectively it means marking the node as static with a unique key.
+ */
+function markOnce (
+ tree,
+ index,
+ key
+) {
+ markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
+ return tree
+}
+
+function markStatic (
+ tree,
+ key,
+ isOnce
+) {
+ if (Array.isArray(tree)) {
+ for (var i = 0; i < tree.length; i++) {
+ if (tree[i] && typeof tree[i] !== 'string') {
+ markStaticNode(tree[i], (key + "_" + i), isOnce);
+ }
+ }
+ } else {
+ markStaticNode(tree, key, isOnce);
+ }
+}
+
+function markStaticNode (node, key, isOnce) {
+ node.isStatic = true;
+ node.key = key;
+ node.isOnce = isOnce;
+}
+
+/* */
+
+function bindObjectListeners (data, value) {
+ if (value) {
+ if (!isPlainObject(value)) {
+ true && warn(
+ 'v-on without argument expects an Object value',
+ this
+ );
+ } else {
+ var on = data.on = data.on ? extend({}, data.on) : {};
+ for (var key in value) {
+ var existing = on[key];
+ var ours = value[key];
+ on[key] = existing ? [].concat(existing, ours) : ours;
+ }
+ }
+ }
+ return data
+}
+
+/* */
+
+function resolveScopedSlots (
+ fns, // see flow/vnode
+ res,
+ // the following are added in 2.6
+ hasDynamicKeys,
+ contentHashKey
+) {
+ res = res || { $stable: !hasDynamicKeys };
+ for (var i = 0; i < fns.length; i++) {
+ var slot = fns[i];
+ if (Array.isArray(slot)) {
+ resolveScopedSlots(slot, res, hasDynamicKeys);
+ } else if (slot) {
+ // marker for reverse proxying v-slot without scope on this.$slots
+ if (slot.proxy) {
+ slot.fn.proxy = true;
+ }
+ res[slot.key] = slot.fn;
+ }
+ }
+ if (contentHashKey) {
+ (res).$key = contentHashKey;
+ }
+ return res
+}
+
+/* */
+
+function bindDynamicKeys (baseObj, values) {
+ for (var i = 0; i < values.length; i += 2) {
+ var key = values[i];
+ if (typeof key === 'string' && key) {
+ baseObj[values[i]] = values[i + 1];
+ } else if ( true && key !== '' && key !== null) {
+ // null is a special value for explicitly removing a binding
+ warn(
+ ("Invalid value for dynamic directive argument (expected string or null): " + key),
+ this
+ );
+ }
+ }
+ return baseObj
+}
+
+// helper to dynamically append modifier runtime markers to event names.
+// ensure only append when value is already string, otherwise it will be cast
+// to string and cause the type check to miss.
+function prependModifier (value, symbol) {
+ return typeof value === 'string' ? symbol + value : value
+}
+
+/* */
+
+function installRenderHelpers (target) {
+ target._o = markOnce;
+ target._n = toNumber;
+ target._s = toString;
+ target._l = renderList;
+ target._t = renderSlot;
+ target._q = looseEqual;
+ target._i = looseIndexOf;
+ target._m = renderStatic;
+ target._f = resolveFilter;
+ target._k = checkKeyCodes;
+ target._b = bindObjectProps;
+ target._v = createTextVNode;
+ target._e = createEmptyVNode;
+ target._u = resolveScopedSlots;
+ target._g = bindObjectListeners;
+ target._d = bindDynamicKeys;
+ target._p = prependModifier;
+}
+
+/* */
+
+function FunctionalRenderContext (
+ data,
+ props,
+ children,
+ parent,
+ Ctor
+) {
+ var this$1 = this;
+
+ var options = Ctor.options;
+ // ensure the createElement function in functional components
+ // gets a unique context - this is necessary for correct named slot check
+ var contextVm;
+ if (hasOwn(parent, '_uid')) {
+ contextVm = Object.create(parent);
+ // $flow-disable-line
+ contextVm._original = parent;
+ } else {
+ // the context vm passed in is a functional context as well.
+ // in this case we want to make sure we are able to get a hold to the
+ // real context instance.
+ contextVm = parent;
+ // $flow-disable-line
+ parent = parent._original;
+ }
+ var isCompiled = isTrue(options._compiled);
+ var needNormalization = !isCompiled;
+
+ this.data = data;
+ this.props = props;
+ this.children = children;
+ this.parent = parent;
+ this.listeners = data.on || emptyObject;
+ this.injections = resolveInject(options.inject, parent);
+ this.slots = function () {
+ if (!this$1.$slots) {
+ normalizeScopedSlots(
+ data.scopedSlots,
+ this$1.$slots = resolveSlots(children, parent)
+ );
+ }
+ return this$1.$slots
+ };
+
+ Object.defineProperty(this, 'scopedSlots', ({
+ enumerable: true,
+ get: function get () {
+ return normalizeScopedSlots(data.scopedSlots, this.slots())
+ }
+ }));
+
+ // support for compiled functional template
+ if (isCompiled) {
+ // exposing $options for renderStatic()
+ this.$options = options;
+ // pre-resolve slots for renderSlot()
+ this.$slots = this.slots();
+ this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);
+ }
+
+ if (options._scopeId) {
+ this._c = function (a, b, c, d) {
+ var vnode = createElement(contextVm, a, b, c, d, needNormalization);
+ if (vnode && !Array.isArray(vnode)) {
+ vnode.fnScopeId = options._scopeId;
+ vnode.fnContext = parent;
+ }
+ return vnode
+ };
+ } else {
+ this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
+ }
+}
+
+installRenderHelpers(FunctionalRenderContext.prototype);
+
+function createFunctionalComponent (
+ Ctor,
+ propsData,
+ data,
+ contextVm,
+ children
+) {
+ var options = Ctor.options;
+ var props = {};
+ var propOptions = options.props;
+ if (isDef(propOptions)) {
+ for (var key in propOptions) {
+ props[key] = validateProp(key, propOptions, propsData || emptyObject);
+ }
+ } else {
+ if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
+ if (isDef(data.props)) { mergeProps(props, data.props); }
+ }
+
+ var renderContext = new FunctionalRenderContext(
+ data,
+ props,
+ children,
+ contextVm,
+ Ctor
+ );
+
+ var vnode = options.render.call(null, renderContext._c, renderContext);
+
+ if (vnode instanceof VNode) {
+ return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)
+ } else if (Array.isArray(vnode)) {
+ var vnodes = normalizeChildren(vnode) || [];
+ var res = new Array(vnodes.length);
+ for (var i = 0; i < vnodes.length; i++) {
+ res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
+ }
+ return res
+ }
+}
+
+function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {
+ // #7817 clone node before setting fnContext, otherwise if the node is reused
+ // (e.g. it was from a cached normal slot) the fnContext causes named slots
+ // that should not be matched to match.
+ var clone = cloneVNode(vnode);
+ clone.fnContext = contextVm;
+ clone.fnOptions = options;
+ if (true) {
+ (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;
+ }
+ if (data.slot) {
+ (clone.data || (clone.data = {})).slot = data.slot;
+ }
+ return clone
+}
+
+function mergeProps (to, from) {
+ for (var key in from) {
+ to[camelize(key)] = from[key];
+ }
+}
+
+/* */
+
+/* */
+
+/* */
+
+/* */
+
+// inline hooks to be invoked on component VNodes during patch
+var componentVNodeHooks = {
+ init: function init (vnode, hydrating) {
+ if (
+ vnode.componentInstance &&
+ !vnode.componentInstance._isDestroyed &&
+ vnode.data.keepAlive
+ ) {
+ // kept-alive components, treat as a patch
+ var mountedNode = vnode; // work around flow
+ componentVNodeHooks.prepatch(mountedNode, mountedNode);
+ } else {
+ var child = vnode.componentInstance = createComponentInstanceForVnode(
+ vnode,
+ activeInstance
+ );
+ child.$mount(hydrating ? vnode.elm : undefined, hydrating);
+ }
+ },
+
+ prepatch: function prepatch (oldVnode, vnode) {
+ var options = vnode.componentOptions;
+ var child = vnode.componentInstance = oldVnode.componentInstance;
+ updateChildComponent(
+ child,
+ options.propsData, // updated props
+ options.listeners, // updated listeners
+ vnode, // new parent vnode
+ options.children // new children
+ );
+ },
+
+ insert: function insert (vnode) {
+ var context = vnode.context;
+ var componentInstance = vnode.componentInstance;
+ if (!componentInstance._isMounted) {
+ callHook(componentInstance, 'onServiceCreated');
+ callHook(componentInstance, 'onServiceAttached');
+ componentInstance._isMounted = true;
+ callHook(componentInstance, 'mounted');
+ }
+ if (vnode.data.keepAlive) {
+ if (context._isMounted) {
+ // vue-router#1212
+ // During updates, a kept-alive component's child components may
+ // change, so directly walking the tree here may call activated hooks
+ // on incorrect children. Instead we push them into a queue which will
+ // be processed after the whole patch process ended.
+ queueActivatedComponent(componentInstance);
+ } else {
+ activateChildComponent(componentInstance, true /* direct */);
+ }
+ }
+ },
+
+ destroy: function destroy (vnode) {
+ var componentInstance = vnode.componentInstance;
+ if (!componentInstance._isDestroyed) {
+ if (!vnode.data.keepAlive) {
+ componentInstance.$destroy();
+ } else {
+ deactivateChildComponent(componentInstance, true /* direct */);
+ }
+ }
+ }
+};
+
+var hooksToMerge = Object.keys(componentVNodeHooks);
+
+function createComponent (
+ Ctor,
+ data,
+ context,
+ children,
+ tag
+) {
+ if (isUndef(Ctor)) {
+ return
+ }
+
+ var baseCtor = context.$options._base;
+
+ // plain options object: turn it into a constructor
+ if (isObject(Ctor)) {
+ Ctor = baseCtor.extend(Ctor);
+ }
+
+ // if at this stage it's not a constructor or an async component factory,
+ // reject.
+ if (typeof Ctor !== 'function') {
+ if (true) {
+ warn(("Invalid Component definition: " + (String(Ctor))), context);
+ }
+ return
+ }
+
+ // async component
+ var asyncFactory;
+ if (isUndef(Ctor.cid)) {
+ asyncFactory = Ctor;
+ Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
+ if (Ctor === undefined) {
+ // return a placeholder node for async component, which is rendered
+ // as a comment node but preserves all the raw information for the node.
+ // the information will be used for async server-rendering and hydration.
+ return createAsyncPlaceholder(
+ asyncFactory,
+ data,
+ context,
+ children,
+ tag
+ )
+ }
+ }
+
+ data = data || {};
+
+ // resolve constructor options in case global mixins are applied after
+ // component constructor creation
+ resolveConstructorOptions(Ctor);
+
+ // transform component v-model data into props & events
+ if (isDef(data.model)) {
+ transformModel(Ctor.options, data);
+ }
+
+ // extract props
+ var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx
+
+ // functional component
+ if (isTrue(Ctor.options.functional)) {
+ return createFunctionalComponent(Ctor, propsData, data, context, children)
+ }
+
+ // extract listeners, since these needs to be treated as
+ // child component listeners instead of DOM listeners
+ var listeners = data.on;
+ // replace with listeners with .native modifier
+ // so it gets processed during parent component patch.
+ data.on = data.nativeOn;
+
+ if (isTrue(Ctor.options.abstract)) {
+ // abstract components do not keep anything
+ // other than props & listeners & slot
+
+ // work around flow
+ var slot = data.slot;
+ data = {};
+ if (slot) {
+ data.slot = slot;
+ }
+ }
+
+ // install component management hooks onto the placeholder node
+ installComponentHooks(data);
+
+ // return a placeholder vnode
+ var name = Ctor.options.name || tag;
+ var vnode = new VNode(
+ ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
+ data, undefined, undefined, undefined, context,
+ { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
+ asyncFactory
+ );
+
+ return vnode
+}
+
+function createComponentInstanceForVnode (
+ vnode, // we know it's MountedComponentVNode but flow doesn't
+ parent // activeInstance in lifecycle state
+) {
+ var options = {
+ _isComponent: true,
+ _parentVnode: vnode,
+ parent: parent
+ };
+ // check inline-template render functions
+ var inlineTemplate = vnode.data.inlineTemplate;
+ if (isDef(inlineTemplate)) {
+ options.render = inlineTemplate.render;
+ options.staticRenderFns = inlineTemplate.staticRenderFns;
+ }
+ return new vnode.componentOptions.Ctor(options)
+}
+
+function installComponentHooks (data) {
+ var hooks = data.hook || (data.hook = {});
+ for (var i = 0; i < hooksToMerge.length; i++) {
+ var key = hooksToMerge[i];
+ var existing = hooks[key];
+ var toMerge = componentVNodeHooks[key];
+ if (existing !== toMerge && !(existing && existing._merged)) {
+ hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;
+ }
+ }
+}
+
+function mergeHook$1 (f1, f2) {
+ var merged = function (a, b) {
+ // flow complains about extra args which is why we use any
+ f1(a, b);
+ f2(a, b);
+ };
+ merged._merged = true;
+ return merged
+}
+
+// transform component v-model info (value and callback) into
+// prop and event handler respectively.
+function transformModel (options, data) {
+ var prop = (options.model && options.model.prop) || 'value';
+ var event = (options.model && options.model.event) || 'input'
+ ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;
+ var on = data.on || (data.on = {});
+ var existing = on[event];
+ var callback = data.model.callback;
+ if (isDef(existing)) {
+ if (
+ Array.isArray(existing)
+ ? existing.indexOf(callback) === -1
+ : existing !== callback
+ ) {
+ on[event] = [callback].concat(existing);
+ }
+ } else {
+ on[event] = callback;
+ }
+}
+
+/* */
+
+var SIMPLE_NORMALIZE = 1;
+var ALWAYS_NORMALIZE = 2;
+
+// wrapper function for providing a more flexible interface
+// without getting yelled at by flow
+function createElement (
+ context,
+ tag,
+ data,
+ children,
+ normalizationType,
+ alwaysNormalize
+) {
+ if (Array.isArray(data) || isPrimitive(data)) {
+ normalizationType = children;
+ children = data;
+ data = undefined;
+ }
+ if (isTrue(alwaysNormalize)) {
+ normalizationType = ALWAYS_NORMALIZE;
+ }
+ return _createElement(context, tag, data, children, normalizationType)
+}
+
+function _createElement (
+ context,
+ tag,
+ data,
+ children,
+ normalizationType
+) {
+ if (isDef(data) && isDef((data).__ob__)) {
+ true && warn(
+ "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
+ 'Always create fresh vnode data objects in each render!',
+ context
+ );
+ return createEmptyVNode()
+ }
+ // object syntax in v-bind
+ if (isDef(data) && isDef(data.is)) {
+ tag = data.is;
+ }
+ if (!tag) {
+ // in case of component :is set to falsy value
+ return createEmptyVNode()
+ }
+ // warn against non-primitive key
+ if ( true &&
+ isDef(data) && isDef(data.key) && !isPrimitive(data.key)
+ ) {
+ {
+ warn(
+ 'Avoid using non-primitive value as key, ' +
+ 'use string/number value instead.',
+ context
+ );
+ }
+ }
+ // support single function children as default scoped slot
+ if (Array.isArray(children) &&
+ typeof children[0] === 'function'
+ ) {
+ data = data || {};
+ data.scopedSlots = { default: children[0] };
+ children.length = 0;
+ }
+ if (normalizationType === ALWAYS_NORMALIZE) {
+ children = normalizeChildren(children);
+ } else if (normalizationType === SIMPLE_NORMALIZE) {
+ children = simpleNormalizeChildren(children);
+ }
+ var vnode, ns;
+ if (typeof tag === 'string') {
+ var Ctor;
+ ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
+ if (config.isReservedTag(tag)) {
+ // platform built-in elements
+ if ( true && isDef(data) && isDef(data.nativeOn)) {
+ warn(
+ ("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."),
+ context
+ );
+ }
+ vnode = new VNode(
+ config.parsePlatformTagName(tag), data, children,
+ undefined, undefined, context
+ );
+ } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
+ // component
+ vnode = createComponent(Ctor, data, context, children, tag);
+ } else {
+ // unknown or unlisted namespaced elements
+ // check at runtime because it may get assigned a namespace when its
+ // parent normalizes children
+ vnode = new VNode(
+ tag, data, children,
+ undefined, undefined, context
+ );
+ }
+ } else {
+ // direct component options / constructor
+ vnode = createComponent(tag, data, context, children);
+ }
+ if (Array.isArray(vnode)) {
+ return vnode
+ } else if (isDef(vnode)) {
+ if (isDef(ns)) { applyNS(vnode, ns); }
+ if (isDef(data)) { registerDeepBindings(data); }
+ return vnode
+ } else {
+ return createEmptyVNode()
+ }
+}
+
+function applyNS (vnode, ns, force) {
+ vnode.ns = ns;
+ if (vnode.tag === 'foreignObject') {
+ // use default namespace inside foreignObject
+ ns = undefined;
+ force = true;
+ }
+ if (isDef(vnode.children)) {
+ for (var i = 0, l = vnode.children.length; i < l; i++) {
+ var child = vnode.children[i];
+ if (isDef(child.tag) && (
+ isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
+ applyNS(child, ns, force);
+ }
+ }
+ }
+}
+
+// ref #5318
+// necessary to ensure parent re-render when deep bindings like :style and
+// :class are used on slot nodes
+function registerDeepBindings (data) {
+ if (isObject(data.style)) {
+ traverse(data.style);
+ }
+ if (isObject(data.class)) {
+ traverse(data.class);
+ }
+}
+
+/* */
+
+function initRender (vm) {
+ vm._vnode = null; // the root of the child tree
+ vm._staticTrees = null; // v-once cached trees
+ var options = vm.$options;
+ var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
+ var renderContext = parentVnode && parentVnode.context;
+ vm.$slots = resolveSlots(options._renderChildren, renderContext);
+ vm.$scopedSlots = emptyObject;
+ // bind the createElement fn to this instance
+ // so that we get proper render context inside it.
+ // args order: tag, data, children, normalizationType, alwaysNormalize
+ // internal version is used by render functions compiled from templates
+ vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
+ // normalization is always applied for the public version, used in
+ // user-written render functions.
+ vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
+
+ // $attrs & $listeners are exposed for easier HOC creation.
+ // they need to be reactive so that HOCs using them are always updated
+ var parentData = parentVnode && parentVnode.data;
+
+ /* istanbul ignore else */
+ if (true) {
+ defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
+ !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
+ }, true);
+ defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {
+ !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
+ }, true);
+ } else {}
+}
+
+var currentRenderingInstance = null;
+
+function renderMixin (Vue) {
+ // install runtime convenience helpers
+ installRenderHelpers(Vue.prototype);
+
+ Vue.prototype.$nextTick = function (fn) {
+ return nextTick(fn, this)
+ };
+
+ Vue.prototype._render = function () {
+ var vm = this;
+ var ref = vm.$options;
+ var render = ref.render;
+ var _parentVnode = ref._parentVnode;
+
+ if (_parentVnode) {
+ vm.$scopedSlots = normalizeScopedSlots(
+ _parentVnode.data.scopedSlots,
+ vm.$slots,
+ vm.$scopedSlots
+ );
+ }
+
+ // set parent vnode. this allows render functions to have access
+ // to the data on the placeholder node.
+ vm.$vnode = _parentVnode;
+ // render self
+ var vnode;
+ try {
+ // There's no need to maintain a stack because all render fns are called
+ // separately from one another. Nested component's render fns are called
+ // when parent component is patched.
+ currentRenderingInstance = vm;
+ vnode = render.call(vm._renderProxy, vm.$createElement);
+ } catch (e) {
+ handleError(e, vm, "render");
+ // return error render result,
+ // or previous vnode to prevent render error causing blank component
+ /* istanbul ignore else */
+ if ( true && vm.$options.renderError) {
+ try {
+ vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
+ } catch (e) {
+ handleError(e, vm, "renderError");
+ vnode = vm._vnode;
+ }
+ } else {
+ vnode = vm._vnode;
+ }
+ } finally {
+ currentRenderingInstance = null;
+ }
+ // if the returned array contains only a single node, allow it
+ if (Array.isArray(vnode) && vnode.length === 1) {
+ vnode = vnode[0];
+ }
+ // return empty vnode in case the render function errored out
+ if (!(vnode instanceof VNode)) {
+ if ( true && Array.isArray(vnode)) {
+ warn(
+ 'Multiple root nodes returned from render function. Render function ' +
+ 'should return a single root node.',
+ vm
+ );
+ }
+ vnode = createEmptyVNode();
+ }
+ // set parent
+ vnode.parent = _parentVnode;
+ return vnode
+ };
+}
+
+/* */
+
+function ensureCtor (comp, base) {
+ if (
+ comp.__esModule ||
+ (hasSymbol && comp[Symbol.toStringTag] === 'Module')
+ ) {
+ comp = comp.default;
+ }
+ return isObject(comp)
+ ? base.extend(comp)
+ : comp
+}
+
+function createAsyncPlaceholder (
+ factory,
+ data,
+ context,
+ children,
+ tag
+) {
+ var node = createEmptyVNode();
+ node.asyncFactory = factory;
+ node.asyncMeta = { data: data, context: context, children: children, tag: tag };
+ return node
+}
+
+function resolveAsyncComponent (
+ factory,
+ baseCtor
+) {
+ if (isTrue(factory.error) && isDef(factory.errorComp)) {
+ return factory.errorComp
+ }
+
+ if (isDef(factory.resolved)) {
+ return factory.resolved
+ }
+
+ var owner = currentRenderingInstance;
+ if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
+ // already pending
+ factory.owners.push(owner);
+ }
+
+ if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
+ return factory.loadingComp
+ }
+
+ if (owner && !isDef(factory.owners)) {
+ var owners = factory.owners = [owner];
+ var sync = true;
+ var timerLoading = null;
+ var timerTimeout = null
+
+ ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
+
+ var forceRender = function (renderCompleted) {
+ for (var i = 0, l = owners.length; i < l; i++) {
+ (owners[i]).$forceUpdate();
+ }
+
+ if (renderCompleted) {
+ owners.length = 0;
+ if (timerLoading !== null) {
+ clearTimeout(timerLoading);
+ timerLoading = null;
+ }
+ if (timerTimeout !== null) {
+ clearTimeout(timerTimeout);
+ timerTimeout = null;
+ }
+ }
+ };
+
+ var resolve = once(function (res) {
+ // cache resolved
+ factory.resolved = ensureCtor(res, baseCtor);
+ // invoke callbacks only if this is not a synchronous resolve
+ // (async resolves are shimmed as synchronous during SSR)
+ if (!sync) {
+ forceRender(true);
+ } else {
+ owners.length = 0;
+ }
+ });
+
+ var reject = once(function (reason) {
+ true && warn(
+ "Failed to resolve async component: " + (String(factory)) +
+ (reason ? ("\nReason: " + reason) : '')
+ );
+ if (isDef(factory.errorComp)) {
+ factory.error = true;
+ forceRender(true);
+ }
+ });
+
+ var res = factory(resolve, reject);
+
+ if (isObject(res)) {
+ if (isPromise(res)) {
+ // () => Promise
+ if (isUndef(factory.resolved)) {
+ res.then(resolve, reject);
+ }
+ } else if (isPromise(res.component)) {
+ res.component.then(resolve, reject);
+
+ if (isDef(res.error)) {
+ factory.errorComp = ensureCtor(res.error, baseCtor);
+ }
+
+ if (isDef(res.loading)) {
+ factory.loadingComp = ensureCtor(res.loading, baseCtor);
+ if (res.delay === 0) {
+ factory.loading = true;
+ } else {
+ timerLoading = setTimeout(function () {
+ timerLoading = null;
+ if (isUndef(factory.resolved) && isUndef(factory.error)) {
+ factory.loading = true;
+ forceRender(false);
+ }
+ }, res.delay || 200);
+ }
+ }
+
+ if (isDef(res.timeout)) {
+ timerTimeout = setTimeout(function () {
+ timerTimeout = null;
+ if (isUndef(factory.resolved)) {
+ reject(
+ true
+ ? ("timeout (" + (res.timeout) + "ms)")
+ : undefined
+ );
+ }
+ }, res.timeout);
+ }
+ }
+ }
+
+ sync = false;
+ // return in case resolved synchronously
+ return factory.loading
+ ? factory.loadingComp
+ : factory.resolved
+ }
+}
+
+/* */
+
+function isAsyncPlaceholder (node) {
+ return node.isComment && node.asyncFactory
+}
+
+/* */
+
+function getFirstComponentChild (children) {
+ if (Array.isArray(children)) {
+ for (var i = 0; i < children.length; i++) {
+ var c = children[i];
+ if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
+ return c
+ }
+ }
+ }
+}
+
+/* */
+
+/* */
+
+function initEvents (vm) {
+ vm._events = Object.create(null);
+ vm._hasHookEvent = false;
+ // init parent attached events
+ var listeners = vm.$options._parentListeners;
+ if (listeners) {
+ updateComponentListeners(vm, listeners);
+ }
+}
+
+var target;
+
+function add (event, fn) {
+ target.$on(event, fn);
+}
+
+function remove$1 (event, fn) {
+ target.$off(event, fn);
+}
+
+function createOnceHandler (event, fn) {
+ var _target = target;
+ return function onceHandler () {
+ var res = fn.apply(null, arguments);
+ if (res !== null) {
+ _target.$off(event, onceHandler);
+ }
+ }
+}
+
+function updateComponentListeners (
+ vm,
+ listeners,
+ oldListeners
+) {
+ target = vm;
+ updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);
+ target = undefined;
+}
+
+function eventsMixin (Vue) {
+ var hookRE = /^hook:/;
+ Vue.prototype.$on = function (event, fn) {
+ var vm = this;
+ if (Array.isArray(event)) {
+ for (var i = 0, l = event.length; i < l; i++) {
+ vm.$on(event[i], fn);
+ }
+ } else {
+ (vm._events[event] || (vm._events[event] = [])).push(fn);
+ // optimize hook:event cost by using a boolean flag marked at registration
+ // instead of a hash lookup
+ if (hookRE.test(event)) {
+ vm._hasHookEvent = true;
+ }
+ }
+ return vm
+ };
+
+ Vue.prototype.$once = function (event, fn) {
+ var vm = this;
+ function on () {
+ vm.$off(event, on);
+ fn.apply(vm, arguments);
+ }
+ on.fn = fn;
+ vm.$on(event, on);
+ return vm
+ };
+
+ Vue.prototype.$off = function (event, fn) {
+ var vm = this;
+ // all
+ if (!arguments.length) {
+ vm._events = Object.create(null);
+ return vm
+ }
+ // array of events
+ if (Array.isArray(event)) {
+ for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
+ vm.$off(event[i$1], fn);
+ }
+ return vm
+ }
+ // specific event
+ var cbs = vm._events[event];
+ if (!cbs) {
+ return vm
+ }
+ if (!fn) {
+ vm._events[event] = null;
+ return vm
+ }
+ // specific handler
+ var cb;
+ var i = cbs.length;
+ while (i--) {
+ cb = cbs[i];
+ if (cb === fn || cb.fn === fn) {
+ cbs.splice(i, 1);
+ break
+ }
+ }
+ return vm
+ };
+
+ Vue.prototype.$emit = function (event) {
+ var vm = this;
+ if (true) {
+ var lowerCaseEvent = event.toLowerCase();
+ if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
+ tip(
+ "Event \"" + lowerCaseEvent + "\" is emitted in component " +
+ (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
+ "Note that HTML attributes are case-insensitive and you cannot use " +
+ "v-on to listen to camelCase events when using in-DOM templates. " +
+ "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
+ );
+ }
+ }
+ var cbs = vm._events[event];
+ if (cbs) {
+ cbs = cbs.length > 1 ? toArray(cbs) : cbs;
+ var args = toArray(arguments, 1);
+ var info = "event handler for \"" + event + "\"";
+ for (var i = 0, l = cbs.length; i < l; i++) {
+ invokeWithErrorHandling(cbs[i], vm, args, vm, info);
+ }
+ }
+ return vm
+ };
+}
+
+/* */
+
+var activeInstance = null;
+var isUpdatingChildComponent = false;
+
+function setActiveInstance(vm) {
+ var prevActiveInstance = activeInstance;
+ activeInstance = vm;
+ return function () {
+ activeInstance = prevActiveInstance;
+ }
+}
+
+function initLifecycle (vm) {
+ var options = vm.$options;
+
+ // locate first non-abstract parent
+ var parent = options.parent;
+ if (parent && !options.abstract) {
+ while (parent.$options.abstract && parent.$parent) {
+ parent = parent.$parent;
+ }
+ parent.$children.push(vm);
+ }
+
+ vm.$parent = parent;
+ vm.$root = parent ? parent.$root : vm;
+
+ vm.$children = [];
+ vm.$refs = {};
+
+ vm._watcher = null;
+ vm._inactive = null;
+ vm._directInactive = false;
+ vm._isMounted = false;
+ vm._isDestroyed = false;
+ vm._isBeingDestroyed = false;
+}
+
+function lifecycleMixin (Vue) {
+ Vue.prototype._update = function (vnode, hydrating) {
+ var vm = this;
+ var prevEl = vm.$el;
+ var prevVnode = vm._vnode;
+ var restoreActiveInstance = setActiveInstance(vm);
+ vm._vnode = vnode;
+ // Vue.prototype.__patch__ is injected in entry points
+ // based on the rendering backend used.
+ if (!prevVnode) {
+ // initial render
+ vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
+ } else {
+ // updates
+ vm.$el = vm.__patch__(prevVnode, vnode);
+ }
+ restoreActiveInstance();
+ // update __vue__ reference
+ if (prevEl) {
+ prevEl.__vue__ = null;
+ }
+ if (vm.$el) {
+ vm.$el.__vue__ = vm;
+ }
+ // if parent is an HOC, update its $el as well
+ if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
+ vm.$parent.$el = vm.$el;
+ }
+ // updated hook is called by the scheduler to ensure that children are
+ // updated in a parent's updated hook.
+ };
+
+ Vue.prototype.$forceUpdate = function () {
+ var vm = this;
+ if (vm._watcher) {
+ vm._watcher.update();
+ }
+ };
+
+ Vue.prototype.$destroy = function () {
+ var vm = this;
+ if (vm._isBeingDestroyed) {
+ return
+ }
+ callHook(vm, 'beforeDestroy');
+ vm._isBeingDestroyed = true;
+ // remove self from parent
+ var parent = vm.$parent;
+ if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
+ remove(parent.$children, vm);
+ }
+ // teardown watchers
+ if (vm._watcher) {
+ vm._watcher.teardown();
+ }
+ var i = vm._watchers.length;
+ while (i--) {
+ vm._watchers[i].teardown();
+ }
+ // remove reference from data ob
+ // frozen object may not have observer.
+ if (vm._data.__ob__) {
+ vm._data.__ob__.vmCount--;
+ }
+ // call the last hook...
+ vm._isDestroyed = true;
+ // invoke destroy hooks on current rendered tree
+ vm.__patch__(vm._vnode, null);
+ // fire destroyed hook
+ callHook(vm, 'destroyed');
+ // turn off all instance listeners.
+ vm.$off();
+ // remove __vue__ reference
+ if (vm.$el) {
+ vm.$el.__vue__ = null;
+ }
+ // release circular reference (#6759)
+ if (vm.$vnode) {
+ vm.$vnode.parent = null;
+ }
+ };
+}
+
+function updateChildComponent (
+ vm,
+ propsData,
+ listeners,
+ parentVnode,
+ renderChildren
+) {
+ if (true) {
+ isUpdatingChildComponent = true;
+ }
+
+ // determine whether component has slot children
+ // we need to do this before overwriting $options._renderChildren.
+
+ // check if there are dynamic scopedSlots (hand-written or compiled but with
+ // dynamic slot names). Static scoped slots compiled from template has the
+ // "$stable" marker.
+ var newScopedSlots = parentVnode.data.scopedSlots;
+ var oldScopedSlots = vm.$scopedSlots;
+ var hasDynamicScopedSlot = !!(
+ (newScopedSlots && !newScopedSlots.$stable) ||
+ (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
+ (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)
+ );
+
+ // Any static slot children from the parent may have changed during parent's
+ // update. Dynamic scoped slots may also have changed. In such cases, a forced
+ // update is necessary to ensure correctness.
+ var needsForceUpdate = !!(
+ renderChildren || // has new static slots
+ vm.$options._renderChildren || // has old static slots
+ hasDynamicScopedSlot
+ );
+
+ vm.$options._parentVnode = parentVnode;
+ vm.$vnode = parentVnode; // update vm's placeholder node without re-render
+
+ if (vm._vnode) { // update child tree's parent
+ vm._vnode.parent = parentVnode;
+ }
+ vm.$options._renderChildren = renderChildren;
+
+ // update $attrs and $listeners hash
+ // these are also reactive so they may trigger child update if the child
+ // used them during render
+ vm.$attrs = parentVnode.data.attrs || emptyObject;
+ vm.$listeners = listeners || emptyObject;
+
+ // update props
+ if (propsData && vm.$options.props) {
+ toggleObserving(false);
+ var props = vm._props;
+ var propKeys = vm.$options._propKeys || [];
+ for (var i = 0; i < propKeys.length; i++) {
+ var key = propKeys[i];
+ var propOptions = vm.$options.props; // wtf flow?
+ props[key] = validateProp(key, propOptions, propsData, vm);
+ }
+ toggleObserving(true);
+ // keep a copy of raw propsData
+ vm.$options.propsData = propsData;
+ }
+
+ // fixed by xxxxxx update properties(mp runtime)
+ vm._$updateProperties && vm._$updateProperties(vm);
+
+ // update listeners
+ listeners = listeners || emptyObject;
+ var oldListeners = vm.$options._parentListeners;
+ vm.$options._parentListeners = listeners;
+ updateComponentListeners(vm, listeners, oldListeners);
+
+ // resolve slots + force update if has children
+ if (needsForceUpdate) {
+ vm.$slots = resolveSlots(renderChildren, parentVnode.context);
+ vm.$forceUpdate();
+ }
+
+ if (true) {
+ isUpdatingChildComponent = false;
+ }
+}
+
+function isInInactiveTree (vm) {
+ while (vm && (vm = vm.$parent)) {
+ if (vm._inactive) { return true }
+ }
+ return false
+}
+
+function activateChildComponent (vm, direct) {
+ if (direct) {
+ vm._directInactive = false;
+ if (isInInactiveTree(vm)) {
+ return
+ }
+ } else if (vm._directInactive) {
+ return
+ }
+ if (vm._inactive || vm._inactive === null) {
+ vm._inactive = false;
+ for (var i = 0; i < vm.$children.length; i++) {
+ activateChildComponent(vm.$children[i]);
+ }
+ callHook(vm, 'activated');
+ }
+}
+
+function deactivateChildComponent (vm, direct) {
+ if (direct) {
+ vm._directInactive = true;
+ if (isInInactiveTree(vm)) {
+ return
+ }
+ }
+ if (!vm._inactive) {
+ vm._inactive = true;
+ for (var i = 0; i < vm.$children.length; i++) {
+ deactivateChildComponent(vm.$children[i]);
+ }
+ callHook(vm, 'deactivated');
+ }
+}
+
+function callHook (vm, hook) {
+ // #7573 disable dep collection when invoking lifecycle hooks
+ pushTarget();
+ var handlers = vm.$options[hook];
+ var info = hook + " hook";
+ if (handlers) {
+ for (var i = 0, j = handlers.length; i < j; i++) {
+ invokeWithErrorHandling(handlers[i], vm, null, vm, info);
+ }
+ }
+ if (vm._hasHookEvent) {
+ vm.$emit('hook:' + hook);
+ }
+ popTarget();
+}
+
+/* */
+
+var MAX_UPDATE_COUNT = 100;
+
+var queue = [];
+var activatedChildren = [];
+var has = {};
+var circular = {};
+var waiting = false;
+var flushing = false;
+var index = 0;
+
+/**
+ * Reset the scheduler's state.
+ */
+function resetSchedulerState () {
+ index = queue.length = activatedChildren.length = 0;
+ has = {};
+ if (true) {
+ circular = {};
+ }
+ waiting = flushing = false;
+}
+
+// Async edge case #6566 requires saving the timestamp when event listeners are
+// attached. However, calling performance.now() has a perf overhead especially
+// if the page has thousands of event listeners. Instead, we take a timestamp
+// every time the scheduler flushes and use that for all event listeners
+// attached during that flush.
+var currentFlushTimestamp = 0;
+
+// Async edge case fix requires storing an event listener's attach timestamp.
+var getNow = Date.now;
+
+// Determine what event timestamp the browser is using. Annoyingly, the
+// timestamp can either be hi-res (relative to page load) or low-res
+// (relative to UNIX epoch), so in order to compare time we have to use the
+// same timestamp type when saving the flush timestamp.
+// All IE versions use low-res event timestamps, and have problematic clock
+// implementations (#9632)
+if (inBrowser && !isIE) {
+ var performance = window.performance;
+ if (
+ performance &&
+ typeof performance.now === 'function' &&
+ getNow() > document.createEvent('Event').timeStamp
+ ) {
+ // if the event timestamp, although evaluated AFTER the Date.now(), is
+ // smaller than it, it means the event is using a hi-res timestamp,
+ // and we need to use the hi-res version for event listener timestamps as
+ // well.
+ getNow = function () { return performance.now(); };
+ }
+}
+
+/**
+ * Flush both queues and run the watchers.
+ */
+function flushSchedulerQueue () {
+ currentFlushTimestamp = getNow();
+ flushing = true;
+ var watcher, id;
+
+ // Sort queue before flush.
+ // This ensures that:
+ // 1. Components are updated from parent to child. (because parent is always
+ // created before the child)
+ // 2. A component's user watchers are run before its render watcher (because
+ // user watchers are created before the render watcher)
+ // 3. If a component is destroyed during a parent component's watcher run,
+ // its watchers can be skipped.
+ queue.sort(function (a, b) { return a.id - b.id; });
+
+ // do not cache length because more watchers might be pushed
+ // as we run existing watchers
+ for (index = 0; index < queue.length; index++) {
+ watcher = queue[index];
+ if (watcher.before) {
+ watcher.before();
+ }
+ id = watcher.id;
+ has[id] = null;
+ watcher.run();
+ // in dev build, check and stop circular updates.
+ if ( true && has[id] != null) {
+ circular[id] = (circular[id] || 0) + 1;
+ if (circular[id] > MAX_UPDATE_COUNT) {
+ warn(
+ 'You may have an infinite update loop ' + (
+ watcher.user
+ ? ("in watcher with expression \"" + (watcher.expression) + "\"")
+ : "in a component render function."
+ ),
+ watcher.vm
+ );
+ break
+ }
+ }
+ }
+
+ // keep copies of post queues before resetting state
+ var activatedQueue = activatedChildren.slice();
+ var updatedQueue = queue.slice();
+
+ resetSchedulerState();
+
+ // call component updated and activated hooks
+ callActivatedHooks(activatedQueue);
+ callUpdatedHooks(updatedQueue);
+
+ // devtool hook
+ /* istanbul ignore if */
+ if (devtools && config.devtools) {
+ devtools.emit('flush');
+ }
+}
+
+function callUpdatedHooks (queue) {
+ var i = queue.length;
+ while (i--) {
+ var watcher = queue[i];
+ var vm = watcher.vm;
+ if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
+ callHook(vm, 'updated');
+ }
+ }
+}
+
+/**
+ * Queue a kept-alive component that was activated during patch.
+ * The queue will be processed after the entire tree has been patched.
+ */
+function queueActivatedComponent (vm) {
+ // setting _inactive to false here so that a render function can
+ // rely on checking whether it's in an inactive tree (e.g. router-view)
+ vm._inactive = false;
+ activatedChildren.push(vm);
+}
+
+function callActivatedHooks (queue) {
+ for (var i = 0; i < queue.length; i++) {
+ queue[i]._inactive = true;
+ activateChildComponent(queue[i], true /* true */);
+ }
+}
+
+/**
+ * Push a watcher into the watcher queue.
+ * Jobs with duplicate IDs will be skipped unless it's
+ * pushed when the queue is being flushed.
+ */
+function queueWatcher (watcher) {
+ var id = watcher.id;
+ if (has[id] == null) {
+ has[id] = true;
+ if (!flushing) {
+ queue.push(watcher);
+ } else {
+ // if already flushing, splice the watcher based on its id
+ // if already past its id, it will be run next immediately.
+ var i = queue.length - 1;
+ while (i > index && queue[i].id > watcher.id) {
+ i--;
+ }
+ queue.splice(i + 1, 0, watcher);
+ }
+ // queue the flush
+ if (!waiting) {
+ waiting = true;
+
+ if ( true && !config.async) {
+ flushSchedulerQueue();
+ return
+ }
+ nextTick(flushSchedulerQueue);
+ }
+ }
+}
+
+/* */
+
+
+
+var uid$2 = 0;
+
+/**
+ * A watcher parses an expression, collects dependencies,
+ * and fires callback when the expression value changes.
+ * This is used for both the $watch() api and directives.
+ */
+var Watcher = function Watcher (
+ vm,
+ expOrFn,
+ cb,
+ options,
+ isRenderWatcher
+) {
+ this.vm = vm;
+ if (isRenderWatcher) {
+ vm._watcher = this;
+ }
+ vm._watchers.push(this);
+ // options
+ if (options) {
+ this.deep = !!options.deep;
+ this.user = !!options.user;
+ this.lazy = !!options.lazy;
+ this.sync = !!options.sync;
+ this.before = options.before;
+ } else {
+ this.deep = this.user = this.lazy = this.sync = false;
+ }
+ this.cb = cb;
+ this.id = ++uid$2; // uid for batching
+ this.active = true;
+ this.dirty = this.lazy; // for lazy watchers
+ this.deps = [];
+ this.newDeps = [];
+ this.depIds = new _Set();
+ this.newDepIds = new _Set();
+ this.expression = true
+ ? expOrFn.toString()
+ : undefined;
+ // parse expression for getter
+ if (typeof expOrFn === 'function') {
+ this.getter = expOrFn;
+ } else {
+ this.getter = parsePath(expOrFn);
+ if (!this.getter) {
+ this.getter = noop;
+ true && warn(
+ "Failed watching path: \"" + expOrFn + "\" " +
+ 'Watcher only accepts simple dot-delimited paths. ' +
+ 'For full control, use a function instead.',
+ vm
+ );
+ }
+ }
+ this.value = this.lazy
+ ? undefined
+ : this.get();
+};
+
+/**
+ * Evaluate the getter, and re-collect dependencies.
+ */
+Watcher.prototype.get = function get () {
+ pushTarget(this);
+ var value;
+ var vm = this.vm;
+ try {
+ value = this.getter.call(vm, vm);
+ } catch (e) {
+ if (this.user) {
+ handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
+ } else {
+ throw e
+ }
+ } finally {
+ // "touch" every property so they are all tracked as
+ // dependencies for deep watching
+ if (this.deep) {
+ traverse(value);
+ }
+ popTarget();
+ this.cleanupDeps();
+ }
+ return value
+};
+
+/**
+ * Add a dependency to this directive.
+ */
+Watcher.prototype.addDep = function addDep (dep) {
+ var id = dep.id;
+ if (!this.newDepIds.has(id)) {
+ this.newDepIds.add(id);
+ this.newDeps.push(dep);
+ if (!this.depIds.has(id)) {
+ dep.addSub(this);
+ }
+ }
+};
+
+/**
+ * Clean up for dependency collection.
+ */
+Watcher.prototype.cleanupDeps = function cleanupDeps () {
+ var i = this.deps.length;
+ while (i--) {
+ var dep = this.deps[i];
+ if (!this.newDepIds.has(dep.id)) {
+ dep.removeSub(this);
+ }
+ }
+ var tmp = this.depIds;
+ this.depIds = this.newDepIds;
+ this.newDepIds = tmp;
+ this.newDepIds.clear();
+ tmp = this.deps;
+ this.deps = this.newDeps;
+ this.newDeps = tmp;
+ this.newDeps.length = 0;
+};
+
+/**
+ * Subscriber interface.
+ * Will be called when a dependency changes.
+ */
+Watcher.prototype.update = function update () {
+ /* istanbul ignore else */
+ if (this.lazy) {
+ this.dirty = true;
+ } else if (this.sync) {
+ this.run();
+ } else {
+ queueWatcher(this);
+ }
+};
+
+/**
+ * Scheduler job interface.
+ * Will be called by the scheduler.
+ */
+Watcher.prototype.run = function run () {
+ if (this.active) {
+ var value = this.get();
+ if (
+ value !== this.value ||
+ // Deep watchers and watchers on Object/Arrays should fire even
+ // when the value is the same, because the value may
+ // have mutated.
+ isObject(value) ||
+ this.deep
+ ) {
+ // set new value
+ var oldValue = this.value;
+ this.value = value;
+ if (this.user) {
+ try {
+ this.cb.call(this.vm, value, oldValue);
+ } catch (e) {
+ handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
+ }
+ } else {
+ this.cb.call(this.vm, value, oldValue);
+ }
+ }
+ }
+};
+
+/**
+ * Evaluate the value of the watcher.
+ * This only gets called for lazy watchers.
+ */
+Watcher.prototype.evaluate = function evaluate () {
+ this.value = this.get();
+ this.dirty = false;
+};
+
+/**
+ * Depend on all deps collected by this watcher.
+ */
+Watcher.prototype.depend = function depend () {
+ var i = this.deps.length;
+ while (i--) {
+ this.deps[i].depend();
+ }
+};
+
+/**
+ * Remove self from all dependencies' subscriber list.
+ */
+Watcher.prototype.teardown = function teardown () {
+ if (this.active) {
+ // remove self from vm's watcher list
+ // this is a somewhat expensive operation so we skip it
+ // if the vm is being destroyed.
+ if (!this.vm._isBeingDestroyed) {
+ remove(this.vm._watchers, this);
+ }
+ var i = this.deps.length;
+ while (i--) {
+ this.deps[i].removeSub(this);
+ }
+ this.active = false;
+ }
+};
+
+/* */
+
+var sharedPropertyDefinition = {
+ enumerable: true,
+ configurable: true,
+ get: noop,
+ set: noop
+};
+
+function proxy (target, sourceKey, key) {
+ sharedPropertyDefinition.get = function proxyGetter () {
+ return this[sourceKey][key]
+ };
+ sharedPropertyDefinition.set = function proxySetter (val) {
+ this[sourceKey][key] = val;
+ };
+ Object.defineProperty(target, key, sharedPropertyDefinition);
+}
+
+function initState (vm) {
+ vm._watchers = [];
+ var opts = vm.$options;
+ if (opts.props) { initProps(vm, opts.props); }
+ if (opts.methods) { initMethods(vm, opts.methods); }
+ if (opts.data) {
+ initData(vm);
+ } else {
+ observe(vm._data = {}, true /* asRootData */);
+ }
+ if (opts.computed) { initComputed(vm, opts.computed); }
+ if (opts.watch && opts.watch !== nativeWatch) {
+ initWatch(vm, opts.watch);
+ }
+}
+
+function initProps (vm, propsOptions) {
+ var propsData = vm.$options.propsData || {};
+ var props = vm._props = {};
+ // cache prop keys so that future props updates can iterate using Array
+ // instead of dynamic object key enumeration.
+ var keys = vm.$options._propKeys = [];
+ var isRoot = !vm.$parent;
+ // root instance props should be converted
+ if (!isRoot) {
+ toggleObserving(false);
+ }
+ var loop = function ( key ) {
+ keys.push(key);
+ var value = validateProp(key, propsOptions, propsData, vm);
+ /* istanbul ignore else */
+ if (true) {
+ var hyphenatedKey = hyphenate(key);
+ if (isReservedAttribute(hyphenatedKey) ||
+ config.isReservedAttr(hyphenatedKey)) {
+ warn(
+ ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
+ vm
+ );
+ }
+ defineReactive$$1(props, key, value, function () {
+ if (!isRoot && !isUpdatingChildComponent) {
+ {
+ if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 observer 在 setData callback 之后触发,直接忽略该 warn
+ return
+ }
+ //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警
+ if(
+ key === 'value' &&
+ Array.isArray(vm.$options.behaviors) &&
+ vm.$options.behaviors.indexOf('uni://form-field') !== -1
+ ){
+ return
+ }
+ if(vm._getFormData){
+ return
+ }
+ var $parent = vm.$parent;
+ while($parent){
+ if($parent.__next_tick_pending){
+ return
+ }
+ $parent = $parent.$parent;
+ }
+ }
+ warn(
+ "Avoid mutating a prop directly since the value will be " +
+ "overwritten whenever the parent component re-renders. " +
+ "Instead, use a data or computed property based on the prop's " +
+ "value. Prop being mutated: \"" + key + "\"",
+ vm
+ );
+ }
+ });
+ } else {}
+ // static props are already proxied on the component's prototype
+ // during Vue.extend(). We only need to proxy props defined at
+ // instantiation here.
+ if (!(key in vm)) {
+ proxy(vm, "_props", key);
+ }
+ };
+
+ for (var key in propsOptions) loop( key );
+ toggleObserving(true);
+}
+
+function initData (vm) {
+ var data = vm.$options.data;
+ data = vm._data = typeof data === 'function'
+ ? getData(data, vm)
+ : data || {};
+ if (!isPlainObject(data)) {
+ data = {};
+ true && warn(
+ 'data functions should return an object:\n' +
+ 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
+ vm
+ );
+ }
+ // proxy data on instance
+ var keys = Object.keys(data);
+ var props = vm.$options.props;
+ var methods = vm.$options.methods;
+ var i = keys.length;
+ while (i--) {
+ var key = keys[i];
+ if (true) {
+ if (methods && hasOwn(methods, key)) {
+ warn(
+ ("Method \"" + key + "\" has already been defined as a data property."),
+ vm
+ );
+ }
+ }
+ if (props && hasOwn(props, key)) {
+ true && warn(
+ "The data property \"" + key + "\" is already declared as a prop. " +
+ "Use prop default value instead.",
+ vm
+ );
+ } else if (!isReserved(key)) {
+ proxy(vm, "_data", key);
+ }
+ }
+ // observe data
+ observe(data, true /* asRootData */);
+}
+
+function getData (data, vm) {
+ // #7573 disable dep collection when invoking data getters
+ pushTarget();
+ try {
+ return data.call(vm, vm)
+ } catch (e) {
+ handleError(e, vm, "data()");
+ return {}
+ } finally {
+ popTarget();
+ }
+}
+
+var computedWatcherOptions = { lazy: true };
+
+function initComputed (vm, computed) {
+ // $flow-disable-line
+ var watchers = vm._computedWatchers = Object.create(null);
+ // computed properties are just getters during SSR
+ var isSSR = isServerRendering();
+
+ for (var key in computed) {
+ var userDef = computed[key];
+ var getter = typeof userDef === 'function' ? userDef : userDef.get;
+ if ( true && getter == null) {
+ warn(
+ ("Getter is missing for computed property \"" + key + "\"."),
+ vm
+ );
+ }
+
+ if (!isSSR) {
+ // create internal watcher for the computed property.
+ watchers[key] = new Watcher(
+ vm,
+ getter || noop,
+ noop,
+ computedWatcherOptions
+ );
+ }
+
+ // component-defined computed properties are already defined on the
+ // component prototype. We only need to define computed properties defined
+ // at instantiation here.
+ if (!(key in vm)) {
+ defineComputed(vm, key, userDef);
+ } else if (true) {
+ if (key in vm.$data) {
+ warn(("The computed property \"" + key + "\" is already defined in data."), vm);
+ } else if (vm.$options.props && key in vm.$options.props) {
+ warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
+ }
+ }
+ }
+}
+
+function defineComputed (
+ target,
+ key,
+ userDef
+) {
+ var shouldCache = !isServerRendering();
+ if (typeof userDef === 'function') {
+ sharedPropertyDefinition.get = shouldCache
+ ? createComputedGetter(key)
+ : createGetterInvoker(userDef);
+ sharedPropertyDefinition.set = noop;
+ } else {
+ sharedPropertyDefinition.get = userDef.get
+ ? shouldCache && userDef.cache !== false
+ ? createComputedGetter(key)
+ : createGetterInvoker(userDef.get)
+ : noop;
+ sharedPropertyDefinition.set = userDef.set || noop;
+ }
+ if ( true &&
+ sharedPropertyDefinition.set === noop) {
+ sharedPropertyDefinition.set = function () {
+ warn(
+ ("Computed property \"" + key + "\" was assigned to but it has no setter."),
+ this
+ );
+ };
+ }
+ Object.defineProperty(target, key, sharedPropertyDefinition);
+}
+
+function createComputedGetter (key) {
+ return function computedGetter () {
+ var watcher = this._computedWatchers && this._computedWatchers[key];
+ if (watcher) {
+ if (watcher.dirty) {
+ watcher.evaluate();
+ }
+ if (Dep.SharedObject.target) {// fixed by xxxxxx
+ watcher.depend();
+ }
+ return watcher.value
+ }
+ }
+}
+
+function createGetterInvoker(fn) {
+ return function computedGetter () {
+ return fn.call(this, this)
+ }
+}
+
+function initMethods (vm, methods) {
+ var props = vm.$options.props;
+ for (var key in methods) {
+ if (true) {
+ if (typeof methods[key] !== 'function') {
+ warn(
+ "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " +
+ "Did you reference the function correctly?",
+ vm
+ );
+ }
+ if (props && hasOwn(props, key)) {
+ warn(
+ ("Method \"" + key + "\" has already been defined as a prop."),
+ vm
+ );
+ }
+ if ((key in vm) && isReserved(key)) {
+ warn(
+ "Method \"" + key + "\" conflicts with an existing Vue instance method. " +
+ "Avoid defining component methods that start with _ or $."
+ );
+ }
+ }
+ vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
+ }
+}
+
+function initWatch (vm, watch) {
+ for (var key in watch) {
+ var handler = watch[key];
+ if (Array.isArray(handler)) {
+ for (var i = 0; i < handler.length; i++) {
+ createWatcher(vm, key, handler[i]);
+ }
+ } else {
+ createWatcher(vm, key, handler);
+ }
+ }
+}
+
+function createWatcher (
+ vm,
+ expOrFn,
+ handler,
+ options
+) {
+ if (isPlainObject(handler)) {
+ options = handler;
+ handler = handler.handler;
+ }
+ if (typeof handler === 'string') {
+ handler = vm[handler];
+ }
+ return vm.$watch(expOrFn, handler, options)
+}
+
+function stateMixin (Vue) {
+ // flow somehow has problems with directly declared definition object
+ // when using Object.defineProperty, so we have to procedurally build up
+ // the object here.
+ var dataDef = {};
+ dataDef.get = function () { return this._data };
+ var propsDef = {};
+ propsDef.get = function () { return this._props };
+ if (true) {
+ dataDef.set = function () {
+ warn(
+ 'Avoid replacing instance root $data. ' +
+ 'Use nested data properties instead.',
+ this
+ );
+ };
+ propsDef.set = function () {
+ warn("$props is readonly.", this);
+ };
+ }
+ Object.defineProperty(Vue.prototype, '$data', dataDef);
+ Object.defineProperty(Vue.prototype, '$props', propsDef);
+
+ Vue.prototype.$set = set;
+ Vue.prototype.$delete = del;
+
+ Vue.prototype.$watch = function (
+ expOrFn,
+ cb,
+ options
+ ) {
+ var vm = this;
+ if (isPlainObject(cb)) {
+ return createWatcher(vm, expOrFn, cb, options)
+ }
+ options = options || {};
+ options.user = true;
+ var watcher = new Watcher(vm, expOrFn, cb, options);
+ if (options.immediate) {
+ try {
+ cb.call(vm, watcher.value);
+ } catch (error) {
+ handleError(error, vm, ("callback for immediate watcher \"" + (watcher.expression) + "\""));
+ }
+ }
+ return function unwatchFn () {
+ watcher.teardown();
+ }
+ };
+}
+
+/* */
+
+var uid$3 = 0;
+
+function initMixin (Vue) {
+ Vue.prototype._init = function (options) {
+ var vm = this;
+ // a uid
+ vm._uid = uid$3++;
+
+ var startTag, endTag;
+ /* istanbul ignore if */
+ if ( true && config.performance && mark) {
+ startTag = "vue-perf-start:" + (vm._uid);
+ endTag = "vue-perf-end:" + (vm._uid);
+ mark(startTag);
+ }
+
+ // a flag to avoid this being observed
+ vm._isVue = true;
+ // merge options
+ if (options && options._isComponent) {
+ // optimize internal component instantiation
+ // since dynamic options merging is pretty slow, and none of the
+ // internal component options needs special treatment.
+ initInternalComponent(vm, options);
+ } else {
+ vm.$options = mergeOptions(
+ resolveConstructorOptions(vm.constructor),
+ options || {},
+ vm
+ );
+ }
+ /* istanbul ignore else */
+ if (true) {
+ initProxy(vm);
+ } else {}
+ // expose real self
+ vm._self = vm;
+ initLifecycle(vm);
+ initEvents(vm);
+ initRender(vm);
+ callHook(vm, 'beforeCreate');
+ !vm._$fallback && initInjections(vm); // resolve injections before data/props
+ initState(vm);
+ !vm._$fallback && initProvide(vm); // resolve provide after data/props
+ !vm._$fallback && callHook(vm, 'created');
+
+ /* istanbul ignore if */
+ if ( true && config.performance && mark) {
+ vm._name = formatComponentName(vm, false);
+ mark(endTag);
+ measure(("vue " + (vm._name) + " init"), startTag, endTag);
+ }
+
+ if (vm.$options.el) {
+ vm.$mount(vm.$options.el);
+ }
+ };
+}
+
+function initInternalComponent (vm, options) {
+ var opts = vm.$options = Object.create(vm.constructor.options);
+ // doing this because it's faster than dynamic enumeration.
+ var parentVnode = options._parentVnode;
+ opts.parent = options.parent;
+ opts._parentVnode = parentVnode;
+
+ var vnodeComponentOptions = parentVnode.componentOptions;
+ opts.propsData = vnodeComponentOptions.propsData;
+ opts._parentListeners = vnodeComponentOptions.listeners;
+ opts._renderChildren = vnodeComponentOptions.children;
+ opts._componentTag = vnodeComponentOptions.tag;
+
+ if (options.render) {
+ opts.render = options.render;
+ opts.staticRenderFns = options.staticRenderFns;
+ }
+}
+
+function resolveConstructorOptions (Ctor) {
+ var options = Ctor.options;
+ if (Ctor.super) {
+ var superOptions = resolveConstructorOptions(Ctor.super);
+ var cachedSuperOptions = Ctor.superOptions;
+ if (superOptions !== cachedSuperOptions) {
+ // super option changed,
+ // need to resolve new options.
+ Ctor.superOptions = superOptions;
+ // check if there are any late-modified/attached options (#4976)
+ var modifiedOptions = resolveModifiedOptions(Ctor);
+ // update base extend options
+ if (modifiedOptions) {
+ extend(Ctor.extendOptions, modifiedOptions);
+ }
+ options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
+ if (options.name) {
+ options.components[options.name] = Ctor;
+ }
+ }
+ }
+ return options
+}
+
+function resolveModifiedOptions (Ctor) {
+ var modified;
+ var latest = Ctor.options;
+ var sealed = Ctor.sealedOptions;
+ for (var key in latest) {
+ if (latest[key] !== sealed[key]) {
+ if (!modified) { modified = {}; }
+ modified[key] = latest[key];
+ }
+ }
+ return modified
+}
+
+function Vue (options) {
+ if ( true &&
+ !(this instanceof Vue)
+ ) {
+ warn('Vue is a constructor and should be called with the `new` keyword');
+ }
+ this._init(options);
+}
+
+initMixin(Vue);
+stateMixin(Vue);
+eventsMixin(Vue);
+lifecycleMixin(Vue);
+renderMixin(Vue);
+
+/* */
+
+function initUse (Vue) {
+ Vue.use = function (plugin) {
+ var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
+ if (installedPlugins.indexOf(plugin) > -1) {
+ return this
+ }
+
+ // additional parameters
+ var args = toArray(arguments, 1);
+ args.unshift(this);
+ if (typeof plugin.install === 'function') {
+ plugin.install.apply(plugin, args);
+ } else if (typeof plugin === 'function') {
+ plugin.apply(null, args);
+ }
+ installedPlugins.push(plugin);
+ return this
+ };
+}
+
+/* */
+
+function initMixin$1 (Vue) {
+ Vue.mixin = function (mixin) {
+ this.options = mergeOptions(this.options, mixin);
+ return this
+ };
+}
+
+/* */
+
+function initExtend (Vue) {
+ /**
+ * Each instance constructor, including Vue, has a unique
+ * cid. This enables us to create wrapped "child
+ * constructors" for prototypal inheritance and cache them.
+ */
+ Vue.cid = 0;
+ var cid = 1;
+
+ /**
+ * Class inheritance
+ */
+ Vue.extend = function (extendOptions) {
+ extendOptions = extendOptions || {};
+ var Super = this;
+ var SuperId = Super.cid;
+ var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
+ if (cachedCtors[SuperId]) {
+ return cachedCtors[SuperId]
+ }
+
+ var name = extendOptions.name || Super.options.name;
+ if ( true && name) {
+ validateComponentName(name);
+ }
+
+ var Sub = function VueComponent (options) {
+ this._init(options);
+ };
+ Sub.prototype = Object.create(Super.prototype);
+ Sub.prototype.constructor = Sub;
+ Sub.cid = cid++;
+ Sub.options = mergeOptions(
+ Super.options,
+ extendOptions
+ );
+ Sub['super'] = Super;
+
+ // For props and computed properties, we define the proxy getters on
+ // the Vue instances at extension time, on the extended prototype. This
+ // avoids Object.defineProperty calls for each instance created.
+ if (Sub.options.props) {
+ initProps$1(Sub);
+ }
+ if (Sub.options.computed) {
+ initComputed$1(Sub);
+ }
+
+ // allow further extension/mixin/plugin usage
+ Sub.extend = Super.extend;
+ Sub.mixin = Super.mixin;
+ Sub.use = Super.use;
+
+ // create asset registers, so extended classes
+ // can have their private assets too.
+ ASSET_TYPES.forEach(function (type) {
+ Sub[type] = Super[type];
+ });
+ // enable recursive self-lookup
+ if (name) {
+ Sub.options.components[name] = Sub;
+ }
+
+ // keep a reference to the super options at extension time.
+ // later at instantiation we can check if Super's options have
+ // been updated.
+ Sub.superOptions = Super.options;
+ Sub.extendOptions = extendOptions;
+ Sub.sealedOptions = extend({}, Sub.options);
+
+ // cache constructor
+ cachedCtors[SuperId] = Sub;
+ return Sub
+ };
+}
+
+function initProps$1 (Comp) {
+ var props = Comp.options.props;
+ for (var key in props) {
+ proxy(Comp.prototype, "_props", key);
+ }
+}
+
+function initComputed$1 (Comp) {
+ var computed = Comp.options.computed;
+ for (var key in computed) {
+ defineComputed(Comp.prototype, key, computed[key]);
+ }
+}
+
+/* */
+
+function initAssetRegisters (Vue) {
+ /**
+ * Create asset registration methods.
+ */
+ ASSET_TYPES.forEach(function (type) {
+ Vue[type] = function (
+ id,
+ definition
+ ) {
+ if (!definition) {
+ return this.options[type + 's'][id]
+ } else {
+ /* istanbul ignore if */
+ if ( true && type === 'component') {
+ validateComponentName(id);
+ }
+ if (type === 'component' && isPlainObject(definition)) {
+ definition.name = definition.name || id;
+ definition = this.options._base.extend(definition);
+ }
+ if (type === 'directive' && typeof definition === 'function') {
+ definition = { bind: definition, update: definition };
+ }
+ this.options[type + 's'][id] = definition;
+ return definition
+ }
+ };
+ });
+}
+
+/* */
+
+
+
+function getComponentName (opts) {
+ return opts && (opts.Ctor.options.name || opts.tag)
+}
+
+function matches (pattern, name) {
+ if (Array.isArray(pattern)) {
+ return pattern.indexOf(name) > -1
+ } else if (typeof pattern === 'string') {
+ return pattern.split(',').indexOf(name) > -1
+ } else if (isRegExp(pattern)) {
+ return pattern.test(name)
+ }
+ /* istanbul ignore next */
+ return false
+}
+
+function pruneCache (keepAliveInstance, filter) {
+ var cache = keepAliveInstance.cache;
+ var keys = keepAliveInstance.keys;
+ var _vnode = keepAliveInstance._vnode;
+ for (var key in cache) {
+ var cachedNode = cache[key];
+ if (cachedNode) {
+ var name = getComponentName(cachedNode.componentOptions);
+ if (name && !filter(name)) {
+ pruneCacheEntry(cache, key, keys, _vnode);
+ }
+ }
+ }
+}
+
+function pruneCacheEntry (
+ cache,
+ key,
+ keys,
+ current
+) {
+ var cached$$1 = cache[key];
+ if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
+ cached$$1.componentInstance.$destroy();
+ }
+ cache[key] = null;
+ remove(keys, key);
+}
+
+var patternTypes = [String, RegExp, Array];
+
+var KeepAlive = {
+ name: 'keep-alive',
+ abstract: true,
+
+ props: {
+ include: patternTypes,
+ exclude: patternTypes,
+ max: [String, Number]
+ },
+
+ created: function created () {
+ this.cache = Object.create(null);
+ this.keys = [];
+ },
+
+ destroyed: function destroyed () {
+ for (var key in this.cache) {
+ pruneCacheEntry(this.cache, key, this.keys);
+ }
+ },
+
+ mounted: function mounted () {
+ var this$1 = this;
+
+ this.$watch('include', function (val) {
+ pruneCache(this$1, function (name) { return matches(val, name); });
+ });
+ this.$watch('exclude', function (val) {
+ pruneCache(this$1, function (name) { return !matches(val, name); });
+ });
+ },
+
+ render: function render () {
+ var slot = this.$slots.default;
+ var vnode = getFirstComponentChild(slot);
+ var componentOptions = vnode && vnode.componentOptions;
+ if (componentOptions) {
+ // check pattern
+ var name = getComponentName(componentOptions);
+ var ref = this;
+ var include = ref.include;
+ var exclude = ref.exclude;
+ if (
+ // not included
+ (include && (!name || !matches(include, name))) ||
+ // excluded
+ (exclude && name && matches(exclude, name))
+ ) {
+ return vnode
+ }
+
+ var ref$1 = this;
+ var cache = ref$1.cache;
+ var keys = ref$1.keys;
+ var key = vnode.key == null
+ // same constructor may get registered as different local components
+ // so cid alone is not enough (#3269)
+ ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
+ : vnode.key;
+ if (cache[key]) {
+ vnode.componentInstance = cache[key].componentInstance;
+ // make current key freshest
+ remove(keys, key);
+ keys.push(key);
+ } else {
+ cache[key] = vnode;
+ keys.push(key);
+ // prune oldest entry
+ if (this.max && keys.length > parseInt(this.max)) {
+ pruneCacheEntry(cache, keys[0], keys, this._vnode);
+ }
+ }
+
+ vnode.data.keepAlive = true;
+ }
+ return vnode || (slot && slot[0])
+ }
+};
+
+var builtInComponents = {
+ KeepAlive: KeepAlive
+};
+
+/* */
+
+function initGlobalAPI (Vue) {
+ // config
+ var configDef = {};
+ configDef.get = function () { return config; };
+ if (true) {
+ configDef.set = function () {
+ warn(
+ 'Do not replace the Vue.config object, set individual fields instead.'
+ );
+ };
+ }
+ Object.defineProperty(Vue, 'config', configDef);
+
+ // exposed util methods.
+ // NOTE: these are not considered part of the public API - avoid relying on
+ // them unless you are aware of the risk.
+ Vue.util = {
+ warn: warn,
+ extend: extend,
+ mergeOptions: mergeOptions,
+ defineReactive: defineReactive$$1
+ };
+
+ Vue.set = set;
+ Vue.delete = del;
+ Vue.nextTick = nextTick;
+
+ // 2.6 explicit observable API
+ Vue.observable = function (obj) {
+ observe(obj);
+ return obj
+ };
+
+ Vue.options = Object.create(null);
+ ASSET_TYPES.forEach(function (type) {
+ Vue.options[type + 's'] = Object.create(null);
+ });
+
+ // this is used to identify the "base" constructor to extend all plain-object
+ // components with in Weex's multi-instance scenarios.
+ Vue.options._base = Vue;
+
+ extend(Vue.options.components, builtInComponents);
+
+ initUse(Vue);
+ initMixin$1(Vue);
+ initExtend(Vue);
+ initAssetRegisters(Vue);
+}
+
+initGlobalAPI(Vue);
+
+Object.defineProperty(Vue.prototype, '$isServer', {
+ get: isServerRendering
+});
+
+Object.defineProperty(Vue.prototype, '$ssrContext', {
+ get: function get () {
+ /* istanbul ignore next */
+ return this.$vnode && this.$vnode.ssrContext
+ }
+});
+
+// expose FunctionalRenderContext for ssr runtime helper installation
+Object.defineProperty(Vue, 'FunctionalRenderContext', {
+ value: FunctionalRenderContext
+});
+
+Vue.version = '2.6.11';
+
+/**
+ * https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js
+ */
+var ARRAYTYPE = '[object Array]';
+var OBJECTTYPE = '[object Object]';
+var NULLTYPE = '[object Null]';
+var UNDEFINEDTYPE = '[object Undefined]';
+// const FUNCTIONTYPE = '[object Function]'
+
+function diff(current, pre) {
+ var result = {};
+ syncKeys(current, pre);
+ _diff(current, pre, '', result);
+ return result
+}
+
+function syncKeys(current, pre) {
+ if (current === pre) { return }
+ var rootCurrentType = type(current);
+ var rootPreType = type(pre);
+ if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {
+ if(Object.keys(current).length >= Object.keys(pre).length){
+ for (var key in pre) {
+ var currentValue = current[key];
+ if (currentValue === undefined) {
+ current[key] = null;
+ } else {
+ syncKeys(currentValue, pre[key]);
+ }
+ }
+ }
+ } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {
+ if (current.length >= pre.length) {
+ pre.forEach(function (item, index) {
+ syncKeys(current[index], item);
+ });
+ }
+ }
+}
+
+function nullOrUndefined(currentType, preType) {
+ if(
+ (currentType === NULLTYPE || currentType === UNDEFINEDTYPE) &&
+ (preType === NULLTYPE || preType === UNDEFINEDTYPE)
+ ) {
+ return false
+ }
+ return true
+}
+
+function _diff(current, pre, path, result) {
+ if (current === pre) { return }
+ var rootCurrentType = type(current);
+ var rootPreType = type(pre);
+ if (rootCurrentType == OBJECTTYPE) {
+ if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {
+ setResult(result, path, current);
+ } else {
+ var loop = function ( key ) {
+ var currentValue = current[key];
+ var preValue = pre[key];
+ var currentType = type(currentValue);
+ var preType = type(preValue);
+ if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {
+ if (currentValue !== pre[key] && nullOrUndefined(currentType, preType)) {
+ setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
+ }
+ } else if (currentType == ARRAYTYPE) {
+ if (preType != ARRAYTYPE) {
+ setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
+ } else {
+ if (currentValue.length < preValue.length) {
+ setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
+ } else {
+ currentValue.forEach(function (item, index) {
+ _diff(item, preValue[index], (path == '' ? '' : path + ".") + key + '[' + index + ']', result);
+ });
+ }
+ }
+ } else if (currentType == OBJECTTYPE) {
+ if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {
+ setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
+ } else {
+ for (var subKey in currentValue) {
+ _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + ".") + key + '.' + subKey, result);
+ }
+ }
+ }
+ };
+
+ for (var key in current) loop( key );
+ }
+ } else if (rootCurrentType == ARRAYTYPE) {
+ if (rootPreType != ARRAYTYPE) {
+ setResult(result, path, current);
+ } else {
+ if (current.length < pre.length) {
+ setResult(result, path, current);
+ } else {
+ current.forEach(function (item, index) {
+ _diff(item, pre[index], path + '[' + index + ']', result);
+ });
+ }
+ }
+ } else {
+ setResult(result, path, current);
+ }
+}
+
+function setResult(result, k, v) {
+ // if (type(v) != FUNCTIONTYPE) {
+ result[k] = v;
+ // }
+}
+
+function type(obj) {
+ return Object.prototype.toString.call(obj)
+}
+
+/* */
+
+function flushCallbacks$1(vm) {
+ if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
+ if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"daoyou","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ var mpInstance = vm.$scope;
+ console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
+ ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
+ }
+ var copies = vm.__next_tick_callbacks.slice(0);
+ vm.__next_tick_callbacks.length = 0;
+ for (var i = 0; i < copies.length; i++) {
+ copies[i]();
+ }
+ }
+}
+
+function hasRenderWatcher(vm) {
+ return queue.find(function (watcher) { return vm._watcher === watcher; })
+}
+
+function nextTick$1(vm, cb) {
+ //1.nextTick 之前 已 setData 且 setData 还未回调完成
+ //2.nextTick 之前存在 render watcher
+ if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
+ if(Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"daoyou","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
+ var mpInstance = vm.$scope;
+ console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
+ ']:nextVueTick');
+ }
+ return nextTick(cb, vm)
+ }else{
+ if(Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"daoyou","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
+ var mpInstance$1 = vm.$scope;
+ console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
+ ']:nextMPTick');
+ }
+ }
+ var _resolve;
+ if (!vm.__next_tick_callbacks) {
+ vm.__next_tick_callbacks = [];
+ }
+ vm.__next_tick_callbacks.push(function () {
+ if (cb) {
+ try {
+ cb.call(vm);
+ } catch (e) {
+ handleError(e, vm, 'nextTick');
+ }
+ } else if (_resolve) {
+ _resolve(vm);
+ }
+ });
+ // $flow-disable-line
+ if (!cb && typeof Promise !== 'undefined') {
+ return new Promise(function (resolve) {
+ _resolve = resolve;
+ })
+ }
+}
+
+/* */
+
+function clearInstance(key, value) {
+ // 简易去除 Vue 和小程序组件实例
+ if (value) {
+ if (value._isVue || value.__v_isMPComponent) {
+ return {}
+ }
+ }
+ return value
+}
+
+function cloneWithData(vm) {
+ // 确保当前 vm 所有数据被同步
+ var ret = Object.create(null);
+ var dataKeys = [].concat(
+ Object.keys(vm._data || {}),
+ Object.keys(vm._computedWatchers || {}));
+
+ dataKeys.reduce(function(ret, key) {
+ ret[key] = vm[key];
+ return ret
+ }, ret);
+
+ // vue-composition-api
+ var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;
+ var rawBindings = compositionApiState && compositionApiState.rawBindings;
+ if (rawBindings) {
+ Object.keys(rawBindings).forEach(function (key) {
+ ret[key] = vm[key];
+ });
+ }
+
+ //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据
+ Object.assign(ret, vm.$mp.data || {});
+ if (
+ Array.isArray(vm.$options.behaviors) &&
+ vm.$options.behaviors.indexOf('uni://form-field') !== -1
+ ) { //form-field
+ ret['name'] = vm.name;
+ ret['value'] = vm.value;
+ }
+
+ return JSON.parse(JSON.stringify(ret, clearInstance))
+}
+
+var patch = function(oldVnode, vnode) {
+ var this$1 = this;
+
+ if (vnode === null) { //destroy
+ return
+ }
+ if (this.mpType === 'page' || this.mpType === 'component') {
+ var mpInstance = this.$scope;
+ var data = Object.create(null);
+ try {
+ data = cloneWithData(this);
+ } catch (err) {
+ console.error(err);
+ }
+ data.__webviewId__ = mpInstance.data.__webviewId__;
+ var mpData = Object.create(null);
+ Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据
+ mpData[key] = mpInstance.data[key];
+ });
+ var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
+ if (Object.keys(diffData).length) {
+ if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"daoyou","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
+ ']差量更新',
+ JSON.stringify(diffData));
+ }
+ this.__next_tick_pending = true;
+ mpInstance.setData(diffData, function () {
+ this$1.__next_tick_pending = false;
+ flushCallbacks$1(this$1);
+ });
+ } else {
+ flushCallbacks$1(this);
+ }
+ }
+};
+
+/* */
+
+function createEmptyRender() {
+
+}
+
+function mountComponent$1(
+ vm,
+ el,
+ hydrating
+) {
+ if (!vm.mpType) {//main.js 中的 new Vue
+ return vm
+ }
+ if (vm.mpType === 'app') {
+ vm.$options.render = createEmptyRender;
+ }
+ if (!vm.$options.render) {
+ vm.$options.render = createEmptyRender;
+ if (true) {
+ /* istanbul ignore if */
+ if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
+ vm.$options.el || el) {
+ warn(
+ 'You are using the runtime-only build of Vue where the template ' +
+ 'compiler is not available. Either pre-compile the templates into ' +
+ 'render functions, or use the compiler-included build.',
+ vm
+ );
+ } else {
+ warn(
+ 'Failed to mount component: template or render function not defined.',
+ vm
+ );
+ }
+ }
+ }
+
+ !vm._$fallback && callHook(vm, 'beforeMount');
+
+ var updateComponent = function () {
+ vm._update(vm._render(), hydrating);
+ };
+
+ // we set this to vm._watcher inside the watcher's constructor
+ // since the watcher's initial patch may call $forceUpdate (e.g. inside child
+ // component's mounted hook), which relies on vm._watcher being already defined
+ new Watcher(vm, updateComponent, noop, {
+ before: function before() {
+ if (vm._isMounted && !vm._isDestroyed) {
+ callHook(vm, 'beforeUpdate');
+ }
+ }
+ }, true /* isRenderWatcher */);
+ hydrating = false;
+ return vm
+}
+
+/* */
+
+function renderClass (
+ staticClass,
+ dynamicClass
+) {
+ if (isDef(staticClass) || isDef(dynamicClass)) {
+ return concat(staticClass, stringifyClass(dynamicClass))
+ }
+ /* istanbul ignore next */
+ return ''
+}
+
+function concat (a, b) {
+ return a ? b ? (a + ' ' + b) : a : (b || '')
+}
+
+function stringifyClass (value) {
+ if (Array.isArray(value)) {
+ return stringifyArray(value)
+ }
+ if (isObject(value)) {
+ return stringifyObject(value)
+ }
+ if (typeof value === 'string') {
+ return value
+ }
+ /* istanbul ignore next */
+ return ''
+}
+
+function stringifyArray (value) {
+ var res = '';
+ var stringified;
+ for (var i = 0, l = value.length; i < l; i++) {
+ if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
+ if (res) { res += ' '; }
+ res += stringified;
+ }
+ }
+ return res
+}
+
+function stringifyObject (value) {
+ var res = '';
+ for (var key in value) {
+ if (value[key]) {
+ if (res) { res += ' '; }
+ res += key;
+ }
+ }
+ return res
+}
+
+/* */
+
+var parseStyleText = cached(function (cssText) {
+ var res = {};
+ var listDelimiter = /;(?![^(]*\))/g;
+ var propertyDelimiter = /:(.+)/;
+ cssText.split(listDelimiter).forEach(function (item) {
+ if (item) {
+ var tmp = item.split(propertyDelimiter);
+ tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
+ }
+ });
+ return res
+});
+
+// normalize possible array / string values into Object
+function normalizeStyleBinding (bindingStyle) {
+ if (Array.isArray(bindingStyle)) {
+ return toObject(bindingStyle)
+ }
+ if (typeof bindingStyle === 'string') {
+ return parseStyleText(bindingStyle)
+ }
+ return bindingStyle
+}
+
+/* */
+
+var MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];
+
+function getTarget(obj, path) {
+ var parts = path.split('.');
+ var key = parts[0];
+ if (key.indexOf('__$n') === 0) { //number index
+ key = parseInt(key.replace('__$n', ''));
+ }
+ if (parts.length === 1) {
+ return obj[key]
+ }
+ return getTarget(obj[key], parts.slice(1).join('.'))
+}
+
+function internalMixin(Vue) {
+
+ Vue.config.errorHandler = function(err, vm, info) {
+ Vue.util.warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
+ console.error(err);
+ /* eslint-disable no-undef */
+ var app = typeof getApp === 'function' && getApp();
+ if (app && app.onError) {
+ app.onError(err);
+ }
+ };
+
+ var oldEmit = Vue.prototype.$emit;
+
+ Vue.prototype.$emit = function(event) {
+ if (this.$scope && event) {
+ var triggerEvent = this.$scope['_triggerEvent'] || this.$scope['triggerEvent'];
+ if (triggerEvent) {
+ try {
+ triggerEvent.call(this.$scope, event, {
+ __args__: toArray(arguments, 1)
+ });
+ } catch (error) {
+
+ }
+ }
+ }
+ return oldEmit.apply(this, arguments)
+ };
+
+ Vue.prototype.$nextTick = function(fn) {
+ return nextTick$1(this, fn)
+ };
+
+ MP_METHODS.forEach(function (method) {
+ Vue.prototype[method] = function(args) {
+ if (this.$scope && this.$scope[method]) {
+ return this.$scope[method](args)
+ }
+ // mp-alipay
+ if (typeof my === 'undefined') {
+ return
+ }
+ if (method === 'createSelectorQuery') {
+ /* eslint-disable no-undef */
+ return my.createSelectorQuery(args)
+ } else if (method === 'createIntersectionObserver') {
+ /* eslint-disable no-undef */
+ return my.createIntersectionObserver(args)
+ }
+ // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent
+ };
+ });
+
+ Vue.prototype.__init_provide = initProvide;
+
+ Vue.prototype.__init_injections = initInjections;
+
+ Vue.prototype.__call_hook = function(hook, args) {
+ var vm = this;
+ // #7573 disable dep collection when invoking lifecycle hooks
+ pushTarget();
+ var handlers = vm.$options[hook];
+ var info = hook + " hook";
+ var ret;
+ if (handlers) {
+ for (var i = 0, j = handlers.length; i < j; i++) {
+ ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);
+ }
+ }
+ if (vm._hasHookEvent) {
+ vm.$emit('hook:' + hook, args);
+ }
+ popTarget();
+ return ret
+ };
+
+ Vue.prototype.__set_model = function(target, key, value, modifiers) {
+ if (Array.isArray(modifiers)) {
+ if (modifiers.indexOf('trim') !== -1) {
+ value = value.trim();
+ }
+ if (modifiers.indexOf('number') !== -1) {
+ value = this._n(value);
+ }
+ }
+ if (!target) {
+ target = this;
+ }
+ // 解决动态属性添加
+ Vue.set(target, key, value);
+ };
+
+ Vue.prototype.__set_sync = function(target, key, value) {
+ if (!target) {
+ target = this;
+ }
+ // 解决动态属性添加
+ Vue.set(target, key, value);
+ };
+
+ Vue.prototype.__get_orig = function(item) {
+ if (isPlainObject(item)) {
+ return item['$orig'] || item
+ }
+ return item
+ };
+
+ Vue.prototype.__get_value = function(dataPath, target) {
+ return getTarget(target || this, dataPath)
+ };
+
+
+ Vue.prototype.__get_class = function(dynamicClass, staticClass) {
+ return renderClass(staticClass, dynamicClass)
+ };
+
+ Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {
+ if (!dynamicStyle && !staticStyle) {
+ return ''
+ }
+ var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);
+ var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;
+ return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + ":" + (styleObj[name])); }).join(';')
+ };
+
+ Vue.prototype.__map = function(val, iteratee) {
+ //TODO 暂不考虑 string
+ var ret, i, l, keys, key;
+ if (Array.isArray(val)) {
+ ret = new Array(val.length);
+ for (i = 0, l = val.length; i < l; i++) {
+ ret[i] = iteratee(val[i], i);
+ }
+ return ret
+ } else if (isObject(val)) {
+ keys = Object.keys(val);
+ ret = Object.create(null);
+ for (i = 0, l = keys.length; i < l; i++) {
+ key = keys[i];
+ ret[key] = iteratee(val[key], key, i);
+ }
+ return ret
+ } else if (typeof val === 'number') {
+ ret = new Array(val);
+ for (i = 0, l = val; i < l; i++) {
+ // 第一个参数暂时仍和小程序一致
+ ret[i] = iteratee(i, i);
+ }
+ return ret
+ }
+ return []
+ };
+
+}
+
+/* */
+
+var LIFECYCLE_HOOKS$1 = [
+ //App
+ 'onLaunch',
+ 'onShow',
+ 'onHide',
+ 'onUniNViewMessage',
+ 'onPageNotFound',
+ 'onThemeChange',
+ 'onError',
+ 'onUnhandledRejection',
+ //Page
+ 'onInit',
+ 'onLoad',
+ // 'onShow',
+ 'onReady',
+ // 'onHide',
+ 'onUnload',
+ 'onPullDownRefresh',
+ 'onReachBottom',
+ 'onTabItemTap',
+ 'onAddToFavorites',
+ 'onShareTimeline',
+ 'onShareAppMessage',
+ 'onResize',
+ 'onPageScroll',
+ 'onNavigationBarButtonTap',
+ 'onBackPress',
+ 'onNavigationBarSearchInputChanged',
+ 'onNavigationBarSearchInputConfirmed',
+ 'onNavigationBarSearchInputClicked',
+ 'onUploadDouyinVideo',
+ 'onNFCReadMessage',
+ //Component
+ // 'onReady', // 兼容旧版本,应该移除该事件
+ 'onPageShow',
+ 'onPageHide',
+ 'onPageResize'
+];
+function lifecycleMixin$1(Vue) {
+
+ //fixed vue-class-component
+ var oldExtend = Vue.extend;
+ Vue.extend = function(extendOptions) {
+ extendOptions = extendOptions || {};
+
+ var methods = extendOptions.methods;
+ if (methods) {
+ Object.keys(methods).forEach(function (methodName) {
+ if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {
+ extendOptions[methodName] = methods[methodName];
+ delete methods[methodName];
+ }
+ });
+ }
+
+ return oldExtend.call(this, extendOptions)
+ };
+
+ var strategies = Vue.config.optionMergeStrategies;
+ var mergeHook = strategies.created;
+ LIFECYCLE_HOOKS$1.forEach(function (hook) {
+ strategies[hook] = mergeHook;
+ });
+
+ Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;
+}
+
+/* */
+
+// install platform patch function
+Vue.prototype.__patch__ = patch;
+
+// public mount method
+Vue.prototype.$mount = function(
+ el ,
+ hydrating
+) {
+ return mountComponent$1(this, el, hydrating)
+};
+
+lifecycleMixin$1(Vue);
+internalMixin(Vue);
+
+/* */
+
+/* harmony default export */ __webpack_exports__["default"] = (Vue);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 3)))
+
+/***/ }),
+/* 26 */
+/*!*****************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/pages.json ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+/* 27 */,
+/* 28 */,
+/* 29 */,
+/* 30 */,
+/* 31 */,
+/* 32 */
+/*!**********************************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
+ \**********************************************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
+/* globals __VUE_SSR_CONTEXT__ */
+
+// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
+// This module is a runtime utility for cleaner component module output and will
+// be included in the final webpack user bundle.
+
+function normalizeComponent (
+ scriptExports,
+ render,
+ staticRenderFns,
+ functionalTemplate,
+ injectStyles,
+ scopeId,
+ moduleIdentifier, /* server only */
+ shadowMode, /* vue-cli only */
+ components, // fixed by xxxxxx auto components
+ renderjs // fixed by xxxxxx renderjs
+) {
+ // Vue.extend constructor export interop
+ var options = typeof scriptExports === 'function'
+ ? scriptExports.options
+ : scriptExports
+
+ // fixed by xxxxxx auto components
+ if (components) {
+ if (!options.components) {
+ options.components = {}
+ }
+ var hasOwn = Object.prototype.hasOwnProperty
+ for (var name in components) {
+ if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
+ options.components[name] = components[name]
+ }
+ }
+ }
+ // fixed by xxxxxx renderjs
+ if (renderjs) {
+ if(typeof renderjs.beforeCreate === 'function'){
+ renderjs.beforeCreate = [renderjs.beforeCreate]
+ }
+ (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
+ this[renderjs.__module] = this
+ });
+ (options.mixins || (options.mixins = [])).push(renderjs)
+ }
+
+ // render functions
+ if (render) {
+ options.render = render
+ options.staticRenderFns = staticRenderFns
+ options._compiled = true
+ }
+
+ // functional template
+ if (functionalTemplate) {
+ options.functional = true
+ }
+
+ // scopedId
+ if (scopeId) {
+ options._scopeId = 'data-v-' + scopeId
+ }
+
+ var hook
+ if (moduleIdentifier) { // server build
+ hook = function (context) {
+ // 2.3 injection
+ context =
+ context || // cached call
+ (this.$vnode && this.$vnode.ssrContext) || // stateful
+ (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
+ // 2.2 with runInNewContext: true
+ if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
+ context = __VUE_SSR_CONTEXT__
+ }
+ // inject component styles
+ if (injectStyles) {
+ injectStyles.call(this, context)
+ }
+ // register component module identifier for async chunk inferrence
+ if (context && context._registeredComponents) {
+ context._registeredComponents.add(moduleIdentifier)
+ }
+ }
+ // used by ssr in case component is cached and beforeCreate
+ // never gets called
+ options._ssrRegister = hook
+ } else if (injectStyles) {
+ hook = shadowMode
+ ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
+ : injectStyles
+ }
+
+ if (hook) {
+ if (options.functional) {
+ // for template-only hot-reload because in that case the render fn doesn't
+ // go through the normalizer
+ options._injectStyles = hook
+ // register for functioal component in vue file
+ var originalRender = options.render
+ options.render = function renderWithStyleInjection (h, context) {
+ hook.call(context)
+ return originalRender(h, context)
+ }
+ } else {
+ // inject component registration as beforeCreate hook
+ var existing = options.beforeCreate
+ options.beforeCreate = existing
+ ? [].concat(existing, hook)
+ : [hook]
+ }
+ }
+
+ return {
+ exports: scriptExports,
+ options: options
+ }
+}
+
+
+/***/ }),
+/* 33 */
+/*!*********************************************************!*\
+ !*** D:/Project/project_wenlv/tourGuide/store/index.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
+var _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 34));
+var _user = _interopRequireDefault(__webpack_require__(/*! ./modules/user */ 35));
+_vue.default.use(_vuex.default);
+var _default = new _vuex.default.Store({
+ modules: {
+ user: _user.default
+ }
+});
+exports.default = _default;
+
+/***/ }),
+/* 34 */
+/*!**************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***!
+ \**************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/*!
+ * vuex v3.6.2
+ * (c) 2021 Evan You
+ * @license MIT
+ */
+
+
+function applyMixin (Vue) {
+ var version = Number(Vue.version.split('.')[0]);
+
+ if (version >= 2) {
+ Vue.mixin({ beforeCreate: vuexInit });
+ } else {
+ // override init and inject vuex init procedure
+ // for 1.x backwards compatibility.
+ var _init = Vue.prototype._init;
+ Vue.prototype._init = function (options) {
+ if ( options === void 0 ) options = {};
+
+ options.init = options.init
+ ? [vuexInit].concat(options.init)
+ : vuexInit;
+ _init.call(this, options);
+ };
+ }
+
+ /**
+ * Vuex init hook, injected into each instances init hooks list.
+ */
+
+ function vuexInit () {
+ var options = this.$options;
+ // store injection
+ if (options.store) {
+ this.$store = typeof options.store === 'function'
+ ? options.store()
+ : options.store;
+ } else if (options.parent && options.parent.$store) {
+ this.$store = options.parent.$store;
+ }
+ }
+}
+
+var target = typeof window !== 'undefined'
+ ? window
+ : typeof global !== 'undefined'
+ ? global
+ : {};
+var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+
+function devtoolPlugin (store) {
+ if (!devtoolHook) { return }
+
+ store._devtoolHook = devtoolHook;
+
+ devtoolHook.emit('vuex:init', store);
+
+ devtoolHook.on('vuex:travel-to-state', function (targetState) {
+ store.replaceState(targetState);
+ });
+
+ store.subscribe(function (mutation, state) {
+ devtoolHook.emit('vuex:mutation', mutation, state);
+ }, { prepend: true });
+
+ store.subscribeAction(function (action, state) {
+ devtoolHook.emit('vuex:action', action, state);
+ }, { prepend: true });
+}
+
+/**
+ * Get the first item that pass the test
+ * by second argument function
+ *
+ * @param {Array} list
+ * @param {Function} f
+ * @return {*}
+ */
+function find (list, f) {
+ return list.filter(f)[0]
+}
+
+/**
+ * Deep copy the given object considering circular structure.
+ * This function caches all nested objects and its copies.
+ * If it detects circular structure, use cached copy to avoid infinite loop.
+ *
+ * @param {*} obj
+ * @param {Array
+ *
+ * Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins
+ * with a new int. This is done intentionally so that we can copy out a row into a BitArray very
+ * efficiently.
+ *
+ * The ordering of bits is row-major. Within each int, the least significant bits are used first,
+ * meaning they represent lower x values. This is compatible with BitArray's implementation.
+ *
+ * @author Sean Owen
+ * @author dswitkin@google.com (Daniel Switkin)
+ */var BitMatrix/*implements Cloneable*/=/*#__PURE__*/function(){/**
+ * Creates an empty square {@link BitMatrix}.
+ *
+ * @param dimension height and width
+ */ // public constructor(dimension: number /*int*/) {
+// this(dimension, dimension)
+// }
+/**
+ * Creates an empty {@link BitMatrix}.
+ *
+ * @param width bit matrix width
+ * @param height bit matrix height
+ */ // public constructor(width: number /*int*/, height: number /*int*/) {
+// if (width < 1 || height < 1) {
+// throw new IllegalArgumentException("Both dimensions must be greater than 0")
+// }
+// this.width = width
+// this.height = height
+// this.rowSize = (width + 31) / 32
+// bits = new int[rowSize * height];
+// }
+function BitMatrix(width/*int*/,height/*int*/,rowSize/*int*/,bits){_classCallCheck(this,BitMatrix);this.width=width;this.height=height;this.rowSize=rowSize;this.bits=bits;if(undefined===height||null===height){height=width;}this.height=height;if(width<1||height<1){throw new IllegalArgumentException('Both dimensions must be greater than 0');}if(undefined===rowSize||null===rowSize){rowSize=Math.floor((width+31)/32);}this.rowSize=rowSize;if(undefined===bits||null===bits){this.bits=new Int32Array(this.rowSize*this.height);}}/**
+ * Interprets a 2D array of booleans as a {@link BitMatrix}, where "true" means an "on" bit.
+ *
+ * @function parse
+ * @param image bits of the image, as a row-major 2D array. Elements are arrays representing rows
+ * @return {@link BitMatrix} representation of image
+ */_createClass(BitMatrix,[{key:"get",value:/**
+ * Gets the requested bit, where true means black.
+ *
+ * @param x The horizontal component (i.e. which column)
+ * @param y The vertical component (i.e. which row)
+ * @return value of given bit in matrix
+ */function get(x/*int*/,y/*int*/){var offset=y*this.rowSize+Math.floor(x/32);return(this.bits[offset]>>>(x&0x1f)&1)!==0;}/**
+ * Sets the given bit to true.
+ *
+ * @param x The horizontal component (i.e. which column)
+ * @param y The vertical component (i.e. which row)
+ */},{key:"set",value:function set(x/*int*/,y/*int*/){var offset=y*this.rowSize+Math.floor(x/32);this.bits[offset]|=1<<(x&0x1f)&0xFFFFFFFF;}},{key:"unset",value:function unset(x/*int*/,y/*int*/){var offset=y*this.rowSize+Math.floor(x/32);this.bits[offset]&=~(1<<(x&0x1f)&0xFFFFFFFF);}/**
+ * Flips the given bit.
+ *
+ * @param x The horizontal component (i.e. which column)
+ * @param y The vertical component (i.e. which row)
+ */},{key:"flip",value:function flip(x/*int*/,y/*int*/){var offset=y*this.rowSize+Math.floor(x/32);this.bits[offset]^=1<<(x&0x1f)&0xFFFFFFFF;}/**
+ * Exclusive-or (XOR): Flip the bit in this {@code BitMatrix} if the corresponding
+ * mask bit is set.
+ *
+ * @param mask XOR mask
+ */},{key:"xor",value:function xor(mask){if(this.width!==mask.getWidth()||this.height!==mask.getHeight()||this.rowSize!==mask.getRowSize()){throw new IllegalArgumentException('input matrix dimensions do not match');}var rowArray=new BitArray(Math.floor(this.width/32)+1);var rowSize=this.rowSize;var bits=this.bits;for(var y=0,height=this.height;ySets a square region of the bit matrix to true.
+ *
+ * @param left The horizontal position to begin at (inclusive)
+ * @param top The vertical position to begin at (inclusive)
+ * @param width The width of the region
+ * @param height The height of the region
+ */},{key:"setRegion",value:function setRegion(left/*int*/,top/*int*/,width/*int*/,height/*int*/){if(top<0||left<0){throw new IllegalArgumentException('Left and top must be nonnegative');}if(height<1||width<1){throw new IllegalArgumentException('Height and width must be at least 1');}var right=left+width;var bottom=top+height;if(bottom>this.height||right>this.width){throw new IllegalArgumentException('The region must fit inside the matrix');}var rowSize=this.rowSize;var bits=this.bits;for(var y=top;ybottom){bottom=y;}if(x32*32right){var _bit=31;while(theBits>>>_bit===0){_bit--;}if(x32*32+_bit>right){right=x32*32+_bit;}}}}}if(right=0&&bits[bitsOffset]===0){bitsOffset--;}if(bitsOffset<0){return null;}var y=Math.floor(bitsOffset/rowSize);var x=Math.floor(bitsOffset%rowSize)*32;var theBits=bits[bitsOffset];var bit=31;while(theBits>>>bit===0){bit--;}x+=bit;return Int32Array.from([x,y]);}/**
+ * @return The width of the matrix
+ */},{key:"getWidth",value:function getWidth(){return this.width;}/**
+ * @return The height of the matrix
+ */},{key:"getHeight",value:function getHeight(){return this.height;}/**
+ * @return The row size of the matrix
+ */},{key:"getRowSize",value:function getRowSize(){return this.rowSize;}/*@Override*/},{key:"equals",value:function equals(o){if(!(o instanceof BitMatrix)){return false;}var other=o;return this.width===other.width&&this.height===other.height&&this.rowSize===other.rowSize&&Arrays.equals(this.bits,other.bits);}/*@Override*/},{key:"hashCode",value:function hashCode(){var hash=this.width;hash=31*hash+this.width;hash=31*hash+this.height;hash=31*hash+this.rowSize;hash=31*hash+Arrays.hashCode(this.bits);return hash;}/**
+ * @return string representation using "X" for set and " " for unset bits
+ */ /*@Override*/ // public toString(): string {
+// return toString(": "X, " ")
+// }
+/**
+ * @param setString representation of a set bit
+ * @param unsetString representation of an unset bit
+ * @return string representation of entire matrix utilizing given strings
+ */ // public toString(setString: string = "X ", unsetString: string = " "): string {
+// return this.buildToString(setString, unsetString, "\n")
+// }
+/**
+ * @param setString representation of a set bit
+ * @param unsetString representation of an unset bit
+ * @param lineSeparator newline character in string representation
+ * @return string representation of entire matrix utilizing given strings and line separator
+ * @deprecated call {@link #toString(String,String)} only, which uses \n line separator always
+ */ // @Deprecated
+},{key:"toString",value:function toString(){var setString=arguments.length>0&&arguments[0]!==undefined?arguments[0]:'X ';var unsetString=arguments.length>1&&arguments[1]!==undefined?arguments[1]:' ';var lineSeparator=arguments.length>2&&arguments[2]!==undefined?arguments[2]:'\n';return this.buildToString(setString,unsetString,lineSeparator);}},{key:"buildToString",value:function buildToString(setString,unsetString,lineSeparator){var result=new StringBuilder();// result.append(lineSeparator);
+for(var y=0,height=this.height;yrowStartPos){if(rowLength===-1){rowLength=bitsPos-rowStartPos;}else if(bitsPos-rowStartPos!==rowLength){throw new IllegalArgumentException('row lengths do not match');}rowStartPos=bitsPos;nRows++;}pos++;}else if(stringRepresentation.substring(pos,pos+setString.length)===setString){pos+=setString.length;bits[bitsPos]=true;bitsPos++;}else if(stringRepresentation.substring(pos,pos+unsetString.length)===unsetString){pos+=unsetString.length;bits[bitsPos]=false;bitsPos++;}else{throw new IllegalArgumentException('illegal character encountered: '+stringRepresentation.substring(pos));}}// no EOL at end?
+if(bitsPos>rowStartPos){if(rowLength===-1){rowLength=bitsPos-rowStartPos;}else if(bitsPos-rowStartPos!==rowLength){throw new IllegalArgumentException('row lengths do not match');}nRows++;}var matrix=new BitMatrix(rowLength,nRows);for(var i=0;i>GlobalHistogramBinarizer.LUMINANCE_SHIFT]++;}var blackPoint=GlobalHistogramBinarizer.estimateBlackPoint(localBuckets);if(width<3){// Special case for very small images
+for(var _x2=0;_x2>GlobalHistogramBinarizer.LUMINANCE_SHIFT]++;}}var blackPoint=GlobalHistogramBinarizer.estimateBlackPoint(localBuckets);// We delay reading the entire image luminance until the black point estimation succeeds.
+// Although we end up reading four rows twice, it is consistent with our motto of
+// "fail quickly" which is necessary for continuous scanning.
+var localLuminances=source.getMatrix();for(var _y=0;_yfirstPeakSize){firstPeak=x;firstPeakSize=buckets[x];}if(buckets[x]>maxBucketCount){maxBucketCount=buckets[x];}}// Find the second-tallest peak which is somewhat far from the tallest peak.
+var secondPeak=0;var secondPeakScore=0;for(var _x5=0;_x5secondPeakScore){secondPeak=_x5;secondPeakScore=score;}}// Make sure firstPeak corresponds to the black peak.
+if(firstPeak>secondPeak){var temp=firstPeak;firstPeak=secondPeak;secondPeak=temp;}// If there is too little contrast in the image to pick a meaningful black point, throw rather
+// than waste time trying to decode the image, and risk false positives.
+if(secondPeak-firstPeak<=numBuckets/16){throw new NotFoundException();}// Find a valley between them that is low and closer to the white peak.
+var bestValley=secondPeak-1;var bestValleyScore=-1;for(var _x6=secondPeak-1;_x6>firstPeak;_x6--){var fromFirst=_x6-firstPeak;var _score=fromFirst*fromFirst*(secondPeak-_x6)*(maxBucketCount-buckets[_x6]);if(_score>bestValleyScore){bestValley=_x6;bestValleyScore=_score;}}return bestValley<=HybridBinarizer.MINIMUM_DIMENSION&&height>=HybridBinarizer.MINIMUM_DIMENSION){var luminances=source.getMatrix();var subWidth=width>>HybridBinarizer.BLOCK_SIZE_POWER;if((width&HybridBinarizer.BLOCK_SIZE_MASK)!==0){subWidth++;}var subHeight=height>>HybridBinarizer.BLOCK_SIZE_POWER;if((height&HybridBinarizer.BLOCK_SIZE_MASK)!==0){subHeight++;}var blackPoints=HybridBinarizer.calculateBlackPoints(luminances,subWidth,subHeight,width,height);var newMatrix=new BitMatrix(width,height);HybridBinarizer.calculateThresholdForBlock(luminances,subWidth,subHeight,width,height,blackPoints,newMatrix);this.matrix=newMatrix;}else{// If the image is too small, fall back to the global histogram approach.
+this.matrix=_get(_getPrototypeOf(HybridBinarizer.prototype),"getBlackMatrix",this).call(this);}return this.matrix;}/*@Override*/},{key:"createBinarizer",value:function createBinarizer(source){return new HybridBinarizer(source);}/**
+ * For each block in the image, calculate the average black point using a 5x5 grid
+ * of the blocks around it. Also handles the corner cases (fractional blocks are computed based
+ * on the last pixels in the row/column which are also used in the previous block).
+ */}],[{key:"calculateThresholdForBlock",value:function calculateThresholdForBlock(luminances,subWidth/*int*/,subHeight/*int*/,width/*int*/,height/*int*/,blackPoints,matrix){var maxYOffset=height-HybridBinarizer.BLOCK_SIZE;var maxXOffset=width-HybridBinarizer.BLOCK_SIZE;for(var y=0;ymaxYOffset){yoffset=maxYOffset;}var top=HybridBinarizer.cap(y,2,subHeight-3);for(var x=0;xmaxXOffset){xoffset=maxXOffset;}var left=HybridBinarizer.cap(x,2,subWidth-3);var sum=0;for(var z=-2;z<=2;z++){var blackRow=blackPoints[top+z];sum+=blackRow[left-2]+blackRow[left-1]+blackRow[left]+blackRow[left+1]+blackRow[left+2];}var average=sum/25;HybridBinarizer.thresholdBlock(luminances,xoffset,yoffset,average,width,matrix);}}}},{key:"cap",value:function cap(value/*int*/,min/*int*/,max/*int*/){return valuemax?max:value;}/**
+ * Applies a single threshold to a block of pixels.
+ */},{key:"thresholdBlock",value:function thresholdBlock(luminances,xoffset/*int*/,yoffset/*int*/,threshold/*int*/,stride/*int*/,matrix){for(var y=0,offset=yoffset*stride+xoffset;ymaxYOffset){yoffset=maxYOffset;}for(var x=0;xmaxXOffset){xoffset=maxXOffset;}var sum=0;var min=0xFF;var max=0;for(var yy=0,offset=yoffset*width+xoffset;yymax){max=pixel;}}// short-circuit min/max tests once dynamic range is met
+if(max-min>HybridBinarizer.MIN_DYNAMIC_RANGE){// finish the rest of the rows quickly
+for(yy++,offset+=width;yy>HybridBinarizer.BLOCK_SIZE_POWER*2;if(max-min<=HybridBinarizer.MIN_DYNAMIC_RANGE){// If variation within the block is low, assume this is a block with only light or only
+// dark pixels. In that case we do not want to use the average, as it would divide this
+// low contrast area into black and white pixels, essentially creating data out of noise.
+//
+// The default assumption is that the block is light/background. Since no estimate for
+// the level of dark pixels exists locally, use half the min for the block.
+average=min/2;if(y>0&&x>0){// Correct the "white background" assumption for blocks that have neighbors by comparing
+// the pixels in this block to the previously calculated black points. This is based on
+// the fact that dark barcode symbology is always surrounded by some amount of light
+// background for which reasonable black point estimates were made. The bp estimated at
+// the boundaries is used for the interior.
+// The (min < bp) is arbitrary but works better than other heuristics that were tried.
+var averageNeighborBlackPoint=(blackPoints[y-1][x]+2*blackPoints[y][x-1]+blackPoints[y-1][x-1])/4;if(min=this.getHeight()){throw new IllegalArgumentException('Requested row is outside the image: '+y);}var width=this.getWidth();var start=y*width;if(row===null){row=this.buffer.slice(start,start+width);}else{if(row.length> 10 is approximately equal to R*0.299, and so on.
+// 0x200 >> 10 is 0.5, it implements rounding.
+gray=306*pixelR+601*pixelG+117*pixelB+0x200>>10;}grayscaleBuffer[j]=gray;}return grayscaleBuffer;}}]);return HTMLCanvasElementLuminanceSource;}(LuminanceSource);HTMLCanvasElementLuminanceSource.DEGREE_TO_RADIANS=Math.PI/180;/**
+ * @deprecated Moving to @zxing/browser
+ *
+ * Video input device metadata containing the id and label of the device if available.
+ */var VideoInputDevice=/*#__PURE__*/function(){/**
+ * Creates an instance of VideoInputDevice.
+ *
+ * @param {string} deviceId the video input device id
+ * @param {string} label the label of the device if available
+ */function VideoInputDevice(deviceId,label,groupId){_classCallCheck(this,VideoInputDevice);this.deviceId=deviceId;this.label=label;/** @inheritdoc */this.kind='videoinput';this.groupId=groupId||undefined;}/** @inheritdoc */_createClass(VideoInputDevice,[{key:"toJSON",value:function toJSON(){return{kind:this.kind,groupId:this.groupId,deviceId:this.deviceId,label:this.label};}}]);return VideoInputDevice;}();var __awaiter=(globalThis||global||self||window||undefined)&&(globalThis||global||self||window||undefined).__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value);});}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value));}catch(e){reject(e);}}function rejected(value){try{step(generator["throw"](value));}catch(e){reject(e);}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected);}step((generator=generator.apply(thisArg,_arguments||[])).next());});};/**
+ * @deprecated Moving to @zxing/browser
+ *
+ * Base class for browser code reader.
+ */var BrowserCodeReader=/*#__PURE__*/function(){/**
+ * Creates an instance of BrowserCodeReader.
+ * @param {Reader} reader The reader instance to decode the barcode
+ * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent successful decode tries
+ *
+ * @memberOf BrowserCodeReader
+ */function BrowserCodeReader(reader){var timeBetweenScansMillis=arguments.length>1&&arguments[1]!==undefined?arguments[1]:500;var _hints=arguments.length>2?arguments[2]:undefined;_classCallCheck(this,BrowserCodeReader);this.reader=reader;this.timeBetweenScansMillis=timeBetweenScansMillis;this._hints=_hints;/**
+ * This will break the loop.
+ */this._stopContinuousDecode=false;/**
+ * This will break the loop.
+ */this._stopAsyncDecode=false;/**
+ * Delay time between decode attempts made by the scanner.
+ */this._timeBetweenDecodingAttempts=0;}/**
+ * If navigator is present.
+ */_createClass(BrowserCodeReader,[{key:"hasNavigator",get:function get(){return typeof navigator!=='undefined';}/**
+ * If mediaDevices under navigator is supported.
+ */},{key:"isMediaDevicesSuported",get:function get(){return this.hasNavigator&&!!navigator.mediaDevices;}/**
+ * If enumerateDevices under navigator is supported.
+ */},{key:"canEnumerateDevices",get:function get(){return!!(this.isMediaDevicesSuported&&navigator.mediaDevices.enumerateDevices);}/** Time between two decoding tries in milli seconds. */},{key:"timeBetweenDecodingAttempts",get:function get(){return this._timeBetweenDecodingAttempts;}/**
+ * Change the time span the decoder waits between two decoding tries.
+ *
+ * @param {number} millis Time between two decoding tries in milli seconds.
+ */,set:function set(millis){this._timeBetweenDecodingAttempts=millis<0?0:millis;}/**
+ * Sets the hints.
+ */},{key:"hints",get:/**
+ * Sets the hints.
+ */function get(){return this._hints;}/**
+ * Lists all the available video input devices.
+ */,set:function set(hints){this._hints=hints||null;}},{key:"listVideoInputDevices",value:function listVideoInputDevices(){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var devices,videoDevices,_iterator2,_step2,device,kind,deviceId,label,groupId,videoDevice;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(this.hasNavigator){_context.next=2;break;}throw new Error('Can\'t enumerate devices, navigator is not present.');case 2:if(this.canEnumerateDevices){_context.next=4;break;}throw new Error('Can\'t enumerate devices, method not supported.');case 4:_context.next=6;return navigator.mediaDevices.enumerateDevices();case 6:devices=_context.sent;videoDevices=[];_iterator2=_createForOfIteratorHelper(devices);_context.prev=9;_iterator2.s();case 11:if((_step2=_iterator2.n()).done){_context.next=23;break;}device=_step2.value;kind=device.kind==='video'?'videoinput':device.kind;if(!(kind!=='videoinput')){_context.next=16;break;}return _context.abrupt("continue",21);case 16:deviceId=device.deviceId||device.id;label=device.label||"Video device ".concat(videoDevices.length+1);groupId=device.groupId;videoDevice={deviceId:deviceId,label:label,kind:kind,groupId:groupId};videoDevices.push(videoDevice);case 21:_context.next=11;break;case 23:_context.next=28;break;case 25:_context.prev=25;_context.t0=_context["catch"](9);_iterator2.e(_context.t0);case 28:_context.prev=28;_iterator2.f();return _context.finish(28);case 31:return _context.abrupt("return",videoDevices);case 32:case"end":return _context.stop();}}},_callee,this,[[9,25,28,31]]);}));}/**
+ * Obtain the list of available devices with type 'videoinput'.
+ *
+ * @returns {Promise} an array of available video input devices
+ *
+ * @memberOf BrowserCodeReader
+ *
+ * @deprecated Use `listVideoInputDevices` instead.
+ */},{key:"getVideoInputDevices",value:function getVideoInputDevices(){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var devices;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return this.listVideoInputDevices();case 2:devices=_context2.sent;return _context2.abrupt("return",devices.map(function(d){return new VideoInputDevice(d.deviceId,d.label);}));case 4:case"end":return _context2.stop();}}},_callee2,this);}));}/**
+ * Let's you find a device using it's Id.
+ */},{key:"findDeviceById",value:function findDeviceById(deviceId){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var devices;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return this.listVideoInputDevices();case 2:devices=_context3.sent;if(devices){_context3.next=5;break;}return _context3.abrupt("return",null);case 5:return _context3.abrupt("return",devices.find(function(x){return x.deviceId===deviceId;}));case 6:case"end":return _context3.stop();}}},_callee3,this);}));}/**
+ * Decodes the barcode from the device specified by deviceId while showing the video in the specified video element.
+ *
+ * @param deviceId the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.
+ * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ *
+ * @deprecated Use `decodeOnceFromVideoDevice` instead.
+ */},{key:"decodeFromInputVideoDevice",value:function decodeFromInputVideoDevice(deviceId,videoSource){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return this.decodeOnceFromVideoDevice(deviceId,videoSource);case 2:return _context4.abrupt("return",_context4.sent);case 3:case"end":return _context4.stop();}}},_callee4,this);}));}/**
+ * In one attempt, tries to decode the barcode from the device specified by deviceId while showing the video in the specified video element.
+ *
+ * @param deviceId the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.
+ * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeOnceFromVideoDevice",value:function decodeOnceFromVideoDevice(deviceId,videoSource){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(){var videoConstraints,constraints;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:this.reset();if(!deviceId){videoConstraints={facingMode:'environment'};}else{videoConstraints={deviceId:{exact:deviceId}};}constraints={video:videoConstraints};_context5.next=5;return this.decodeOnceFromConstraints(constraints,videoSource);case 5:return _context5.abrupt("return",_context5.sent);case 6:case"end":return _context5.stop();}}},_callee5,this);}));}/**
+ * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.
+ *
+ * @param constraints the media stream constraints to get s valid media stream to decode from
+ * @param video the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeOnceFromConstraints",value:function decodeOnceFromConstraints(constraints,videoSource){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(){var stream;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.next=2;return navigator.mediaDevices.getUserMedia(constraints);case 2:stream=_context6.sent;_context6.next=5;return this.decodeOnceFromStream(stream,videoSource);case 5:return _context6.abrupt("return",_context6.sent);case 6:case"end":return _context6.stop();}}},_callee6,this);}));}/**
+ * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.
+ *
+ * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from
+ * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeOnceFromStream",value:function decodeOnceFromStream(stream,videoSource){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(){var video,result;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:this.reset();_context7.next=3;return this.attachStreamToVideo(stream,videoSource);case 3:video=_context7.sent;_context7.next=6;return this.decodeOnce(video);case 6:result=_context7.sent;return _context7.abrupt("return",result);case 8:case"end":return _context7.stop();}}},_callee7,this);}));}/**
+ * Continuously decodes the barcode from the device specified by device while showing the video in the specified video element.
+ *
+ * @param {string|null} [deviceId] the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.
+ * @param {string|HTMLVideoElement|null} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns {Promise}
+ *
+ * @memberOf BrowserCodeReader
+ *
+ * @deprecated Use `decodeFromVideoDevice` instead.
+ */},{key:"decodeFromInputVideoDeviceContinuously",value:function decodeFromInputVideoDeviceContinuously(deviceId,videoSource,callbackFn){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(){return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.next=2;return this.decodeFromVideoDevice(deviceId,videoSource,callbackFn);case 2:return _context8.abrupt("return",_context8.sent);case 3:case"end":return _context8.stop();}}},_callee8,this);}));}/**
+ * Continuously tries to decode the barcode from the device specified by device while showing the video in the specified video element.
+ *
+ * @param {string|null} [deviceId] the id of one of the devices obtained after calling getVideoInputDevices. Can be undefined, in this case it will decode from one of the available devices, preffering the main camera (environment facing) if available.
+ * @param {string|HTMLVideoElement|null} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns {Promise}
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeFromVideoDevice",value:function decodeFromVideoDevice(deviceId,videoSource,callbackFn){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee9(){var videoConstraints,constraints;return _regeneratorRuntime.wrap(function _callee9$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:if(!deviceId){videoConstraints={facingMode:'environment'};}else{videoConstraints={deviceId:{exact:deviceId}};}constraints={video:videoConstraints};_context9.next=4;return this.decodeFromConstraints(constraints,videoSource,callbackFn);case 4:return _context9.abrupt("return",_context9.sent);case 5:case"end":return _context9.stop();}}},_callee9,this);}));}/**
+ * Continuously tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.
+ *
+ * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from
+ * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeFromConstraints",value:function decodeFromConstraints(constraints,videoSource,callbackFn){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee10(){var stream;return _regeneratorRuntime.wrap(function _callee10$(_context10){while(1){switch(_context10.prev=_context10.next){case 0:_context10.next=2;return navigator.mediaDevices.getUserMedia(constraints);case 2:stream=_context10.sent;_context10.next=5;return this.decodeFromStream(stream,videoSource,callbackFn);case 5:return _context10.abrupt("return",_context10.sent);case 6:case"end":return _context10.stop();}}},_callee10,this);}));}/**
+ * In one attempt, tries to decode the barcode from a stream obtained from the given constraints while showing the video in the specified video element.
+ *
+ * @param {MediaStream} [constraints] the media stream constraints to get s valid media stream to decode from
+ * @param {string|HTMLVideoElement} [video] the video element in page where to show the video while decoding. Can be either an element id or directly an HTMLVideoElement. Can be undefined, in which case no video will be shown.
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeFromStream",value:function decodeFromStream(stream,videoSource,callbackFn){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee11(){var video;return _regeneratorRuntime.wrap(function _callee11$(_context11){while(1){switch(_context11.prev=_context11.next){case 0:this.reset();_context11.next=3;return this.attachStreamToVideo(stream,videoSource);case 3:video=_context11.sent;_context11.next=6;return this.decodeContinuously(video,callbackFn);case 6:return _context11.abrupt("return",_context11.sent);case 7:case"end":return _context11.stop();}}},_callee11,this);}));}/**
+ * Breaks the decoding loop.
+ */},{key:"stopAsyncDecode",value:function stopAsyncDecode(){this._stopAsyncDecode=true;}/**
+ * Breaks the decoding loop.
+ */},{key:"stopContinuousDecode",value:function stopContinuousDecode(){this._stopContinuousDecode=true;}/**
+ * Sets the new stream and request a new decoding-with-delay.
+ *
+ * @param stream The stream to be shown in the video element.
+ * @param decodeFn A callback for the decode method.
+ */},{key:"attachStreamToVideo",value:function attachStreamToVideo(stream,videoSource){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee12(){var videoElement;return _regeneratorRuntime.wrap(function _callee12$(_context12){while(1){switch(_context12.prev=_context12.next){case 0:videoElement=this.prepareVideoElement(videoSource);this.addVideoSource(videoElement,stream);this.videoElement=videoElement;this.stream=stream;_context12.next=6;return this.playVideoOnLoadAsync(videoElement);case 6:return _context12.abrupt("return",videoElement);case 7:case"end":return _context12.stop();}}},_callee12,this);}));}/**
+ *
+ * @param videoElement
+ */},{key:"playVideoOnLoadAsync",value:function playVideoOnLoadAsync(videoElement){var _this8=this;return new Promise(function(resolve,reject){return _this8.playVideoOnLoad(videoElement,function(){return resolve();});});}/**
+ * Binds listeners and callbacks to the videoElement.
+ *
+ * @param element
+ * @param callbackFn
+ */},{key:"playVideoOnLoad",value:function playVideoOnLoad(element,callbackFn){var _this9=this;this.videoEndedListener=function(){return _this9.stopStreams();};this.videoCanPlayListener=function(){return _this9.tryPlayVideo(element);};element.addEventListener('ended',this.videoEndedListener);element.addEventListener('canplay',this.videoCanPlayListener);element.addEventListener('playing',callbackFn);// if canplay was already fired, we won't know when to play, so just give it a try
+this.tryPlayVideo(element);}/**
+ * Checks if the given video element is currently playing.
+ */},{key:"isVideoPlaying",value:function isVideoPlaying(video){return video.currentTime>0&&!video.paused&&!video.ended&&video.readyState>2;}/**
+ * Just tries to play the video and logs any errors.
+ * The play call is only made is the video is not already playing.
+ */},{key:"tryPlayVideo",value:function tryPlayVideo(videoElement){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee13(){return _regeneratorRuntime.wrap(function _callee13$(_context13){while(1){switch(_context13.prev=_context13.next){case 0:if(!this.isVideoPlaying(videoElement)){_context13.next=3;break;}console.warn('Trying to play video that is already playing.');return _context13.abrupt("return");case 3:_context13.prev=3;_context13.next=6;return videoElement.play();case 6:_context13.next=11;break;case 8:_context13.prev=8;_context13.t0=_context13["catch"](3);console.warn('It was not possible to play the video.');case 11:case"end":return _context13.stop();}}},_callee13,this,[[3,8]]);}));}/**
+ * Searches and validates a media element.
+ */},{key:"getMediaElement",value:function getMediaElement(mediaElementId,type){var mediaElement=document.getElementById(mediaElementId);if(!mediaElement){throw new ArgumentException("element with id '".concat(mediaElementId,"' not found"));}if(mediaElement.nodeName.toLowerCase()!==type.toLowerCase()){throw new ArgumentException("element with id '".concat(mediaElementId,"' must be an ").concat(type," element"));}return mediaElement;}/**
+ * Decodes the barcode from an image.
+ *
+ * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.
+ * @param {string} [url]
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeFromImage",value:function decodeFromImage(source,url){if(!source&&!url){throw new ArgumentException('either imageElement with a src set or an url must be provided');}if(url&&!source){return this.decodeFromImageUrl(url);}return this.decodeFromImageElement(source);}/**
+ * Decodes the barcode from a video.
+ *
+ * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.
+ * @param {string} [url]
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"decodeFromVideo",value:function decodeFromVideo(source,url){if(!source&&!url){throw new ArgumentException('Either an element with a src set or an URL must be provided');}if(url&&!source){return this.decodeFromVideoUrl(url);}return this.decodeFromVideoElement(source);}/**
+ * Decodes continuously the barcode from a video.
+ *
+ * @param {(string|HTMLImageElement)} [source] The image element that can be either an element id or the element itself. Can be undefined in which case the decoding will be done from the imageUrl parameter.
+ * @param {string} [url]
+ * @returns {Promise} The decoding result.
+ *
+ * @memberOf BrowserCodeReader
+ *
+ * @experimental
+ */},{key:"decodeFromVideoContinuously",value:function decodeFromVideoContinuously(source,url,callbackFn){if(undefined===source&&undefined===url){throw new ArgumentException('Either an element with a src set or an URL must be provided');}if(url&&!source){return this.decodeFromVideoUrlContinuously(url,callbackFn);}return this.decodeFromVideoElementContinuously(source,callbackFn);}/**
+ * Decodes something from an image HTML element.
+ */},{key:"decodeFromImageElement",value:function decodeFromImageElement(source){if(!source){throw new ArgumentException('An image element must be provided.');}this.reset();var element=this.prepareImageElement(source);this.imageElement=element;var task;if(this.isImageLoaded(element)){task=this.decodeOnce(element,false,true);}else{task=this._decodeOnLoadImage(element);}return task;}/**
+ * Decodes something from an image HTML element.
+ */},{key:"decodeFromVideoElement",value:function decodeFromVideoElement(source){var element=this._decodeFromVideoElementSetup(source);return this._decodeOnLoadVideo(element);}/**
+ * Decodes something from an image HTML element.
+ */},{key:"decodeFromVideoElementContinuously",value:function decodeFromVideoElementContinuously(source,callbackFn){var element=this._decodeFromVideoElementSetup(source);return this._decodeOnLoadVideoContinuously(element,callbackFn);}/**
+ * Sets up the video source so it can be decoded when loaded.
+ *
+ * @param source The video source element.
+ */},{key:"_decodeFromVideoElementSetup",value:function _decodeFromVideoElementSetup(source){if(!source){throw new ArgumentException('A video element must be provided.');}this.reset();var element=this.prepareVideoElement(source);// defines the video element before starts decoding
+this.videoElement=element;return element;}/**
+ * Decodes an image from a URL.
+ */},{key:"decodeFromImageUrl",value:function decodeFromImageUrl(url){if(!url){throw new ArgumentException('An URL must be provided.');}this.reset();var element=this.prepareImageElement();this.imageElement=element;var decodeTask=this._decodeOnLoadImage(element);element.src=url;return decodeTask;}/**
+ * Decodes an image from a URL.
+ */},{key:"decodeFromVideoUrl",value:function decodeFromVideoUrl(url){if(!url){throw new ArgumentException('An URL must be provided.');}this.reset();// creates a new element
+var element=this.prepareVideoElement();var decodeTask=this.decodeFromVideoElement(element);element.src=url;return decodeTask;}/**
+ * Decodes an image from a URL.
+ *
+ * @experimental
+ */},{key:"decodeFromVideoUrlContinuously",value:function decodeFromVideoUrlContinuously(url,callbackFn){if(!url){throw new ArgumentException('An URL must be provided.');}this.reset();// creates a new element
+var element=this.prepareVideoElement();var decodeTask=this.decodeFromVideoElementContinuously(element,callbackFn);element.src=url;return decodeTask;}},{key:"_decodeOnLoadImage",value:function _decodeOnLoadImage(element){var _this10=this;return new Promise(function(resolve,reject){_this10.imageLoadedListener=function(){return _this10.decodeOnce(element,false,true).then(resolve,reject);};element.addEventListener('load',_this10.imageLoadedListener);});}},{key:"_decodeOnLoadVideo",value:function _decodeOnLoadVideo(videoElement){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee14(){return _regeneratorRuntime.wrap(function _callee14$(_context14){while(1){switch(_context14.prev=_context14.next){case 0:_context14.next=2;return this.playVideoOnLoadAsync(videoElement);case 2:_context14.next=4;return this.decodeOnce(videoElement);case 4:return _context14.abrupt("return",_context14.sent);case 5:case"end":return _context14.stop();}}},_callee14,this);}));}},{key:"_decodeOnLoadVideoContinuously",value:function _decodeOnLoadVideoContinuously(videoElement,callbackFn){return __awaiter(this,void 0,void 0,/*#__PURE__*/_regeneratorRuntime.mark(function _callee15(){return _regeneratorRuntime.wrap(function _callee15$(_context15){while(1){switch(_context15.prev=_context15.next){case 0:_context15.next=2;return this.playVideoOnLoadAsync(videoElement);case 2:// starts decoding after played the video
+this.decodeContinuously(videoElement,callbackFn);case 3:case"end":return _context15.stop();}}},_callee15,this);}));}},{key:"isImageLoaded",value:function isImageLoaded(img){// During the onload event, IE correctly identifies any images that
+// weren’t downloaded as not complete. Others should too. Gecko-based
+// browsers act like NS4 in that they report this incorrectly.
+if(!img.complete){return false;}// However, they do have two very useful properties: naturalWidth and
+// naturalHeight. These give the true size of the image. If it failed
+// to load, either of these should be zero.
+if(img.naturalWidth===0){return false;}// No other way of checking: assume it’s ok.
+return true;}},{key:"prepareImageElement",value:function prepareImageElement(imageSource){var imageElement;if(typeof imageSource==='undefined'){imageElement=document.createElement('img');imageElement.width=200;imageElement.height=200;}if(typeof imageSource==='string'){imageElement=this.getMediaElement(imageSource,'img');}if(imageSource instanceof HTMLImageElement){imageElement=imageSource;}return imageElement;}/**
+ * Sets a HTMLVideoElement for scanning or creates a new one.
+ *
+ * @param videoSource The HTMLVideoElement to be set.
+ */},{key:"prepareVideoElement",value:function prepareVideoElement(videoSource){var videoElement;if(!videoSource&&typeof document!=='undefined'){videoElement=document.createElement('video');videoElement.width=200;videoElement.height=200;}if(typeof videoSource==='string'){videoElement=this.getMediaElement(videoSource,'video');}if(videoSource instanceof HTMLVideoElement){videoElement=videoSource;}// Needed for iOS 11
+videoElement.setAttribute('autoplay','true');videoElement.setAttribute('muted','true');videoElement.setAttribute('playsinline','true');return videoElement;}/**
+ * Tries to decode from the video input until it finds some value.
+ */},{key:"decodeOnce",value:function decodeOnce(element){var _this11=this;var retryIfNotFound=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var retryIfChecksumOrFormatError=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;this._stopAsyncDecode=false;var loop=function loop(resolve,reject){if(_this11._stopAsyncDecode){reject(new NotFoundException('Video stream has ended before any code could be detected.'));_this11._stopAsyncDecode=undefined;return;}try{var result=_this11.decode(element);resolve(result);}catch(e){var ifNotFound=retryIfNotFound&&e instanceof NotFoundException;var isChecksumOrFormatError=e instanceof ChecksumException||e instanceof FormatException;var ifChecksumOrFormat=isChecksumOrFormatError&&retryIfChecksumOrFormatError;if(ifNotFound||ifChecksumOrFormat){// trying again
+return setTimeout(loop,_this11._timeBetweenDecodingAttempts,resolve,reject);}reject(e);}};return new Promise(function(resolve,reject){return loop(resolve,reject);});}/**
+ * Continuously decodes from video input.
+ */},{key:"decodeContinuously",value:function decodeContinuously(element,callbackFn){var _this12=this;this._stopContinuousDecode=false;var loop=function loop(){if(_this12._stopContinuousDecode){_this12._stopContinuousDecode=undefined;return;}try{var result=_this12.decode(element);callbackFn(result,null);setTimeout(loop,_this12.timeBetweenScansMillis);}catch(e){callbackFn(null,e);var isChecksumOrFormatError=e instanceof ChecksumException||e instanceof FormatException;var isNotFound=e instanceof NotFoundException;if(isChecksumOrFormatError||isNotFound){// trying again
+setTimeout(loop,_this12._timeBetweenDecodingAttempts);}}};loop();}/**
+ * Gets the BinaryBitmap for ya! (and decodes it)
+ */},{key:"decode",value:function decode(element){// get binary bitmap for decode function
+var binaryBitmap=this.createBinaryBitmap(element);return this.decodeBitmap(binaryBitmap);}/**
+ * Returns true if media element is indeed a {@link HtmlVideoElement}.
+ */},{key:"_isHTMLVideoElement",value:function _isHTMLVideoElement(mediaElement){var potentialVideo=mediaElement;return potentialVideo.videoWidth!==0;}/**
+ * Overwriting this allows you to manipulate the next frame in anyway
+ * you want before decode.
+ */},{key:"drawFrameOnCanvas",value:function drawFrameOnCanvas(srcElement,dimensions,canvasElementContext){if(!dimensions){dimensions={sx:0,sy:0,sWidth:srcElement.videoWidth,sHeight:srcElement.videoHeight,dx:0,dy:0,dWidth:srcElement.videoWidth,dHeight:srcElement.videoHeight};}if(!canvasElementContext){canvasElementContext=this.captureCanvasContext;}canvasElementContext.drawImage(srcElement,dimensions.sx,dimensions.sy,dimensions.sWidth,dimensions.sHeight,dimensions.dx,dimensions.dy,dimensions.dWidth,dimensions.dHeight);}/**
+ * Ovewriting this allows you to manipulate the snapshot image in anyway
+ * you want before decode.
+ */},{key:"drawImageOnCanvas",value:function drawImageOnCanvas(srcElement,dimensions){var canvasElementContext=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.captureCanvasContext;if(!dimensions){dimensions={sx:0,sy:0,sWidth:srcElement.naturalWidth,sHeight:srcElement.naturalHeight,dx:0,dy:0,dWidth:srcElement.naturalWidth,dHeight:srcElement.naturalHeight};}if(!canvasElementContext){canvasElementContext=this.captureCanvasContext;}canvasElementContext.drawImage(srcElement,dimensions.sx,dimensions.sy,dimensions.sWidth,dimensions.sHeight,dimensions.dx,dimensions.dy,dimensions.dWidth,dimensions.dHeight);}/**
+ * Creates a binaryBitmap based in some image source.
+ *
+ * @param mediaElement HTML element containing drawable image source.
+ */},{key:"createBinaryBitmap",value:function createBinaryBitmap(mediaElement){var ctx=this.getCaptureCanvasContext(mediaElement);if(this._isHTMLVideoElement(mediaElement)){this.drawFrameOnCanvas(mediaElement);}else{this.drawImageOnCanvas(mediaElement);}var canvas=this.getCaptureCanvas(mediaElement);var luminanceSource=new HTMLCanvasElementLuminanceSource(canvas);var hybridBinarizer=new HybridBinarizer(luminanceSource);return new BinaryBitmap(hybridBinarizer);}},{key:"getCaptureCanvasContext",value:function getCaptureCanvasContext(mediaElement){if(!this.captureCanvasContext){var elem=this.getCaptureCanvas(mediaElement);var ctx=elem.getContext('2d');this.captureCanvasContext=ctx;}return this.captureCanvasContext;}},{key:"getCaptureCanvas",value:function getCaptureCanvas(mediaElement){if(!this.captureCanvas){var elem=this.createCaptureCanvas(mediaElement);this.captureCanvas=elem;}return this.captureCanvas;}/**
+ * Call the encapsulated readers decode
+ */},{key:"decodeBitmap",value:function decodeBitmap(binaryBitmap){return this.reader.decode(binaryBitmap,this._hints);}/**
+ * 🖌 Prepares the canvas for capture and scan frames.
+ */},{key:"createCaptureCanvas",value:function createCaptureCanvas(mediaElement){if(typeof document==='undefined'){this._destroyCaptureCanvas();return null;}var canvasElement=document.createElement('canvas');var width;var height;if(typeof mediaElement!=='undefined'){if(mediaElement instanceof HTMLVideoElement){width=mediaElement.videoWidth;height=mediaElement.videoHeight;}else if(mediaElement instanceof HTMLImageElement){width=mediaElement.naturalWidth||mediaElement.width;height=mediaElement.naturalHeight||mediaElement.height;}}canvasElement.style.width=width+'px';canvasElement.style.height=height+'px';canvasElement.width=width;canvasElement.height=height;return canvasElement;}/**
+ * Stops the continuous scan and cleans the stream.
+ */},{key:"stopStreams",value:function stopStreams(){if(this.stream){this.stream.getVideoTracks().forEach(function(t){return t.stop();});this.stream=undefined;}if(this._stopAsyncDecode===false){this.stopAsyncDecode();}if(this._stopContinuousDecode===false){this.stopContinuousDecode();}}/**
+ * Resets the code reader to the initial state. Cancels any ongoing barcode scanning from video or camera.
+ *
+ * @memberOf BrowserCodeReader
+ */},{key:"reset",value:function reset(){// stops the camera, preview and scan 🔴
+this.stopStreams();// clean and forget about HTML elements
+this._destroyVideoElement();this._destroyImageElement();this._destroyCaptureCanvas();}},{key:"_destroyVideoElement",value:function _destroyVideoElement(){if(!this.videoElement){return;}// first gives freedon to the element 🕊
+if(typeof this.videoEndedListener!=='undefined'){this.videoElement.removeEventListener('ended',this.videoEndedListener);}if(typeof this.videoPlayingEventListener!=='undefined'){this.videoElement.removeEventListener('playing',this.videoPlayingEventListener);}if(typeof this.videoCanPlayListener!=='undefined'){this.videoElement.removeEventListener('loadedmetadata',this.videoCanPlayListener);}// then forgets about that element 😢
+this.cleanVideoSource(this.videoElement);this.videoElement=undefined;}},{key:"_destroyImageElement",value:function _destroyImageElement(){if(!this.imageElement){return;}// first gives freedon to the element 🕊
+if(undefined!==this.imageLoadedListener){this.imageElement.removeEventListener('load',this.imageLoadedListener);}// then forget about that element 😢
+this.imageElement.src=undefined;this.imageElement.removeAttribute('src');this.imageElement=undefined;}/**
+ * Cleans canvas references 🖌
+ */},{key:"_destroyCaptureCanvas",value:function _destroyCaptureCanvas(){// then forget about that element 😢
+this.captureCanvasContext=undefined;this.captureCanvas=undefined;}/**
+ * Defines what the videoElement src will be.
+ *
+ * @param videoElement
+ * @param stream
+ */},{key:"addVideoSource",value:function addVideoSource(videoElement,stream){// Older browsers may not have `srcObject`
+try{// @note Throws Exception if interrupted by a new loaded request
+videoElement.srcObject=stream;}catch(err){// @note Avoid using this in new browsers, as it is going away.
+videoElement.src=URL.createObjectURL(stream);}}/**
+ * Unbinds a HTML video src property.
+ *
+ * @param videoElement
+ */},{key:"cleanVideoSource",value:function cleanVideoSource(videoElement){try{videoElement.srcObject=null;}catch(err){videoElement.src='';}this.videoElement.removeAttribute('src');}}]);return BrowserCodeReader;}();/*
+ * 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.
+ */ /**
+ * Encapsulates the result of decoding a barcode within an image.
+ *
+ * @author Sean Owen
+ */var Result=/*#__PURE__*/function(){// public constructor(private text: string,
+// Uint8Array rawBytes,
+// ResultPoconst resultPoints: Int32Array,
+// BarcodeFormat format) {
+// this(text, rawBytes, resultPoints, format, System.currentTimeMillis())
+// }
+// public constructor(text: string,
+// Uint8Array rawBytes,
+// ResultPoconst resultPoints: Int32Array,
+// BarcodeFormat format,
+// long timestamp) {
+// this(text, rawBytes, rawBytes == null ? 0 : 8 * rawBytes.length,
+// resultPoints, format, timestamp)
+// }
+function Result(text,rawBytes){var numBits=arguments.length>2&&arguments[2]!==undefined?arguments[2]:rawBytes==null?0:8*rawBytes.length;var resultPoints=arguments.length>3?arguments[3]:undefined;var format=arguments.length>4?arguments[4]:undefined;var timestamp=arguments.length>5&&arguments[5]!==undefined?arguments[5]:System.currentTimeMillis();_classCallCheck(this,Result);this.text=text;this.rawBytes=rawBytes;this.numBits=numBits;this.resultPoints=resultPoints;this.format=format;this.timestamp=timestamp;this.text=text;this.rawBytes=rawBytes;if(undefined===numBits||null===numBits){this.numBits=rawBytes===null||rawBytes===undefined?0:8*rawBytes.length;}else{this.numBits=numBits;}this.resultPoints=resultPoints;this.format=format;this.resultMetadata=null;if(undefined===timestamp||null===timestamp){this.timestamp=System.currentTimeMillis();}else{this.timestamp=timestamp;}}/**
+ * @return raw text encoded by the barcode
+ */_createClass(Result,[{key:"getText",value:function getText(){return this.text;}/**
+ * @return raw bytes encoded by the barcode, if applicable, otherwise {@code null}
+ */},{key:"getRawBytes",value:function getRawBytes(){return this.rawBytes;}/**
+ * @return how many bits of {@link #getRawBytes()} are valid; typically 8 times its length
+ * @since 3.3.0
+ */},{key:"getNumBits",value:function getNumBits(){return this.numBits;}/**
+ * @return points related to the barcode in the image. These are typically points
+ * identifying finder patterns or the corners of the barcode. The exact meaning is
+ * specific to the type of barcode that was decoded.
+ */},{key:"getResultPoints",value:function getResultPoints(){return this.resultPoints;}/**
+ * @return {@link BarcodeFormat} representing the format of the barcode that was decoded
+ */},{key:"getBarcodeFormat",value:function getBarcodeFormat(){return this.format;}/**
+ * @return {@link Map} mapping {@link ResultMetadataType} keys to values. May be
+ * {@code null}. This contains optional metadata about what was detected about the barcode,
+ * like orientation.
+ */},{key:"getResultMetadata",value:function getResultMetadata(){return this.resultMetadata;}},{key:"putMetadata",value:function putMetadata(type,value){if(this.resultMetadata===null){this.resultMetadata=new Map();}this.resultMetadata.set(type,value);}},{key:"putAllMetadata",value:function putAllMetadata(metadata){if(metadata!==null){if(this.resultMetadata===null){this.resultMetadata=metadata;}else{this.resultMetadata=new Map(metadata);}}}},{key:"addResultPoints",value:function addResultPoints(newPoints){var oldPoints=this.resultPoints;if(oldPoints===null){this.resultPoints=newPoints;}else if(newPoints!==null&&newPoints.length>0){var allPoints=new Array(oldPoints.length+newPoints.length);System.arraycopy(oldPoints,0,allPoints,0,oldPoints.length);System.arraycopy(newPoints,0,allPoints,oldPoints.length,newPoints.length);this.resultPoints=allPoints;}}},{key:"getTimestamp",value:function getTimestamp(){return this.timestamp;}/*@Override*/},{key:"toString",value:function toString(){return this.text;}}]);return Result;}();/*
+ * Direct port to TypeScript of ZXing by Adrian Toșcă
+ */ /*
+ * Copyright 2009 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.
+ */ /*namespace com.google.zxing {*/ /**
+ * Enumerates barcode formats known to this package. Please keep alphabetized.
+ *
+ * @author Sean Owen
+ */var BarcodeFormat;(function(BarcodeFormat){/** Aztec 2D barcode format. */BarcodeFormat[BarcodeFormat["AZTEC"]=0]="AZTEC";/** CODABAR 1D format. */BarcodeFormat[BarcodeFormat["CODABAR"]=1]="CODABAR";/** Code 39 1D format. */BarcodeFormat[BarcodeFormat["CODE_39"]=2]="CODE_39";/** Code 93 1D format. */BarcodeFormat[BarcodeFormat["CODE_93"]=3]="CODE_93";/** Code 128 1D format. */BarcodeFormat[BarcodeFormat["CODE_128"]=4]="CODE_128";/** Data Matrix 2D barcode format. */BarcodeFormat[BarcodeFormat["DATA_MATRIX"]=5]="DATA_MATRIX";/** EAN-8 1D format. */BarcodeFormat[BarcodeFormat["EAN_8"]=6]="EAN_8";/** EAN-13 1D format. */BarcodeFormat[BarcodeFormat["EAN_13"]=7]="EAN_13";/** ITF (Interleaved Two of Five) 1D format. */BarcodeFormat[BarcodeFormat["ITF"]=8]="ITF";/** MaxiCode 2D barcode format. */BarcodeFormat[BarcodeFormat["MAXICODE"]=9]="MAXICODE";/** PDF417 format. */BarcodeFormat[BarcodeFormat["PDF_417"]=10]="PDF_417";/** QR Code 2D barcode format. */BarcodeFormat[BarcodeFormat["QR_CODE"]=11]="QR_CODE";/** RSS 14 */BarcodeFormat[BarcodeFormat["RSS_14"]=12]="RSS_14";/** RSS EXPANDED */BarcodeFormat[BarcodeFormat["RSS_EXPANDED"]=13]="RSS_EXPANDED";/** UPC-A 1D format. */BarcodeFormat[BarcodeFormat["UPC_A"]=14]="UPC_A";/** UPC-E 1D format. */BarcodeFormat[BarcodeFormat["UPC_E"]=15]="UPC_E";/** UPC/EAN extension format. Not a stand-alone format. */BarcodeFormat[BarcodeFormat["UPC_EAN_EXTENSION"]=16]="UPC_EAN_EXTENSION";})(BarcodeFormat||(BarcodeFormat={}));var BarcodeFormat$1=BarcodeFormat;/*namespace com.google.zxing {*/ /**
+ * Represents some type of metadata about the result of the decoding that the decoder
+ * wishes to communicate back to the caller.
+ *
+ * @author Sean Owen
+ */var ResultMetadataType;(function(ResultMetadataType){/**
+ * Unspecified, application-specific metadata. Maps to an unspecified {@link Object}.
+ */ResultMetadataType[ResultMetadataType["OTHER"]=0]="OTHER";/**
+ * Denotes the likely approximate orientation of the barcode in the image. This value
+ * is given as degrees rotated clockwise from the normal, upright orientation.
+ * For example a 1D barcode which was found by reading top-to-bottom would be
+ * said to have orientation "90". This key maps to an {@link Integer} whose
+ * value is in the range [0,360).
+ */ResultMetadataType[ResultMetadataType["ORIENTATION"]=1]="ORIENTATION";/**
+ * 2D barcode formats typically encode text, but allow for a sort of 'byte mode'
+ * which is sometimes used to encode binary data. While {@link Result} makes available
+ * the complete raw bytes in the barcode for these formats, it does not offer the bytes
+ * from the byte segments alone.
+ *
+ * This maps to a {@link java.util.List} of byte arrays corresponding to the
+ * raw bytes in the byte segments in the barcode, in order.
+ */ResultMetadataType[ResultMetadataType["BYTE_SEGMENTS"]=2]="BYTE_SEGMENTS";/**
+ * Error correction level used, if applicable. The value type depends on the
+ * format, but is typically a String.
+ */ResultMetadataType[ResultMetadataType["ERROR_CORRECTION_LEVEL"]=3]="ERROR_CORRECTION_LEVEL";/**
+ * For some periodicals, indicates the issue number as an {@link Integer}.
+ */ResultMetadataType[ResultMetadataType["ISSUE_NUMBER"]=4]="ISSUE_NUMBER";/**
+ * For some products, indicates the suggested retail price in the barcode as a
+ * formatted {@link String}.
+ */ResultMetadataType[ResultMetadataType["SUGGESTED_PRICE"]=5]="SUGGESTED_PRICE";/**
+ * For some products, the possible country of manufacture as a {@link String} denoting the
+ * ISO country code. Some map to multiple possible countries, like "US/CA".
+ */ResultMetadataType[ResultMetadataType["POSSIBLE_COUNTRY"]=6]="POSSIBLE_COUNTRY";/**
+ * For some products, the extension text
+ */ResultMetadataType[ResultMetadataType["UPC_EAN_EXTENSION"]=7]="UPC_EAN_EXTENSION";/**
+ * PDF417-specific metadata
+ */ResultMetadataType[ResultMetadataType["PDF417_EXTRA_METADATA"]=8]="PDF417_EXTRA_METADATA";/**
+ * If the code format supports structured append and the current scanned code is part of one then the
+ * sequence number is given with it.
+ */ResultMetadataType[ResultMetadataType["STRUCTURED_APPEND_SEQUENCE"]=9]="STRUCTURED_APPEND_SEQUENCE";/**
+ * If the code format supports structured append and the current scanned code is part of one then the
+ * parity is given with it.
+ */ResultMetadataType[ResultMetadataType["STRUCTURED_APPEND_PARITY"]=10]="STRUCTURED_APPEND_PARITY";})(ResultMetadataType||(ResultMetadataType={}));var ResultMetadataType$1=ResultMetadataType;/*
+ * 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.
+ */ /*namespace com.google.zxing.common {*/ /*import java.util.List;*/ /**
+ * Encapsulates the result of decoding a matrix of bits. This typically
+ * applies to 2D barcode formats. For now it contains the raw bytes obtained,
+ * as well as a String interpretation of those bytes, if applicable.
+ *
+ * @author Sean Owen
+ */var DecoderResult=/*#__PURE__*/function(){// public constructor(rawBytes: Uint8Array,
+// text: string,
+// List byteSegments,
+// String ecLevel) {
+// this(rawBytes, text, byteSegments, ecLevel, -1, -1)
+// }
+function DecoderResult(rawBytes,text,byteSegments,ecLevel){var structuredAppendSequenceNumber=arguments.length>4&&arguments[4]!==undefined?arguments[4]:-1;var structuredAppendParity=arguments.length>5&&arguments[5]!==undefined?arguments[5]:-1;_classCallCheck(this,DecoderResult);this.rawBytes=rawBytes;this.text=text;this.byteSegments=byteSegments;this.ecLevel=ecLevel;this.structuredAppendSequenceNumber=structuredAppendSequenceNumber;this.structuredAppendParity=structuredAppendParity;this.numBits=rawBytes===undefined||rawBytes===null?0:8*rawBytes.length;}/**
+ * @return raw bytes representing the result, or {@code null} if not applicable
+ */_createClass(DecoderResult,[{key:"getRawBytes",value:function getRawBytes(){return this.rawBytes;}/**
+ * @return how many bits of {@link #getRawBytes()} are valid; typically 8 times its length
+ * @since 3.3.0
+ */},{key:"getNumBits",value:function getNumBits(){return this.numBits;}/**
+ * @param numBits overrides the number of bits that are valid in {@link #getRawBytes()}
+ * @since 3.3.0
+ */},{key:"setNumBits",value:function setNumBits(numBits/*int*/){this.numBits=numBits;}/**
+ * @return text representation of the result
+ */},{key:"getText",value:function getText(){return this.text;}/**
+ * @return list of byte segments in the result, or {@code null} if not applicable
+ */},{key:"getByteSegments",value:function getByteSegments(){return this.byteSegments;}/**
+ * @return name of error correction level used, or {@code null} if not applicable
+ */},{key:"getECLevel",value:function getECLevel(){return this.ecLevel;}/**
+ * @return number of errors corrected, or {@code null} if not applicable
+ */},{key:"getErrorsCorrected",value:function getErrorsCorrected(){return this.errorsCorrected;}},{key:"setErrorsCorrected",value:function setErrorsCorrected(errorsCorrected/*Integer*/){this.errorsCorrected=errorsCorrected;}/**
+ * @return number of erasures corrected, or {@code null} if not applicable
+ */},{key:"getErasures",value:function getErasures(){return this.erasures;}},{key:"setErasures",value:function setErasures(erasures/*Integer*/){this.erasures=erasures;}/**
+ * @return arbitrary additional metadata
+ */},{key:"getOther",value:function getOther(){return this.other;}},{key:"setOther",value:function setOther(other){this.other=other;}},{key:"hasStructuredAppend",value:function hasStructuredAppend(){return this.structuredAppendParity>=0&&this.structuredAppendSequenceNumber>=0;}},{key:"getStructuredAppendParity",value:function getStructuredAppendParity(){return this.structuredAppendParity;}},{key:"getStructuredAppendSequenceNumber",value:function getStructuredAppendSequenceNumber(){return this.structuredAppendSequenceNumber;}}]);return DecoderResult;}();/*
+ * 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.
+ */ /**
+ * This class contains utility methods for performing mathematical operations over
+ * the Galois Fields. Operations use a given primitive polynomial in calculations.
+ *
+ * Throughout this package, elements of the GF are represented as an {@code int}
+ * for convenience and speed (but at the cost of memory).
+ *
+ *
+ * @author Sean Owen
+ * @author David Olivier
+ */var AbstractGenericGF=/*#__PURE__*/function(){function AbstractGenericGF(){_classCallCheck(this,AbstractGenericGF);}_createClass(AbstractGenericGF,[{key:"exp",value:/**
+ * @return 2 to the power of a in GF(size)
+ */function exp(a){return this.expTable[a];}/**
+ * @return base 2 log of a in GF(size)
+ */},{key:"log",value:function log(a/*int*/){if(a===0){throw new IllegalArgumentException();}return this.logTable[a];}/**
+ * Implements both addition and subtraction -- they are the same in GF(size).
+ *
+ * @return sum/difference of a and b
+ */}],[{key:"addOrSubtract",value:function addOrSubtract(a/*int*/,b/*int*/){return a^b;}}]);return AbstractGenericGF;}();/*
+ * 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.
+ */ /**
+ * Represents a polynomial whose coefficients are elements of a GF.
+ * Instances of this class are immutable.
+ *
+ * Much credit is due to William Rucklidge since portions of this code are an indirect
+ * port of his C++ Reed-Solomon implementation.
+ *
+ * @author Sean Owen
+ */var GenericGFPoly=/*#__PURE__*/function(){/**
+ * @param field the {@link GenericGF} instance representing the field to use
+ * to perform computations
+ * @param coefficients coefficients as ints representing elements of GF(size), arranged
+ * from most significant (highest-power term) coefficient to least significant
+ * @throws IllegalArgumentException if argument is null or empty,
+ * or if leading coefficient is 0 and this is not a
+ * constant polynomial (that is, it is not the monomial "0")
+ */function GenericGFPoly(field,coefficients){_classCallCheck(this,GenericGFPoly);if(coefficients.length===0){throw new IllegalArgumentException();}this.field=field;var coefficientsLength=coefficients.length;if(coefficientsLength>1&&coefficients[0]===0){// Leading term must be non-zero for anything except the constant polynomial "0"
+var firstNonZero=1;while(firstNonZerolargerCoefficients.length){var temp=smallerCoefficients;smallerCoefficients=largerCoefficients;largerCoefficients=temp;}var sumDiff=new Int32Array(largerCoefficients.length);var lengthDiff=largerCoefficients.length-smallerCoefficients.length;// Copy high-order terms only found in higher-degree polynomial's coefficients
+System.arraycopy(largerCoefficients,0,sumDiff,0,lengthDiff);for(var i=lengthDiff;i=other.getDegree()&&!remainder.isZero()){var degreeDifference=remainder.getDegree()-other.getDegree();var scale=field.multiply(remainder.getCoefficient(remainder.getDegree()),inverseDenominatorLeadingTerm);var term=other.multiplyByMonomial(degreeDifference,scale);var iterationQuotient=field.buildMonomial(degreeDifference,scale);quotient=quotient.addOrSubtract(iterationQuotient);remainder=remainder.addOrSubtract(term);}return[quotient,remainder];}/*@Override*/},{key:"toString",value:function toString(){var result='';for(var degree=this.getDegree();degree>=0;degree--){var coefficient=this.getCoefficient(degree);if(coefficient!==0){if(coefficient<0){result+=' - ';coefficient=-coefficient;}else{if(result.length>0){result+=' + ';}}if(degree===0||coefficient!==1){var alphaPower=this.field.log(coefficient);if(alphaPower===0){result+='1';}else if(alphaPower===1){result+='a';}else{result+='a^';result+=alphaPower;}}if(degree!==0){if(degree===1){result+='x';}else{result+='x^';result+=degree;}}}}return result;}}]);return GenericGFPoly;}();/**
+ * Custom Error class of type Exception.
+ */var ArithmeticException=/*#__PURE__*/function(_Exception8){_inherits(ArithmeticException,_Exception8);var _super15=_createSuper(ArithmeticException);function ArithmeticException(){_classCallCheck(this,ArithmeticException);return _super15.apply(this,arguments);}return _createClass(ArithmeticException);}(Exception);ArithmeticException.kind='ArithmeticException';/*
+ * 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.
+ */ /**
+ * This class contains utility methods for performing mathematical operations over
+ * the Galois Fields. Operations use a given primitive polynomial in calculations.
+ *
+ * Throughout this package, elements of the GF are represented as an {@code int}
+ * for convenience and speed (but at the cost of memory).
+ *
+ *
+ * @author Sean Owen
+ * @author David Olivier
+ */var GenericGF=/*#__PURE__*/function(_AbstractGenericGF){_inherits(GenericGF,_AbstractGenericGF);var _super16=_createSuper(GenericGF);/**
+ * Create a representation of GF(size) using the given primitive polynomial.
+ *
+ * @param primitive irreducible polynomial whose coefficients are represented by
+ * the bits of an int, where the least-significant bit represents the constant
+ * coefficient
+ * @param size the size of the field
+ * @param b the factor b in the generator polynomial can be 0- or 1-based
+ * (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))).
+ * In most cases it should be 1, but for QR code it is 0.
+ */function GenericGF(primitive/*int*/,size/*int*/,generatorBase/*int*/){var _this13;_classCallCheck(this,GenericGF);_this13=_super16.call(this);_this13.primitive=primitive;_this13.size=size;_this13.generatorBase=generatorBase;var expTable=new Int32Array(size);var x=1;for(var i=0;i=size){x^=primitive;x&=size-1;}}_this13.expTable=expTable;var logTable=new Int32Array(size);for(var _i4=0;_i4Implements Reed-Solomon decoding, as the name implies.
+ *
+ * The algorithm will not be explained here, but the following references were helpful
+ * in creating this implementation:
+ *
+ *
+ *
+ * Much credit is due to William Rucklidge since portions of this code are an indirect
+ * port of his C++ Reed-Solomon implementation.
+ *
+ * @author Sean Owen
+ * @author William Rucklidge
+ * @author sanfordsquires
+ */var ReedSolomonDecoder=/*#__PURE__*/function(){function ReedSolomonDecoder(field){_classCallCheck(this,ReedSolomonDecoder);this.field=field;}/**
+ * Decodes given set of received codewords, which include both data and error-correction
+ * codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place,
+ * in the input.
+ *
+ * @param received data and error-correction codewords
+ * @param twoS number of error-correction codewords available
+ * @throws ReedSolomonException if decoding fails for any reason
+ */_createClass(ReedSolomonDecoder,[{key:"decode",value:function decode(received,twoS/*int*/){var field=this.field;var poly=new GenericGFPoly(field,received);var syndromeCoefficients=new Int32Array(twoS);var noError=true;for(var i=0;i= b's
+if(a.getDegree()=(R/2|0)){var rLastLast=rLast;var tLastLast=tLast;rLast=r;tLast=t;// Divide rLastLast by rLast, with quotient in q and remainder in r
+if(rLast.isZero()){// Oops, Euclidean algorithm already terminated?
+throw new ReedSolomonException('r_{i-1} was zero');}r=rLastLast;var q=field.getZero();var denominatorLeadingTerm=rLast.getCoefficient(rLast.getDegree());var dltInverse=field.inverse(denominatorLeadingTerm);while(r.getDegree()>=rLast.getDegree()&&!r.isZero()){var degreeDiff=r.getDegree()-rLast.getDegree();var scale=field.multiply(r.getCoefficient(r.getDegree()),dltInverse);q=q.addOrSubtract(field.buildMonomial(degreeDiff,scale));r=r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff,scale));}t=q.multiply(tLast).addOrSubtract(tLastLast);if(r.getDegree()>=rLast.getDegree()){throw new IllegalStateException('Division algorithm failed to reduce polynomial?');}}var sigmaTildeAtZero=t.getCoefficient(0);if(sigmaTildeAtZero===0){throw new ReedSolomonException('sigmaTilde(0) was zero');}var inverse=field.inverse(sigmaTildeAtZero);var sigma=t.multiplyScalar(inverse);var omega=r.multiplyScalar(inverse);return[sigma,omega];}},{key:"findErrorLocations",value:function findErrorLocations(errorLocator){// This is a direct application of Chien's search
+var numErrors=errorLocator.getDegree();if(numErrors===1){// shortcut
+return Int32Array.from([errorLocator.getCoefficient(1)]);}var result=new Int32Array(numErrors);var e=0;var field=this.field;for(var i=1;iThe main class which implements Aztec Code decoding -- as opposed to locating and extracting
+ * the Aztec Code from an image.
+ *
+ * @author David Olivier
+ */var Decoder=/*#__PURE__*/function(){function Decoder(){_classCallCheck(this,Decoder);}_createClass(Decoder,[{key:"decode",value:function decode(detectorResult){this.ddata=detectorResult;var matrix=detectorResult.getBits();var rawbits=this.extractBits(matrix);var correctedBits=this.correctBits(rawbits);var rawBytes=Decoder.convertBoolArrayToByteArray(correctedBits);var result=Decoder.getEncodedData(correctedBits);var decoderResult=new DecoderResult(rawBytes,result,null,null);decoderResult.setNumBits(correctedBits.length);return decoderResult;}// This method is used for testing the high-level encoder
+},{key:"correctBits",value:/**
+ * Performs RS error correction on an array of bits.
+ *
+ * @return the corrected array
+ * @throws FormatException if the input contains too many errors
+ */function correctBits(rawbits){var gf;var codewordSize;if(this.ddata.getNbLayers()<=2){codewordSize=6;gf=GenericGF.AZTEC_DATA_6;}else if(this.ddata.getNbLayers()<=8){codewordSize=8;gf=GenericGF.AZTEC_DATA_8;}else if(this.ddata.getNbLayers()<=22){codewordSize=10;gf=GenericGF.AZTEC_DATA_10;}else{codewordSize=12;gf=GenericGF.AZTEC_DATA_12;}var numDataCodewords=this.ddata.getNbDatablocks();var numCodewords=rawbits.length/codewordSize;if(numCodewords1,index,index+codewordSize-1);// Arrays.fill(correctedBits, index, index + codewordSize - 1, dataWord > 1);
+index+=codewordSize-1;}else{for(var bit=codewordSize-1;bit>=0;--bit){correctedBits[index++]=(_dataWord&1< (not including alignment lines)
+var low=_i9*2;// The bottom-right most point of this layer is (not including alignment lines)
+var high=baseMatrixSize-1-low;// We pull bits from the two 2 x rowSize columns and two rowSize x 2 rows
+for(var j=0;j=8){return Decoder.readCode(rawbits,startIndex,8);}return Decoder.readCode(rawbits,startIndex,n)<<8-n;}/**
+ * Packs a bit array into bytes, most significant bit first
+ */},{key:"convertBoolArrayToByteArray",value:function convertBoolArrayToByteArray(boolArr){var byteArr=new Uint8Array((boolArr.length+7)/8);for(var i=0;i','?','[',']','{','}','CTRL_UL'];Decoder.DIGIT_TABLE=['CTRL_PS',' ','0','1','2','3','4','5','6','7','8','9',',','.','CTRL_UL','CTRL_US'];/*
+ * Copyright 2012 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.
+ */ /*namespace com.google.zxing.common.detector {*/ /**
+ * General math-related and numeric utility functions.
+ */var MathUtils=/*#__PURE__*/function(){function MathUtils(){_classCallCheck(this,MathUtils);}/**
+ * Ends up being a bit faster than {@link Math#round(float)}. This merely rounds its
+ * argument to the nearest int, where x.5 rounds up to x+1. Semantics of this shortcut
+ * differ slightly from {@link Math#round(float)} in that half rounds down for negative
+ * values. -2.5 rounds to -3, not -2. For purposes here it makes no difference.
+ *
+ * @param d real value to round
+ * @return nearest {@code int}
+ */_createClass(MathUtils,null,[{key:"round",value:function round(d/*float*/){if(NaN===d)return 0;if(d<=Number.MIN_SAFE_INTEGER)return Number.MIN_SAFE_INTEGER;if(d>=Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER;return(/*(int) */d+(d<0.0?-0.5:0.5)|0);}// TYPESCRIPTPORT: maybe remove round method and call directly Math.round, it looks like it doesn't make sense for js
+/**
+ * @param aX point A x coordinate
+ * @param aY point A y coordinate
+ * @param bX point B x coordinate
+ * @param bY point B y coordinate
+ * @return Euclidean distance between points A and B
+ */},{key:"distance",value:function distance(aX/*float|int*/,aY/*float|int*/,bX/*float|int*/,bY/*float|int*/){var xDiff=aX-bX;var yDiff=aY-bY;return(/*(float) */Math.sqrt(xDiff*xDiff+yDiff*yDiff));}/**
+ * @param aX point A x coordinate
+ * @param aY point A y coordinate
+ * @param bX point B x coordinate
+ * @param bY point B y coordinate
+ * @return Euclidean distance between points A and B
+ */ // public static distance(aX: number /*int*/, aY: number /*int*/, bX: number /*int*/, bY: number /*int*/): float {
+// const xDiff = aX - bX
+// const yDiff = aY - bY
+// return (float) Math.sqrt(xDiff * xDiff + yDiff * yDiff);
+// }
+/**
+ * @param array values to sum
+ * @return sum of values in array
+ */},{key:"sum",value:function sum(array){var count=0;for(var i=0,length=array.length;i!==length;i++){var a=array[i];count+=a;}return count;}}]);return MathUtils;}();/**
+ * Ponyfill for Java's Float class.
+ */var Float=/*#__PURE__*/function(){function Float(){_classCallCheck(this,Float);}_createClass(Float,null,[{key:"floatToIntBits",value:/**
+ * SincTS has no difference between int and float, there's all numbers,
+ * this is used only to polyfill Java code.
+ */function floatToIntBits(f){return f;}}]);return Float;}();/**
+ * The float max value in JS is the number max value.
+ */Float.MAX_VALUE=Number.MAX_SAFE_INTEGER;/*
+ * 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.
+ */ /**
+ * Encapsulates a point of interest in an image containing a barcode. Typically, this
+ * would be the location of a finder pattern or the corner of the barcode, for example.
+ *
+ * @author Sean Owen
+ */var ResultPoint=/*#__PURE__*/function(){function ResultPoint(x,y){_classCallCheck(this,ResultPoint);this.x=x;this.y=y;}_createClass(ResultPoint,[{key:"getX",value:function getX(){return this.x;}},{key:"getY",value:function getY(){return this.y;}/*@Override*/},{key:"equals",value:function equals(other){if(other instanceof ResultPoint){var otherPoint=other;return this.x===otherPoint.x&&this.y===otherPoint.y;}return false;}/*@Override*/},{key:"hashCode",value:function hashCode(){return 31*Float.floatToIntBits(this.x)+Float.floatToIntBits(this.y);}/*@Override*/},{key:"toString",value:function toString(){return'('+this.x+','+this.y+')';}/**
+ * Orders an array of three ResultPoints in an order [A,B,C] such that AB is less than AC
+ * and BC is less than AC, and the angle between BC and BA is less than 180 degrees.
+ *
+ * @param patterns array of three {@code ResultPoint} to order
+ */}],[{key:"orderBestPatterns",value:function orderBestPatterns(patterns){// Find distances between pattern centers
+var zeroOneDistance=this.distance(patterns[0],patterns[1]);var oneTwoDistance=this.distance(patterns[1],patterns[2]);var zeroTwoDistance=this.distance(patterns[0],patterns[2]);var pointA;var pointB;var pointC;// Assume one closest to other two is B; A and C will just be guesses at first
+if(oneTwoDistance>=zeroOneDistance&&oneTwoDistance>=zeroTwoDistance){pointB=patterns[0];pointA=patterns[1];pointC=patterns[2];}else if(zeroTwoDistance>=oneTwoDistance&&zeroTwoDistance>=zeroOneDistance){pointB=patterns[1];pointA=patterns[0];pointC=patterns[2];}else{pointB=patterns[2];pointA=patterns[0];pointC=patterns[1];}// Use cross product to figure out whether A and C are correct or flipped.
+// This asks whether BC x BA has a positive z component, which is the arrangement
+// we want for A, B, C. If it's negative, then we've got it flipped around and
+// should swap A and C.
+if(this.crossProductZ(pointA,pointB,pointC)<0.0){var temp=pointA;pointA=pointC;pointC=temp;}patterns[0]=pointA;patterns[1]=pointB;patterns[2]=pointC;}/**
+ * @param pattern1 first pattern
+ * @param pattern2 second pattern
+ * @return distance between two points
+ */},{key:"distance",value:function distance(pattern1,pattern2){return MathUtils.distance(pattern1.x,pattern1.y,pattern2.x,pattern2.y);}/**
+ * Returns the z component of the cross product between vectors BC and BA.
+ */},{key:"crossProductZ",value:function crossProductZ(pointA,pointB,pointC){var bX=pointB.x;var bY=pointB.y;return(pointC.x-bX)*(pointA.y-bY)-(pointC.y-bY)*(pointA.x-bX);}}]);return ResultPoint;}();/*
+ * 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.
+ */ /**
+ * Encapsulates the result of detecting a barcode in an image. This includes the raw
+ * matrix of black/white pixels corresponding to the barcode, and possibly points of interest
+ * in the image, like the location of finder patterns or corners of the barcode in the image.
+ *
+ * @author Sean Owen
+ */var DetectorResult=/*#__PURE__*/function(){function DetectorResult(bits,points){_classCallCheck(this,DetectorResult);this.bits=bits;this.points=points;}_createClass(DetectorResult,[{key:"getBits",value:function getBits(){return this.bits;}},{key:"getPoints",value:function getPoints(){return this.points;}}]);return DetectorResult;}();/*
+ * Copyright 2010 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.
+ */ /**
+ * Extends {@link DetectorResult} with more information specific to the Aztec format,
+ * like the number of layers and whether it's compact.
+ *
+ * @author Sean Owen
+ */var AztecDetectorResult=/*#__PURE__*/function(_DetectorResult){_inherits(AztecDetectorResult,_DetectorResult);var _super19=_createSuper(AztecDetectorResult);function AztecDetectorResult(bits,points,compact,nbDatablocks,nbLayers){var _this14;_classCallCheck(this,AztecDetectorResult);_this14=_super19.call(this,bits,points);_this14.compact=compact;_this14.nbDatablocks=nbDatablocks;_this14.nbLayers=nbLayers;return _this14;}_createClass(AztecDetectorResult,[{key:"getNbLayers",value:function getNbLayers(){return this.nbLayers;}},{key:"getNbDatablocks",value:function getNbDatablocks(){return this.nbDatablocks;}},{key:"isCompact",value:function isCompact(){return this.compact;}}]);return AztecDetectorResult;}(DetectorResult);/*
+ * Copyright 2010 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.
+ */ /**
+ *
+ * Detects a candidate barcode-like rectangular region within an image. It
+ * starts around the center of the image, increases the size of the candidate
+ * region until it finds a white rectangular region. By keeping track of the
+ * last black points it encountered, it determines the corners of the barcode.
+ *
+ *
+ * @author David Olivier
+ */var WhiteRectangleDetector=/*#__PURE__*/function(){// public constructor(private image: BitMatrix) /*throws NotFoundException*/ {
+// this(image, INIT_SIZE, image.getWidth() / 2, image.getHeight() / 2)
+// }
+/**
+ * @param image barcode image to find a rectangle in
+ * @param initSize initial size of search area around center
+ * @param x x position of search center
+ * @param y y position of search center
+ * @throws NotFoundException if image is too small to accommodate {@code initSize}
+ */function WhiteRectangleDetector(image,initSize/*int*/,x/*int*/,y/*int*/){_classCallCheck(this,WhiteRectangleDetector);this.image=image;this.height=image.getHeight();this.width=image.getWidth();if(undefined===initSize||null===initSize){initSize=WhiteRectangleDetector.INIT_SIZE;}if(undefined===x||null===x){x=image.getWidth()/2|0;}if(undefined===y||null===y){y=image.getHeight()/2|0;}var halfsize=initSize/2|0;this.leftInit=x-halfsize;this.rightInit=x+halfsize;this.upInit=y-halfsize;this.downInit=y+halfsize;if(this.upInit<0||this.leftInit<0||this.downInit>=this.height||this.rightInit>=this.width){throw new NotFoundException();}}/**
+ *
+ * Detects a candidate barcode-like rectangular region within an image. It
+ * starts around the center of the image, increases the size of the candidate
+ * region until it finds a white rectangular region.
+ *
+ *
+ * @return {@link ResultPoint}[] describing the corners of the rectangular
+ * region. The first and last points are opposed on the diagonal, as
+ * are the second and third. The first point will be the topmost
+ * point and the last, the bottommost. The second point will be
+ * leftmost and the third, the rightmost
+ * @throws NotFoundException if no Data Matrix Code can be found
+ */_createClass(WhiteRectangleDetector,[{key:"detect",value:function detect(){var left=this.leftInit;var right=this.rightInit;var up=this.upInit;var down=this.downInit;var sizeExceeded=false;var aBlackPointFoundOnBorder=true;var atLeastOneBlackPointFoundOnBorder=false;var atLeastOneBlackPointFoundOnRight=false;var atLeastOneBlackPointFoundOnBottom=false;var atLeastOneBlackPointFoundOnLeft=false;var atLeastOneBlackPointFoundOnTop=false;var width=this.width;var height=this.height;while(aBlackPointFoundOnBorder){aBlackPointFoundOnBorder=false;// .....
+// . |
+// .....
+var rightBorderNotWhite=true;while((rightBorderNotWhite||!atLeastOneBlackPointFoundOnRight)&&right=width){sizeExceeded=true;break;}// .....
+// . .
+// .___.
+var bottomBorderNotWhite=true;while((bottomBorderNotWhite||!atLeastOneBlackPointFoundOnBottom)&&down=height){sizeExceeded=true;break;}// .....
+// | .
+// .....
+var leftBorderNotWhite=true;while((leftBorderNotWhite||!atLeastOneBlackPointFoundOnLeft)&&left>=0){leftBorderNotWhite=this.containsBlackPoint(up,down,left,false);if(leftBorderNotWhite){left--;aBlackPointFoundOnBorder=true;atLeastOneBlackPointFoundOnLeft=true;}else if(!atLeastOneBlackPointFoundOnLeft){left--;}}if(left<0){sizeExceeded=true;break;}// .___.
+// . .
+// .....
+var topBorderNotWhite=true;while((topBorderNotWhite||!atLeastOneBlackPointFoundOnTop)&&up>=0){topBorderNotWhite=this.containsBlackPoint(left,right,up,true);if(topBorderNotWhite){up--;aBlackPointFoundOnBorder=true;atLeastOneBlackPointFoundOnTop=true;}else if(!atLeastOneBlackPointFoundOnTop){up--;}}if(up<0){sizeExceeded=true;break;}if(aBlackPointFoundOnBorder){atLeastOneBlackPointFoundOnBorder=true;}}if(!sizeExceeded&&atLeastOneBlackPointFoundOnBorder){var maxSize=right-left;var z=null;for(var i=1;z===null&&iChecks a set of points that have been transformed to sample points on an image against
+ * the image's dimensions to see if the point are even within the image.
+ *
+ * This method will actually "nudge" the endpoints back onto the image if they are found to be
+ * barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder
+ * patterns in an image where the QR Code runs all the way to the image border.
+ *
+ * For efficiency, the method will check points from either end of the line until one is found
+ * to be within the image. Because the set of points are assumed to be linear, this is valid.
+ *
+ * @param image image into which the points should map
+ * @param points actual points in x1,y1,...,xn,yn form
+ * @throws NotFoundException if an endpoint is lies outside the image boundaries
+ */function checkAndNudgePoints(image,points){var width=image.getWidth();var height=image.getHeight();// Check and nudge points from start until we see some that are OK:
+var nudged=true;for(var offset=0;offsetwidth||y<-1||y>height){throw new NotFoundException();}nudged=false;if(x===-1){points[offset]=0.0;nudged=true;}else if(x===width){points[offset]=width-1;nudged=true;}if(y===-1){points[offset+1]=0.0;nudged=true;}else if(y===height){points[offset+1]=height-1;nudged=true;}}// Check and nudge points from end:
+nudged=true;for(var _offset=points.length-2;_offset>=0&&nudged;_offset-=2){var _x7=Math.floor(points[_offset]);var _y2=Math.floor(points[_offset+1]);if(_x7<-1||_x7>width||_y2<-1||_y2>height){throw new NotFoundException();}nudged=false;if(_x7===-1){points[_offset]=0.0;nudged=true;}else if(_x7===width){points[_offset]=width-1;nudged=true;}if(_y2===-1){points[_offset+1]=0.0;nudged=true;}else if(_y2===height){points[_offset+1]=height-1;nudged=true;}}}}]);return GridSampler;}();/*
+ * 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.
+ */ /*namespace com.google.zxing.common {*/ /**
+ * This class implements a perspective transform in two dimensions. Given four source and four
+ * destination points, it will compute the transformation implied between them. The code is based
+ * directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.
+ *
+ * @author Sean Owen
+ */var PerspectiveTransform=/*#__PURE__*/function(){function PerspectiveTransform(a11/*float*/,a21/*float*/,a31/*float*/,a12/*float*/,a22/*float*/,a32/*float*/,a13/*float*/,a23/*float*/,a33/*float*/){_classCallCheck(this,PerspectiveTransform);this.a11=a11;this.a21=a21;this.a31=a31;this.a12=a12;this.a22=a22;this.a32=a32;this.a13=a13;this.a23=a23;this.a33=a33;}_createClass(PerspectiveTransform,[{key:"transformPoints",value:function transformPoints(points){var max=points.length;var a11=this.a11;var a12=this.a12;var a13=this.a13;var a21=this.a21;var a22=this.a22;var a23=this.a23;var a31=this.a31;var a32=this.a32;var a33=this.a33;for(var i=0;i>1&0x7F;}else{// Each side of the form ..XXXXX.XXXXX. where Xs are parameter data
+parameterData<<=10;parameterData+=(side>>2&0x1f<<5)+(side>>1&0x1F);}}// Corrects parameter data using RS. Returns just the data portion
+// without the error correction.
+var correctedData=this.getCorrectedParameterData(parameterData,this.compact);if(this.compact){// 8 bits: 2 bits layers and 6 bits data blocks
+this.nbLayers=(correctedData>>6)+1;this.nbDataBlocks=(correctedData&0x3F)+1;}else{// 16 bits: 5 bits layers and 11 bits data blocks
+this.nbLayers=(correctedData>>11)+1;this.nbDataBlocks=(correctedData&0x7FF)+1;}}},{key:"getRotation",value:function getRotation(sides,length){// In a normal pattern, we expect to See
+// ** .* D A
+// * *
+//
+// . *
+// .. .. C B
+//
+// Grab the 3 bits from each of the sides the form the locator pattern and concatenate
+// into a 12-bit integer. Start with the bit at A
+var cornerBits=0;sides.forEach(function(side,idx,arr){// XX......X where X's are orientation marks
+var t=(side>>length-2<<1)+(side&1);cornerBits=(cornerBits<<3)+t;});// for (var side in sides) {
+// // XX......X where X's are orientation marks
+// var t = ((side >> (length - 2)) << 1) + (side & 1);
+// cornerBits = (cornerBits << 3) + t;
+// }
+// Mov the bottom bit to the top, so that the three bits of the locator pattern at A are
+// together. cornerBits is now:
+// 3 orientation bits at A || 3 orientation bits at B || ... || 3 orientation bits at D
+cornerBits=((cornerBits&1)<<11)+(cornerBits>>1);// The result shift indicates which element of BullsEyeCorners[] goes into the top-left
+// corner. Since the four rotation values have a Hamming distance of 8, we
+// can easily tolerate two errors.
+for(var shift=0;shift<4;shift++){if(Integer.bitCount(cornerBits^this.EXPECTED_CORNER_BITS[shift])<=2){return shift;}}throw new NotFoundException();}/**
+ * Corrects the parameter bits using Reed-Solomon algorithm.
+ *
+ * @param parameterData parameter bits
+ * @param compact true if this is a compact Aztec code
+ * @throws NotFoundException if the array contains too many errors
+ */},{key:"getCorrectedParameterData",value:function getCorrectedParameterData(parameterData,compact){var numCodewords;var numDataCodewords;if(compact){numCodewords=7;numDataCodewords=2;}else{numCodewords=10;numDataCodewords=4;}var numECCodewords=numCodewords-numDataCodewords;var parameterWords=new Int32Array(numCodewords);for(var i=numCodewords-1;i>=0;--i){parameterWords[i]=parameterData&0xF;parameterData>>=4;}try{var rsDecoder=new ReedSolomonDecoder(GenericGF.AZTEC_PARAM);rsDecoder.decode(parameterWords,numECCodewords);}catch(ignored){throw new NotFoundException();}// Toss the error correction. Just return the data as an integer
+var result=0;for(var _i13=0;_i132){var q=this.distancePoint(poutd,pouta)*this.nbCenterLayers/(this.distancePoint(pind,pina)*(this.nbCenterLayers+2));if(q<0.75||q>1.25||!this.isWhiteOrBlackRectangle(pouta,poutb,poutc,poutd)){break;}}pina=pouta;pinb=poutb;pinc=poutc;pind=poutd;color=!color;}if(this.nbCenterLayers!==5&&this.nbCenterLayers!==7){throw new NotFoundException();}this.compact=this.nbCenterLayers===5;// Expand the square by .5 pixel in each direction so that we're on the border
+// between the white square and the black square
+var pinax=new ResultPoint(pina.getX()+0.5,pina.getY()-0.5);var pinbx=new ResultPoint(pinb.getX()+0.5,pinb.getY()+0.5);var pincx=new ResultPoint(pinc.getX()-0.5,pinc.getY()+0.5);var pindx=new ResultPoint(pind.getX()-0.5,pind.getY()-0.5);// Expand the square so that its corners are the centers of the points
+// just outside the bull's eye.
+return this.expandSquare([pinax,pinbx,pincx,pindx],2*this.nbCenterLayers-3,2*this.nbCenterLayers);}/**
+ * Finds a candidate center point of an Aztec code from an image
+ *
+ * @return the center point
+ */},{key:"getMatrixCenter",value:function getMatrixCenter(){var pointA;var pointB;var pointC;var pointD;// Get a white rectangle that can be the border of the matrix in center bull's eye or
+try{var cornerPoints=new WhiteRectangleDetector(this.image).detect();pointA=cornerPoints[0];pointB=cornerPoints[1];pointC=cornerPoints[2];pointD=cornerPoints[3];}catch(e){// This exception can be in case the initial rectangle is white
+// In that case, surely in the bull's eye, we try to expand the rectangle.
+var _cx=this.image.getWidth()/2;var _cy=this.image.getHeight()/2;pointA=this.getFirstDifferent(new Point(_cx+7,_cy-7),false,1,-1).toResultPoint();pointB=this.getFirstDifferent(new Point(_cx+7,_cy+7),false,1,1).toResultPoint();pointC=this.getFirstDifferent(new Point(_cx-7,_cy+7),false,-1,1).toResultPoint();pointD=this.getFirstDifferent(new Point(_cx-7,_cy-7),false,-1,-1).toResultPoint();}// Compute the center of the rectangle
+var cx=MathUtils.round((pointA.getX()+pointD.getX()+pointB.getX()+pointC.getX())/4.0);var cy=MathUtils.round((pointA.getY()+pointD.getY()+pointB.getY()+pointC.getY())/4.0);// Redetermine the white rectangle starting from previously computed center.
+// This will ensure that we end up with a white rectangle in center bull's eye
+// in order to compute a more accurate center.
+try{var _cornerPoints=new WhiteRectangleDetector(this.image,15,cx,cy).detect();pointA=_cornerPoints[0];pointB=_cornerPoints[1];pointC=_cornerPoints[2];pointD=_cornerPoints[3];}catch(e){// This exception can be in case the initial rectangle is white
+// In that case we try to expand the rectangle.
+pointA=this.getFirstDifferent(new Point(cx+7,cy-7),false,1,-1).toResultPoint();pointB=this.getFirstDifferent(new Point(cx+7,cy+7),false,1,1).toResultPoint();pointC=this.getFirstDifferent(new Point(cx-7,cy+7),false,-1,1).toResultPoint();pointD=this.getFirstDifferent(new Point(cx-7,cy-7),false,-1,-1).toResultPoint();}// Recompute the center of the rectangle
+cx=MathUtils.round((pointA.getX()+pointD.getX()+pointB.getX()+pointC.getX())/4.0);cy=MathUtils.round((pointA.getY()+pointD.getY()+pointB.getY()+pointC.getY())/4.0);return new Point(cx,cy);}/**
+ * Gets the Aztec code corners from the bull's eye corners and the parameters.
+ *
+ * @param bullsEyeCorners the array of bull's eye corners
+ * @return the array of aztec code corners
+ */},{key:"getMatrixCornerPoints",value:function getMatrixCornerPoints(bullsEyeCorners){return this.expandSquare(bullsEyeCorners,2*this.nbCenterLayers,this.getDimension());}/**
+ * Creates a BitMatrix by sampling the provided image.
+ * topLeft, topRight, bottomRight, and bottomLeft are the centers of the squares on the
+ * diagonal just outside the bull's eye.
+ */},{key:"sampleGrid",value:function sampleGrid(image,topLeft,topRight,bottomRight,bottomLeft){var sampler=GridSamplerInstance.getInstance();var dimension=this.getDimension();var low=dimension/2-this.nbCenterLayers;var high=dimension/2+this.nbCenterLayers;return sampler.sampleGrid(image,dimension,dimension,low,low,// topleft
+high,low,// topright
+high,high,// bottomright
+low,high,// bottomleft
+topLeft.getX(),topLeft.getY(),topRight.getX(),topRight.getY(),bottomRight.getX(),bottomRight.getY(),bottomLeft.getX(),bottomLeft.getY());}/**
+ * Samples a line.
+ *
+ * @param p1 start point (inclusive)
+ * @param p2 end point (exclusive)
+ * @param size number of bits
+ * @return the array of bits as an int (first bit is high-order bit of result)
+ */},{key:"sampleLine",value:function sampleLine(p1,p2,size){var result=0;var d=this.distanceResultPoint(p1,p2);var moduleSize=d/size;var px=p1.getX();var py=p1.getY();var dx=moduleSize*(p2.getX()-p1.getX())/d;var dy=moduleSize*(p2.getY()-p1.getY())/d;for(var i=0;i0.1&&errRatio<0.9){return 0;}return errRatio<=0.1===colorModel?1:-1;}/**
+ * Gets the coordinate of the first point with a different color in the given direction
+ */},{key:"getFirstDifferent",value:function getFirstDifferent(init,color,dx,dy){var x=init.getX()+dx;var y=init.getY()+dy;while(this.isValid(x,y)&&this.image.get(x,y)===color){x+=dx;y+=dy;}x-=dx;y-=dy;while(this.isValid(x,y)&&this.image.get(x,y)===color){x+=dx;}x-=dx;while(this.isValid(x,y)&&this.image.get(x,y)===color){y+=dy;}y-=dy;return new Point(x,y);}/**
+ * Expand the square represented by the corner points by pushing out equally in all directions
+ *
+ * @param cornerPoints the corners of the square, which has the bull's eye at its center
+ * @param oldSide the original length of the side of the square in the target bit matrix
+ * @param newSide the new length of the size of the square in the target bit matrix
+ * @return the corners of the expanded square
+ */},{key:"expandSquare",value:function expandSquare(cornerPoints,oldSide,newSide){var ratio=newSide/(2.0*oldSide);var dx=cornerPoints[0].getX()-cornerPoints[2].getX();var dy=cornerPoints[0].getY()-cornerPoints[2].getY();var centerx=(cornerPoints[0].getX()+cornerPoints[2].getX())/2.0;var centery=(cornerPoints[0].getY()+cornerPoints[2].getY())/2.0;var result0=new ResultPoint(centerx+ratio*dx,centery+ratio*dy);var result2=new ResultPoint(centerx-ratio*dx,centery-ratio*dy);dx=cornerPoints[1].getX()-cornerPoints[3].getX();dy=cornerPoints[1].getY()-cornerPoints[3].getY();centerx=(cornerPoints[1].getX()+cornerPoints[3].getX())/2.0;centery=(cornerPoints[1].getY()+cornerPoints[3].getY())/2.0;var result1=new ResultPoint(centerx+ratio*dx,centery+ratio*dy);var result3=new ResultPoint(centerx-ratio*dx,centery-ratio*dy);var results=[result0,result1,result2,result3];return results;}},{key:"isValid",value:function isValid(x,y){return x>=0&&x0&&y1&&arguments[1]!==undefined?arguments[1]:null;var exception=null;var detector=new Detector(image.getBlackMatrix());var points=null;var decoderResult=null;try{var detectorResult=detector.detectMirror(false);points=detectorResult.getPoints();this.reportFoundResultPoints(hints,points);decoderResult=new Decoder().decode(detectorResult);}catch(e){exception=e;}if(decoderResult==null){try{var _detectorResult=detector.detectMirror(true);points=_detectorResult.getPoints();this.reportFoundResultPoints(hints,points);decoderResult=new Decoder().decode(_detectorResult);}catch(e){if(exception!=null){throw exception;}throw e;}}var result=new Result(decoderResult.getText(),decoderResult.getRawBytes(),decoderResult.getNumBits(),points,BarcodeFormat$1.AZTEC,System.currentTimeMillis());var byteSegments=decoderResult.getByteSegments();if(byteSegments!=null){result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS,byteSegments);}var ecLevel=decoderResult.getECLevel();if(ecLevel!=null){result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL,ecLevel);}return result;}},{key:"reportFoundResultPoints",value:function reportFoundResultPoints(hints,points){if(hints!=null){var rpcb=hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);if(rpcb!=null){points.forEach(function(point,idx,arr){rpcb.foundPossibleResultPoint(point);});}}}// @Override
+},{key:"reset",value:function reset(){// do nothing
+}}]);return AztecReader;}();/**
+ * Aztec Code reader to use from browser.
+ *
+ * @class BrowserAztecCodeReader
+ * @extends {BrowserCodeReader}
+ */var BrowserAztecCodeReader=/*#__PURE__*/function(_BrowserCodeReader){_inherits(BrowserAztecCodeReader,_BrowserCodeReader);var _super21=_createSuper(BrowserAztecCodeReader);/**
+ * Creates an instance of BrowserAztecCodeReader.
+ * @param {number} [timeBetweenScansMillis=500] the time delay between subsequent decode tries
+ *
+ * @memberOf BrowserAztecCodeReader
+ */function BrowserAztecCodeReader(){var timeBetweenScansMillis=arguments.length>0&&arguments[0]!==undefined?arguments[0]:500;_classCallCheck(this,BrowserAztecCodeReader);return _super21.call(this,new AztecReader(),timeBetweenScansMillis);}return _createClass(BrowserAztecCodeReader);}(BrowserCodeReader);/**
+ * Encapsulates functionality and implementation that is common to all families
+ * of one-dimensional barcodes.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ * @author Sean Owen
+ */var OneDReader=/*#__PURE__*/function(){function OneDReader(){_classCallCheck(this,OneDReader);}_createClass(OneDReader,[{key:"decode",value:/*
+ @Override
+ public Result decode(BinaryBitmap image) throws NotFoundException, FormatException {
+ return decode(image, null);
+ }
+ */ // Note that we don't try rotation without the try harder flag, even if rotation was supported.
+// @Override
+function decode(image,hints){try{return this.doDecode(image,hints);}catch(nfe){var tryHarder=hints&&hints.get(DecodeHintType$1.TRY_HARDER)===true;if(tryHarder&&image.isRotateSupported()){var rotatedImage=image.rotateCounterClockwise();var result=this.doDecode(rotatedImage,hints);// Record that we found it rotated 90 degrees CCW / 270 degrees CW
+var metadata=result.getResultMetadata();var orientation=270;if(metadata!==null&&metadata.get(ResultMetadataType$1.ORIENTATION)===true){// But if we found it reversed in doDecode(), add in that result here:
+orientation=orientation+metadata.get(ResultMetadataType$1.ORIENTATION)%360;}result.putMetadata(ResultMetadataType$1.ORIENTATION,orientation);// Update result points
+var points=result.getResultPoints();if(points!==null){var height=rotatedImage.getHeight();for(var i=0;i>(tryHarder?8:5));var maxLines;if(tryHarder){maxLines=height;// Look at the whole image, not just the center
+}else{maxLines=15;// 15 rows spaced 1/32 apart is roughly the middle half of the image
+}var middle=Math.trunc(height/2);for(var x=0;x=height){// Oops, if we run off the top or bottom, stop
+break;}// Estimate black point for this row and load it:
+try{row=image.getBlackRow(rowNumber,row);}catch(ignored){continue;}// While we have the image data in a BitArray, it's fairly cheap to reverse it in place to
+// handle decoding upside down barcodes.
+for(var attempt=0;attempt<2;attempt++){if(attempt===1){// trying again?
+row.reverse();// reverse the row and continue
+// This means we will only ever draw result points *once* in the life of this method
+// since we want to avoid drawing the wrong points after flipping the row, and,
+// don't want to clutter with noise from every single row scan -- just the scans
+// that start on the center line.
+if(hints&&hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK)===true){(function(){var newHints=new Map();hints.forEach(function(hint,key){return newHints.set(key,hint);});newHints.delete(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);hints=newHints;})();}}try{// Look for a barcode
+var result=this.decodeRow(rowNumber,row,hints);// We found our barcode
+if(attempt===1){// But it was upside down, so note that
+result.putMetadata(ResultMetadataType$1.ORIENTATION,180);// And remember to flip the result points horizontally.
+var points=result.getResultPoints();if(points!==null){points[0]=new ResultPoint(width-points[0].getX()-1,points[0].getY());points[1]=new ResultPoint(width-points[1].getX()-1,points[1].getY());}}return result;}catch(re){// continue -- just couldn't decode this row
+}}}throw new NotFoundException();}/**
+ * Records the size of successive runs of white and black pixels in a row, starting at a given point.
+ * The values are recorded in the given array, and the number of runs recorded is equal to the size
+ * of the array. If the row starts on a white pixel at the given start point, then the first count
+ * recorded is the run of white pixels starting from that point; likewise it is the count of a run
+ * of black pixels if the row begin on a black pixels at that point.
+ *
+ * @param row row to count from
+ * @param start offset into row to start at
+ * @param counters array into which to record counts
+ * @throws NotFoundException if counters cannot be filled entirely from row before running out
+ * of pixels
+ */}],[{key:"recordPattern",value:function recordPattern(row,start,counters){var numCounters=counters.length;for(var index=0;index=end){throw new NotFoundException();}var isWhite=!row.get(start);var counterPosition=0;var i=start;while(i0&&numTransitionsLeft>=0){if(row.get(--start)!==last){numTransitionsLeft--;last=!last;}}if(numTransitionsLeft>=0){throw new NotFoundException();}OneDReader.recordPattern(row,start+1,counters);}/**
+ * Determines how closely a set of observed counts of runs of black/white values matches a given
+ * target pattern. This is reported as the ratio of the total variance from the expected pattern
+ * proportions across all pattern elements, to the length of the pattern.
+ *
+ * @param counters observed counters
+ * @param pattern expected pattern
+ * @param maxIndividualVariance The most any counter can differ before we give up
+ * @return ratio of total variance between counters and pattern compared to total pattern size
+ */},{key:"patternMatchVariance",value:function patternMatchVariance(counters,pattern,maxIndividualVariance){var numCounters=counters.length;var total=0;var patternLength=0;for(var i=0;iscaledPattern?counter-scaledPattern:scaledPattern-counter;if(variance>maxIndividualVariance){return Number.POSITIVE_INFINITY;}totalVariance+=variance;}return totalVariance/total;}}]);return OneDReader;}();/**
+ * Decodes Code 128 barcodes.
+ *
+ * @author Sean Owen
+ */var Code128Reader=/*#__PURE__*/function(_OneDReader){_inherits(Code128Reader,_OneDReader);var _super22=_createSuper(Code128Reader);function Code128Reader(){_classCallCheck(this,Code128Reader);return _super22.apply(this,arguments);}_createClass(Code128Reader,[{key:"decodeRow",value:function decodeRow(rowNumber,row,hints){var convertFNC1=hints&&hints.get(DecodeHintType$1.ASSUME_GS1)===true;var startPatternInfo=Code128Reader.findStartPattern(row);var startCode=startPatternInfo[2];var currentRawCodesIndex=0;var rawCodes=new Uint8Array(20);rawCodes[currentRawCodesIndex++]=startCode;var codeSet;switch(startCode){case Code128Reader.CODE_START_A:codeSet=Code128Reader.CODE_CODE_A;break;case Code128Reader.CODE_START_B:codeSet=Code128Reader.CODE_CODE_B;break;case Code128Reader.CODE_START_C:codeSet=Code128Reader.CODE_CODE_C;break;default:throw new FormatException();}var done=false;var isNextShifted=false;var result='';var lastStart=startPatternInfo[0];var nextStart=startPatternInfo[1];var counters=Int32Array.from([0,0,0,0,0,0]);var lastCode=0;var code=0;var checksumTotal=startCode;var multiplier=0;var lastCharacterWasPrintable=true;var upperMode=false;var shiftUpperMode=false;while(!done){var unshift=isNextShifted;isNextShifted=false;// Save off last code
+lastCode=code;// Decode another code from image
+code=Code128Reader.decodeCode(row,counters,nextStart);rawCodes[currentRawCodesIndex++]=code;// Remember whether the last code was printable or not (excluding CODE_STOP)
+if(code!==Code128Reader.CODE_STOP){lastCharacterWasPrintable=true;}// Add to checksum computation (if not CODE_STOP of course)
+if(code!==Code128Reader.CODE_STOP){multiplier++;checksumTotal+=multiplier*code;}// Advance to where the next code will to start
+lastStart=nextStart;nextStart+=counters.reduce(function(previous,current){return previous+current;},0);// Take care of illegal start codes
+switch(code){case Code128Reader.CODE_START_A:case Code128Reader.CODE_START_B:case Code128Reader.CODE_START_C:throw new FormatException();}switch(codeSet){case Code128Reader.CODE_CODE_A:if(code<64){if(shiftUpperMode===upperMode){result+=String.fromCharCode(' '.charCodeAt(0)+code);}else{result+=String.fromCharCode(' '.charCodeAt(0)+code+128);}shiftUpperMode=false;}else if(code<96){if(shiftUpperMode===upperMode){result+=String.fromCharCode(code-64);}else{result+=String.fromCharCode(code+64);}shiftUpperMode=false;}else{// Don't let CODE_STOP, which always appears, affect whether whether we think the last
+// code was printable or not.
+if(code!==Code128Reader.CODE_STOP){lastCharacterWasPrintable=false;}switch(code){case Code128Reader.CODE_FNC_1:if(convertFNC1){if(result.length===0){// GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code
+// is FNC1 then this is GS1-128. We add the symbology identifier.
+result+=']C1';}else{// GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)
+result+=String.fromCharCode(29);}}break;case Code128Reader.CODE_FNC_2:case Code128Reader.CODE_FNC_3:// do nothing?
+break;case Code128Reader.CODE_FNC_4_A:if(!upperMode&&shiftUpperMode){upperMode=true;shiftUpperMode=false;}else if(upperMode&&shiftUpperMode){upperMode=false;shiftUpperMode=false;}else{shiftUpperMode=true;}break;case Code128Reader.CODE_SHIFT:isNextShifted=true;codeSet=Code128Reader.CODE_CODE_B;break;case Code128Reader.CODE_CODE_B:codeSet=Code128Reader.CODE_CODE_B;break;case Code128Reader.CODE_CODE_C:codeSet=Code128Reader.CODE_CODE_C;break;case Code128Reader.CODE_STOP:done=true;break;}}break;case Code128Reader.CODE_CODE_B:if(code<96){if(shiftUpperMode===upperMode){result+=String.fromCharCode(' '.charCodeAt(0)+code);}else{result+=String.fromCharCode(' '.charCodeAt(0)+code+128);}shiftUpperMode=false;}else{if(code!==Code128Reader.CODE_STOP){lastCharacterWasPrintable=false;}switch(code){case Code128Reader.CODE_FNC_1:if(convertFNC1){if(result.length===0){// GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code
+// is FNC1 then this is GS1-128. We add the symbology identifier.
+result+=']C1';}else{// GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)
+result+=String.fromCharCode(29);}}break;case Code128Reader.CODE_FNC_2:case Code128Reader.CODE_FNC_3:// do nothing?
+break;case Code128Reader.CODE_FNC_4_B:if(!upperMode&&shiftUpperMode){upperMode=true;shiftUpperMode=false;}else if(upperMode&&shiftUpperMode){upperMode=false;shiftUpperMode=false;}else{shiftUpperMode=true;}break;case Code128Reader.CODE_SHIFT:isNextShifted=true;codeSet=Code128Reader.CODE_CODE_A;break;case Code128Reader.CODE_CODE_A:codeSet=Code128Reader.CODE_CODE_A;break;case Code128Reader.CODE_CODE_C:codeSet=Code128Reader.CODE_CODE_C;break;case Code128Reader.CODE_STOP:done=true;break;}}break;case Code128Reader.CODE_CODE_C:if(code<100){if(code<10){result+='0';}result+=code;}else{if(code!==Code128Reader.CODE_STOP){lastCharacterWasPrintable=false;}switch(code){case Code128Reader.CODE_FNC_1:if(convertFNC1){if(result.length===0){// GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code
+// is FNC1 then this is GS1-128. We add the symbology identifier.
+result+=']C1';}else{// GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS)
+result+=String.fromCharCode(29);}}break;case Code128Reader.CODE_CODE_A:codeSet=Code128Reader.CODE_CODE_A;break;case Code128Reader.CODE_CODE_B:codeSet=Code128Reader.CODE_CODE_B;break;case Code128Reader.CODE_STOP:done=true;break;}}break;}// Unshift back to another code set if we were shifted
+if(unshift){codeSet=codeSet===Code128Reader.CODE_CODE_A?Code128Reader.CODE_CODE_B:Code128Reader.CODE_CODE_A;}}var lastPatternSize=nextStart-lastStart;// Check for ample whitespace following pattern, but, to do this we first need to remember that
+// we fudged decoding CODE_STOP since it actually has 7 bars, not 6. There is a black bar left
+// to read off. Would be slightly better to properly read. Here we just skip it:
+nextStart=row.getNextUnset(nextStart);if(!row.isRange(nextStart,Math.min(row.getSize(),nextStart+(nextStart-lastStart)/2),false)){throw new NotFoundException();}// Pull out from sum the value of the penultimate check code
+checksumTotal-=multiplier*lastCode;// lastCode is the checksum then:
+if(checksumTotal%103!==lastCode){throw new ChecksumException();}// Need to pull out the check digits from string
+var resultLength=result.length;if(resultLength===0){// false positive
+throw new NotFoundException();}// Only bother if the result had at least one character, and if the checksum digit happened to
+// be a printable character. If it was just interpreted as a control code, nothing to remove.
+if(resultLength>0&&lastCharacterWasPrintable){if(codeSet===Code128Reader.CODE_CODE_C){result=result.substring(0,resultLength-2);}else{result=result.substring(0,resultLength-1);}}var left=(startPatternInfo[1]+startPatternInfo[0])/2.0;var right=lastStart+lastPatternSize/2.0;var rawCodesSize=rawCodes.length;var rawBytes=new Uint8Array(rawCodesSize);for(var i=0;i= 50% of width of start pattern
+if(bestMatch>=0&&row.isRange(Math.max(0,patternStart-(i-patternStart)/2),patternStart,false)){return Int32Array.from([patternStart,i,bestMatch]);}patternStart+=counters[0]+counters[1];counters=counters.slice(2,counters.length-1);counters[counterPosition-1]=0;counters[counterPosition]=0;counterPosition--;}else{counterPosition++;}counters[counterPosition]=1;isWhite=!isWhite;}}throw new NotFoundException();}},{key:"decodeCode",value:function decodeCode(row,counters,rowOffset){OneDReader.recordPattern(row,rowOffset,counters);var bestVariance=Code128Reader.MAX_AVG_VARIANCE;// worst variance we'll accept
+var bestMatch=-1;for(var d=0;d=0){return bestMatch;}else{throw new NotFoundException();}}}]);return Code128Reader;}(OneDReader);Code128Reader.CODE_PATTERNS=[Int32Array.from([2,1,2,2,2,2]),Int32Array.from([2,2,2,1,2,2]),Int32Array.from([2,2,2,2,2,1]),Int32Array.from([1,2,1,2,2,3]),Int32Array.from([1,2,1,3,2,2]),Int32Array.from([1,3,1,2,2,2]),Int32Array.from([1,2,2,2,1,3]),Int32Array.from([1,2,2,3,1,2]),Int32Array.from([1,3,2,2,1,2]),Int32Array.from([2,2,1,2,1,3]),Int32Array.from([2,2,1,3,1,2]),Int32Array.from([2,3,1,2,1,2]),Int32Array.from([1,1,2,2,3,2]),Int32Array.from([1,2,2,1,3,2]),Int32Array.from([1,2,2,2,3,1]),Int32Array.from([1,1,3,2,2,2]),Int32Array.from([1,2,3,1,2,2]),Int32Array.from([1,2,3,2,2,1]),Int32Array.from([2,2,3,2,1,1]),Int32Array.from([2,2,1,1,3,2]),Int32Array.from([2,2,1,2,3,1]),Int32Array.from([2,1,3,2,1,2]),Int32Array.from([2,2,3,1,1,2]),Int32Array.from([3,1,2,1,3,1]),Int32Array.from([3,1,1,2,2,2]),Int32Array.from([3,2,1,1,2,2]),Int32Array.from([3,2,1,2,2,1]),Int32Array.from([3,1,2,2,1,2]),Int32Array.from([3,2,2,1,1,2]),Int32Array.from([3,2,2,2,1,1]),Int32Array.from([2,1,2,1,2,3]),Int32Array.from([2,1,2,3,2,1]),Int32Array.from([2,3,2,1,2,1]),Int32Array.from([1,1,1,3,2,3]),Int32Array.from([1,3,1,1,2,3]),Int32Array.from([1,3,1,3,2,1]),Int32Array.from([1,1,2,3,1,3]),Int32Array.from([1,3,2,1,1,3]),Int32Array.from([1,3,2,3,1,1]),Int32Array.from([2,1,1,3,1,3]),Int32Array.from([2,3,1,1,1,3]),Int32Array.from([2,3,1,3,1,1]),Int32Array.from([1,1,2,1,3,3]),Int32Array.from([1,1,2,3,3,1]),Int32Array.from([1,3,2,1,3,1]),Int32Array.from([1,1,3,1,2,3]),Int32Array.from([1,1,3,3,2,1]),Int32Array.from([1,3,3,1,2,1]),Int32Array.from([3,1,3,1,2,1]),Int32Array.from([2,1,1,3,3,1]),Int32Array.from([2,3,1,1,3,1]),Int32Array.from([2,1,3,1,1,3]),Int32Array.from([2,1,3,3,1,1]),Int32Array.from([2,1,3,1,3,1]),Int32Array.from([3,1,1,1,2,3]),Int32Array.from([3,1,1,3,2,1]),Int32Array.from([3,3,1,1,2,1]),Int32Array.from([3,1,2,1,1,3]),Int32Array.from([3,1,2,3,1,1]),Int32Array.from([3,3,2,1,1,1]),Int32Array.from([3,1,4,1,1,1]),Int32Array.from([2,2,1,4,1,1]),Int32Array.from([4,3,1,1,1,1]),Int32Array.from([1,1,1,2,2,4]),Int32Array.from([1,1,1,4,2,2]),Int32Array.from([1,2,1,1,2,4]),Int32Array.from([1,2,1,4,2,1]),Int32Array.from([1,4,1,1,2,2]),Int32Array.from([1,4,1,2,2,1]),Int32Array.from([1,1,2,2,1,4]),Int32Array.from([1,1,2,4,1,2]),Int32Array.from([1,2,2,1,1,4]),Int32Array.from([1,2,2,4,1,1]),Int32Array.from([1,4,2,1,1,2]),Int32Array.from([1,4,2,2,1,1]),Int32Array.from([2,4,1,2,1,1]),Int32Array.from([2,2,1,1,1,4]),Int32Array.from([4,1,3,1,1,1]),Int32Array.from([2,4,1,1,1,2]),Int32Array.from([1,3,4,1,1,1]),Int32Array.from([1,1,1,2,4,2]),Int32Array.from([1,2,1,1,4,2]),Int32Array.from([1,2,1,2,4,1]),Int32Array.from([1,1,4,2,1,2]),Int32Array.from([1,2,4,1,1,2]),Int32Array.from([1,2,4,2,1,1]),Int32Array.from([4,1,1,2,1,2]),Int32Array.from([4,2,1,1,1,2]),Int32Array.from([4,2,1,2,1,1]),Int32Array.from([2,1,2,1,4,1]),Int32Array.from([2,1,4,1,2,1]),Int32Array.from([4,1,2,1,2,1]),Int32Array.from([1,1,1,1,4,3]),Int32Array.from([1,1,1,3,4,1]),Int32Array.from([1,3,1,1,4,1]),Int32Array.from([1,1,4,1,1,3]),Int32Array.from([1,1,4,3,1,1]),Int32Array.from([4,1,1,1,1,3]),Int32Array.from([4,1,1,3,1,1]),Int32Array.from([1,1,3,1,4,1]),Int32Array.from([1,1,4,1,3,1]),Int32Array.from([3,1,1,1,4,1]),Int32Array.from([4,1,1,1,3,1]),Int32Array.from([2,1,1,4,1,2]),Int32Array.from([2,1,1,2,1,4]),Int32Array.from([2,1,1,2,3,2]),Int32Array.from([2,3,3,1,1,1,2])];Code128Reader.MAX_AVG_VARIANCE=0.25;Code128Reader.MAX_INDIVIDUAL_VARIANCE=0.7;Code128Reader.CODE_SHIFT=98;Code128Reader.CODE_CODE_C=99;Code128Reader.CODE_CODE_B=100;Code128Reader.CODE_CODE_A=101;Code128Reader.CODE_FNC_1=102;Code128Reader.CODE_FNC_2=97;Code128Reader.CODE_FNC_3=96;Code128Reader.CODE_FNC_4_A=101;Code128Reader.CODE_FNC_4_B=100;Code128Reader.CODE_START_A=103;Code128Reader.CODE_START_B=104;Code128Reader.CODE_START_C=105;Code128Reader.CODE_STOP=106;/**
+ * Decodes Code 39 barcodes. Supports "Full ASCII Code 39" if USE_CODE_39_EXTENDED_MODE is set.
+ *
+ * @author Sean Owen
+ * @see Code93Reader
+ */var Code39Reader=/*#__PURE__*/function(_OneDReader2){_inherits(Code39Reader,_OneDReader2);var _super23=_createSuper(Code39Reader);/**
+ * Creates a reader that assumes all encoded data is data, and does not treat the final
+ * character as a check digit. It will not decoded "extended Code 39" sequences.
+ */ // public Code39Reader() {
+// this(false);
+// }
+/**
+ * Creates a reader that can be configured to check the last character as a check digit.
+ * It will not decoded "extended Code 39" sequences.
+ *
+ * @param usingCheckDigit if true, treat the last data character as a check digit, not
+ * data, and verify that the checksum passes.
+ */ // public Code39Reader(boolean usingCheckDigit) {
+// this(usingCheckDigit, false);
+// }
+/**
+ * Creates a reader that can be configured to check the last character as a check digit,
+ * or optionally attempt to decode "extended Code 39" sequences that are used to encode
+ * the full ASCII character set.
+ *
+ * @param usingCheckDigit if true, treat the last data character as a check digit, not
+ * data, and verify that the checksum passes.
+ * @param extendedMode if true, will attempt to decode extended Code 39 sequences in the
+ * text.
+ */function Code39Reader(){var _this15;var usingCheckDigit=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var extendedMode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;_classCallCheck(this,Code39Reader);_this15=_super23.call(this);_this15.usingCheckDigit=usingCheckDigit;_this15.extendedMode=extendedMode;_this15.decodeRowResult='';_this15.counters=new Int32Array(9);return _this15;}_createClass(Code39Reader,[{key:"decodeRow",value:function decodeRow(rowNumber,row,hints){var theCounters=this.counters;theCounters.fill(0);this.decodeRowResult='';var start=Code39Reader.findAsteriskPattern(row,theCounters);// Read off white space
+var nextStart=row.getNextSet(start[1]);var end=row.getSize();var decodedChar;var lastStart;do{Code39Reader.recordPattern(row,nextStart,theCounters);var pattern=Code39Reader.toNarrowWidePattern(theCounters);if(pattern<0){throw new NotFoundException();}decodedChar=Code39Reader.patternToChar(pattern);this.decodeRowResult+=decodedChar;lastStart=nextStart;var _iterator3=_createForOfIteratorHelper(theCounters),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var counter=_step3.value;nextStart+=counter;}// Read off white space
+}catch(err){_iterator3.e(err);}finally{_iterator3.f();}nextStart=row.getNextSet(nextStart);}while(decodedChar!=='*');this.decodeRowResult=this.decodeRowResult.substring(0,this.decodeRowResult.length-1);// remove asterisk
+// Look for whitespace after pattern:
+var lastPatternSize=0;var _iterator4=_createForOfIteratorHelper(theCounters),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _counter=_step4.value;lastPatternSize+=_counter;}}catch(err){_iterator4.e(err);}finally{_iterator4.f();}var whiteSpaceAfterEnd=nextStart-lastStart-lastPatternSize;// If 50% of last pattern size, following last pattern, is not whitespace, fail
+// (but if it's whitespace to the very end of the image, that's OK)
+if(nextStart!==end&&whiteSpaceAfterEnd*2= 50% of width of start pattern
+if(this.toNarrowWidePattern(counters)===Code39Reader.ASTERISK_ENCODING&&row.isRange(Math.max(0,patternStart-Math.floor((i-patternStart)/2)),patternStart,false)){return[patternStart,i];}patternStart+=counters[0]+counters[1];counters.copyWithin(0,2,2+counterPosition-1);counters[counterPosition-1]=0;counters[counterPosition]=0;counterPosition--;}else{counterPosition++;}counters[counterPosition]=1;isWhite=!isWhite;}}throw new NotFoundException();}// For efficiency, returns -1 on failure. Not throwing here saved as many as 700 exceptions
+// per image when using some of our blackbox images.
+},{key:"toNarrowWidePattern",value:function toNarrowWidePattern(counters){var numCounters=counters.length;var maxNarrowCounter=0;var wideCounters;do{var minCounter=0x7fffffff;var _iterator5=_createForOfIteratorHelper(counters),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var _counter3=_step5.value;if(_counter3maxNarrowCounter){minCounter=_counter3;}}}catch(err){_iterator5.e(err);}finally{_iterator5.f();}maxNarrowCounter=minCounter;wideCounters=0;var totalWideCountersWidth=0;var pattern=0;for(var i=0;imaxNarrowCounter){pattern|=1<0;_i14++){var _counter2=counters[_i14];if(_counter2>maxNarrowCounter){wideCounters--;// totalWideCountersWidth = 3 * average, so this checks if counter >= 3/2 * average
+if(_counter2*2>=totalWideCountersWidth){return-1;}}}return pattern;}}while(wideCounters>3);return-1;}},{key:"patternToChar",value:function patternToChar(pattern){for(var i=0;i='A'&&next<='Z'){decodedChar=String.fromCharCode(next.charCodeAt(0)+32);}else{throw new FormatException();}break;case'$':// $A to $Z map to control codes SH to SB
+if(next>='A'&&next<='Z'){decodedChar=String.fromCharCode(next.charCodeAt(0)-64);}else{throw new FormatException();}break;case'%':// %A to %E map to control codes ESC to US
+if(next>='A'&&next<='E'){decodedChar=String.fromCharCode(next.charCodeAt(0)-38);}else if(next>='F'&&next<='J'){decodedChar=String.fromCharCode(next.charCodeAt(0)-11);}else if(next>='K'&&next<='O'){decodedChar=String.fromCharCode(next.charCodeAt(0)+16);}else if(next>='P'&&next<='T'){decodedChar=String.fromCharCode(next.charCodeAt(0)+43);}else if(next==='U'){decodedChar='\0';}else if(next==='V'){decodedChar='@';}else if(next==='W'){decodedChar='`';}else if(next==='X'||next==='Y'||next==='Z'){decodedChar='\x7f';}else{throw new FormatException();}break;case'/':// /A to /O map to ! to , and /Z maps to :
+if(next>='A'&&next<='O'){decodedChar=String.fromCharCode(next.charCodeAt(0)-32);}else if(next==='Z'){decodedChar=':';}else{throw new FormatException();}break;}decoded+=decodedChar;// bump up i again since we read two characters
+i++;}else{decoded+=c;}}return decoded;}}]);return Code39Reader;}(OneDReader);Code39Reader.ALPHABET_STRING='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';/**
+ * These represent the encodings of characters, as patterns of wide and narrow bars.
+ * The 9 least-significant bits of each int correspond to the pattern of wide and narrow,
+ * with 1s representing "wide" and 0s representing narrow.
+ */Code39Reader.CHARACTER_ENCODINGS=[0x034,0x121,0x061,0x160,0x031,0x130,0x070,0x025,0x124,0x064,0x109,0x049,0x148,0x019,0x118,0x058,0x00D,0x10C,0x04C,0x01C,0x103,0x043,0x142,0x013,0x112,0x052,0x007,0x106,0x046,0x016,0x181,0x0C1,0x1C0,0x091,0x190,0x0D0,0x085,0x184,0x0C4,0x0A8,0x0A2,0x08A,0x02A// /-%
+];Code39Reader.ASTERISK_ENCODING=0x094;/**
+ * Decodes ITF barcodes.
+ *
+ * @author Tjieco
+ */var ITFReader=/*#__PURE__*/function(_OneDReader3){_inherits(ITFReader,_OneDReader3);var _super24=_createSuper(ITFReader);function ITFReader(){var _this16;_classCallCheck(this,ITFReader);// private static W = 3; // Pixel width of a 3x wide line
+// private static w = 2; // Pixel width of a 2x wide line
+// private static N = 1; // Pixed width of a narrow line
+_this16=_super24.apply(this,arguments);// Stores the actual narrow line width of the image being decoded.
+_this16.narrowLineWidth=-1;return _this16;}// See ITFWriter.PATTERNS
+/*
+
+ /!**
+ * Patterns of Wide / Narrow lines to indicate each digit
+ *!/
+ */_createClass(ITFReader,[{key:"decodeRow",value:function decodeRow(rowNumber,row,hints){// Find out where the Middle section (payload) starts & ends
+var startRange=this.decodeStart(row);var endRange=this.decodeEnd(row);var result=new StringBuilder();ITFReader.decodeMiddle(row,startRange[1],endRange[0],result);var resultString=result.toString();var allowedLengths=null;if(hints!=null){allowedLengths=hints.get(DecodeHintType$1.ALLOWED_LENGTHS);}if(allowedLengths==null){allowedLengths=ITFReader.DEFAULT_ALLOWED_LENGTHS;}// To avoid false positives with 2D barcodes (and other patterns), make
+// an assumption that the decoded string must be a 'standard' length if it's short
+var length=resultString.length;var lengthOK=false;var maxAllowedLength=0;var _iterator6=_createForOfIteratorHelper(allowedLengths),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var value=_step6.value;if(length===value){lengthOK=true;break;}if(value>maxAllowedLength){maxAllowedLength=value;}}}catch(err){_iterator6.e(err);}finally{_iterator6.f();}if(!lengthOK&&length>maxAllowedLength){lengthOK=true;}if(!lengthOK){throw new FormatException();}var points=[new ResultPoint(startRange[1],rowNumber),new ResultPoint(endRange[0],rowNumber)];var resultReturn=new Result(resultString,null,// no natural byte representation for these barcodes
+0,points,BarcodeFormat$1.ITF,new Date().getTime());return resultReturn;}/*
+ /!**
+ * @param row row of black/white values to search
+ * @param payloadStart offset of start pattern
+ * @param resultString {@link StringBuilder} to append decoded chars to
+ * @throws NotFoundException if decoding could not complete successfully
+ *!/*/},{key:"decodeStart",value:/*/!**
+ * Identify where the start of the middle / payload section starts.
+ *
+ * @param row row of black/white values to search
+ * @return Array, containing index of start of 'start block' and end of
+ * 'start block'
+ *!/*/function decodeStart(row){var endStart=ITFReader.skipWhiteSpace(row);var startPattern=ITFReader.findGuardPattern(row,endStart,ITFReader.START_PATTERN);// Determine the width of a narrow line in pixels. We can do this by
+// getting the width of the start pattern and dividing by 4 because its
+// made up of 4 narrow lines.
+this.narrowLineWidth=(startPattern[1]-startPattern[0])/4;this.validateQuietZone(row,startPattern[0]);return startPattern;}/*/!**
+ * The start & end patterns must be pre/post fixed by a quiet zone. This
+ * zone must be at least 10 times the width of a narrow line. Scan back until
+ * we either get to the start of the barcode or match the necessary number of
+ * quiet zone pixels.
+ *
+ * Note: Its assumed the row is reversed when using this method to find
+ * quiet zone after the end pattern.
+ *
+ * ref: http://www.barcode-1.net/i25code.html
+ *
+ * @param row bit array representing the scanned barcode.
+ * @param startPattern index into row of the start or end pattern.
+ * @throws NotFoundException if the quiet zone cannot be found
+ *!/*/},{key:"validateQuietZone",value:function validateQuietZone(row,startPattern){var quietCount=this.narrowLineWidth*10;// expect to find this many pixels of quiet zone
+// if there are not so many pixel at all let's try as many as possible
+quietCount=quietCount0&&i>=0;i--){if(row.get(i)){break;}quietCount--;}if(quietCount!==0){// Unable to find the necessary number of quiet zone pixels.
+throw new NotFoundException();}}/*
+ /!**
+ * Skip all whitespace until we get to the first black line.
+ *
+ * @param row row of black/white values to search
+ * @return index of the first black line.
+ * @throws NotFoundException Throws exception if no black lines are found in the row
+ *!/*/},{key:"decodeEnd",value:/*/!**
+ * Identify where the end of the middle / payload section ends.
+ *
+ * @param row row of black/white values to search
+ * @return Array, containing index of start of 'end block' and end of 'end
+ * block'
+ *!/*/function decodeEnd(row){// For convenience, reverse the row and then
+// search from 'the start' for the end block
+row.reverse();try{var endStart=ITFReader.skipWhiteSpace(row);var endPattern;try{endPattern=ITFReader.findGuardPattern(row,endStart,ITFReader.END_PATTERN_REVERSED[0]);}catch(error){if(error instanceof NotFoundException){endPattern=ITFReader.findGuardPattern(row,endStart,ITFReader.END_PATTERN_REVERSED[1]);}}// The start & end patterns must be pre/post fixed by a quiet zone. This
+// zone must be at least 10 times the width of a narrow line.
+// ref: http://www.barcode-1.net/i25code.html
+this.validateQuietZone(row,endPattern[0]);// Now recalculate the indices of where the 'endblock' starts & stops to
+// accommodate
+// the reversed nature of the search
+var temp=endPattern[0];endPattern[0]=row.getSize()-endPattern[1];endPattern[1]=row.getSize()-temp;return endPattern;}finally{// Put the row back the right way.
+row.reverse();}}/*
+ /!**
+ * @param row row of black/white values to search
+ * @param rowOffset position to start search
+ * @param pattern pattern of counts of number of black and white pixels that are
+ * being searched for as a pattern
+ * @return start/end horizontal offset of guard pattern, as an array of two
+ * ints
+ * @throws NotFoundException if pattern is not found
+ *!/*/}],[{key:"decodeMiddle",value:function decodeMiddle(row,payloadStart,payloadEnd,resultString){// Digits are interleaved in pairs - 5 black lines for one digit, and the
+// 5
+// interleaved white lines for the second digit.
+// Therefore, need to scan 10 lines and then
+// split these into two arrays
+var counterDigitPair=new Int32Array(10);// 10
+var counterBlack=new Int32Array(5);// 5
+var counterWhite=new Int32Array(5);// 5
+counterDigitPair.fill(0);counterBlack.fill(0);counterWhite.fill(0);while(payloadStart=0){return bestMatch%10;}else{throw new NotFoundException();}}}]);return ITFReader;}(OneDReader);ITFReader.PATTERNS=[Int32Array.from([1,1,2,2,1]),Int32Array.from([2,1,1,1,2]),Int32Array.from([1,2,1,1,2]),Int32Array.from([2,2,1,1,1]),Int32Array.from([1,1,2,1,2]),Int32Array.from([2,1,2,1,1]),Int32Array.from([1,2,2,1,1]),Int32Array.from([1,1,1,2,2]),Int32Array.from([2,1,1,2,1]),Int32Array.from([1,2,1,2,1]),Int32Array.from([1,1,3,3,1]),Int32Array.from([3,1,1,1,3]),Int32Array.from([1,3,1,1,3]),Int32Array.from([3,3,1,1,1]),Int32Array.from([1,1,3,1,3]),Int32Array.from([3,1,3,1,1]),Int32Array.from([1,3,3,1,1]),Int32Array.from([1,1,1,3,3]),Int32Array.from([3,1,1,3,1]),Int32Array.from([1,3,1,3,1])// 9
+];ITFReader.MAX_AVG_VARIANCE=0.38;ITFReader.MAX_INDIVIDUAL_VARIANCE=0.5;/* /!** Valid ITF lengths. Anything longer than the largest value is also allowed. *!/*/ITFReader.DEFAULT_ALLOWED_LENGTHS=[6,8,10,12,14];/*/!**
+ * Start/end guard pattern.
+ *
+ * Note: The end pattern is reversed because the row is reversed before
+ * searching for the END_PATTERN
+ *!/*/ITFReader.START_PATTERN=Int32Array.from([1,1,1,1]);ITFReader.END_PATTERN_REVERSED=[Int32Array.from([1,1,2]),Int32Array.from([1,1,3])// 3x
+];/**
+ * Encapsulates functionality and implementation that is common to UPC and EAN families
+ * of one-dimensional barcodes.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ * @author Sean Owen
+ * @author alasdair@google.com (Alasdair Mackintosh)
+ */var AbstractUPCEANReader=/*#__PURE__*/function(_OneDReader4){_inherits(AbstractUPCEANReader,_OneDReader4);var _super25=_createSuper(AbstractUPCEANReader);function AbstractUPCEANReader(){var _this17;_classCallCheck(this,AbstractUPCEANReader);_this17=_super25.apply(this,arguments);_this17.decodeRowStringBuffer='';return _this17;}_createClass(AbstractUPCEANReader,null,[{key:"findStartGuardPattern",value:function findStartGuardPattern(row){var foundStart=false;var startRange;var nextStart=0;var counters=Int32Array.from([0,0,0]);while(!foundStart){counters=Int32Array.from([0,0,0]);startRange=AbstractUPCEANReader.findGuardPattern(row,nextStart,false,this.START_END_PATTERN,counters);var start=startRange[0];nextStart=startRange[1];var quietStart=start-(nextStart-start);if(quietStart>=0){foundStart=row.isRange(quietStart,start,false);}}return startRange;}},{key:"checkChecksum",value:function checkChecksum(s){return AbstractUPCEANReader.checkStandardUPCEANChecksum(s);}},{key:"checkStandardUPCEANChecksum",value:function checkStandardUPCEANChecksum(s){var length=s.length;if(length===0)return false;var check=parseInt(s.charAt(length-1),10);return AbstractUPCEANReader.getStandardUPCEANChecksum(s.substring(0,length-1))===check;}},{key:"getStandardUPCEANChecksum",value:function getStandardUPCEANChecksum(s){var length=s.length;var sum=0;for(var i=length-1;i>=0;i-=2){var digit=s.charAt(i).charCodeAt(0)-'0'.charCodeAt(0);if(digit<0||digit>9){throw new FormatException();}sum+=digit;}sum*=3;for(var _i15=length-2;_i15>=0;_i15-=2){var _digit=s.charAt(_i15).charCodeAt(0)-'0'.charCodeAt(0);if(_digit<0||_digit>9){throw new FormatException();}sum+=_digit;}return(1000-sum)%10;}},{key:"decodeEnd",value:function decodeEnd(row,endStart){return AbstractUPCEANReader.findGuardPattern(row,endStart,false,AbstractUPCEANReader.START_END_PATTERN,new Int32Array(AbstractUPCEANReader.START_END_PATTERN.length).fill(0));}/**
+ * @throws NotFoundException
+ */},{key:"findGuardPatternWithoutCounters",value:function findGuardPatternWithoutCounters(row,rowOffset,whiteFirst,pattern){return this.findGuardPattern(row,rowOffset,whiteFirst,pattern,new Int32Array(pattern.length));}/**
+ * @param row row of black/white values to search
+ * @param rowOffset position to start search
+ * @param whiteFirst if true, indicates that the pattern specifies white/black/white/...
+ * pixel counts, otherwise, it is interpreted as black/white/black/...
+ * @param pattern pattern of counts of number of black and white pixels that are being
+ * searched for as a pattern
+ * @param counters array of counters, as long as pattern, to re-use
+ * @return start/end horizontal offset of guard pattern, as an array of two ints
+ * @throws NotFoundException if pattern is not found
+ */},{key:"findGuardPattern",value:function findGuardPattern(row,rowOffset,whiteFirst,pattern,counters){var width=row.getSize();rowOffset=whiteFirst?row.getNextUnset(rowOffset):row.getNextSet(rowOffset);var counterPosition=0;var patternStart=rowOffset;var patternLength=pattern.length;var isWhite=whiteFirst;for(var x=rowOffset;x=0){return bestMatch;}else{throw new NotFoundException();}}}]);return AbstractUPCEANReader;}(OneDReader);// These two values are critical for determining how permissive the decoding will be.
+// We've arrived at these values through a lot of trial and error. Setting them any higher
+// lets false positives creep in quickly.
+AbstractUPCEANReader.MAX_AVG_VARIANCE=0.48;AbstractUPCEANReader.MAX_INDIVIDUAL_VARIANCE=0.7;/**
+ * Start/end guard pattern.
+ */AbstractUPCEANReader.START_END_PATTERN=Int32Array.from([1,1,1]);/**
+ * Pattern marking the middle of a UPC/EAN pattern, separating the two halves.
+ */AbstractUPCEANReader.MIDDLE_PATTERN=Int32Array.from([1,1,1,1,1]);/**
+ * end guard pattern.
+ */AbstractUPCEANReader.END_PATTERN=Int32Array.from([1,1,1,1,1,1]);/**
+ * "Odd", or "L" patterns used to encode UPC/EAN digits.
+ */AbstractUPCEANReader.L_PATTERNS=[Int32Array.from([3,2,1,1]),Int32Array.from([2,2,2,1]),Int32Array.from([2,1,2,2]),Int32Array.from([1,4,1,1]),Int32Array.from([1,1,3,2]),Int32Array.from([1,2,3,1]),Int32Array.from([1,1,1,4]),Int32Array.from([1,3,1,2]),Int32Array.from([1,2,1,3]),Int32Array.from([3,1,1,2])];/**
+ * @see UPCEANExtension2Support
+ */var UPCEANExtension5Support=/*#__PURE__*/function(){function UPCEANExtension5Support(){_classCallCheck(this,UPCEANExtension5Support);this.CHECK_DIGIT_ENCODINGS=[0x18,0x14,0x12,0x11,0x0C,0x06,0x03,0x0A,0x09,0x05];this.decodeMiddleCounters=Int32Array.from([0,0,0,0]);this.decodeRowStringBuffer='';}_createClass(UPCEANExtension5Support,[{key:"decodeRow",value:function decodeRow(rowNumber,row,extensionStartRange){var result=this.decodeRowStringBuffer;var end=this.decodeMiddle(row,extensionStartRange,result);var resultString=result.toString();var extensionData=UPCEANExtension5Support.parseExtensionString(resultString);var resultPoints=[new ResultPoint((extensionStartRange[0]+extensionStartRange[1])/2.0,rowNumber),new ResultPoint(end,rowNumber)];var extensionResult=new Result(resultString,null,0,resultPoints,BarcodeFormat$1.UPC_EAN_EXTENSION,new Date().getTime());if(extensionData!=null){extensionResult.putAllMetadata(extensionData);}return extensionResult;}},{key:"decodeMiddle",value:function decodeMiddle(row,startRange,resultString){var counters=this.decodeMiddleCounters;counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var end=row.getSize();var rowOffset=startRange[1];var lgPatternFound=0;for(var x=0;x<5&&rowOffset=10){lgPatternFound|=1<<4-x;}if(x!==4){// Read off separator if not last
+rowOffset=row.getNextSet(rowOffset);rowOffset=row.getNextUnset(rowOffset);}}if(resultString.length!==5){throw new NotFoundException();}var checkDigit=this.determineCheckDigit(lgPatternFound);if(UPCEANExtension5Support.extensionChecksum(resultString.toString())!==checkDigit){throw new NotFoundException();}return rowOffset;}},{key:"determineCheckDigit",value:function determineCheckDigit(lgPatternFound){for(var d=0;d<10;d++){if(lgPatternFound===this.CHECK_DIGIT_ENCODINGS[d]){return d;}}throw new NotFoundException();}}],[{key:"extensionChecksum",value:function extensionChecksum(s){var length=s.length;var sum=0;for(var i=length-2;i>=0;i-=2){sum+=s.charAt(i).charCodeAt(0)-'0'.charCodeAt(0);}sum*=3;for(var _i16=length-1;_i16>=0;_i16-=2){sum+=s.charAt(_i16).charCodeAt(0)-'0'.charCodeAt(0);}sum*=3;return sum%10;}},{key:"parseExtensionString",value:function parseExtensionString(raw){if(raw.length!==5){return null;}var value=UPCEANExtension5Support.parseExtension5String(raw);if(value==null){return null;}return new Map([[ResultMetadataType$1.SUGGESTED_PRICE,value]]);}},{key:"parseExtension5String",value:function parseExtension5String(raw){var currency;switch(raw.charAt(0)){case'0':currency='£';break;case'5':currency='$';break;case'9':// Reference: http://www.jollytech.com
+switch(raw){case'90000':// No suggested retail price
+return null;case'99991':// Complementary
+return'0.00';case'99990':return'Used';}// Otherwise... unknown currency?
+currency='';break;default:currency='';break;}var rawAmount=parseInt(raw.substring(1));var unitsString=(rawAmount/100).toString();var hundredths=rawAmount%100;var hundredthsString=hundredths<10?'0'+hundredths:hundredths.toString();// fixme
+return currency+unitsString+'.'+hundredthsString;}}]);return UPCEANExtension5Support;}();/**
+ * @see UPCEANExtension5Support
+ */var UPCEANExtension2Support=/*#__PURE__*/function(){function UPCEANExtension2Support(){_classCallCheck(this,UPCEANExtension2Support);this.decodeMiddleCounters=Int32Array.from([0,0,0,0]);this.decodeRowStringBuffer='';}_createClass(UPCEANExtension2Support,[{key:"decodeRow",value:function decodeRow(rowNumber,row,extensionStartRange){var result=this.decodeRowStringBuffer;var end=this.decodeMiddle(row,extensionStartRange,result);var resultString=result.toString();var extensionData=UPCEANExtension2Support.parseExtensionString(resultString);var resultPoints=[new ResultPoint((extensionStartRange[0]+extensionStartRange[1])/2.0,rowNumber),new ResultPoint(end,rowNumber)];var extensionResult=new Result(resultString,null,0,resultPoints,BarcodeFormat$1.UPC_EAN_EXTENSION,new Date().getTime());if(extensionData!=null){extensionResult.putAllMetadata(extensionData);}return extensionResult;}},{key:"decodeMiddle",value:function decodeMiddle(row,startRange,resultString){var counters=this.decodeMiddleCounters;counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var end=row.getSize();var rowOffset=startRange[1];var checkParity=0;for(var x=0;x<2&&rowOffset=10){checkParity|=1<<1-x;}if(x!==1){// Read off separator if not last
+rowOffset=row.getNextSet(rowOffset);rowOffset=row.getNextUnset(rowOffset);}}if(resultString.length!==2){throw new NotFoundException();}if(parseInt(resultString.toString())%4!==checkParity){throw new NotFoundException();}return rowOffset;}}],[{key:"parseExtensionString",value:function parseExtensionString(raw){if(raw.length!==2){return null;}return new Map([[ResultMetadataType$1.ISSUE_NUMBER,parseInt(raw)]]);}}]);return UPCEANExtension2Support;}();var UPCEANExtensionSupport=/*#__PURE__*/function(){function UPCEANExtensionSupport(){_classCallCheck(this,UPCEANExtensionSupport);}_createClass(UPCEANExtensionSupport,null,[{key:"decodeRow",value:function decodeRow(rowNumber,row,rowOffset){var extensionStartRange=AbstractUPCEANReader.findGuardPattern(row,rowOffset,false,this.EXTENSION_START_PATTERN,new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0));try{// return null;
+var fiveSupport=new UPCEANExtension5Support();return fiveSupport.decodeRow(rowNumber,row,extensionStartRange);}catch(err){// return null;
+var twoSupport=new UPCEANExtension2Support();return twoSupport.decodeRow(rowNumber,row,extensionStartRange);}}}]);return UPCEANExtensionSupport;}();UPCEANExtensionSupport.EXTENSION_START_PATTERN=Int32Array.from([1,1,2]);/**
+ * Encapsulates functionality and implementation that is common to UPC and EAN families
+ * of one-dimensional barcodes.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ * @author Sean Owen
+ * @author alasdair@google.com (Alasdair Mackintosh)
+ */var UPCEANReader=/*#__PURE__*/function(_AbstractUPCEANReader){_inherits(UPCEANReader,_AbstractUPCEANReader);var _super26=_createSuper(UPCEANReader);function UPCEANReader(){var _this18;_classCallCheck(this,UPCEANReader);_this18=_super26.call(this);_this18.decodeRowStringBuffer='';UPCEANReader.L_AND_G_PATTERNS=UPCEANReader.L_PATTERNS.map(function(arr){return Int32Array.from(arr);});for(var i=10;i<20;i++){var widths=UPCEANReader.L_PATTERNS[i-10];var reversedWidths=new Int32Array(widths.length);for(var j=0;j=row.getSize()||!row.isRange(end,quietEnd,false)){throw new NotFoundException();}var resultString=result.toString();// UPC/EAN should never be less than 8 chars anyway
+if(resultString.length<8){throw new FormatException();}if(!UPCEANReader.checkChecksum(resultString)){throw new ChecksumException();}var left=(startGuardRange[1]+startGuardRange[0])/2.0;var right=(endRange[1]+endRange[0])/2.0;var format=this.getBarcodeFormat();var resultPoint=[new ResultPoint(left,rowNumber),new ResultPoint(right,rowNumber)];var decodeResult=new Result(resultString,null,0,resultPoint,format,new Date().getTime());var extensionLength=0;try{var extensionResult=UPCEANExtensionSupport.decodeRow(rowNumber,row,endRange[1]);decodeResult.putMetadata(ResultMetadataType$1.UPC_EAN_EXTENSION,extensionResult.getText());decodeResult.putAllMetadata(extensionResult.getResultMetadata());decodeResult.addResultPoints(extensionResult.getResultPoints());extensionLength=extensionResult.getText().length;}catch(ignoreError){}var allowedExtensions=hints==null?null:hints.get(DecodeHintType$1.ALLOWED_EAN_EXTENSIONS);if(allowedExtensions!=null){var valid=false;for(var length in allowedExtensions){if(extensionLength.toString()===length){// check me
+valid=true;break;}}if(!valid){throw new NotFoundException();}}return decodeResult;}},{key:"decodeEnd",value:function decodeEnd(row,endStart){return UPCEANReader.findGuardPattern(row,endStart,false,UPCEANReader.START_END_PATTERN,new Int32Array(UPCEANReader.START_END_PATTERN.length).fill(0));}}],[{key:"checkChecksum",value:function checkChecksum(s){return UPCEANReader.checkStandardUPCEANChecksum(s);}},{key:"checkStandardUPCEANChecksum",value:function checkStandardUPCEANChecksum(s){var length=s.length;if(length===0)return false;var check=parseInt(s.charAt(length-1),10);return UPCEANReader.getStandardUPCEANChecksum(s.substring(0,length-1))===check;}},{key:"getStandardUPCEANChecksum",value:function getStandardUPCEANChecksum(s){var length=s.length;var sum=0;for(var i=length-1;i>=0;i-=2){var digit=s.charAt(i).charCodeAt(0)-'0'.charCodeAt(0);if(digit<0||digit>9){throw new FormatException();}sum+=digit;}sum*=3;for(var _i17=length-2;_i17>=0;_i17-=2){var _digit2=s.charAt(_i17).charCodeAt(0)-'0'.charCodeAt(0);if(_digit2<0||_digit2>9){throw new FormatException();}sum+=_digit2;}return(1000-sum)%10;}}]);return UPCEANReader;}(AbstractUPCEANReader);/**
+ * Implements decoding of the EAN-13 format.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ * @author Sean Owen
+ * @author alasdair@google.com (Alasdair Mackintosh)
+ */var EAN13Reader=/*#__PURE__*/function(_UPCEANReader){_inherits(EAN13Reader,_UPCEANReader);var _super27=_createSuper(EAN13Reader);function EAN13Reader(){var _this19;_classCallCheck(this,EAN13Reader);_this19=_super27.call(this);_this19.decodeMiddleCounters=Int32Array.from([0,0,0,0]);return _this19;}_createClass(EAN13Reader,[{key:"decodeMiddle",value:function decodeMiddle(row,startRange,resultString){var counters=this.decodeMiddleCounters;counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var end=row.getSize();var rowOffset=startRange[1];var lgPatternFound=0;for(var x=0;x<6&&rowOffset=10){lgPatternFound|=1<<5-x;}}resultString=EAN13Reader.determineFirstDigit(resultString,lgPatternFound);var middleRange=UPCEANReader.findGuardPattern(row,rowOffset,true,UPCEANReader.MIDDLE_PATTERN,new Int32Array(UPCEANReader.MIDDLE_PATTERN.length).fill(0));rowOffset=middleRange[1];for(var _x9=0;_x9<6&&rowOffsetImplements decoding of the EAN-8 format.
+ *
+ * @author Sean Owen
+ */var EAN8Reader=/*#__PURE__*/function(_UPCEANReader2){_inherits(EAN8Reader,_UPCEANReader2);var _super28=_createSuper(EAN8Reader);function EAN8Reader(){var _this20;_classCallCheck(this,EAN8Reader);_this20=_super28.call(this);_this20.decodeMiddleCounters=Int32Array.from([0,0,0,0]);return _this20;}_createClass(EAN8Reader,[{key:"decodeMiddle",value:function decodeMiddle(row,startRange,resultString){var counters=this.decodeMiddleCounters;counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var end=row.getSize();var rowOffset=startRange[1];for(var x=0;x<4&&rowOffsetImplements decoding of the UPC-E format.
+ * This is a great reference for
+ * UPC-E information.
+ *
+ * @author Sean Owen
+ *
+ * @source https://github.com/zxing/zxing/blob/3c96923276dd5785d58eb970b6ba3f80d36a9505/core/src/main/java/com/google/zxing/oned/UPCEReader.java
+ *
+ * @experimental
+ */ /* final */var UPCEReader=/*#__PURE__*/function(_UPCEANReader4){_inherits(UPCEReader,_UPCEANReader4);var _super30=_createSuper(UPCEReader);function UPCEReader(){var _this22;_classCallCheck(this,UPCEReader);_this22=_super30.call(this);_this22.decodeMiddleCounters=new Int32Array(4);return _this22;}/**
+ * @throws NotFoundException
+ */ // @Override
+_createClass(UPCEReader,[{key:"decodeMiddle",value:function decodeMiddle(row,startRange,result){var counters=this.decodeMiddleCounters.map(function(x){return x;});counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var end=row.getSize();var rowOffset=startRange[1];var lgPatternFound=0;for(var x=0;x<6&&rowOffset=10){lgPatternFound|=1<<5-x;}}var resultString=UPCEReader.determineNumSysAndCheckDigit(result,lgPatternFound);return{rowOffset:rowOffset,resultString:resultString};}/**
+ * @throws NotFoundException
+ */ // @Override
+},{key:"decodeEnd",value:function decodeEnd(row,endStart){return UPCEReader.findGuardPatternWithoutCounters(row,endStart,true,UPCEReader.MIDDLE_END_PATTERN);}/**
+ * @throws FormatException
+ */ // @Override
+},{key:"checkChecksum",value:function checkChecksum(s){return UPCEANReader.checkChecksum(UPCEReader.convertUPCEtoUPCA(s));}/**
+ * @throws NotFoundException
+ */},{key:"getBarcodeFormat",value:// @Override
+function getBarcodeFormat(){return BarcodeFormat$1.UPC_E;}/**
+ * Expands a UPC-E value back into its full, equivalent UPC-A code value.
+ *
+ * @param upce UPC-E code as string of digits
+ * @return equivalent UPC-A code as string of digits
+ */}],[{key:"determineNumSysAndCheckDigit",value:function determineNumSysAndCheckDigit(resultString,lgPatternFound){for(var numSys=0;numSys<=1;numSys++){for(var d=0;d<10;d++){if(lgPatternFound===this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]){var prefix=String.fromCharCode('0'.charCodeAt(0)+numSys);var suffix=String.fromCharCode('0'.charCodeAt(0)+d);return prefix+resultString+suffix;}}}throw NotFoundException.getNotFoundInstance();}},{key:"convertUPCEtoUPCA",value:function convertUPCEtoUPCA(upce){// the following line is equivalent to upce.getChars(1, 7, upceChars, 0);
+var upceChars=upce.slice(1,7).split('').map(function(x){return x.charCodeAt(0);});var result=new StringBuilder(/*12*/);result.append(upce.charAt(0));var lastChar=upceChars[5];switch(lastChar){case 0:case 1:case 2:result.appendChars(upceChars,0,2);result.append(lastChar);result.append('0000');result.appendChars(upceChars,2,3);break;case 3:result.appendChars(upceChars,0,3);result.append('00000');result.appendChars(upceChars,3,2);break;case 4:result.appendChars(upceChars,0,4);result.append('00000');result.append(upceChars[4]);break;default:result.appendChars(upceChars,0,5);result.append('0000');result.append(lastChar);break;}// Only append check digit in conversion if supplied
+if(upce.length>=8){result.append(upce.charAt(7));}return result.toString();}}]);return UPCEReader;}(UPCEANReader);/**
+ * The pattern that marks the middle, and end, of a UPC-E pattern.
+ * There is no "second half" to a UPC-E barcode.
+ */UPCEReader.MIDDLE_END_PATTERN=Int32Array.from([1,1,1,1,1,1]);// For an UPC-E barcode, the final digit is represented by the parities used
+// to encode the middle six digits, according to the table below.
+//
+// Parity of next 6 digits
+// Digit 0 1 2 3 4 5
+// 0 Even Even Even Odd Odd Odd
+// 1 Even Even Odd Even Odd Odd
+// 2 Even Even Odd Odd Even Odd
+// 3 Even Even Odd Odd Odd Even
+// 4 Even Odd Even Even Odd Odd
+// 5 Even Odd Odd Even Even Odd
+// 6 Even Odd Odd Odd Even Even
+// 7 Even Odd Even Odd Even Odd
+// 8 Even Odd Even Odd Odd Even
+// 9 Even Odd Odd Even Odd Even
+//
+// The encoding is represented by the following array, which is a bit pattern
+// using Odd = 0 and Even = 1. For example, 5 is represented by:
+//
+// Odd Even Even Odd Odd Even
+// in binary:
+// 0 1 1 0 0 1 == 0x19
+//
+/**
+ * See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of
+ * even-odd parity encodings of digits that imply both the number system (0 or 1)
+ * used, and the check digit.
+ */UPCEReader.NUMSYS_AND_CHECK_DIGIT_PATTERNS=[Int32Array.from([0x38,0x34,0x32,0x31,0x2C,0x26,0x23,0x2A,0x29,0x25]),Int32Array.from([0x07,0x0B,0x0D,0x0E,0x13,0x19,0x1C,0x15,0x16,0x1A])];/**
+ * A reader that can read all available UPC/EAN formats. If a caller wants to try to
+ * read all such formats, it is most efficient to use this implementation rather than invoke
+ * individual readers.
+ *
+ * @author Sean Owen
+ */var MultiFormatUPCEANReader=/*#__PURE__*/function(_OneDReader5){_inherits(MultiFormatUPCEANReader,_OneDReader5);var _super31=_createSuper(MultiFormatUPCEANReader);function MultiFormatUPCEANReader(hints){var _this23;_classCallCheck(this,MultiFormatUPCEANReader);_this23=_super31.call(this);var possibleFormats=hints==null?null:hints.get(DecodeHintType$1.POSSIBLE_FORMATS);var readers=[];if(!isNullOrUndefined(possibleFormats)){if(possibleFormats.indexOf(BarcodeFormat$1.EAN_13)>-1){readers.push(new EAN13Reader());}if(possibleFormats.indexOf(BarcodeFormat$1.UPC_A)>-1){readers.push(new UPCAReader());}if(possibleFormats.indexOf(BarcodeFormat$1.EAN_8)>-1){readers.push(new EAN8Reader());}if(possibleFormats.indexOf(BarcodeFormat$1.UPC_E)>-1){readers.push(new UPCEReader());}}else{// No hints provided.
+readers.push(new EAN13Reader());readers.push(new UPCAReader());readers.push(new EAN8Reader());readers.push(new UPCEReader());}_this23.readers=readers;return _this23;}_createClass(MultiFormatUPCEANReader,[{key:"decodeRow",value:function decodeRow(rowNumber,row,hints){var _iterator14=_createForOfIteratorHelper(this.readers),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var reader=_step14.value;try{// const result: Result = reader.decodeRow(rowNumber, row, startGuardPattern, hints);
+var result=reader.decodeRow(rowNumber,row,hints);// Special case: a 12-digit code encoded in UPC-A is identical to a "0"
+// followed by those 12 digits encoded as EAN-13. Each will recognize such a code,
+// UPC-A as a 12-digit string and EAN-13 as a 13-digit string starting with "0".
+// Individually these are correct and their readers will both read such a code
+// and correctly call it EAN-13, or UPC-A, respectively.
+//
+// In this case, if we've been looking for both types, we'd like to call it
+// a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read
+// UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A
+// result if appropriate.
+//
+// But, don't return UPC-A if UPC-A was not a requested format!
+var ean13MayBeUPCA=result.getBarcodeFormat()===BarcodeFormat$1.EAN_13&&result.getText().charAt(0)==='0';// @SuppressWarnings("unchecked")
+var possibleFormats=hints==null?null:hints.get(DecodeHintType$1.POSSIBLE_FORMATS);var canReturnUPCA=possibleFormats==null||possibleFormats.includes(BarcodeFormat$1.UPC_A);if(ean13MayBeUPCA&&canReturnUPCA){var _rawBytes=result.getRawBytes();// Transfer the metadata across
+var resultUPCA=new Result(result.getText().substring(1),_rawBytes,_rawBytes?_rawBytes.length:null,result.getResultPoints(),BarcodeFormat$1.UPC_A);resultUPCA.putAllMetadata(result.getResultMetadata());return resultUPCA;}return result;}catch(err){// continue;
+}}}catch(err){_iterator14.e(err);}finally{_iterator14.f();}throw new NotFoundException();}},{key:"reset",value:function reset(){var _iterator15=_createForOfIteratorHelper(this.readers),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var reader=_step15.value;reader.reset();}}catch(err){_iterator15.e(err);}finally{_iterator15.f();}}}]);return MultiFormatUPCEANReader;}(OneDReader);// import Integer from '../../util/Integer';
+// import Float from '../../util/Float';
+var AbstractRSSReader=/*#__PURE__*/function(_OneDReader6){_inherits(AbstractRSSReader,_OneDReader6);var _super32=_createSuper(AbstractRSSReader);function AbstractRSSReader(){var _this24;_classCallCheck(this,AbstractRSSReader);_this24=_super32.call(this);_this24.decodeFinderCounters=new Int32Array(4);_this24.dataCharacterCounters=new Int32Array(8);_this24.oddRoundingErrors=new Array(4);_this24.evenRoundingErrors=new Array(4);_this24.oddCounts=new Array(_this24.dataCharacterCounters.length/2);_this24.evenCounts=new Array(_this24.dataCharacterCounters.length/2);return _this24;}_createClass(AbstractRSSReader,[{key:"getDecodeFinderCounters",value:function getDecodeFinderCounters(){return this.decodeFinderCounters;}},{key:"getDataCharacterCounters",value:function getDataCharacterCounters(){return this.dataCharacterCounters;}},{key:"getOddRoundingErrors",value:function getOddRoundingErrors(){return this.oddRoundingErrors;}},{key:"getEvenRoundingErrors",value:function getEvenRoundingErrors(){return this.evenRoundingErrors;}},{key:"getOddCounts",value:function getOddCounts(){return this.oddCounts;}},{key:"getEvenCounts",value:function getEvenCounts(){return this.evenCounts;}},{key:"parseFinderValue",value:function parseFinderValue(counters,finderPatterns){for(var value=0;valuebiggestError){biggestError=errors[i];index=i;}}array[index]++;}},{key:"decrement",value:function decrement(array,errors){var index=0;var biggestError=errors[0];for(var i=1;i=AbstractRSSReader.MIN_FINDER_PATTERN_RATIO&&ratio<=AbstractRSSReader.MAX_FINDER_PATTERN_RATIO){// passes ratio test in spec, but see if the counts are unreasonable
+var minCounter=Number.MAX_SAFE_INTEGER;var maxCounter=Number.MIN_SAFE_INTEGER;var _iterator16=_createForOfIteratorHelper(counters),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var counter=_step16.value;if(counter>maxCounter){maxCounter=counter;}if(counter=elements-bar-1){subVal-=RSSUtils.combins(n-elmWidth-(elements-bar),elements-bar-2);}if(elements-bar-1>1){var lessVal=0;for(var mxwElement=n-elmWidth-(elements-bar-2);mxwElement>maxWidth;mxwElement--){lessVal+=RSSUtils.combins(n-elmWidth-mxwElement-1,elements-bar-3);}subVal-=lessVal*(elements-1-bar);}else if(n-elmWidth>maxWidth){subVal--;}val+=subVal;}n-=elmWidth;}return val;}},{key:"combins",value:function combins(n,r){var maxDenom;var minDenom;if(n-r>r){minDenom=r;maxDenom=n-r;}else{minDenom=n-r;maxDenom=r;}var val=1;var j=1;for(var i=n;i>maxDenom;i--){val*=i;if(j<=minDenom){val/=j;j++;}}while(j<=minDenom){val/=j;j++;}return val;}}]);return RSSUtils;}();var BitArrayBuilder=/*#__PURE__*/function(){function BitArrayBuilder(){_classCallCheck(this,BitArrayBuilder);}_createClass(BitArrayBuilder,null,[{key:"buildBitArray",value:function buildBitArray(pairs){var charNumber=pairs.length*2-1;if(pairs[pairs.length-1].getRightChar()==null){charNumber-=1;}var size=12*charNumber;var binary=new BitArray(size);var accPos=0;var firstPair=pairs[0];var firstValue=firstPair.getRightChar().getValue();for(var i=11;i>=0;--i){if((firstValue&1<=0;--j){if((leftValue&1<=0;--_j){if((rightValue&1<<_j)!=0){binary.set(accPos);}accPos++;}}}return binary;}}]);return BitArrayBuilder;}();var BlockParsedResult=/*#__PURE__*/function(){function BlockParsedResult(finished,decodedInformation){_classCallCheck(this,BlockParsedResult);if(decodedInformation){this.decodedInformation=null;}else{this.finished=finished;this.decodedInformation=decodedInformation;}}_createClass(BlockParsedResult,[{key:"getDecodedInformation",value:function getDecodedInformation(){return this.decodedInformation;}},{key:"isFinished",value:function isFinished(){return this.finished;}}]);return BlockParsedResult;}();var DecodedObject=/*#__PURE__*/function(){function DecodedObject(newPosition){_classCallCheck(this,DecodedObject);this.newPosition=newPosition;}_createClass(DecodedObject,[{key:"getNewPosition",value:function getNewPosition(){return this.newPosition;}}]);return DecodedObject;}();var DecodedChar=/*#__PURE__*/function(_DecodedObject){_inherits(DecodedChar,_DecodedObject);var _super33=_createSuper(DecodedChar);function DecodedChar(newPosition,value){var _this25;_classCallCheck(this,DecodedChar);_this25=_super33.call(this,newPosition);_this25.value=value;return _this25;}_createClass(DecodedChar,[{key:"getValue",value:function getValue(){return this.value;}},{key:"isFNC1",value:function isFNC1(){return this.value===DecodedChar.FNC1;}}]);return DecodedChar;}(DecodedObject);DecodedChar.FNC1='$';var DecodedInformation=/*#__PURE__*/function(_DecodedObject2){_inherits(DecodedInformation,_DecodedObject2);var _super34=_createSuper(DecodedInformation);function DecodedInformation(newPosition,newString,remainingValue){var _this26;_classCallCheck(this,DecodedInformation);_this26=_super34.call(this,newPosition);if(remainingValue){_this26.remaining=true;_this26.remainingValue=_this26.remainingValue;}else{_this26.remaining=false;_this26.remainingValue=0;}_this26.newString=newString;return _this26;}_createClass(DecodedInformation,[{key:"getNewString",value:function getNewString(){return this.newString;}},{key:"isRemaining",value:function isRemaining(){return this.remaining;}},{key:"getRemainingValue",value:function getRemainingValue(){return this.remainingValue;}}]);return DecodedInformation;}(DecodedObject);var DecodedNumeric=/*#__PURE__*/function(_DecodedObject3){_inherits(DecodedNumeric,_DecodedObject3);var _super35=_createSuper(DecodedNumeric);function DecodedNumeric(newPosition,firstDigit,secondDigit){var _this27;_classCallCheck(this,DecodedNumeric);_this27=_super35.call(this,newPosition);if(firstDigit<0||firstDigit>10||secondDigit<0||secondDigit>10){throw new FormatException();}_this27.firstDigit=firstDigit;_this27.secondDigit=secondDigit;return _this27;}_createClass(DecodedNumeric,[{key:"getFirstDigit",value:function getFirstDigit(){return this.firstDigit;}},{key:"getSecondDigit",value:function getSecondDigit(){return this.secondDigit;}},{key:"getValue",value:function getValue(){return this.firstDigit*10+this.secondDigit;}},{key:"isFirstDigitFNC1",value:function isFirstDigitFNC1(){return this.firstDigit===DecodedNumeric.FNC1;}},{key:"isSecondDigitFNC1",value:function isSecondDigitFNC1(){return this.secondDigit===DecodedNumeric.FNC1;}},{key:"isAnyFNC1",value:function isAnyFNC1(){return this.firstDigit===DecodedNumeric.FNC1||this.secondDigit===DecodedNumeric.FNC1;}}]);return DecodedNumeric;}(DecodedObject);DecodedNumeric.FNC1=10;var FieldParser=/*#__PURE__*/function(){function FieldParser(){_classCallCheck(this,FieldParser);}_createClass(FieldParser,null,[{key:"parseFieldsInGeneralPurpose",value:function parseFieldsInGeneralPurpose(rawInformation){if(!rawInformation){return null;}// Processing 2-digit AIs
+if(rawInformation.length<2){throw new NotFoundException();}var firstTwoDigits=rawInformation.substring(0,2);var _iterator18=_createForOfIteratorHelper(FieldParser.TWO_DIGIT_DATA_LENGTH),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var dataLength=_step18.value;if(dataLength[0]===firstTwoDigits){if(dataLength[1]===FieldParser.VARIABLE_LENGTH){return FieldParser.processVariableAI(2,dataLength[2],rawInformation);}return FieldParser.processFixedAI(2,dataLength[1],rawInformation);}}}catch(err){_iterator18.e(err);}finally{_iterator18.f();}if(rawInformation.length<3){throw new NotFoundException();}var firstThreeDigits=rawInformation.substring(0,3);var _iterator19=_createForOfIteratorHelper(FieldParser.THREE_DIGIT_DATA_LENGTH),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var _dataLength=_step19.value;if(_dataLength[0]===firstThreeDigits){if(_dataLength[1]===FieldParser.VARIABLE_LENGTH){return FieldParser.processVariableAI(3,_dataLength[2],rawInformation);}return FieldParser.processFixedAI(3,_dataLength[1],rawInformation);}}}catch(err){_iterator19.e(err);}finally{_iterator19.f();}var _iterator20=_createForOfIteratorHelper(FieldParser.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var _dataLength2=_step20.value;if(_dataLength2[0]===firstThreeDigits){if(_dataLength2[1]===FieldParser.VARIABLE_LENGTH){return FieldParser.processVariableAI(4,_dataLength2[2],rawInformation);}return FieldParser.processFixedAI(4,_dataLength2[1],rawInformation);}}}catch(err){_iterator20.e(err);}finally{_iterator20.f();}if(rawInformation.length<4){throw new NotFoundException();}var firstFourDigits=rawInformation.substring(0,4);var _iterator21=_createForOfIteratorHelper(FieldParser.FOUR_DIGIT_DATA_LENGTH),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var _dataLength3=_step21.value;if(_dataLength3[0]===firstFourDigits){if(_dataLength3[1]===FieldParser.VARIABLE_LENGTH){return FieldParser.processVariableAI(4,_dataLength3[2],rawInformation);}return FieldParser.processFixedAI(4,_dataLength3[1],rawInformation);}}}catch(err){_iterator21.e(err);}finally{_iterator21.f();}throw new NotFoundException();}},{key:"processFixedAI",value:function processFixedAI(aiSize,fieldSize,rawInformation){if(rawInformation.lengththis.information.getSize()){return pos+4<=this.information.getSize();}for(var i=pos;ithis.information.getSize()){var _numeric=this.extractNumericValueFromBitArray(pos,4);if(_numeric===0){return new DecodedNumeric(this.information.getSize(),DecodedNumeric.FNC1,DecodedNumeric.FNC1);}return new DecodedNumeric(this.information.getSize(),_numeric-1,DecodedNumeric.FNC1);}var numeric=this.extractNumericValueFromBitArray(pos,7);var digit1=(numeric-8)/11;var digit2=(numeric-8)%11;return new DecodedNumeric(pos+7,digit1,digit2);}},{key:"extractNumericValueFromBitArray",value:function extractNumericValueFromBitArray(pos,bits){return GeneralAppIdDecoder.extractNumericValueFromBitArray(this.information,pos,bits);}},{key:"decodeGeneralPurposeField",value:function decodeGeneralPurposeField(pos,remaining){// this.buffer.setLength(0);
+this.buffer.setLengthToZero();if(remaining!=null){this.buffer.append(remaining);}this.current.setPosition(pos);var lastDecoded=this.parseBlocks();if(lastDecoded!=null&&lastDecoded.isRemaining()){return new DecodedInformation(this.current.getPosition(),this.buffer.toString(),lastDecoded.getRemainingValue());}return new DecodedInformation(this.current.getPosition(),this.buffer.toString());}},{key:"parseBlocks",value:function parseBlocks(){var isFinished;var result;do{var initialPosition=this.current.getPosition();if(this.current.isAlpha()){result=this.parseAlphaBlock();isFinished=result.isFinished();}else if(this.current.isIsoIec646()){result=this.parseIsoIec646Block();isFinished=result.isFinished();}else{// it must be numeric
+result=this.parseNumericBlock();isFinished=result.isFinished();}var positionChanged=initialPosition!==this.current.getPosition();if(!positionChanged&&!isFinished){break;}}while(!isFinished);return result.getDecodedInformation();}},{key:"parseNumericBlock",value:function parseNumericBlock(){while(this.isStillNumeric(this.current.getPosition())){var numeric=this.decodeNumeric(this.current.getPosition());this.current.setPosition(numeric.getNewPosition());if(numeric.isFirstDigitFNC1()){var information=void 0;if(numeric.isSecondDigitFNC1()){information=new DecodedInformation(this.current.getPosition(),this.buffer.toString());}else{information=new DecodedInformation(this.current.getPosition(),this.buffer.toString(),numeric.getSecondDigit());}return new BlockParsedResult(true,information);}this.buffer.append(numeric.getFirstDigit());if(numeric.isSecondDigitFNC1()){var _information=new DecodedInformation(this.current.getPosition(),this.buffer.toString());return new BlockParsedResult(true,_information);}this.buffer.append(numeric.getSecondDigit());}if(this.isNumericToAlphaNumericLatch(this.current.getPosition())){this.current.setAlpha();this.current.incrementPosition(4);}return new BlockParsedResult(false);}},{key:"parseIsoIec646Block",value:function parseIsoIec646Block(){while(this.isStillIsoIec646(this.current.getPosition())){var iso=this.decodeIsoIec646(this.current.getPosition());this.current.setPosition(iso.getNewPosition());if(iso.isFNC1()){var information=new DecodedInformation(this.current.getPosition(),this.buffer.toString());return new BlockParsedResult(true,information);}this.buffer.append(iso.getValue());}if(this.isAlphaOr646ToNumericLatch(this.current.getPosition())){this.current.incrementPosition(3);this.current.setNumeric();}else if(this.isAlphaTo646ToAlphaLatch(this.current.getPosition())){if(this.current.getPosition()+5this.information.getSize()){return false;}var fiveBitValue=this.extractNumericValueFromBitArray(pos,5);if(fiveBitValue>=5&&fiveBitValue<16){return true;}if(pos+7>this.information.getSize()){return false;}var sevenBitValue=this.extractNumericValueFromBitArray(pos,7);if(sevenBitValue>=64&&sevenBitValue<116){return true;}if(pos+8>this.information.getSize()){return false;}var eightBitValue=this.extractNumericValueFromBitArray(pos,8);return eightBitValue>=232&&eightBitValue<253;}},{key:"decodeIsoIec646",value:function decodeIsoIec646(pos){var fiveBitValue=this.extractNumericValueFromBitArray(pos,5);if(fiveBitValue===15){return new DecodedChar(pos+5,DecodedChar.FNC1);}if(fiveBitValue>=5&&fiveBitValue<15){return new DecodedChar(pos+5,'0'+(fiveBitValue-5));}var sevenBitValue=this.extractNumericValueFromBitArray(pos,7);if(sevenBitValue>=64&&sevenBitValue<90){return new DecodedChar(pos+7,''+(sevenBitValue+1));}if(sevenBitValue>=90&&sevenBitValue<116){return new DecodedChar(pos+7,''+(sevenBitValue+7));}var eightBitValue=this.extractNumericValueFromBitArray(pos,8);var c;switch(eightBitValue){case 232:c='!';break;case 233:c='"';break;case 234:c='%';break;case 235:c='&';break;case 236:c='\'';break;case 237:c='(';break;case 238:c=')';break;case 239:c='*';break;case 240:c='+';break;case 241:c=',';break;case 242:c='-';break;case 243:c='.';break;case 244:c='/';break;case 245:c=':';break;case 246:c=';';break;case 247:c='<';break;case 248:c='=';break;case 249:c='>';break;case 250:c='?';break;case 251:c='_';break;case 252:c=' ';break;default:throw new FormatException();}return new DecodedChar(pos+8,c);}},{key:"isStillAlpha",value:function isStillAlpha(pos){if(pos+5>this.information.getSize()){return false;}// We now check if it's a valid 5-bit value (0..9 and FNC1)
+var fiveBitValue=this.extractNumericValueFromBitArray(pos,5);if(fiveBitValue>=5&&fiveBitValue<16){return true;}if(pos+6>this.information.getSize()){return false;}var sixBitValue=this.extractNumericValueFromBitArray(pos,6);return sixBitValue>=16&&sixBitValue<63;// 63 not included
+}},{key:"decodeAlphanumeric",value:function decodeAlphanumeric(pos){var fiveBitValue=this.extractNumericValueFromBitArray(pos,5);if(fiveBitValue===15){return new DecodedChar(pos+5,DecodedChar.FNC1);}if(fiveBitValue>=5&&fiveBitValue<15){return new DecodedChar(pos+5,'0'+(fiveBitValue-5));}var sixBitValue=this.extractNumericValueFromBitArray(pos,6);if(sixBitValue>=32&&sixBitValue<58){return new DecodedChar(pos+6,''+(sixBitValue+33));}var c;switch(sixBitValue){case 58:c='*';break;case 59:c=',';break;case 60:c='-';break;case 61:c='.';break;case 62:c='/';break;default:throw new IllegalStateException('Decoding invalid alphanumeric value: '+sixBitValue);}return new DecodedChar(pos+6,c);}},{key:"isAlphaTo646ToAlphaLatch",value:function isAlphaTo646ToAlphaLatch(pos){if(pos+1>this.information.getSize()){return false;}for(var i=0;i<5&&i+posthis.information.getSize()){return false;}for(var i=pos;ithis.information.getSize()){return false;}for(var i=0;i<4&&i+pos25){this.rows.length=0;// We will never have a chance to get result, so clear it
+return null;}this.pairs.length=0;if(reverse){this.rows=this.rows.reverse();// Collections.reverse(this.rows);
+}var ps=null;try{ps=this.checkRows(new Array(),0);}catch(e){// OK
+if(this.verbose){console.log(e);}}if(reverse){this.rows=this.rows.reverse();// Collections.reverse(this.rows);
+}return ps;}// Try to construct a valid rows sequence
+// Recursion is used to implement backtracking
+},{key:"checkRows",value:function checkRows(collectedRows,currentRow){for(var i=currentRow;irowNumber){nextIsSame=erow.isEquivalent(this.pairs);break;}prevIsSame=erow.isEquivalent(this.pairs);insertPos++;}if(nextIsSame||prevIsSame){return;}// When the row was partially decoded (e.g. 2 pairs found instead of 3),
+// it will prevent us from detecting the barcode.
+// Try to merge partial rows
+// Check whether the row is part of an allready detected row
+if(RSSExpandedReader.isPartialRow(this.pairs,this.rows)){return;}this.rows.push(insertPos,new ExpandedRow(this.pairs,rowNumber,wasReversed));this.removePartialRows(this.pairs,this.rows);}// Remove all the rows that contains only specified pairs
+},{key:"removePartialRows",value:function removePartialRows(pairs,rows){// for (Iterator iterator = rows.iterator(); iterator.hasNext();) {
+// ExpandedRow r = iterator.next();
+// if (r.getPairs().size() == pairs.size()) {
+// continue;
+// }
+// boolean allFound = true;
+// for (ExpandedPair p : r.getPairs()) {
+// boolean found = false;
+// for (ExpandedPair pp : pairs) {
+// if (p.equals(pp)) {
+// found = true;
+// break;
+// }
+// }
+// if (!found) {
+// allFound = false;
+// break;
+// }
+// }
+// if (allFound) {
+// // 'pairs' contains all the pairs from the row 'r'
+// iterator.remove();
+// }
+// }
+var _iterator23=_createForOfIteratorHelper(rows),_step23;try{for(_iterator23.s();!(_step23=_iterator23.n()).done;){var row=_step23.value;if(row.getPairs().length===pairs.length){continue;}var _iterator24=_createForOfIteratorHelper(row.getPairs()),_step24;try{for(_iterator24.s();!(_step24=_iterator24.n()).done;){var p=_step24.value;var _iterator25=_createForOfIteratorHelper(pairs),_step25;try{for(_iterator25.s();!(_step25=_iterator25.n()).done;){var pp=_step25.value;if(ExpandedPair.equals(p,pp)){break;}}}catch(err){_iterator25.e(err);}finally{_iterator25.f();}}}catch(err){_iterator24.e(err);}finally{_iterator24.f();}}}catch(err){_iterator23.e(err);}finally{_iterator23.f();}}// Returns true when one of the rows already contains all the pairs
+},{key:"getRows",value:// Only used for unit testing
+function getRows(){return this.rows;}// Not private for unit testing
+},{key:"checkChecksum",value:function checkChecksum(){var firstPair=this.pairs.get(0);var checkCharacter=firstPair.getLeftChar();var firstCharacter=firstPair.getRightChar();if(firstCharacter==null){return false;}var checksum=firstCharacter.getChecksumPortion();var s=2;for(var i=1;i=0){rowOffset=forcedOffset;}else if(this.isEmptyPair(previousPairs)){rowOffset=0;}else{var lastPair=previousPairs[previousPairs.length-1];rowOffset=lastPair.getFinderPattern().getStartEnd()[1];}var searchingEvenPair=previousPairs.length%2!=0;if(this.startFromEven){searchingEvenPair=!searchingEvenPair;}var isWhite=false;while(rowOffset=0&&!row.get(firstElementStart)){firstElementStart--;}firstElementStart++;firstCounter=this.startEnd[0]-firstElementStart;start=firstElementStart;end=this.startEnd[1];}else{// If pattern number is even, the pattern is reversed, so we need to locate element 1 *after* the current block.
+start=this.startEnd[0];end=row.getNextUnset(this.startEnd[1]+1);firstCounter=end-this.startEnd[1];}// Make 'counters' hold 1-4
+var counters=this.getDecodeFinderCounters();System.arraycopy(counters,0,counters,1,counters.length-1);counters[0]=firstCounter;var value;try{value=this.parseFinderValue(counters,RSSExpandedReader.FINDER_PATTERNS);}catch(e){return null;}// return new FinderPattern(value, new int[] { start, end }, start, end, rowNumber});
+return new FinderPattern(value,[start,end],start,end,rowNumber);}},{key:"decodeDataCharacter",value:function decodeDataCharacter(row,pattern,isOddPattern,leftChar){var counters=this.getDataCharacterCounters();for(var x=0;x0.3){throw new NotFoundException();}var oddCounts=this.getOddCounts();var evenCounts=this.getEvenCounts();var oddRoundingErrors=this.getOddRoundingErrors();var evenRoundingErrors=this.getEvenRoundingErrors();for(var _i19=0;_i198){if(_value>8.7){throw new NotFoundException();}count=8;}var offset=_i19/2;if((_i19&0x01)==0){oddCounts[offset]=count;oddRoundingErrors[offset]=_value-count;}else{evenCounts[offset]=count;evenRoundingErrors[offset]=_value-count;}}this.adjustOddEvenCounts(numModules);var weightRowNumber=4*pattern.getValue()+(isOddPattern?0:2)+(leftChar?0:1)-1;var oddSum=0;var oddChecksumPortion=0;for(var _i20=oddCounts.length-1;_i20>=0;_i20--){if(RSSExpandedReader.isNotA1left(pattern,isOddPattern,leftChar)){var weight=RSSExpandedReader.WEIGHTS[weightRowNumber][2*_i20];oddChecksumPortion+=oddCounts[_i20]*weight;}oddSum+=oddCounts[_i20];}var evenChecksumPortion=0;// int evenSum = 0;
+for(var _i21=evenCounts.length-1;_i21>=0;_i21--){if(RSSExpandedReader.isNotA1left(pattern,isOddPattern,leftChar)){var _weight=RSSExpandedReader.WEIGHTS[weightRowNumber][2*_i21+1];evenChecksumPortion+=evenCounts[_i21]*_weight;}// evenSum += evenCounts[i];
+}var checksumPortion=oddChecksumPortion+evenChecksumPortion;if((oddSum&0x01)!=0||oddSum>13||oddSum<4){throw new NotFoundException();}var group=(13-oddSum)/2;var oddWidest=RSSExpandedReader.SYMBOL_WIDEST[group];var evenWidest=9-oddWidest;var vOdd=RSSUtils.getRSSvalue(oddCounts,oddWidest,true);var vEven=RSSUtils.getRSSvalue(evenCounts,evenWidest,false);var tEven=RSSExpandedReader.EVEN_TOTAL_SUBSET[group];var gSum=RSSExpandedReader.GSUM[group];var value=vOdd*tEven+vEven+gSum;return new DataCharacter(value,checksumPortion);}},{key:"adjustOddEvenCounts",value:function adjustOddEvenCounts(numModules){var oddSum=MathUtils.sum(new Int32Array(this.getOddCounts()));var evenSum=MathUtils.sum(new Int32Array(this.getEvenCounts()));var incrementOdd=false;var decrementOdd=false;if(oddSum>13){decrementOdd=true;}else if(oddSum<4){incrementOdd=true;}var incrementEven=false;var decrementEven=false;if(evenSum>13){decrementEven=true;}else if(evenSum<4){incrementEven=true;}var mismatch=oddSum+evenSum-numModules;var oddParityBad=(oddSum&0x01)==1;var evenParityBad=(evenSum&0x01)==0;if(mismatch==1){if(oddParityBad){if(evenParityBad){throw new NotFoundException();}decrementOdd=true;}else{if(!evenParityBad){throw new NotFoundException();}decrementEven=true;}}else if(mismatch==-1){if(oddParityBad){if(evenParityBad){throw new NotFoundException();}incrementOdd=true;}else{if(!evenParityBad){throw new NotFoundException();}incrementEven=true;}}else if(mismatch==0){if(oddParityBad){if(!evenParityBad){throw new NotFoundException();}// Both bad
+if(oddSumsequence.length){continue;}var stop=true;for(var j=0;j1){var _iterator31=_createForOfIteratorHelper(this.possibleRightPairs),_step31;try{for(_iterator31.s();!(_step31=_iterator31.n()).done;){var right=_step31.value;if(right.getCount()>1&&RSS14Reader.checkChecksum(left,right)){return RSS14Reader.constructResult(left,right);}}}catch(err){_iterator31.e(err);}finally{_iterator31.f();}}}}catch(err){_iterator30.e(err);}finally{_iterator30.f();}throw new NotFoundException();}},{key:"reset",value:function reset(){this.possibleLeftPairs.length=0;this.possibleRightPairs.length=0;}},{key:"decodePair",value:function decodePair(row,right,rowNumber,hints){try{var startEnd=this.findFinderPattern(row,right);var pattern=this.parseFoundFinderPattern(row,rowNumber,right,startEnd);var resultPointCallback=hints==null?null:hints.get(DecodeHintType$1.NEED_RESULT_POINT_CALLBACK);if(resultPointCallback!=null){var center=(startEnd[0]+startEnd[1])/2.0;if(right){// row is actually reversed
+center=row.getSize()-1-center;}resultPointCallback.foundPossibleResultPoint(new ResultPoint(center,rowNumber));}var outside=this.decodeDataCharacter(row,pattern,true);var inside=this.decodeDataCharacter(row,pattern,false);return new Pair(1597*outside.getValue()+inside.getValue(),outside.getChecksumPortion()+4*inside.getChecksumPortion(),pattern);}catch(err){return null;}}},{key:"decodeDataCharacter",value:function decodeDataCharacter(row,pattern,outsideChar){var counters=this.getDataCharacterCounters();for(var x=0;x8){count=8;}var offset=Math.floor(_i22/2);if((_i22&0x01)===0){oddCounts[offset]=count;oddRoundingErrors[offset]=value-count;}else{evenCounts[offset]=count;evenRoundingErrors[offset]=value-count;}}this.adjustOddEvenCounts(outsideChar,numModules);var oddSum=0;var oddChecksumPortion=0;for(var _i23=oddCounts.length-1;_i23>=0;_i23--){oddChecksumPortion*=9;oddChecksumPortion+=oddCounts[_i23];oddSum+=oddCounts[_i23];}var evenChecksumPortion=0;var evenSum=0;for(var _i24=evenCounts.length-1;_i24>=0;_i24--){evenChecksumPortion*=9;evenChecksumPortion+=evenCounts[_i24];evenSum+=evenCounts[_i24];}var checksumPortion=oddChecksumPortion+3*evenChecksumPortion;if(outsideChar){if((oddSum&0x01)!==0||oddSum>12||oddSum<4){throw new NotFoundException();}var group=(12-oddSum)/2;var oddWidest=RSS14Reader.OUTSIDE_ODD_WIDEST[group];var evenWidest=9-oddWidest;var vOdd=RSSUtils.getRSSvalue(oddCounts,oddWidest,false);var vEven=RSSUtils.getRSSvalue(evenCounts,evenWidest,true);var tEven=RSS14Reader.OUTSIDE_EVEN_TOTAL_SUBSET[group];var gSum=RSS14Reader.OUTSIDE_GSUM[group];return new DataCharacter(vOdd*tEven+vEven+gSum,checksumPortion);}else{if((evenSum&0x01)!==0||evenSum>10||evenSum<4){throw new NotFoundException();}var _group=(10-evenSum)/2;var _oddWidest=RSS14Reader.INSIDE_ODD_WIDEST[_group];var _evenWidest=9-_oddWidest;var _vOdd=RSSUtils.getRSSvalue(oddCounts,_oddWidest,true);var _vEven=RSSUtils.getRSSvalue(evenCounts,_evenWidest,false);var tOdd=RSS14Reader.INSIDE_ODD_TOTAL_SUBSET[_group];var _gSum=RSS14Reader.INSIDE_GSUM[_group];return new DataCharacter(_vEven*tOdd+_vOdd+_gSum,checksumPortion);}}},{key:"findFinderPattern",value:function findFinderPattern(row,rightFinderPattern){var counters=this.getDecodeFinderCounters();counters[0]=0;counters[1]=0;counters[2]=0;counters[3]=0;var width=row.getSize();var isWhite=false;var rowOffset=0;while(rowOffset=0&&firstIsBlack!==row.get(firstElementStart)){firstElementStart--;}firstElementStart++;var firstCounter=startEnd[0]-firstElementStart;// Make 'counters' hold 1-4
+var counters=this.getDecodeFinderCounters();var copy=new Int32Array(counters.length);System.arraycopy(counters,0,copy,1,counters.length-1);copy[0]=firstCounter;var value=this.parseFinderValue(copy,RSS14Reader.FINDER_PATTERNS);var start=firstElementStart;var end=startEnd[1];if(right){// row is actually reversed
+start=row.getSize()-1-start;end=row.getSize()-1-end;}return new FinderPattern(value,[firstElementStart,startEnd[1]],start,end,rowNumber);}},{key:"adjustOddEvenCounts",value:function adjustOddEvenCounts(outsideChar,numModules){var oddSum=MathUtils.sum(new Int32Array(this.getOddCounts()));var evenSum=MathUtils.sum(new Int32Array(this.getEvenCounts()));var incrementOdd=false;var decrementOdd=false;var incrementEven=false;var decrementEven=false;if(outsideChar){if(oddSum>12){decrementOdd=true;}else if(oddSum<4){incrementOdd=true;}if(evenSum>12){decrementEven=true;}else if(evenSum<4){incrementEven=true;}}else{if(oddSum>11){decrementOdd=true;}else if(oddSum<5){incrementOdd=true;}if(evenSum>10){decrementEven=true;}else if(evenSum<4){incrementEven=true;}}var mismatch=oddSum+evenSum-numModules;var oddParityBad=(oddSum&0x01)===(outsideChar?1:0);var evenParityBad=(evenSum&0x01)===1;if(mismatch===1){if(oddParityBad){if(evenParityBad){throw new NotFoundException();}decrementOdd=true;}else{if(!evenParityBad){throw new NotFoundException();}decrementEven=true;}}else if(mismatch===-1){if(oddParityBad){if(evenParityBad){throw new NotFoundException();}incrementOdd=true;}else{if(!evenParityBad){throw new NotFoundException();}incrementEven=true;}}else if(mismatch===0){if(oddParityBad){if(!evenParityBad){throw new NotFoundException();}// Both bad
+if(oddSum0;i--){buffer.append('0');}buffer.append(text);var checkDigit=0;for(var _i25=0;_i25<13;_i25++){var digit=buffer.charAt(_i25).charCodeAt(0)-'0'.charCodeAt(0);checkDigit+=(_i25&0x01)===0?3*digit:digit;}checkDigit=10-checkDigit%10;if(checkDigit===10){checkDigit=0;}buffer.append(checkDigit.toString());var leftPoints=leftPair.getFinderPattern().getResultPoints();var rightPoints=rightPair.getFinderPattern().getResultPoints();return new Result(buffer.toString(),null,0,[leftPoints[0],leftPoints[1],rightPoints[0],rightPoints[1]],BarcodeFormat$1.RSS_14,new Date().getTime());}},{key:"checkChecksum",value:function checkChecksum(leftPair,rightPair){var checkValue=(leftPair.getChecksumPortion()+16*rightPair.getChecksumPortion())%79;var targetCheckValue=9*leftPair.getFinderPattern().getValue()+rightPair.getFinderPattern().getValue();if(targetCheckValue>72){targetCheckValue--;}if(targetCheckValue>8){targetCheckValue--;}return checkValue===targetCheckValue;}}]);return RSS14Reader;}(AbstractRSSReader);RSS14Reader.OUTSIDE_EVEN_TOTAL_SUBSET=[1,10,34,70,126];RSS14Reader.INSIDE_ODD_TOTAL_SUBSET=[4,20,48,81];RSS14Reader.OUTSIDE_GSUM=[0,161,961,2015,2715];RSS14Reader.INSIDE_GSUM=[0,336,1036,1516];RSS14Reader.OUTSIDE_ODD_WIDEST=[8,6,4,3,1];RSS14Reader.INSIDE_ODD_WIDEST=[2,4,6,8];RSS14Reader.FINDER_PATTERNS=[Int32Array.from([3,8,2,1]),Int32Array.from([3,5,5,1]),Int32Array.from([3,3,7,1]),Int32Array.from([3,1,9,1]),Int32Array.from([2,7,4,1]),Int32Array.from([2,5,6,1]),Int32Array.from([2,3,8,1]),Int32Array.from([1,5,7,1]),Int32Array.from([1,3,9,1])];/**
+ * @author Daniel Switkin
+ * @author Sean Owen
+ */var MultiFormatOneDReader=/*#__PURE__*/function(_OneDReader7){_inherits(MultiFormatOneDReader,_OneDReader7);var _super49=_createSuper(MultiFormatOneDReader);function MultiFormatOneDReader(hints,verbose){var _this32;_classCallCheck(this,MultiFormatOneDReader);_this32=_super49.call(this);_this32.readers=[];_this32.verbose=verbose===true;var possibleFormats=!hints?null:hints.get(DecodeHintType$1.POSSIBLE_FORMATS);var useCode39CheckDigit=hints&&hints.get(DecodeHintType$1.ASSUME_CODE_39_CHECK_DIGIT)!==undefined;if(possibleFormats){if(possibleFormats.includes(BarcodeFormat$1.EAN_13)||possibleFormats.includes(BarcodeFormat$1.UPC_A)||possibleFormats.includes(BarcodeFormat$1.EAN_8)||possibleFormats.includes(BarcodeFormat$1.UPC_E)){_this32.readers.push(new MultiFormatUPCEANReader(hints));}if(possibleFormats.includes(BarcodeFormat$1.CODE_39)){_this32.readers.push(new Code39Reader(useCode39CheckDigit));}// if (possibleFormats.includes(BarcodeFormat.CODE_93)) {
+// this.readers.push(new Code93Reader());
+// }
+if(possibleFormats.includes(BarcodeFormat$1.CODE_128)){_this32.readers.push(new Code128Reader());}if(possibleFormats.includes(BarcodeFormat$1.ITF)){_this32.readers.push(new ITFReader());}// if (possibleFormats.includes(BarcodeFormat.CODABAR)) {
+// this.readers.push(new CodaBarReader());
+// }
+if(possibleFormats.includes(BarcodeFormat$1.RSS_14)){_this32.readers.push(new RSS14Reader());}if(possibleFormats.includes(BarcodeFormat$1.RSS_EXPANDED)){_this32.readers.push(new RSSExpandedReader(_this32.verbose));}}else{// Case when no hints were provided -> add all.
+_this32.readers.push(new MultiFormatUPCEANReader(hints));_this32.readers.push(new Code39Reader());// this.readers.push(new CodaBarReader());
+// this.readers.push(new Code93Reader());
+_this32.readers.push(new MultiFormatUPCEANReader(hints));_this32.readers.push(new Code128Reader());_this32.readers.push(new ITFReader());_this32.readers.push(new RSS14Reader());_this32.readers.push(new RSSExpandedReader(_this32.verbose));}return _this32;}// @Override
+_createClass(MultiFormatOneDReader,[{key:"decodeRow",value:function decodeRow(rowNumber,row,hints){for(var i=0;i} hints
+ */function BrowserBarcodeReader(){var timeBetweenScansMillis=arguments.length>0&&arguments[0]!==undefined?arguments[0]:500;var hints=arguments.length>1?arguments[1]:undefined;_classCallCheck(this,BrowserBarcodeReader);return _super50.call(this,new MultiFormatOneDReader(hints),timeBetweenScansMillis,hints);}return _createClass(BrowserBarcodeReader);}(BrowserCodeReader);/*
+ * 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.
+ */ /**
+ * Encapsulates a set of error-correction blocks in one symbol version. Most versions will
+ * use blocks of differing sizes within one version, so, this encapsulates the parameters for
+ * each set of blocks. It also holds the number of error-correction codewords per block since it
+ * will be the same across all blocks within one version.
+ */var ECBlocks=/*#__PURE__*/function(){function ECBlocks(ecCodewords,ecBlocks1,ecBlocks2){_classCallCheck(this,ECBlocks);this.ecCodewords=ecCodewords;this.ecBlocks=[ecBlocks1];ecBlocks2&&this.ecBlocks.push(ecBlocks2);}_createClass(ECBlocks,[{key:"getECCodewords",value:function getECCodewords(){return this.ecCodewords;}},{key:"getECBlocks",value:function getECBlocks(){return this.ecBlocks;}}]);return ECBlocks;}();/**
+ * Encapsulates the parameters for one error-correction block in one symbol version.
+ * This includes the number of data codewords, and the number of times a block with these
+ * parameters is used consecutively in the Data Matrix code version's format.
+ */var ECB=/*#__PURE__*/function(){function ECB(count,dataCodewords){_classCallCheck(this,ECB);this.count=count;this.dataCodewords=dataCodewords;}_createClass(ECB,[{key:"getCount",value:function getCount(){return this.count;}},{key:"getDataCodewords",value:function getDataCodewords(){return this.dataCodewords;}}]);return ECB;}();/**
+ * The Version object encapsulates attributes about a particular
+ * size Data Matrix Code.
+ *
+ * @author bbrown@google.com (Brian Brown)
+ */var Version=/*#__PURE__*/function(){function Version(versionNumber,symbolSizeRows,symbolSizeColumns,dataRegionSizeRows,dataRegionSizeColumns,ecBlocks){_classCallCheck(this,Version);this.versionNumber=versionNumber;this.symbolSizeRows=symbolSizeRows;this.symbolSizeColumns=symbolSizeColumns;this.dataRegionSizeRows=dataRegionSizeRows;this.dataRegionSizeColumns=dataRegionSizeColumns;this.ecBlocks=ecBlocks;// Calculate the total number of codewords
+var total=0;var ecCodewords=ecBlocks.getECCodewords();var ecbArray=ecBlocks.getECBlocks();var _iterator33=_createForOfIteratorHelper(ecbArray),_step33;try{for(_iterator33.s();!(_step33=_iterator33.n()).done;){var ecBlock=_step33.value;total+=ecBlock.getCount()*(ecBlock.getDataCodewords()+ecCodewords);}}catch(err){_iterator33.e(err);}finally{_iterator33.f();}this.totalCodewords=total;}_createClass(Version,[{key:"getVersionNumber",value:function getVersionNumber(){return this.versionNumber;}},{key:"getSymbolSizeRows",value:function getSymbolSizeRows(){return this.symbolSizeRows;}},{key:"getSymbolSizeColumns",value:function getSymbolSizeColumns(){return this.symbolSizeColumns;}},{key:"getDataRegionSizeRows",value:function getDataRegionSizeRows(){return this.dataRegionSizeRows;}},{key:"getDataRegionSizeColumns",value:function getDataRegionSizeColumns(){return this.dataRegionSizeColumns;}},{key:"getTotalCodewords",value:function getTotalCodewords(){return this.totalCodewords;}},{key:"getECBlocks",value:function getECBlocks(){return this.ecBlocks;}/**
+ * Deduces version information from Data Matrix dimensions.
+ *
+ * @param numRows Number of rows in modules
+ * @param numColumns Number of columns in modules
+ * @return Version for a Data Matrix Code of those dimensions
+ * @throws FormatException if dimensions do correspond to a valid Data Matrix size
+ */},{key:"toString",value:// @Override
+function toString(){return''+this.versionNumber;}/**
+ * See ISO 16022:2006 5.5.1 Table 7
+ */}],[{key:"getVersionForDimensions",value:function getVersionForDimensions(numRows,numColumns){if((numRows&0x01)!==0||(numColumns&0x01)!==0){throw new FormatException();}var _iterator34=_createForOfIteratorHelper(Version.VERSIONS),_step34;try{for(_iterator34.s();!(_step34=_iterator34.n()).done;){var version=_step34.value;if(version.symbolSizeRows===numRows&&version.symbolSizeColumns===numColumns){return version;}}}catch(err){_iterator34.e(err);}finally{_iterator34.f();}throw new FormatException();}},{key:"buildVersions",value:function buildVersions(){return[new Version(1,10,10,8,8,new ECBlocks(5,new ECB(1,3))),new Version(2,12,12,10,10,new ECBlocks(7,new ECB(1,5))),new Version(3,14,14,12,12,new ECBlocks(10,new ECB(1,8))),new Version(4,16,16,14,14,new ECBlocks(12,new ECB(1,12))),new Version(5,18,18,16,16,new ECBlocks(14,new ECB(1,18))),new Version(6,20,20,18,18,new ECBlocks(18,new ECB(1,22))),new Version(7,22,22,20,20,new ECBlocks(20,new ECB(1,30))),new Version(8,24,24,22,22,new ECBlocks(24,new ECB(1,36))),new Version(9,26,26,24,24,new ECBlocks(28,new ECB(1,44))),new Version(10,32,32,14,14,new ECBlocks(36,new ECB(1,62))),new Version(11,36,36,16,16,new ECBlocks(42,new ECB(1,86))),new Version(12,40,40,18,18,new ECBlocks(48,new ECB(1,114))),new Version(13,44,44,20,20,new ECBlocks(56,new ECB(1,144))),new Version(14,48,48,22,22,new ECBlocks(68,new ECB(1,174))),new Version(15,52,52,24,24,new ECBlocks(42,new ECB(2,102))),new Version(16,64,64,14,14,new ECBlocks(56,new ECB(2,140))),new Version(17,72,72,16,16,new ECBlocks(36,new ECB(4,92))),new Version(18,80,80,18,18,new ECBlocks(48,new ECB(4,114))),new Version(19,88,88,20,20,new ECBlocks(56,new ECB(4,144))),new Version(20,96,96,22,22,new ECBlocks(68,new ECB(4,174))),new Version(21,104,104,24,24,new ECBlocks(56,new ECB(6,136))),new Version(22,120,120,18,18,new ECBlocks(68,new ECB(6,175))),new Version(23,132,132,20,20,new ECBlocks(62,new ECB(8,163))),new Version(24,144,144,22,22,new ECBlocks(62,new ECB(8,156),new ECB(2,155))),new Version(25,8,18,6,16,new ECBlocks(7,new ECB(1,5))),new Version(26,8,32,6,14,new ECBlocks(11,new ECB(1,10))),new Version(27,12,26,10,24,new ECBlocks(14,new ECB(1,16))),new Version(28,12,36,10,16,new ECBlocks(18,new ECB(1,22))),new Version(29,16,36,14,16,new ECBlocks(24,new ECB(1,32))),new Version(30,16,48,14,22,new ECBlocks(28,new ECB(1,49)))];}}]);return Version;}();Version.VERSIONS=Version.buildVersions();/*
+ * 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.
+ */ /**
+ * @author bbrown@google.com (Brian Brown)
+ */var BitMatrixParser=/*#__PURE__*/function(){/**
+ * @param bitMatrix {@link BitMatrix} to parse
+ * @throws FormatException if dimension is < 8 or > 144 or not 0 mod 2
+ */function BitMatrixParser(bitMatrix){_classCallCheck(this,BitMatrixParser);var dimension=bitMatrix.getHeight();if(dimension<8||dimension>144||(dimension&0x01)!==0){throw new FormatException();}this.version=BitMatrixParser.readVersion(bitMatrix);this.mappingBitMatrix=this.extractDataRegion(bitMatrix);this.readMappingMatrix=new BitMatrix(this.mappingBitMatrix.getWidth(),this.mappingBitMatrix.getHeight());}_createClass(BitMatrixParser,[{key:"getVersion",value:function getVersion(){return this.version;}/**
+ * Creates the version object based on the dimension of the original bit matrix from
+ * the datamatrix code.
+ *
+ * See ISO 16022:2006 Table 7 - ECC 200 symbol attributes
+ *
+ * @param bitMatrix Original {@link BitMatrix} including alignment patterns
+ * @return {@link Version} encapsulating the Data Matrix Code's "version"
+ * @throws FormatException if the dimensions of the mapping matrix are not valid
+ * Data Matrix dimensions.
+ */},{key:"readCodewords",value:/**
+ * Reads the bits in the {@link BitMatrix} representing the mapping matrix (No alignment patterns)
+ * in the correct order in order to reconstitute the codewords bytes contained within the
+ * Data Matrix Code.
+ *
+ * @return bytes encoded within the Data Matrix Code
+ * @throws FormatException if the exact number of bytes expected is not read
+ */function readCodewords(){var result=new Int8Array(this.version.getTotalCodewords());var resultOffset=0;var row=4;var column=0;var numRows=this.mappingBitMatrix.getHeight();var numColumns=this.mappingBitMatrix.getWidth();var corner1Read=false;var corner2Read=false;var corner3Read=false;var corner4Read=false;// Read all of the codewords
+do{// Check the four corner cases
+if(row===numRows&&column===0&&!corner1Read){result[resultOffset++]=this.readCorner1(numRows,numColumns)&0xff;row-=2;column+=2;corner1Read=true;}else if(row===numRows-2&&column===0&&(numColumns&0x03)!==0&&!corner2Read){result[resultOffset++]=this.readCorner2(numRows,numColumns)&0xff;row-=2;column+=2;corner2Read=true;}else if(row===numRows+4&&column===2&&(numColumns&0x07)===0&&!corner3Read){result[resultOffset++]=this.readCorner3(numRows,numColumns)&0xff;row-=2;column+=2;corner3Read=true;}else if(row===numRows-2&&column===0&&(numColumns&0x07)===4&&!corner4Read){result[resultOffset++]=this.readCorner4(numRows,numColumns)&0xff;row-=2;column+=2;corner4Read=true;}else{// Sweep upward diagonally to the right
+do{if(row=0&&!this.readMappingMatrix.get(column,row)){result[resultOffset++]=this.readUtah(row,column,numRows,numColumns)&0xff;}row-=2;column+=2;}while(row>=0&&column=0&&column=0);row+=3;column+=1;}}while(rowReads a bit of the mapping matrix accounting for boundary wrapping.
+ *
+ * @param row Row to read in the mapping matrix
+ * @param column Column to read in the mapping matrix
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return value of the given bit in the mapping matrix
+ */},{key:"readModule",value:function readModule(row,column,numRows,numColumns){// Adjust the row and column indices based on boundary wrapping
+if(row<0){row+=numRows;column+=4-(numRows+4&0x07);}if(column<0){column+=numColumns;row+=4-(numColumns+4&0x07);}this.readMappingMatrix.set(column,row);return this.mappingBitMatrix.get(column,row);}/**
+ * Reads the 8 bits of the standard Utah-shaped pattern.
+ *
+ * See ISO 16022:2006, 5.8.1 Figure 6
+ *
+ * @param row Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern
+ * @param column Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return byte from the utah shape
+ */},{key:"readUtah",value:function readUtah(row,column,numRows,numColumns){var currentByte=0;if(this.readModule(row-2,column-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row-2,column-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row-1,column-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row-1,column-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row-1,column,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row,column-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row,column-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(row,column,numRows,numColumns)){currentByte|=1;}return currentByte;}/**
+ * Reads the 8 bits of the special corner condition 1.
+ *
+ * See ISO 16022:2006, Figure F.3
+ *
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return byte from the Corner condition 1
+ */},{key:"readCorner1",value:function readCorner1(numRows,numColumns){var currentByte=0;if(this.readModule(numRows-1,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-1,1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-1,2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(2,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(3,numColumns-1,numRows,numColumns)){currentByte|=1;}return currentByte;}/**
+ * Reads the 8 bits of the special corner condition 2.
+ *
+ * See ISO 16022:2006, Figure F.4
+ *
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return byte from the Corner condition 2
+ */},{key:"readCorner2",value:function readCorner2(numRows,numColumns){var currentByte=0;if(this.readModule(numRows-3,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-2,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-1,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-4,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-3,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-1,numRows,numColumns)){currentByte|=1;}return currentByte;}/**
+ * Reads the 8 bits of the special corner condition 3.
+ *
+ * See ISO 16022:2006, Figure F.5
+ *
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return byte from the Corner condition 3
+ */},{key:"readCorner3",value:function readCorner3(numRows,numColumns){var currentByte=0;if(this.readModule(numRows-1,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-1,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-3,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-3,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-1,numRows,numColumns)){currentByte|=1;}return currentByte;}/**
+ * Reads the 8 bits of the special corner condition 4.
+ *
+ * See ISO 16022:2006, Figure F.6
+ *
+ * @param numRows Number of rows in the mapping matrix
+ * @param numColumns Number of columns in the mapping matrix
+ * @return byte from the Corner condition 4
+ */},{key:"readCorner4",value:function readCorner4(numRows,numColumns){var currentByte=0;if(this.readModule(numRows-3,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-2,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(numRows-1,0,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-2,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(0,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(1,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(2,numColumns-1,numRows,numColumns)){currentByte|=1;}currentByte<<=1;if(this.readModule(3,numColumns-1,numRows,numColumns)){currentByte|=1;}return currentByte;}/**
+ * Extracts the data region from a {@link BitMatrix} that contains
+ * alignment patterns.
+ *
+ * @param bitMatrix Original {@link BitMatrix} with alignment patterns
+ * @return BitMatrix that has the alignment patterns removed
+ */},{key:"extractDataRegion",value:function extractDataRegion(bitMatrix){var symbolSizeRows=this.version.getSymbolSizeRows();var symbolSizeColumns=this.version.getSymbolSizeColumns();if(bitMatrix.getHeight()!==symbolSizeRows){throw new IllegalArgumentException('Dimension of bitMatrix must match the version size');}var dataRegionSizeRows=this.version.getDataRegionSizeRows();var dataRegionSizeColumns=this.version.getDataRegionSizeColumns();var numDataRegionsRow=symbolSizeRows/dataRegionSizeRows|0;var numDataRegionsColumn=symbolSizeColumns/dataRegionSizeColumns|0;var sizeDataRegionRow=numDataRegionsRow*dataRegionSizeRows;var sizeDataRegionColumn=numDataRegionsColumn*dataRegionSizeColumns;var bitMatrixWithoutAlignment=new BitMatrix(sizeDataRegionColumn,sizeDataRegionRow);for(var dataRegionRow=0;dataRegionRowEncapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into
+ * multiple blocks, each of which is a unit of data and error-correction codewords. Each
+ * is represented by an instance of this class.
+ *
+ * @author bbrown@google.com (Brian Brown)
+ */var DataBlock=/*#__PURE__*/function(){function DataBlock(numDataCodewords,codewords){_classCallCheck(this,DataBlock);this.numDataCodewords=numDataCodewords;this.codewords=codewords;}/**
+ * When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them.
+ * That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This
+ * method will separate the data into original blocks.
+ *
+ * @param rawCodewords bytes as read directly from the Data Matrix Code
+ * @param version version of the Data Matrix Code
+ * @return DataBlocks containing original bytes, "de-interleaved" from representation in the
+ * Data Matrix Code
+ */_createClass(DataBlock,[{key:"getNumDataCodewords",value:function getNumDataCodewords(){return this.numDataCodewords;}},{key:"getCodewords",value:function getCodewords(){return this.codewords;}}],[{key:"getDataBlocks",value:function getDataBlocks(rawCodewords,version){// Figure out the number and size of data blocks used by this version
+var ecBlocks=version.getECBlocks();// First count the total number of data blocks
+var totalBlocks=0;var ecBlockArray=ecBlocks.getECBlocks();var _iterator35=_createForOfIteratorHelper(ecBlockArray),_step35;try{for(_iterator35.s();!(_step35=_iterator35.n()).done;){var ecBlock=_step35.value;totalBlocks+=ecBlock.getCount();}// Now establish DataBlocks of the appropriate size and number of data codewords
+}catch(err){_iterator35.e(err);}finally{_iterator35.f();}var result=new Array(totalBlocks);var numResultBlocks=0;var _iterator36=_createForOfIteratorHelper(ecBlockArray),_step36;try{for(_iterator36.s();!(_step36=_iterator36.n()).done;){var _ecBlock=_step36.value;for(var _i27=0;_i27<_ecBlock.getCount();_i27++){var numDataCodewords=_ecBlock.getDataCodewords();var numBlockCodewords=ecBlocks.getECCodewords()+numDataCodewords;result[numResultBlocks++]=new DataBlock(numDataCodewords,new Uint8Array(numBlockCodewords));}}// All blocks have the same amount of data, except that the last n
+// (where n may be 0) have 1 less byte. Figure out where these start.
+// TODO(bbrown): There is only one case where there is a difference for Data Matrix for size 144
+}catch(err){_iterator36.e(err);}finally{_iterator36.f();}var longerBlocksTotalCodewords=result[0].codewords.length;// int shorterBlocksTotalCodewords = longerBlocksTotalCodewords - 1;
+var longerBlocksNumDataCodewords=longerBlocksTotalCodewords-ecBlocks.getECCodewords();var shorterBlocksNumDataCodewords=longerBlocksNumDataCodewords-1;// The last elements of result may be 1 element shorter for 144 matrix
+// first fill out as many elements as all of them have minus 1
+var rawCodewordsOffset=0;for(var i=0;i7?_i26-1:_i26;result[jOffset].codewords[iOffset]=rawCodewords[rawCodewordsOffset++];}}if(rawCodewordsOffset!==rawCodewords.length){throw new IllegalArgumentException();}return result;}}]);return DataBlock;}();/*
+ * 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.
+ */ /**
+ * This provides an easy abstraction to read bits at a time from a sequence of bytes, where the
+ * number of bits read is not often a multiple of 8.
+ *
+ * This class is thread-safe but not reentrant -- unless the caller modifies the bytes array
+ * it passed in, in which case all bets are off.
+ *
+ * @author Sean Owen
+ */var BitSource=/*#__PURE__*/function(){/**
+ * @param bytes bytes from which this will read bits. Bits will be read from the first byte first.
+ * Bits are read within a byte from most-significant to least-significant bit.
+ */function BitSource(bytes){_classCallCheck(this,BitSource);this.bytes=bytes;this.byteOffset=0;this.bitOffset=0;}/**
+ * @return index of next bit in current byte which would be read by the next call to {@link #readBits(int)}.
+ */_createClass(BitSource,[{key:"getBitOffset",value:function getBitOffset(){return this.bitOffset;}/**
+ * @return index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}.
+ */},{key:"getByteOffset",value:function getByteOffset(){return this.byteOffset;}/**
+ * @param numBits number of bits to read
+ * @return int representing the bits read. The bits will appear as the least-significant
+ * bits of the int
+ * @throws IllegalArgumentException if numBits isn't in [1,32] or more than is available
+ */},{key:"readBits",value:function readBits(numBits/*int*/){if(numBits<1||numBits>32||numBits>this.available()){throw new IllegalArgumentException(''+numBits);}var result=0;var bitOffset=this.bitOffset;var byteOffset=this.byteOffset;var bytes=this.bytes;// First, read remainder from current byte
+if(bitOffset>0){var bitsLeft=8-bitOffset;var toRead=numBits>8-toRead<>bitsToNotRead;numBits-=toRead;bitOffset+=toRead;if(bitOffset===8){bitOffset=0;byteOffset++;}}// Next read whole bytes
+if(numBits>0){while(numBits>=8){result=result<<8|bytes[byteOffset]&0xFF;byteOffset++;numBits-=8;}// Finally read a partial byte
+if(numBits>0){var _bitsToNotRead=8-numBits;var _mask=0xFF>>_bitsToNotRead<<_bitsToNotRead;result=result<>_bitsToNotRead;bitOffset+=numBits;}}this.bitOffset=bitOffset;this.byteOffset=byteOffset;return result;}/**
+ * @return number of bits that can be read successfully
+ */},{key:"available",value:function available(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset;}}]);return BitSource;}();var Mode;(function(Mode){Mode[Mode["PAD_ENCODE"]=0]="PAD_ENCODE";Mode[Mode["ASCII_ENCODE"]=1]="ASCII_ENCODE";Mode[Mode["C40_ENCODE"]=2]="C40_ENCODE";Mode[Mode["TEXT_ENCODE"]=3]="TEXT_ENCODE";Mode[Mode["ANSIX12_ENCODE"]=4]="ANSIX12_ENCODE";Mode[Mode["EDIFACT_ENCODE"]=5]="EDIFACT_ENCODE";Mode[Mode["BASE256_ENCODE"]=6]="BASE256_ENCODE";})(Mode||(Mode={}));/**
+ * Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes
+ * in one Data Matrix Code. This class decodes the bits back into text.
+ *
+ * See ISO 16022:2006, 5.2.1 - 5.2.9.2
+ *
+ * @author bbrown@google.com (Brian Brown)
+ * @author Sean Owen
+ */var DecodedBitStreamParser=/*#__PURE__*/function(){function DecodedBitStreamParser(){_classCallCheck(this,DecodedBitStreamParser);}_createClass(DecodedBitStreamParser,null,[{key:"decode",value:function decode(bytes){var bits=new BitSource(bytes);var result=new StringBuilder();var resultTrailer=new StringBuilder();var byteSegments=new Array();var mode=Mode.ASCII_ENCODE;do{if(mode===Mode.ASCII_ENCODE){mode=this.decodeAsciiSegment(bits,result,resultTrailer);}else{switch(mode){case Mode.C40_ENCODE:this.decodeC40Segment(bits,result);break;case Mode.TEXT_ENCODE:this.decodeTextSegment(bits,result);break;case Mode.ANSIX12_ENCODE:this.decodeAnsiX12Segment(bits,result);break;case Mode.EDIFACT_ENCODE:this.decodeEdifactSegment(bits,result);break;case Mode.BASE256_ENCODE:this.decodeBase256Segment(bits,result,byteSegments);break;default:throw new FormatException();}mode=Mode.ASCII_ENCODE;}}while(mode!==Mode.PAD_ENCODE&&bits.available()>0);if(resultTrailer.length()>0){result.append(resultTrailer.toString());}return new DecoderResult(bytes,result.toString(),byteSegments.length===0?null:byteSegments,null);}/**
+ * See ISO 16022:2006, 5.2.3 and Annex C, Table C.2
+ */},{key:"decodeAsciiSegment",value:function decodeAsciiSegment(bits,result,resultTrailer){var upperShift=false;do{var oneByte=bits.readBits(8);if(oneByte===0){throw new FormatException();}else if(oneByte<=128){// ASCII data (ASCII value + 1)
+if(upperShift){oneByte+=128;// upperShift = false;
+}result.append(String.fromCharCode(oneByte-1));return Mode.ASCII_ENCODE;}else if(oneByte===129){// Pad
+return Mode.PAD_ENCODE;}else if(oneByte<=229){// 2-digit data 00-99 (Numeric Value + 130)
+var value=oneByte-130;if(value<10){// pad with '0' for single digit values
+result.append('0');}result.append(''+value);}else{switch(oneByte){case 230:// Latch to C40 encodation
+return Mode.C40_ENCODE;case 231:// Latch to Base 256 encodation
+return Mode.BASE256_ENCODE;case 232:// FNC1
+result.append(String.fromCharCode(29));// translate as ASCII 29
+break;case 233:// Structured Append
+case 234:// Reader Programming
+// Ignore these symbols for now
+// throw ReaderException.getInstance();
+break;case 235:// Upper Shift (shift to Extended ASCII)
+upperShift=true;break;case 236:// 05 Macro
+result.append("[)>\x1E05\x1D");resultTrailer.insert(0,"\x1E\x04");break;case 237:// 06 Macro
+result.append("[)>\x1E06\x1D");resultTrailer.insert(0,"\x1E\x04");break;case 238:// Latch to ANSI X12 encodation
+return Mode.ANSIX12_ENCODE;case 239:// Latch to Text encodation
+return Mode.TEXT_ENCODE;case 240:// Latch to EDIFACT encodation
+return Mode.EDIFACT_ENCODE;case 241:// ECI Character
+// TODO(bbrown): I think we need to support ECI
+// throw ReaderException.getInstance();
+// Ignore this symbol for now
+break;default:// Not to be used in ASCII encodation
+// but work around encoders that end with 254, latch back to ASCII
+if(oneByte!==254||bits.available()!==0){throw new FormatException();}break;}}}while(bits.available()>0);return Mode.ASCII_ENCODE;}/**
+ * See ISO 16022:2006, 5.2.5 and Annex C, Table C.1
+ */},{key:"decodeC40Segment",value:function decodeC40Segment(bits,result){// Three C40 values are encoded in a 16-bit value as
+// (1600 * C1) + (40 * C2) + C3 + 1
+// TODO(bbrown): The Upper Shift with C40 doesn't work in the 4 value scenario all the time
+var upperShift=false;var cValues=[];var shift=0;do{// If there is only one byte left then it will be encoded as ASCII
+if(bits.available()===8){return;}var firstByte=bits.readBits(8);if(firstByte===254){// Unlatch codeword
+return;}this.parseTwoBytes(firstByte,bits.readBits(8),cValues);for(var i=0;i<3;i++){var cValue=cValues[i];switch(shift){case 0:if(cValue<3){shift=cValue+1;}else if(cValue0);}/**
+ * See ISO 16022:2006, 5.2.6 and Annex C, Table C.2
+ */},{key:"decodeTextSegment",value:function decodeTextSegment(bits,result){// Three Text values are encoded in a 16-bit value as
+// (1600 * C1) + (40 * C2) + C3 + 1
+// TODO(bbrown): The Upper Shift with Text doesn't work in the 4 value scenario all the time
+var upperShift=false;var cValues=[];var shift=0;do{// If there is only one byte left then it will be encoded as ASCII
+if(bits.available()===8){return;}var firstByte=bits.readBits(8);if(firstByte===254){// Unlatch codeword
+return;}this.parseTwoBytes(firstByte,bits.readBits(8),cValues);for(var i=0;i<3;i++){var cValue=cValues[i];switch(shift){case 0:if(cValue<3){shift=cValue+1;}else if(cValue0);}/**
+ * See ISO 16022:2006, 5.2.7
+ */},{key:"decodeAnsiX12Segment",value:function decodeAnsiX12Segment(bits,result){// Three ANSI X12 values are encoded in a 16-bit value as
+// (1600 * C1) + (40 * C2) + C3 + 1
+var cValues=[];do{// If there is only one byte left then it will be encoded as ASCII
+if(bits.available()===8){return;}var firstByte=bits.readBits(8);if(firstByte===254){// Unlatch codeword
+return;}this.parseTwoBytes(firstByte,bits.readBits(8),cValues);for(var i=0;i<3;i++){var cValue=cValues[i];switch(cValue){case 0:// X12 segment terminator
+result.append('\r');break;case 1:// X12 segment separator *
+result.append('*');break;case 2:// X12 sub-element separator >
+result.append('>');break;case 3:// space
+result.append(' ');break;default:if(cValue<14){// 0 - 9
+result.append(String.fromCharCode(cValue+44));}else if(cValue<40){// A - Z
+result.append(String.fromCharCode(cValue+51));}else{throw new FormatException();}break;}}}while(bits.available()>0);}},{key:"parseTwoBytes",value:function parseTwoBytes(firstByte,secondByte,result){var fullBitValue=(firstByte<<8)+secondByte-1;var temp=Math.floor(fullBitValue/1600);result[0]=temp;fullBitValue-=temp*1600;temp=Math.floor(fullBitValue/40);result[1]=temp;result[2]=fullBitValue-temp*40;}/**
+ * See ISO 16022:2006, 5.2.8 and Annex C Table C.3
+ */},{key:"decodeEdifactSegment",value:function decodeEdifactSegment(bits,result){do{// If there is only two or less bytes left then it will be encoded as ASCII
+if(bits.available()<=16){return;}for(var i=0;i<4;i++){var edifactValue=bits.readBits(6);// Check for the unlatch character
+if(edifactValue===0x1F){// 011111
+// Read rest of byte, which should be 0, and stop
+var bitsLeft=8-bits.getBitOffset();if(bitsLeft!==8){bits.readBits(bitsLeft);}return;}if((edifactValue&0x20)===0){// no 1 in the leading (6th) bit
+edifactValue|=0x40;// Add a leading 01 to the 6 bit binary value
+}result.append(String.fromCharCode(edifactValue));}}while(bits.available()>0);}/**
+ * See ISO 16022:2006, 5.2.9 and Annex B, B.2
+ */},{key:"decodeBase256Segment",value:function decodeBase256Segment(bits,result,byteSegments){// Figure out how long the Base 256 Segment is.
+var codewordPosition=1+bits.getByteOffset();// position is 1-indexed
+var d1=this.unrandomize255State(bits.readBits(8),codewordPosition++);var count;if(d1===0){// Read the remainder of the symbol
+count=bits.available()/8|0;}else if(d1<250){count=d1;}else{count=250*(d1-249)+this.unrandomize255State(bits.readBits(8),codewordPosition++);}// We're seeing NegativeArraySizeException errors from users.
+if(count<0){throw new FormatException();}var bytes=new Uint8Array(count);for(var i=0;i=0?tempVariable:tempVariable+256;}}]);return DecodedBitStreamParser;}();/**
+ * See ISO 16022:2006, Annex C Table C.1
+ * The C40 Basic Character Set (*'s used for placeholders for the shift values)
+ */DecodedBitStreamParser.C40_BASIC_SET_CHARS=['*','*','*',' ','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'];DecodedBitStreamParser.C40_SHIFT2_SET_CHARS=['!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/',':',';','<','=','>','?','@','[','\\',']','^','_'];/**
+ * See ISO 16022:2006, Annex C Table C.2
+ * The Text Basic Character Set (*'s used for placeholders for the shift values)
+ */DecodedBitStreamParser.TEXT_BASIC_SET_CHARS=['*','*','*',' ','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'];// Shift 2 for Text is the same encoding as C40
+DecodedBitStreamParser.TEXT_SHIFT2_SET_CHARS=DecodedBitStreamParser.C40_SHIFT2_SET_CHARS;DecodedBitStreamParser.TEXT_SHIFT3_SET_CHARS=['`','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','{','|','}','~',String.fromCharCode(127)];/*
+ * 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.
+ */ /**
+ * The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting
+ * the Data Matrix Code from an image.
+ *
+ * @author bbrown@google.com (Brian Brown)
+ */var Decoder$1=/*#__PURE__*/function(){function Decoder$1(){_classCallCheck(this,Decoder$1);this.rsDecoder=new ReedSolomonDecoder(GenericGF.DATA_MATRIX_FIELD_256);}/**
+ * Decodes a Data Matrix Code represented as a {@link BitMatrix}. A 1 or "true" is taken
+ * to mean a black module.
+ *
+ * @param bits booleans representing white/black Data Matrix Code modules
+ * @return text and bytes encoded within the Data Matrix Code
+ * @throws FormatException if the Data Matrix Code cannot be decoded
+ * @throws ChecksumException if error correction fails
+ */_createClass(Decoder$1,[{key:"decode",value:function decode(bits){// Construct a parser and read version, error-correction level
+var parser=new BitMatrixParser(bits);var version=parser.getVersion();// Read codewords
+var codewords=parser.readCodewords();// Separate into data blocks
+var dataBlocks=DataBlock.getDataBlocks(codewords,version);// Count total number of data bytes
+var totalBytes=0;var _iterator37=_createForOfIteratorHelper(dataBlocks),_step37;try{for(_iterator37.s();!(_step37=_iterator37.n()).done;){var db=_step37.value;totalBytes+=db.getNumDataCodewords();}}catch(err){_iterator37.e(err);}finally{_iterator37.f();}var resultBytes=new Uint8Array(totalBytes);var dataBlocksCount=dataBlocks.length;// Error-correct and copy data blocks together into a stream of bytes
+for(var j=0;jGiven data and error-correction codewords received, possibly corrupted by errors, attempts to
+ * correct the errors in-place using Reed-Solomon error correction.
+ *
+ * @param codewordBytes data and error correction codewords
+ * @param numDataCodewords number of codewords that are data bytes
+ * @throws ChecksumException if error correction fails
+ */},{key:"correctErrors",value:function correctErrors(codewordBytes,numDataCodewords){// const numCodewords = codewordBytes.length;
+// First read into an array of ints
+var codewordsInts=new Int32Array(codewordBytes);// for (let i = 0; i < numCodewords; i++) {
+// codewordsInts[i] = codewordBytes[i] & 0xFF;
+// }
+try{this.rsDecoder.decode(codewordsInts,codewordBytes.length-numDataCodewords);}catch(ignored/* ReedSolomonException */){throw new ChecksumException();}// Copy back into array of bytes -- only need to worry about the bytes that were data
+// We don't care about errors in the error-correction codewords
+for(var i=0;iEncapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code
+ * is rotated or skewed, or partially obscured.
+ *
+ * @author Sean Owen
+ */var Detector$1=/*#__PURE__*/function(){function Detector$1(image){_classCallCheck(this,Detector$1);this.image=image;this.rectangleDetector=new WhiteRectangleDetector(this.image);}/**
+ * Detects a Data Matrix Code in an image.
+ *
+ * @return {@link DetectorResult} encapsulating results of detecting a Data Matrix Code
+ * @throws NotFoundException if no Data Matrix Code can be found
+ */_createClass(Detector$1,[{key:"detect",value:function detect(){var cornerPoints=this.rectangleDetector.detect();var points=this.detectSolid1(cornerPoints);points=this.detectSolid2(points);points[3]=this.correctTopRight(points);if(!points[3]){throw new NotFoundException();}points=this.shiftToModuleCenter(points);var topLeft=points[0];var bottomLeft=points[1];var bottomRight=points[2];var topRight=points[3];var dimensionTop=this.transitionsBetween(topLeft,topRight)+1;var dimensionRight=this.transitionsBetween(bottomRight,topRight)+1;if((dimensionTop&0x01)===1){dimensionTop+=1;}if((dimensionRight&0x01)===1){dimensionRight+=1;}if(4*dimensionTop<7*dimensionRight&&4*dimensionRight<7*dimensionTop){// The matrix is square
+dimensionTop=dimensionRight=Math.max(dimensionTop,dimensionRight);}var bits=Detector$1.sampleGrid(this.image,topLeft,bottomLeft,bottomRight,topRight,dimensionTop,dimensionRight);return new DetectorResult(bits,[topLeft,bottomLeft,bottomRight,topRight]);}},{key:"detectSolid1",value:/**
+ * Detect a solid side which has minimum transition.
+ */function detectSolid1(cornerPoints){// 0 2
+// 1 3
+var pointA=cornerPoints[0];var pointB=cornerPoints[1];var pointC=cornerPoints[3];var pointD=cornerPoints[2];var trAB=this.transitionsBetween(pointA,pointB);var trBC=this.transitionsBetween(pointB,pointC);var trCD=this.transitionsBetween(pointC,pointD);var trDA=this.transitionsBetween(pointD,pointA);// 0..3
+// : :
+// 1--2
+var min=trAB;var points=[pointD,pointA,pointB,pointC];if(min>trBC){min=trBC;points[0]=pointA;points[1]=pointB;points[2]=pointC;points[3]=pointD;}if(min>trCD){min=trCD;points[0]=pointB;points[1]=pointC;points[2]=pointD;points[3]=pointA;}if(min>trDA){points[0]=pointC;points[1]=pointD;points[2]=pointA;points[3]=pointB;}return points;}/**
+ * Detect a second solid side next to first solid side.
+ */},{key:"detectSolid2",value:function detectSolid2(points){// A..D
+// : :
+// B--C
+var pointA=points[0];var pointB=points[1];var pointC=points[2];var pointD=points[3];// Transition detection on the edge is not stable.
+// To safely detect, shift the points to the module center.
+var tr=this.transitionsBetween(pointA,pointD);var pointBs=Detector$1.shiftPoint(pointB,pointC,(tr+1)*4);var pointCs=Detector$1.shiftPoint(pointC,pointB,(tr+1)*4);var trBA=this.transitionsBetween(pointBs,pointA);var trCD=this.transitionsBetween(pointCs,pointD);// 0..3
+// | :
+// 1--2
+if(trBAsumc2){return candidate1;}else{return candidate2;}}/**
+ * Shift the edge points to the module center.
+ */},{key:"shiftToModuleCenter",value:function shiftToModuleCenter(points){// A..D
+// | :
+// B--C
+var pointA=points[0];var pointB=points[1];var pointC=points[2];var pointD=points[3];// calculate pseudo dimensions
+var dimH=this.transitionsBetween(pointA,pointD)+1;var dimV=this.transitionsBetween(pointC,pointD)+1;// shift points for safe dimension detection
+var pointAs=Detector$1.shiftPoint(pointA,pointB,dimV*4);var pointCs=Detector$1.shiftPoint(pointC,pointB,dimH*4);// calculate more precise dimensions
+dimH=this.transitionsBetween(pointAs,pointD)+1;dimV=this.transitionsBetween(pointCs,pointD)+1;if((dimH&0x01)===1){dimH+=1;}if((dimV&0x01)===1){dimV+=1;}// WhiteRectangleDetector returns points inside of the rectangle.
+// I want points on the edges.
+var centerX=(pointA.getX()+pointB.getX()+pointC.getX()+pointD.getX())/4;var centerY=(pointA.getY()+pointB.getY()+pointC.getY()+pointD.getY())/4;pointA=Detector$1.moveAway(pointA,centerX,centerY);pointB=Detector$1.moveAway(pointB,centerX,centerY);pointC=Detector$1.moveAway(pointC,centerX,centerY);pointD=Detector$1.moveAway(pointD,centerX,centerY);var pointBs;var pointDs;// shift points to the center of each modules
+pointAs=Detector$1.shiftPoint(pointA,pointB,dimV*4);pointAs=Detector$1.shiftPoint(pointAs,pointD,dimH*4);pointBs=Detector$1.shiftPoint(pointB,pointA,dimV*4);pointBs=Detector$1.shiftPoint(pointBs,pointC,dimH*4);pointCs=Detector$1.shiftPoint(pointC,pointD,dimV*4);pointCs=Detector$1.shiftPoint(pointCs,pointB,dimH*4);pointDs=Detector$1.shiftPoint(pointD,pointC,dimV*4);pointDs=Detector$1.shiftPoint(pointDs,pointA,dimH*4);return[pointAs,pointBs,pointCs,pointDs];}},{key:"isValid",value:function isValid(p){return p.getX()>=0&&p.getX()0&&p.getY()Math.abs(toX-fromX);if(steep){var temp=fromX;fromX=fromY;fromY=temp;temp=toX;toX=toY;toY=temp;}var dx=Math.abs(toX-fromX);var dy=Math.abs(toY-fromY);var error=-dx/2;var ystep=fromY0){if(y===toY){break;}y+=ystep;error-=dx;}}return transitions;}}],[{key:"shiftPoint",value:function shiftPoint(point,to,div){var x=(to.getX()-point.getX())/(div+1);var y=(to.getY()-point.getY())/(div+1);return new ResultPoint(point.getX()+x,point.getY()+y);}},{key:"moveAway",value:function moveAway(point,fromX,fromY){var x=point.getX();var y=point.getY();if(x1&&arguments[1]!==undefined?arguments[1]:null;var decoderResult;var points;if(hints!=null&&hints.has(DecodeHintType$1.PURE_BARCODE)){var bits=DataMatrixReader.extractPureBits(image.getBlackMatrix());decoderResult=this.decoder.decode(bits);points=DataMatrixReader.NO_POINTS;}else{var detectorResult=new Detector$1(image.getBlackMatrix()).detect();decoderResult=this.decoder.decode(detectorResult.getBits());points=detectorResult.getPoints();}var rawBytes=decoderResult.getRawBytes();var result=new Result(decoderResult.getText(),rawBytes,8*rawBytes.length,points,BarcodeFormat$1.DATA_MATRIX,System.currentTimeMillis());var byteSegments=decoderResult.getByteSegments();if(byteSegments!=null){result.putMetadata(ResultMetadataType$1.BYTE_SEGMENTS,byteSegments);}var ecLevel=decoderResult.getECLevel();if(ecLevel!=null){result.putMetadata(ResultMetadataType$1.ERROR_CORRECTION_LEVEL,ecLevel);}return result;}// @Override
+},{key:"reset",value:function reset(){// do nothing
+}/**
+ * This method detects a code in a "pure" image -- that is, pure monochrome image
+ * which contains only an unrotated, unskewed, image of a code, with some white border
+ * around it. This is a specialized method that works exceptionally fast in this special
+ * case.
+ *
+ * @see com.google.zxing.qrcode.QRCodeReader#extractPureBits(BitMatrix)
+ */}],[{key:"extractPureBits",value:function extractPureBits(image){var leftTopBlack=image.getTopLeftOnBit();var rightBottomBlack=image.getBottomRightOnBit();if(leftTopBlack==null||rightBottomBlack==null){throw new NotFoundException();}var moduleSize=this.moduleSize(leftTopBlack,image);var top=leftTopBlack[1];var bottom=rightBottomBlack[1];var left=leftTopBlack[0];var right=rightBottomBlack[0];var matrixWidth=(right-left+1)/moduleSize;var matrixHeight=(bottom-top+1)/moduleSize;if(matrixWidth<=0||matrixHeight<=0){throw new NotFoundException();}// Push in the "border" by half the module width so that we start
+// sampling in the middle of the module. Just in case the image is a
+// little off, this will help recover.
+var nudge=moduleSize/2;top+=nudge;left+=nudge;// Now just read off the bits
+var bits=new BitMatrix(matrixWidth,matrixHeight);for(var y=0;y0&&arguments[0]!==undefined?arguments[0]:500;_classCallCheck(this,BrowserDatamatrixCodeReader);return _super51.call(this,new DataMatrixReader(),timeBetweenScansMillis);}return _createClass(BrowserDatamatrixCodeReader);}(BrowserCodeReader);/*
+ * 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.
+ */var ErrorCorrectionLevelValues;(function(ErrorCorrectionLevelValues){ErrorCorrectionLevelValues[ErrorCorrectionLevelValues["L"]=0]="L";ErrorCorrectionLevelValues[ErrorCorrectionLevelValues["M"]=1]="M";ErrorCorrectionLevelValues[ErrorCorrectionLevelValues["Q"]=2]="Q";ErrorCorrectionLevelValues[ErrorCorrectionLevelValues["H"]=3]="H";})(ErrorCorrectionLevelValues||(ErrorCorrectionLevelValues={}));/**
+ * See ISO 18004:2006, 6.5.1. This enum encapsulates the four error correction levels
+ * defined by the QR code standard.
+ *
+ * @author Sean Owen
+ */var ErrorCorrectionLevel=/*#__PURE__*/function(){function ErrorCorrectionLevel(value,stringValue,bits/*int*/){_classCallCheck(this,ErrorCorrectionLevel);this.value=value;this.stringValue=stringValue;this.bits=bits;ErrorCorrectionLevel.FOR_BITS.set(bits,this);ErrorCorrectionLevel.FOR_VALUE.set(value,this);}_createClass(ErrorCorrectionLevel,[{key:"getValue",value:function getValue(){return this.value;}},{key:"getBits",value:function getBits(){return this.bits;}},{key:"toString",value:function toString(){return this.stringValue;}},{key:"equals",value:function equals(o){if(!(o instanceof ErrorCorrectionLevel)){return false;}var other=o;return this.value===other.value;}/**
+ * @param bits int containing the two bits encoding a QR Code's error correction level
+ * @return ErrorCorrectionLevel representing the encoded error correction level
+ */}],[{key:"fromString",value:function fromString(s){switch(s){case'L':return ErrorCorrectionLevel.L;case'M':return ErrorCorrectionLevel.M;case'Q':return ErrorCorrectionLevel.Q;case'H':return ErrorCorrectionLevel.H;default:throw new ArgumentException(s+'not available');}}},{key:"forBits",value:function forBits(bits/*int*/){if(bits<0||bits>=ErrorCorrectionLevel.FOR_BITS.size){throw new IllegalArgumentException();}return ErrorCorrectionLevel.FOR_BITS.get(bits);}}]);return ErrorCorrectionLevel;}();ErrorCorrectionLevel.FOR_BITS=new Map();ErrorCorrectionLevel.FOR_VALUE=new Map();/** L = ~7% correction */ErrorCorrectionLevel.L=new ErrorCorrectionLevel(ErrorCorrectionLevelValues.L,'L',0x01);/** M = ~15% correction */ErrorCorrectionLevel.M=new ErrorCorrectionLevel(ErrorCorrectionLevelValues.M,'M',0x00);/** Q = ~25% correction */ErrorCorrectionLevel.Q=new ErrorCorrectionLevel(ErrorCorrectionLevelValues.Q,'Q',0x03);/** H = ~30% correction */ErrorCorrectionLevel.H=new ErrorCorrectionLevel(ErrorCorrectionLevelValues.H,'H',0x02);/*
+ * 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.
+ */ /**
+ * Encapsulates a QR Code's format information, including the data mask used and
+ * error correction level.
+ *
+ * @author Sean Owen
+ * @see DataMask
+ * @see ErrorCorrectionLevel
+ */var FormatInformation=/*#__PURE__*/function(){function FormatInformation(formatInfo/*int*/){_classCallCheck(this,FormatInformation);// Bits 3,4
+this.errorCorrectionLevel=ErrorCorrectionLevel.forBits(formatInfo>>3&0x03);// Bottom 3 bits
+this.dataMask=/*(byte) */formatInfo&0x07;}_createClass(FormatInformation,[{key:"getErrorCorrectionLevel",value:function getErrorCorrectionLevel(){return this.errorCorrectionLevel;}},{key:"getDataMask",value:function getDataMask(){return this.dataMask;}/*@Override*/},{key:"hashCode",value:function hashCode(){return this.errorCorrectionLevel.getBits()<<3|this.dataMask;}/*@Override*/},{key:"equals",value:function equals(o){if(!(o instanceof FormatInformation)){return false;}var other=o;return this.errorCorrectionLevel===other.errorCorrectionLevel&&this.dataMask===other.dataMask;}}],[{key:"numBitsDiffering",value:function numBitsDiffering(a/*int*/,b/*int*/){return Integer.bitCount(a^b);}/**
+ * @param maskedFormatInfo1 format info indicator, with mask still applied
+ * @param maskedFormatInfo2 second copy of same info; both are checked at the same time
+ * to establish best match
+ * @return information about the format it specifies, or {@code null}
+ * if doesn't seem to match any known pattern
+ */},{key:"decodeFormatInformation",value:function decodeFormatInformation(maskedFormatInfo1/*int*/,maskedFormatInfo2/*int*/){var formatInfo=FormatInformation.doDecodeFormatInformation(maskedFormatInfo1,maskedFormatInfo2);if(formatInfo!==null){return formatInfo;}// Should return null, but, some QR codes apparently
+// do not mask this info. Try again by actually masking the pattern
+// first
+return FormatInformation.doDecodeFormatInformation(maskedFormatInfo1^FormatInformation.FORMAT_INFO_MASK_QR,maskedFormatInfo2^FormatInformation.FORMAT_INFO_MASK_QR);}},{key:"doDecodeFormatInformation",value:function doDecodeFormatInformation(maskedFormatInfo1/*int*/,maskedFormatInfo2/*int*/){// Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing
+var bestDifference=Number.MAX_SAFE_INTEGER;var bestFormatInfo=0;var _iterator38=_createForOfIteratorHelper(FormatInformation.FORMAT_INFO_DECODE_LOOKUP),_step38;try{for(_iterator38.s();!(_step38=_iterator38.n()).done;){var decodeInfo=_step38.value;var targetInfo=decodeInfo[0];if(targetInfo===maskedFormatInfo1||targetInfo===maskedFormatInfo2){// Found an exact match
+return new FormatInformation(decodeInfo[1]);}var bitsDifference=FormatInformation.numBitsDiffering(maskedFormatInfo1,targetInfo);if(bitsDifferenceEncapsulates a set of error-correction blocks in one symbol version. Most versions will
+ * use blocks of differing sizes within one version, so, this encapsulates the parameters for
+ * each set of blocks. It also holds the number of error-correction codewords per block since it
+ * will be the same across all blocks within one version.
+ */var ECBlocks$1=/*#__PURE__*/function(){function ECBlocks$1(ecCodewordsPerBlock/*int*/){_classCallCheck(this,ECBlocks$1);this.ecCodewordsPerBlock=ecCodewordsPerBlock;for(var _len4=arguments.length,ecBlocks=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){ecBlocks[_key4-1]=arguments[_key4];}this.ecBlocks=ecBlocks;}_createClass(ECBlocks$1,[{key:"getECCodewordsPerBlock",value:function getECCodewordsPerBlock(){return this.ecCodewordsPerBlock;}},{key:"getNumBlocks",value:function getNumBlocks(){var total=0;var ecBlocks=this.ecBlocks;var _iterator39=_createForOfIteratorHelper(ecBlocks),_step39;try{for(_iterator39.s();!(_step39=_iterator39.n()).done;){var ecBlock=_step39.value;total+=ecBlock.getCount();}}catch(err){_iterator39.e(err);}finally{_iterator39.f();}return total;}},{key:"getTotalECCodewords",value:function getTotalECCodewords(){return this.ecCodewordsPerBlock*this.getNumBlocks();}},{key:"getECBlocks",value:function getECBlocks(){return this.ecBlocks;}}]);return ECBlocks$1;}();/**
+ * Encapsulates the parameters for one error-correction block in one symbol version.
+ * This includes the number of data codewords, and the number of times a block with these
+ * parameters is used consecutively in the QR code version's format.
+ */var ECB$1=/*#__PURE__*/function(){function ECB$1(count/*int*/,dataCodewords/*int*/){_classCallCheck(this,ECB$1);this.count=count;this.dataCodewords=dataCodewords;}_createClass(ECB$1,[{key:"getCount",value:function getCount(){return this.count;}},{key:"getDataCodewords",value:function getDataCodewords(){return this.dataCodewords;}}]);return ECB$1;}();/*
+ * 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.
+ */ /**
+ * See ISO 18004:2006 Annex D
+ *
+ * @author Sean Owen
+ */var Version$1=/*#__PURE__*/function(){function Version$1(versionNumber/*int*/,alignmentPatternCenters){_classCallCheck(this,Version$1);this.versionNumber=versionNumber;this.alignmentPatternCenters=alignmentPatternCenters;for(var _len5=arguments.length,ecBlocks=new Array(_len5>2?_len5-2:0),_key5=2;_key5<_len5;_key5++){ecBlocks[_key5-2]=arguments[_key5];}this.ecBlocks=ecBlocks;var total=0;var ecCodewords=ecBlocks[0].getECCodewordsPerBlock();var ecbArray=ecBlocks[0].getECBlocks();var _iterator40=_createForOfIteratorHelper(ecbArray),_step40;try{for(_iterator40.s();!(_step40=_iterator40.n()).done;){var ecBlock=_step40.value;total+=ecBlock.getCount()*(ecBlock.getDataCodewords()+ecCodewords);}}catch(err){_iterator40.e(err);}finally{_iterator40.f();}this.totalCodewords=total;}_createClass(Version$1,[{key:"getVersionNumber",value:function getVersionNumber(){return this.versionNumber;}},{key:"getAlignmentPatternCenters",value:function getAlignmentPatternCenters(){return this.alignmentPatternCenters;}},{key:"getTotalCodewords",value:function getTotalCodewords(){return this.totalCodewords;}},{key:"getDimensionForVersion",value:function getDimensionForVersion(){return 17+4*this.versionNumber;}},{key:"getECBlocksForLevel",value:function getECBlocksForLevel(ecLevel){return this.ecBlocks[ecLevel.getValue()];// TYPESCRIPTPORT: original was using ordinal, and using the order of levels as defined in ErrorCorrectionLevel enum (LMQH)
+// I will use the direct value from ErrorCorrectionLevelValues enum which in typescript goes to a number
+}/**
+ * Deduces version information purely from QR Code dimensions.
+ *
+ * @param dimension dimension in modules
+ * @return Version for a QR Code of that dimension
+ * @throws FormatException if dimension is not 1 mod 4
+ */},{key:"buildFunctionPattern",value:/**
+ * See ISO 18004:2006 Annex E
+ */function buildFunctionPattern(){var dimension=this.getDimensionForVersion();var bitMatrix=new BitMatrix(dimension);// Top left finder pattern + separator + format
+bitMatrix.setRegion(0,0,9,9);// Top right finder pattern + separator + format
+bitMatrix.setRegion(dimension-8,0,8,9);// Bottom left finder pattern + separator + format
+bitMatrix.setRegion(0,dimension-8,9,8);// Alignment patterns
+var max=this.alignmentPatternCenters.length;for(var x=0;x6){// Version info, top right
+bitMatrix.setRegion(dimension-11,0,3,6);// Version info, bottom left
+bitMatrix.setRegion(0,dimension-11,6,3);}return bitMatrix;}/*@Override*/},{key:"toString",value:function toString(){return''+this.versionNumber;}}],[{key:"getProvisionalVersionForDimension",value:function getProvisionalVersionForDimension(dimension/*int*/){if(dimension%4!==1){throw new FormatException();}try{return this.getVersionForNumber((dimension-17)/4);}catch(ignored/*: IllegalArgumentException*/){throw new FormatException();}}},{key:"getVersionForNumber",value:function getVersionForNumber(versionNumber/*int*/){if(versionNumber<1||versionNumber>40){throw new IllegalArgumentException();}return Version$1.VERSIONS[versionNumber-1];}},{key:"decodeVersionInformation",value:function decodeVersionInformation(versionBits/*int*/){var bestDifference=Number.MAX_SAFE_INTEGER;var bestVersion=0;for(var i=0;iEncapsulates data masks for the data bits in a QR code, per ISO 18004:2006 6.8. Implementations
+ * of this class can un-mask a raw BitMatrix. For simplicity, they will unmask the entire BitMatrix,
+ * including areas used for finder patterns, timing patterns, etc. These areas should be unused
+ * after the point they are unmasked anyway.
+ *
+ * Note that the diagram in section 6.8.1 is misleading since it indicates that i is column position
+ * and j is row position. In fact, as the text says, i is row position and j is column position.
+ *
+ * @author Sean Owen
+ */var DataMask=/*#__PURE__*/function(){// See ISO 18004:2006 6.8.1
+function DataMask(value,isMasked){_classCallCheck(this,DataMask);this.value=value;this.isMasked=isMasked;}// End of enum constants.
+/**
+ * Implementations of this method reverse the data masking process applied to a QR Code and
+ * make its bits ready to read.
+ *
+ * @param bits representation of QR Code bits
+ * @param dimension dimension of QR Code, represented by bits, being unmasked
+ */_createClass(DataMask,[{key:"unmaskBitMatrix",value:function unmaskBitMatrix(bits,dimension/*int*/){for(var i=0;i= 21 and 1 mod 4
+ */function BitMatrixParser$1(bitMatrix){_classCallCheck(this,BitMatrixParser$1);var dimension=bitMatrix.getHeight();if(dimension<21||(dimension&0x03)!==1){throw new FormatException();}this.bitMatrix=bitMatrix;}/**
+ * Reads format information from one of its two locations within the QR Code.
+ *
+ * @return {@link FormatInformation} encapsulating the QR Code's format info
+ * @throws FormatException if both format information locations cannot be parsed as
+ * the valid encoding of format information
+ */_createClass(BitMatrixParser$1,[{key:"readFormatInformation",value:function readFormatInformation(){if(this.parsedFormatInfo!==null&&this.parsedFormatInfo!==undefined){return this.parsedFormatInfo;}// Read top-left format info bits
+var formatInfoBits1=0;for(var i=0;i<6;i++){formatInfoBits1=this.copyBit(i,8,formatInfoBits1);}// .. and skip a bit in the timing pattern ...
+formatInfoBits1=this.copyBit(7,8,formatInfoBits1);formatInfoBits1=this.copyBit(8,8,formatInfoBits1);formatInfoBits1=this.copyBit(8,7,formatInfoBits1);// .. and skip a bit in the timing pattern ...
+for(var j=5;j>=0;j--){formatInfoBits1=this.copyBit(8,j,formatInfoBits1);}// Read the top-right/bottom-left pattern too
+var dimension=this.bitMatrix.getHeight();var formatInfoBits2=0;var jMin=dimension-7;for(var _j4=dimension-1;_j4>=jMin;_j4--){formatInfoBits2=this.copyBit(8,_j4,formatInfoBits2);}for(var _i28=dimension-8;_i28Reads version information from one of its two locations within the QR Code.
+ *
+ * @return {@link Version} encapsulating the QR Code's version
+ * @throws FormatException if both version information locations cannot be parsed as
+ * the valid encoding of version information
+ */},{key:"readVersion",value:function readVersion(){if(this.parsedVersion!==null&&this.parsedVersion!==undefined){return this.parsedVersion;}var dimension=this.bitMatrix.getHeight();var provisionalVersion=Math.floor((dimension-17)/4);if(provisionalVersion<=6){return Version$1.getVersionForNumber(provisionalVersion);}// Read top-right version info: 3 wide by 6 tall
+var versionBits=0;var ijMin=dimension-11;for(var j=5;j>=0;j--){for(var i=dimension-9;i>=ijMin;i--){versionBits=this.copyBit(i,j,versionBits);}}var theParsedVersion=Version$1.decodeVersionInformation(versionBits);if(theParsedVersion!==null&&theParsedVersion.getDimensionForVersion()===dimension){this.parsedVersion=theParsedVersion;return theParsedVersion;}// Hmm, failed. Try bottom left: 6 wide by 3 tall
+versionBits=0;for(var _i29=5;_i29>=0;_i29--){for(var _j5=dimension-9;_j5>=ijMin;_j5--){versionBits=this.copyBit(_i29,_j5,versionBits);}}theParsedVersion=Version$1.decodeVersionInformation(versionBits);if(theParsedVersion!==null&&theParsedVersion.getDimensionForVersion()===dimension){this.parsedVersion=theParsedVersion;return theParsedVersion;}throw new FormatException();}},{key:"copyBit",value:function copyBit(i/*int*/,j/*int*/,versionBits/*int*/){var bit=this.isMirror?this.bitMatrix.get(j,i):this.bitMatrix.get(i,j);return bit?versionBits<<1|0x1:versionBits<<1;}/**
+ * Reads the bits in the {@link BitMatrix} representing the finder pattern in the
+ * correct order in order to reconstruct the codewords bytes contained within the
+ * QR Code.
+ *
+ * @return bytes encoded within the QR Code
+ * @throws FormatException if the exact number of bytes expected is not read
+ */},{key:"readCodewords",value:function readCodewords(){var formatInfo=this.readFormatInformation();var version=this.readVersion();// Get the data mask for the format used in this QR Code. This will exclude
+// some bits from reading as we wind through the bit matrix.
+var dataMask=DataMask.values.get(formatInfo.getDataMask());var dimension=this.bitMatrix.getHeight();dataMask.unmaskBitMatrix(this.bitMatrix,dimension);var functionPattern=version.buildFunctionPattern();var readingUp=true;var result=new Uint8Array(version.getTotalCodewords());var resultOffset=0;var currentByte=0;var bitsRead=0;// Read columns in pairs, from right to left
+for(var j=dimension-1;j>0;j-=2){if(j===6){// Skip whole column with vertical alignment pattern
+// saves time and makes the other code proceed more cleanly
+j--;}// Read alternatingly from bottom to top then top to bottom
+for(var count=0;countEncapsulates a block of data within a QR Code. QR Codes may split their data into
+ * multiple blocks, each of which is a unit of data and error-correction codewords. Each
+ * is represented by an instance of this class.
+ *
+ * @author Sean Owen
+ */var DataBlock$1=/*#__PURE__*/function(){function DataBlock$1(numDataCodewords/*int*/,codewords){_classCallCheck(this,DataBlock$1);this.numDataCodewords=numDataCodewords;this.codewords=codewords;}/**
+ * When QR Codes use multiple data blocks, they are actually interleaved.
+ * That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This
+ * method will separate the data into original blocks.
+ *
+ * @param rawCodewords bytes as read directly from the QR Code
+ * @param version version of the QR Code
+ * @param ecLevel error-correction level of the QR Code
+ * @return DataBlocks containing original bytes, "de-interleaved" from representation in the
+ * QR Code
+ */_createClass(DataBlock$1,[{key:"getNumDataCodewords",value:function getNumDataCodewords(){return this.numDataCodewords;}},{key:"getCodewords",value:function getCodewords(){return this.codewords;}}],[{key:"getDataBlocks",value:function getDataBlocks(rawCodewords,version,ecLevel){if(rawCodewords.length!==version.getTotalCodewords()){throw new IllegalArgumentException();}// Figure out the number and size of data blocks used by this version and
+// error correction level
+var ecBlocks=version.getECBlocksForLevel(ecLevel);// First count the total number of data blocks
+var totalBlocks=0;var ecBlockArray=ecBlocks.getECBlocks();var _iterator41=_createForOfIteratorHelper(ecBlockArray),_step41;try{for(_iterator41.s();!(_step41=_iterator41.n()).done;){var ecBlock=_step41.value;totalBlocks+=ecBlock.getCount();}// Now establish DataBlocks of the appropriate size and number of data codewords
+}catch(err){_iterator41.e(err);}finally{_iterator41.f();}var result=new Array(totalBlocks);var numResultBlocks=0;var _iterator42=_createForOfIteratorHelper(ecBlockArray),_step42;try{for(_iterator42.s();!(_step42=_iterator42.n()).done;){var _ecBlock2=_step42.value;for(var _i31=0;_i31<_ecBlock2.getCount();_i31++){var numDataCodewords=_ecBlock2.getDataCodewords();var numBlockCodewords=ecBlocks.getECCodewordsPerBlock()+numDataCodewords;result[numResultBlocks++]=new DataBlock$1(numDataCodewords,new Uint8Array(numBlockCodewords));}}// All blocks have the same amount of data, except that the last n
+// (where n may be 0) have 1 more byte. Figure out where these start.
+}catch(err){_iterator42.e(err);}finally{_iterator42.f();}var shorterBlocksTotalCodewords=result[0].codewords.length;var longerBlocksStartAt=result.length-1;// TYPESCRIPTPORT: check length is correct here
+while(longerBlocksStartAt>=0){var numCodewords=result[longerBlocksStartAt].codewords.length;if(numCodewords===shorterBlocksTotalCodewords){break;}longerBlocksStartAt--;}longerBlocksStartAt++;var shorterBlocksNumDataCodewords=shorterBlocksTotalCodewords-ecBlocks.getECCodewordsPerBlock();// The last elements of result may be 1 element longer
+// first fill out as many elements as all of them have
+var rawCodewordsOffset=0;for(var i=0;iSee ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which
+ * data can be encoded to bits in the QR code standard.
+ *
+ * @author Sean Owen
+ */var Mode$1=/*#__PURE__*/function(){function Mode$1(value,stringValue,characterCountBitsForVersions,bits/*int*/){_classCallCheck(this,Mode$1);this.value=value;this.stringValue=stringValue;this.characterCountBitsForVersions=characterCountBitsForVersions;this.bits=bits;Mode$1.FOR_BITS.set(bits,this);Mode$1.FOR_VALUE.set(value,this);}/**
+ * @param bits four bits encoding a QR Code data mode
+ * @return Mode encoded by these bits
+ * @throws IllegalArgumentException if bits do not correspond to a known mode
+ */_createClass(Mode$1,[{key:"getCharacterCountBits",value:/**
+ * @param version version in question
+ * @return number of bits used, in this QR Code symbol {@link Version}, to encode the
+ * count of characters that will follow encoded in this Mode
+ */function getCharacterCountBits(version){var versionNumber=version.getVersionNumber();var offset;if(versionNumber<=9){offset=0;}else if(versionNumber<=26){offset=1;}else{offset=2;}return this.characterCountBitsForVersions[offset];}},{key:"getValue",value:function getValue(){return this.value;}},{key:"getBits",value:function getBits(){return this.bits;}},{key:"equals",value:function equals(o){if(!(o instanceof Mode$1)){return false;}var other=o;return this.value===other.value;}},{key:"toString",value:function toString(){return this.stringValue;}}],[{key:"forBits",value:function forBits(bits/*int*/){var mode=Mode$1.FOR_BITS.get(bits);if(undefined===mode){throw new IllegalArgumentException();}return mode;}}]);return Mode$1;}();Mode$1.FOR_BITS=new Map();Mode$1.FOR_VALUE=new Map();Mode$1.TERMINATOR=new Mode$1(ModeValues.TERMINATOR,'TERMINATOR',Int32Array.from([0,0,0]),0x00);// Not really a mode...
+Mode$1.NUMERIC=new Mode$1(ModeValues.NUMERIC,'NUMERIC',Int32Array.from([10,12,14]),0x01);Mode$1.ALPHANUMERIC=new Mode$1(ModeValues.ALPHANUMERIC,'ALPHANUMERIC',Int32Array.from([9,11,13]),0x02);Mode$1.STRUCTURED_APPEND=new Mode$1(ModeValues.STRUCTURED_APPEND,'STRUCTURED_APPEND',Int32Array.from([0,0,0]),0x03);// Not supported
+Mode$1.BYTE=new Mode$1(ModeValues.BYTE,'BYTE',Int32Array.from([8,16,16]),0x04);Mode$1.ECI=new Mode$1(ModeValues.ECI,'ECI',Int32Array.from([0,0,0]),0x07);// character counts don't apply
+Mode$1.KANJI=new Mode$1(ModeValues.KANJI,'KANJI',Int32Array.from([8,10,12]),0x08);Mode$1.FNC1_FIRST_POSITION=new Mode$1(ModeValues.FNC1_FIRST_POSITION,'FNC1_FIRST_POSITION',Int32Array.from([0,0,0]),0x05);Mode$1.FNC1_SECOND_POSITION=new Mode$1(ModeValues.FNC1_SECOND_POSITION,'FNC1_SECOND_POSITION',Int32Array.from([0,0,0]),0x09);/** See GBT 18284-2000; "Hanzi" is a transliteration of this mode name. */Mode$1.HANZI=new Mode$1(ModeValues.HANZI,'HANZI',Int32Array.from([8,10,12]),0x0D);/*
+ * 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.
+ */ /*import java.io.UnsupportedEncodingException;*/ /*import java.util.ArrayList;*/ /*import java.util.Collection;*/ /*import java.util.List;*/ /*import java.util.Map;*/ /**
+ * QR Codes can encode text as bits in one of several modes, and can use multiple modes
+ * in one QR Code. This class decodes the bits back into text.
+ *
+ * See ISO 18004:2006, 6.4.3 - 6.4.7
+ *
+ * @author Sean Owen
+ */var DecodedBitStreamParser$1=/*#__PURE__*/function(){function DecodedBitStreamParser$1(){_classCallCheck(this,DecodedBitStreamParser$1);}_createClass(DecodedBitStreamParser$1,null,[{key:"decode",value:function decode(bytes,version,ecLevel,hints){var bits=new BitSource(bytes);var result=new StringBuilder();var byteSegments=new Array();// 1
+// TYPESCRIPTPORT: I do not use constructor with size 1 as in original Java means capacity and the array length is checked below
+var symbolSequence=-1;var parityData=-1;try{var currentCharacterSetECI=null;var fc1InEffect=false;var mode;do{// While still another segment to read...
+if(bits.available()<4){// OK, assume we're done. Really, a TERMINATOR mode should have been recorded here
+mode=Mode$1.TERMINATOR;}else{var modeBits=bits.readBits(4);mode=Mode$1.forBits(modeBits);// mode is encoded by 4 bits
+}switch(mode){case Mode$1.TERMINATOR:break;case Mode$1.FNC1_FIRST_POSITION:case Mode$1.FNC1_SECOND_POSITION:// We do little with FNC1 except alter the parsed result a bit according to the spec
+fc1InEffect=true;break;case Mode$1.STRUCTURED_APPEND:if(bits.available()<16){throw new FormatException();}// sequence number and parity is added later to the result metadata
+// Read next 8 bits (symbol sequence #) and 8 bits (data: parity), then continue
+symbolSequence=bits.readBits(8);parityData=bits.readBits(8);break;case Mode$1.ECI:// Count doesn't apply to ECI
+var value=DecodedBitStreamParser$1.parseECIValue(bits);currentCharacterSetECI=CharacterSetECI.getCharacterSetECIByValue(value);if(currentCharacterSetECI===null){throw new FormatException();}break;case Mode$1.HANZI:// First handle Hanzi mode which does not start with character count
+// Chinese mode contains a sub set indicator right after mode indicator
+var subset=bits.readBits(4);var countHanzi=bits.readBits(mode.getCharacterCountBits(version));if(subset===DecodedBitStreamParser$1.GB2312_SUBSET){DecodedBitStreamParser$1.decodeHanziSegment(bits,result,countHanzi);}break;default:// "Normal" QR code modes:
+// How many characters will follow, encoded in this mode?
+var count=bits.readBits(mode.getCharacterCountBits(version));switch(mode){case Mode$1.NUMERIC:DecodedBitStreamParser$1.decodeNumericSegment(bits,result,count);break;case Mode$1.ALPHANUMERIC:DecodedBitStreamParser$1.decodeAlphanumericSegment(bits,result,count,fc1InEffect);break;case Mode$1.BYTE:DecodedBitStreamParser$1.decodeByteSegment(bits,result,count,currentCharacterSetECI,byteSegments,hints);break;case Mode$1.KANJI:DecodedBitStreamParser$1.decodeKanjiSegment(bits,result,count);break;default:throw new FormatException();}break;}}while(mode!==Mode$1.TERMINATOR);}catch(iae/*: IllegalArgumentException*/){// from readBits() calls
+throw new FormatException();}return new DecoderResult(bytes,result.toString(),byteSegments.length===0?null:byteSegments,ecLevel===null?null:ecLevel.toString(),symbolSequence,parityData);}/**
+ * See specification GBT 18284-2000
+ */},{key:"decodeHanziSegment",value:function decodeHanziSegment(bits,result,count/*int*/){// Don't crash trying to read more bits than we have available.
+if(count*13>bits.available()){throw new FormatException();}// Each character will require 2 bytes. Read the characters as 2-byte pairs
+// and decode as GB2312 afterwards
+var buffer=new Uint8Array(2*count);var offset=0;while(count>0){// Each 13 bits encodes a 2-byte character
+var twoBytes=bits.readBits(13);var assembledTwoBytes=twoBytes/0x060<<8&0xFFFFFFFF|twoBytes%0x060;if(assembledTwoBytes<0x003BF){// In the 0xA1A1 to 0xAAFE range
+assembledTwoBytes+=0x0A1A1;}else{// In the 0xB0A1 to 0xFAFE range
+assembledTwoBytes+=0x0A6A1;}buffer[offset]=/*(byte) */assembledTwoBytes>>8&0xFF;buffer[offset+1]=/*(byte) */assembledTwoBytes&0xFF;offset+=2;count--;}try{result.append(StringEncoding.decode(buffer,StringUtils.GB2312));// TYPESCRIPTPORT: TODO: implement GB2312 decode. StringView from MDN could be a starting point
+}catch(ignored/*: UnsupportedEncodingException*/){throw new FormatException(ignored);}}},{key:"decodeKanjiSegment",value:function decodeKanjiSegment(bits,result,count/*int*/){// Don't crash trying to read more bits than we have available.
+if(count*13>bits.available()){throw new FormatException();}// Each character will require 2 bytes. Read the characters as 2-byte pairs
+// and decode as Shift_JIS afterwards
+var buffer=new Uint8Array(2*count);var offset=0;while(count>0){// Each 13 bits encodes a 2-byte character
+var twoBytes=bits.readBits(13);var assembledTwoBytes=twoBytes/0x0C0<<8&0xFFFFFFFF|twoBytes%0x0C0;if(assembledTwoBytes<0x01F00){// In the 0x8140 to 0x9FFC range
+assembledTwoBytes+=0x08140;}else{// In the 0xE040 to 0xEBBF range
+assembledTwoBytes+=0x0C140;}buffer[offset]=/*(byte) */assembledTwoBytes>>8;buffer[offset+1]=/*(byte) */assembledTwoBytes;offset+=2;count--;}// Shift_JIS may not be supported in some environments:
+try{result.append(StringEncoding.decode(buffer,StringUtils.SHIFT_JIS));// TYPESCRIPTPORT: TODO: implement SHIFT_JIS decode. StringView from MDN could be a starting point
+}catch(ignored/*: UnsupportedEncodingException*/){throw new FormatException(ignored);}}},{key:"decodeByteSegment",value:function decodeByteSegment(bits,result,count/*int*/,currentCharacterSetECI,byteSegments,hints){// Don't crash trying to read more bits than we have available.
+if(8*count>bits.available()){throw new FormatException();}var readBytes=new Uint8Array(count);for(var i=0;i=DecodedBitStreamParser$1.ALPHANUMERIC_CHARS.length){throw new FormatException();}return DecodedBitStreamParser$1.ALPHANUMERIC_CHARS[value];}},{key:"decodeAlphanumericSegment",value:function decodeAlphanumericSegment(bits,result,count/*int*/,fc1InEffect){// Read two characters at a time
+var start=result.length();while(count>1){if(bits.available()<11){throw new FormatException();}var nextTwoCharsBits=bits.readBits(11);result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(nextTwoCharsBits/45)));result.append(DecodedBitStreamParser$1.toAlphaNumericChar(nextTwoCharsBits%45));count-=2;}if(count===1){// special case: one character left
+if(bits.available()<6){throw new FormatException();}result.append(DecodedBitStreamParser$1.toAlphaNumericChar(bits.readBits(6)));}// See section 6.4.8.1, 6.4.8.2
+if(fc1InEffect){// We need to massage the result a bit if in an FNC1 mode:
+for(var i=start;i=3){// Each 10 bits encodes three digits
+if(bits.available()<10){throw new FormatException();}var threeDigitsBits=bits.readBits(10);if(threeDigitsBits>=1000){throw new FormatException();}result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(threeDigitsBits/100)));result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(threeDigitsBits/10)%10));result.append(DecodedBitStreamParser$1.toAlphaNumericChar(threeDigitsBits%10));count-=3;}if(count===2){// Two digits left over to read, encoded in 7 bits
+if(bits.available()<7){throw new FormatException();}var twoDigitsBits=bits.readBits(7);if(twoDigitsBits>=100){throw new FormatException();}result.append(DecodedBitStreamParser$1.toAlphaNumericChar(Math.floor(twoDigitsBits/10)));result.append(DecodedBitStreamParser$1.toAlphaNumericChar(twoDigitsBits%10));}else if(count===1){// One digit left over to read
+if(bits.available()<4){throw new FormatException();}var digitBits=bits.readBits(4);if(digitBits>=10){throw new FormatException();}result.append(DecodedBitStreamParser$1.toAlphaNumericChar(digitBits));}}},{key:"parseECIValue",value:function parseECIValue(bits){var firstByte=bits.readBits(8);if((firstByte&0x80)===0){// just one byte
+return firstByte&0x7F;}if((firstByte&0xC0)===0x80){// two bytes
+var secondByte=bits.readBits(8);return(firstByte&0x3F)<<8&0xFFFFFFFF|secondByte;}if((firstByte&0xE0)===0xC0){// three bytes
+var secondThirdBytes=bits.readBits(16);return(firstByte&0x1F)<<16&0xFFFFFFFF|secondThirdBytes;}throw new FormatException();}}]);return DecodedBitStreamParser$1;}();/**
+ * See ISO 18004:2006, 6.4.4 Table 5
+ */DecodedBitStreamParser$1.ALPHANUMERIC_CHARS='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';DecodedBitStreamParser$1.GB2312_SUBSET=1;// function Uint8ArrayToString(a: Uint8Array): string {
+// const CHUNK_SZ = 0x8000;
+// const c = new StringBuilder();
+// for (let i = 0, length = a.length; i < length; i += CHUNK_SZ) {
+// c.append(String.fromCharCode.apply(null, a.subarray(i, i + CHUNK_SZ)));
+// }
+// return c.toString();
+// }
+/*
+ * Copyright 2013 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.
+ */ /**
+ * Meta-data container for QR Code decoding. Instances of this class may be used to convey information back to the
+ * decoding caller. Callers are expected to process this.
+ *
+ * @see com.google.zxing.common.DecoderResult#getOther()
+ */var QRCodeDecoderMetaData=/*#__PURE__*/function(){function QRCodeDecoderMetaData(mirrored){_classCallCheck(this,QRCodeDecoderMetaData);this.mirrored=mirrored;}/**
+ * @return true if the QR Code was mirrored.
+ */_createClass(QRCodeDecoderMetaData,[{key:"isMirrored",value:function isMirrored(){return this.mirrored;}/**
+ * Apply the result points' order correction due to mirroring.
+ *
+ * @param points Array of points to apply mirror correction to.
+ */},{key:"applyMirroredCorrection",value:function applyMirroredCorrection(points){if(!this.mirrored||points===null||points.length<3){return;}var bottomLeft=points[0];points[0]=points[2];points[2]=bottomLeft;// No need to 'fix' top-left and alignment pattern.
+}}]);return QRCodeDecoderMetaData;}();/*
+ * 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.
+ */ /*import java.util.Map;*/ /**
+ *