: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
const MAX_ENCODED_NUM_SIZE = 19;
this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
if (this.pos >= this.end) {
return this.buffer[this.pos++];
const b = this.readByte();
throw new FormatError("unexpected EOF in bcmap");
const n = this.readNumber();
return n & 1 ? ~(n >>> 1) : n >>> 1;
num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
readHexNumber(num, size) {
const stack = this.tmpBuf;
const b = this.readByte();
throw new FormatError("unexpected EOF in bcmap");
while (bufferSize < 8 && stack.length > 0) {
buffer |= stack[--sp] << bufferSize;
readHexSigned(num, size) {
this.readHexNumber(num, size);
const sign = num[size] & 1 ? 255 : 0;
for (let i = 0; i <= size; i++) {
c = (c & 1) << 8 | num[i];
const len = this.readNumber(),
for (let i = 0; i < len; i++) {
buf[i] = this.readNumber();
return String.fromCharCode(...buf);
async process(data, cMap, extend) {
const stream = new BinaryCMapStream(data);
const header = stream.readByte();
cMap.vertical = !!(header & 1);
const start = new Uint8Array(MAX_NUM_SIZE);
const end = new Uint8Array(MAX_NUM_SIZE);
const char = new Uint8Array(MAX_NUM_SIZE);
const charCode = new Uint8Array(MAX_NUM_SIZE);
const tmp = new Uint8Array(MAX_NUM_SIZE);
while ((b = stream.readByte()) >= 0) {
useCMap = stream.readString();
const sequence = !!(b & 0x10);
if (dataSize + 1 > MAX_NUM_SIZE) {
throw new Error("BinaryCMapReader.process: Invalid dataSize.");
const subitemsCount = stream.readNumber();
stream.readHex(start, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
for (let i = 1; i < subitemsCount; i++) {
stream.readHexNumber(start, dataSize);
addHex(start, end, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
stream.readHex(start, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
for (let i = 1; i < subitemsCount; i++) {
stream.readHexNumber(start, dataSize);
addHex(start, end, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
stream.readHex(char, dataSize);
code = stream.readNumber();
cMap.mapOne(hexToInt(char, dataSize), code);
for (let i = 1; i < subitemsCount; i++) {
stream.readHexNumber(tmp, dataSize);
addHex(char, tmp, dataSize);
code = stream.readSigned() + (code + 1);
cMap.mapOne(hexToInt(char, dataSize), code);
stream.readHex(start, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
code = stream.readNumber();
cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
for (let i = 1; i < subitemsCount; i++) {
stream.readHexNumber(start, dataSize);
addHex(start, end, dataSize);
stream.readHexNumber(end, dataSize);
addHex(end, start, dataSize);
code = stream.readNumber();
cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
stream.readHex(char, ucs2DataSize);
stream.readHex(charCode, dataSize);
cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
for (let i = 1; i < subitemsCount; i++) {
incHex(char, ucs2DataSize);
stream.readHexNumber(tmp, ucs2DataSize);
addHex(char, tmp, ucs2DataSize);
incHex(charCode, dataSize);
stream.readHexSigned(tmp, dataSize);
addHex(charCode, tmp, dataSize);
cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
stream.readHex(start, ucs2DataSize);
stream.readHexNumber(end, ucs2DataSize);
addHex(end, start, ucs2DataSize);
stream.readHex(charCode, dataSize);
cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
for (let i = 1; i < subitemsCount; i++) {
incHex(end, ucs2DataSize);
stream.readHexNumber(start, ucs2DataSize);
addHex(start, end, ucs2DataSize);
stream.readHexNumber(end, ucs2DataSize);
addHex(end, start, ucs2DataSize);
stream.readHex(charCode, dataSize);
cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);
;// CONCATENATED MODULE: ./src/core/decode_stream.js
const emptyBuffer = new Uint8Array(0);
class DecodeStream extends BaseStream {
constructor(maybeMinBufferLength) {
this._rawMinBufferLength = maybeMinBufferLength || 0;
this.buffer = emptyBuffer;
this.minBufferLength = 512;
if (maybeMinBufferLength) {
while (this.minBufferLength < maybeMinBufferLength) {
this.minBufferLength *= 2;
while (!this.eof && this.bufferLength === 0) {
return this.bufferLength === 0;
ensureBuffer(requested) {
const buffer = this.buffer;
if (requested <= buffer.byteLength) {
let size = this.minBufferLength;
while (size < requested) {
const buffer2 = new Uint8Array(size);
return this.buffer = buffer2;
while (this.bufferLength <= pos) {
return this.buffer[this.pos++];
getBytes(length, ignoreColorSpace = false) {
this.ensureBuffer(pos + length);
while (!this.eof && this.bufferLength < end) {
this.readBlock(ignoreColorSpace);
const bufEnd = this.bufferLength;
this.readBlock(ignoreColorSpace);
return this.buffer.subarray(pos, end);
makeSubStream(start, length, dict = null) {
if (length === undefined) {
const end = start + length;
while (this.bufferLength <= end && !this.eof) {
return new Stream(this.buffer, start, length, dict);
return this.str ? this.str.getBaseStreams() : null;
class StreamsSequenceStream extends DecodeStream {
constructor(streams, onError = null) {
for (const stream of streams) {
maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;
const streams = this.streams;
if (streams.length === 0) {
const stream = streams.shift();
chunk = stream.getBytes();
this._onError(reason, stream.dict?.objId);
const bufferLength = this.bufferLength;
const newLength = bufferLength + chunk.length;
const buffer = this.ensureBuffer(newLength);
buffer.set(chunk, bufferLength);
this.bufferLength = newLength;
const baseStreamsBuf = [];
for (const stream of this.streams) {
const baseStreams = stream.getBaseStreams();
baseStreamsBuf.push(...baseStreams);
return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;
;// CONCATENATED MODULE: ./src/core/ascii_85_stream.js
class Ascii85Stream extends DecodeStream {
constructor(str, maybeLength) {
this.input = new Uint8Array(5);
const Z_LOWER_CHAR = 0x7a;
while (isWhiteSpace(c)) {
if (c === EOF || c === TILDA_CHAR) {
const bufferLength = this.bufferLength;
if (c === Z_LOWER_CHAR) {
buffer = this.ensureBuffer(bufferLength + 4);
for (i = 0; i < 4; ++i) {
buffer[bufferLength + i] = 0;
const input = this.input;
for (i = 1; i < 5; ++i) {
while (isWhiteSpace(c)) {
if (c === EOF || c === TILDA_CHAR) {
buffer = this.ensureBuffer(bufferLength + i - 1);
this.bufferLength += i - 1;
for (i = 0; i < 5; ++i) {
t = t * 85 + (input[i] - 0x21);
for (i = 3; i >= 0; --i) {
buffer[bufferLength + i] = t & 0xff;
;// CONCATENATED MODULE: ./src/core/ascii_hex_stream.js
class AsciiHexStream extends DecodeStream {
constructor(str, maybeLength) {
const UPSTREAM_BLOCK_SIZE = 8000;
const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
const maxDecodeLength = bytes.length + 1 >> 1;
const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
let bufferLength = this.bufferLength;
let firstDigit = this.firstDigit;
for (const ch of bytes) {
if (ch >= 0x30 && ch <= 0x39) {
} else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
} else if (ch === 0x3e) {
buffer[bufferLength++] = firstDigit << 4 | digit;
if (firstDigit >= 0 && this.eof) {
buffer[bufferLength++] = firstDigit << 4;
this.firstDigit = firstDigit;
this.bufferLength = bufferLength;
;// CONCATENATED MODULE: ./src/core/ccitt.js