Rabbit-R1/switch port/java/sources/com/alibaba/fastjson/serializer/SerializeWriter.java

895 lines
30 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package com.alibaba.fastjson.serializer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.parser.JSONLexer;
import com.google.android.exoplayer2.C;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.nio.charset.Charset;
import kotlin.text.Typography;
/* loaded from: classes2.dex */
public final class SerializeWriter extends Writer {
public static final char[] DIGITS;
static final byte[] specicalFlags_doubleQuotes;
static final byte[] specicalFlags_singleQuotes;
protected char[] buf;
protected int count;
protected int features;
protected final Writer writer;
private static final ThreadLocal<char[]> bufLocal = new ThreadLocal<>();
static final int[] sizeTable = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE};
static final char[] digits = {'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'};
static final char[] DigitTens = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '2', '2', '2', '2', '2', '2', '2', '2', '2', '2', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '4', '4', '4', '4', '4', '4', '4', '4', '4', '4', '5', '5', '5', '5', '5', '5', '5', '5', '5', '5', '6', '6', '6', '6', '6', '6', '6', '6', '6', '6', '7', '7', '7', '7', '7', '7', '7', '7', '7', '7', '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', '9', '9', '9', '9', '9', '9', '9', '9', '9', '9'};
static final char[] DigitOnes = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
static final char[] ascii_chars = {'0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', '0', 'A', '0', 'B', '0', 'C', '0', 'D', '0', 'E', '0', 'F', '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '1', 'A', '1', 'B', '1', 'C', '1', 'D', '1', 'E', '1', 'F', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '2', 'A', '2', 'B', '2', 'C', '2', 'D', '2', 'E', '2', 'F'};
static final char[] replaceChars = new char[93];
static {
byte[] bArr = new byte[161];
specicalFlags_doubleQuotes = bArr;
byte[] bArr2 = new byte[161];
specicalFlags_singleQuotes = bArr2;
bArr[0] = 4;
bArr[1] = 4;
bArr[2] = 4;
bArr[3] = 4;
bArr[4] = 4;
bArr[5] = 4;
bArr[6] = 4;
bArr[7] = 4;
bArr[8] = 1;
bArr[9] = 1;
bArr[10] = 1;
bArr[11] = 4;
bArr[12] = 1;
bArr[13] = 1;
bArr[34] = 1;
bArr[92] = 1;
bArr2[0] = 4;
bArr2[1] = 4;
bArr2[2] = 4;
bArr2[3] = 4;
bArr2[4] = 4;
bArr2[5] = 4;
bArr2[6] = 4;
bArr2[7] = 4;
bArr2[8] = 1;
bArr2[9] = 1;
bArr2[10] = 1;
bArr2[11] = 4;
bArr2[12] = 1;
bArr2[13] = 1;
bArr2[92] = 1;
bArr2[39] = 1;
for (int i = 14; i <= 31; i++) {
specicalFlags_doubleQuotes[i] = 4;
specicalFlags_singleQuotes[i] = 4;
}
for (int i2 = 127; i2 < 160; i2++) {
specicalFlags_doubleQuotes[i2] = 4;
specicalFlags_singleQuotes[i2] = 4;
}
char[] cArr = replaceChars;
cArr[0] = '0';
cArr[1] = '1';
cArr[2] = '2';
cArr[3] = '3';
cArr[4] = '4';
cArr[5] = '5';
cArr[6] = '6';
cArr[7] = '7';
cArr[8] = 'b';
cArr[9] = 't';
cArr[10] = 'n';
cArr[11] = 'v';
cArr[12] = 'f';
cArr[13] = 'r';
cArr[34] = Typography.quote;
cArr[39] = '\'';
cArr[47] = '/';
cArr[92] = '\\';
DIGITS = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
}
/* JADX WARN: 'this' call moved to the top of the method (can break code semantics) */
public SerializeWriter() {
this((Writer) null);
}
public SerializeWriter(Writer writer) {
this.writer = writer;
this.features = JSON.DEFAULT_GENERATE_FEATURE;
ThreadLocal<char[]> threadLocal = bufLocal;
this.buf = threadLocal.get();
if (threadLocal != null) {
threadLocal.set(null);
}
if (this.buf == null) {
this.buf = new char[1024];
}
}
public SerializeWriter(SerializerFeature... serializerFeatureArr) {
this(null, 0, serializerFeatureArr);
}
public SerializeWriter(Writer writer, int i, SerializerFeature[] serializerFeatureArr) {
this.writer = writer;
ThreadLocal<char[]> threadLocal = bufLocal;
char[] cArr = threadLocal.get();
this.buf = cArr;
if (cArr != null) {
threadLocal.set(null);
}
if (this.buf == null) {
this.buf = new char[1024];
}
for (SerializerFeature serializerFeature : serializerFeatureArr) {
i |= serializerFeature.mask;
}
this.features = i;
}
public SerializeWriter(int i) {
this(null, i);
}
public SerializeWriter(Writer writer, int i) {
this.writer = writer;
if (i <= 0) {
throw new IllegalArgumentException("Negative initial size: " + i);
}
this.buf = new char[i];
}
public void config(SerializerFeature serializerFeature, boolean z) {
if (z) {
this.features = serializerFeature.mask | this.features;
} else {
this.features = (~serializerFeature.mask) & this.features;
}
}
public boolean isEnabled(SerializerFeature serializerFeature) {
return (this.features & serializerFeature.mask) != 0;
}
@Override // java.io.Writer
public void write(int i) {
int i2 = 1;
int i3 = this.count + 1;
if (i3 > this.buf.length) {
if (this.writer == null) {
expandCapacity(i3);
} else {
flush();
this.buf[this.count] = (char) i;
this.count = i2;
}
}
i2 = i3;
this.buf[this.count] = (char) i;
this.count = i2;
}
@Override // java.io.Writer
public void write(char[] cArr, int i, int i2) {
int i3;
if (i < 0 || i > cArr.length || i2 < 0 || (i3 = i + i2) > cArr.length || i3 < 0) {
throw new IndexOutOfBoundsException();
}
if (i2 == 0) {
return;
}
int i4 = this.count + i2;
if (i4 > this.buf.length) {
if (this.writer == null) {
expandCapacity(i4);
}
do {
char[] cArr2 = this.buf;
int length = cArr2.length;
int i5 = this.count;
int i6 = length - i5;
System.arraycopy(cArr, i, cArr2, i5, i6);
this.count = this.buf.length;
flush();
i2 -= i6;
i += i6;
} while (i2 > this.buf.length);
i4 = i2;
}
System.arraycopy(cArr, i, this.buf, this.count, i2);
this.count = i4;
}
/* JADX INFO: Access modifiers changed from: protected */
public void expandCapacity(int i) {
char[] cArr = this.buf;
int length = ((cArr.length * 3) / 2) + 1;
if (length >= i) {
i = length;
}
char[] cArr2 = new char[i];
System.arraycopy(cArr, 0, cArr2, 0, this.count);
this.buf = cArr2;
}
@Override // java.io.Writer
public void write(String str, int i, int i2) {
int i3;
int i4 = this.count + i2;
if (i4 > this.buf.length) {
if (this.writer == null) {
expandCapacity(i4);
} else {
while (true) {
char[] cArr = this.buf;
int length = cArr.length;
int i5 = this.count;
int i6 = length - i5;
i3 = i + i6;
str.getChars(i, i3, cArr, i5);
this.count = this.buf.length;
flush();
i2 -= i6;
if (i2 <= this.buf.length) {
break;
} else {
i = i3;
}
}
i4 = i2;
i = i3;
}
}
str.getChars(i, i2 + i, this.buf, this.count);
this.count = i4;
}
public void writeTo(Writer writer) throws IOException {
if (this.writer != null) {
throw new UnsupportedOperationException("writer not null");
}
writer.write(this.buf, 0, this.count);
}
public void writeTo(OutputStream outputStream, String str) throws IOException {
writeTo(outputStream, Charset.forName(str));
}
public void writeTo(OutputStream outputStream, Charset charset) throws IOException {
if (this.writer != null) {
throw new UnsupportedOperationException("writer not null");
}
outputStream.write(new String(this.buf, 0, this.count).getBytes(charset.name()));
}
@Override // java.io.Writer, java.lang.Appendable
public SerializeWriter append(CharSequence charSequence) {
String charSequence2 = charSequence == null ? "null" : charSequence.toString();
write(charSequence2, 0, charSequence2.length());
return this;
}
@Override // java.io.Writer, java.lang.Appendable
public SerializeWriter append(CharSequence charSequence, int i, int i2) {
if (charSequence == null) {
charSequence = "null";
}
String charSequence2 = charSequence.subSequence(i, i2).toString();
write(charSequence2, 0, charSequence2.length());
return this;
}
@Override // java.io.Writer, java.lang.Appendable
public SerializeWriter append(char c) {
write(c);
return this;
}
public byte[] toBytes(String str) {
if (this.writer != null) {
throw new UnsupportedOperationException("writer not null");
}
if (str == null) {
str = C.UTF8_NAME;
}
try {
return new String(this.buf, 0, this.count).getBytes(str);
} catch (UnsupportedEncodingException e) {
throw new JSONException("toBytes error", e);
}
}
public String toString() {
return new String(this.buf, 0, this.count);
}
@Override // java.io.Writer, java.io.Closeable, java.lang.AutoCloseable
public void close() {
if (this.writer != null && this.count > 0) {
flush();
}
char[] cArr = this.buf;
if (cArr.length <= 8192) {
bufLocal.set(cArr);
}
this.buf = null;
}
@Override // java.io.Writer
public void write(String str) {
if (str == null) {
writeNull();
} else {
write(str, 0, str.length());
}
}
public void writeInt(int i) {
if (i == Integer.MIN_VALUE) {
write("-2147483648");
return;
}
int i2 = 0;
while ((i < 0 ? -i : i) > sizeTable[i2]) {
i2++;
}
int i3 = i2 + 1;
if (i < 0) {
i3 = i2 + 2;
}
int i4 = this.count + i3;
if (i4 > this.buf.length) {
if (this.writer == null) {
expandCapacity(i4);
} else {
char[] cArr = new char[i3];
getChars(i, i3, cArr);
write(cArr, 0, i3);
return;
}
}
getChars(i, i4, this.buf);
this.count = i4;
}
public void writeByteArray(byte[] bArr) {
int length = bArr.length;
boolean z = (this.features & SerializerFeature.UseSingleQuotes.mask) != 0;
char c = z ? '\'' : Typography.quote;
if (length == 0) {
write(z ? "''" : "\"\"");
return;
}
char[] cArr = JSONLexer.CA;
int i = (length / 3) * 3;
int i2 = length - 1;
int i3 = this.count;
int i4 = (((i2 / 3) + 1) << 2) + i3;
int i5 = i4 + 2;
if (i5 > this.buf.length) {
if (this.writer != null) {
write(c);
int i6 = 0;
while (i6 < i) {
int i7 = i6 + 2;
int i8 = ((bArr[i6 + 1] & 255) << 8) | ((bArr[i6] & 255) << 16);
i6 += 3;
int i9 = i8 | (bArr[i7] & 255);
write(cArr[(i9 >>> 18) & 63]);
write(cArr[(i9 >>> 12) & 63]);
write(cArr[(i9 >>> 6) & 63]);
write(cArr[i9 & 63]);
}
int i10 = length - i;
if (i10 > 0) {
int i11 = ((bArr[i] & 255) << 10) | (i10 == 2 ? (bArr[i2] & 255) << 2 : 0);
write(cArr[i11 >> 12]);
write(cArr[(i11 >>> 6) & 63]);
write(i10 == 2 ? cArr[i11 & 63] : '=');
write(61);
}
write(c);
return;
}
expandCapacity(i5);
}
this.count = i5;
int i12 = i3 + 1;
this.buf[i3] = c;
int i13 = 0;
while (i13 < i) {
int i14 = i13 + 2;
int i15 = ((bArr[i13 + 1] & 255) << 8) | ((bArr[i13] & 255) << 16);
i13 += 3;
int i16 = i15 | (bArr[i14] & 255);
char[] cArr2 = this.buf;
cArr2[i12] = cArr[(i16 >>> 18) & 63];
cArr2[i12 + 1] = cArr[(i16 >>> 12) & 63];
int i17 = i12 + 3;
cArr2[i12 + 2] = cArr[(i16 >>> 6) & 63];
i12 += 4;
cArr2[i17] = cArr[i16 & 63];
}
int i18 = length - i;
if (i18 > 0) {
int i19 = ((bArr[i] & 255) << 10) | (i18 == 2 ? (bArr[i2] & 255) << 2 : 0);
char[] cArr3 = this.buf;
cArr3[i4 - 3] = cArr[i19 >> 12];
cArr3[i4 - 2] = cArr[(i19 >>> 6) & 63];
cArr3[i4 - 1] = i18 == 2 ? cArr[i19 & 63] : '=';
cArr3[i4] = '=';
}
this.buf[i4 + 1] = c;
}
public void writeLong(long j) {
if (j == Long.MIN_VALUE) {
write("-9223372036854775808");
return;
}
long j2 = j < 0 ? -j : j;
int i = 1;
long j3 = 10;
while (true) {
if (i >= 19) {
i = 0;
break;
} else {
if (j2 < j3) {
break;
}
j3 *= 10;
i++;
}
}
int i2 = i != 0 ? i : 19;
if (j < 0) {
i2++;
}
int i3 = this.count + i2;
if (i3 > this.buf.length) {
if (this.writer == null) {
expandCapacity(i3);
} else {
char[] cArr = new char[i2];
getChars(j, i2, cArr);
write(cArr, 0, i2);
return;
}
}
getChars(j, i3, this.buf);
this.count = i3;
}
public void writeNull() {
write("null");
}
/* JADX INFO: Access modifiers changed from: protected */
/* JADX WARN: Code restructure failed: missing block: B:46:0x0090, code lost:
if (r14 == (-1)) goto L42;
*/
/* JADX WARN: Code restructure failed: missing block: B:47:0x0092, code lost:
r12 = r8;
r14 = r13;
r15 = r14;
*/
/* JADX WARN: Code restructure failed: missing block: B:73:0x00dd, code lost:
if (r14 == (-1)) goto L42;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void writeStringWithDoubleQuote(java.lang.String r17, char r18, boolean r19) {
/*
Method dump skipped, instructions count: 585
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(java.lang.String, char, boolean):void");
}
public void write(boolean z) {
write(z ? "true" : "false");
}
public void writeString(String str) {
if ((this.features & SerializerFeature.UseSingleQuotes.mask) != 0) {
writeStringWithSingleQuote(str);
} else {
writeStringWithDoubleQuote(str, (char) 0, true);
}
}
/* JADX INFO: Access modifiers changed from: protected */
public void writeStringWithSingleQuote(String str) {
int i = 0;
if (str == null) {
int i2 = this.count + 4;
if (i2 > this.buf.length) {
expandCapacity(i2);
}
"null".getChars(0, 4, this.buf, this.count);
this.count = i2;
return;
}
int length = str.length();
int i3 = this.count + length + 2;
if (i3 > this.buf.length) {
if (this.writer != null) {
write(39);
while (i < str.length()) {
char charAt = str.charAt(i);
if (charAt <= '\r' || charAt == '\\' || charAt == '\'' || (charAt == '/' && (this.features & SerializerFeature.WriteSlashAsSpecial.mask) != 0)) {
write(92);
write(replaceChars[charAt]);
} else {
write(charAt);
}
i++;
}
write(39);
return;
}
expandCapacity(i3);
}
int i4 = this.count;
int i5 = i4 + 1;
int i6 = i5 + length;
char[] cArr = this.buf;
cArr[i4] = '\'';
str.getChars(0, length, cArr, i5);
this.count = i3;
int i7 = -1;
char c = 0;
for (int i8 = i5; i8 < i6; i8++) {
char c2 = this.buf[i8];
if (c2 <= '\r' || c2 == '\\' || c2 == '\'' || (c2 == '/' && (this.features & SerializerFeature.WriteSlashAsSpecial.mask) != 0)) {
i++;
i7 = i8;
c = c2;
}
}
int i9 = i3 + i;
if (i9 > this.buf.length) {
expandCapacity(i9);
}
this.count = i9;
if (i == 1) {
char[] cArr2 = this.buf;
int i10 = i7 + 1;
System.arraycopy(cArr2, i10, cArr2, i7 + 2, (i6 - i7) - 1);
char[] cArr3 = this.buf;
cArr3[i7] = '\\';
cArr3[i10] = replaceChars[c];
} else if (i > 1) {
char[] cArr4 = this.buf;
int i11 = i7 + 1;
System.arraycopy(cArr4, i11, cArr4, i7 + 2, (i6 - i7) - 1);
char[] cArr5 = this.buf;
cArr5[i7] = '\\';
cArr5[i11] = replaceChars[c];
int i12 = i6 + 1;
for (int i13 = i7 - 1; i13 >= i5; i13--) {
char c3 = this.buf[i13];
if (c3 <= '\r' || c3 == '\\' || c3 == '\'' || (c3 == '/' && (this.features & SerializerFeature.WriteSlashAsSpecial.mask) != 0)) {
char[] cArr6 = this.buf;
int i14 = i13 + 1;
System.arraycopy(cArr6, i14, cArr6, i13 + 2, (i12 - i13) - 1);
char[] cArr7 = this.buf;
cArr7[i13] = '\\';
cArr7[i14] = replaceChars[c3];
i12++;
}
}
}
this.buf[this.count - 1] = '\'';
}
public void writeFieldName(String str, boolean z) {
if ((this.features & SerializerFeature.UseSingleQuotes.mask) != 0) {
if ((this.features & SerializerFeature.QuoteFieldNames.mask) != 0) {
writeStringWithSingleQuote(str);
write(58);
return;
} else {
writeKeyWithSingleQuoteIfHasSpecial(str);
return;
}
}
if ((this.features & SerializerFeature.QuoteFieldNames.mask) != 0) {
writeStringWithDoubleQuote(str, ':', z);
} else {
writeKeyWithDoubleQuoteIfHasSpecial(str);
}
}
private void writeKeyWithDoubleQuoteIfHasSpecial(String str) {
int length = str.length();
boolean z = true;
int i = this.count + length + 1;
if (i > this.buf.length) {
if (this.writer != null) {
if (length == 0) {
write(34);
write(34);
write(58);
return;
}
int i2 = 0;
while (true) {
if (i2 >= length) {
z = false;
break;
}
char charAt = str.charAt(i2);
byte[] bArr = specicalFlags_doubleQuotes;
if (charAt < bArr.length && bArr[charAt] != 0) {
break;
} else {
i2++;
}
}
if (z) {
write(34);
}
for (int i3 = 0; i3 < length; i3++) {
char charAt2 = str.charAt(i3);
byte[] bArr2 = specicalFlags_doubleQuotes;
if (charAt2 < bArr2.length && bArr2[charAt2] != 0) {
write(92);
write(replaceChars[charAt2]);
} else {
write(charAt2);
}
}
if (z) {
write(34);
}
write(58);
return;
}
expandCapacity(i);
}
if (length == 0) {
int i4 = this.count;
if (i4 + 3 > this.buf.length) {
expandCapacity(i4 + 3);
}
char[] cArr = this.buf;
int i5 = this.count;
cArr[i5] = Typography.quote;
cArr[i5 + 1] = Typography.quote;
this.count = i5 + 3;
cArr[i5 + 2] = ':';
return;
}
int i6 = this.count;
int i7 = i6 + length;
str.getChars(0, length, this.buf, i6);
this.count = i;
int i8 = i6;
boolean z2 = false;
while (i8 < i7) {
char[] cArr2 = this.buf;
char c = cArr2[i8];
byte[] bArr3 = specicalFlags_doubleQuotes;
if (c < bArr3.length && bArr3[c] != 0) {
if (!z2) {
i += 3;
if (i > cArr2.length) {
expandCapacity(i);
}
this.count = i;
char[] cArr3 = this.buf;
int i9 = i8 + 1;
System.arraycopy(cArr3, i9, cArr3, i8 + 3, (i7 - i8) - 1);
char[] cArr4 = this.buf;
System.arraycopy(cArr4, 0, cArr4, 1, i8);
char[] cArr5 = this.buf;
cArr5[i6] = Typography.quote;
cArr5[i9] = '\\';
i8 += 2;
cArr5[i8] = replaceChars[c];
i7 += 2;
cArr5[this.count - 2] = Typography.quote;
z2 = true;
} else {
i++;
if (i > cArr2.length) {
expandCapacity(i);
}
this.count = i;
char[] cArr6 = this.buf;
int i10 = i8 + 1;
System.arraycopy(cArr6, i10, cArr6, i8 + 2, i7 - i8);
char[] cArr7 = this.buf;
cArr7[i8] = '\\';
cArr7[i10] = replaceChars[c];
i7++;
i8 = i10;
}
}
i8++;
}
this.buf[this.count - 1] = ':';
}
private void writeKeyWithSingleQuoteIfHasSpecial(String str) {
int length = str.length();
boolean z = true;
int i = this.count + length + 1;
if (i > this.buf.length) {
if (this.writer != null) {
if (length == 0) {
write(39);
write(39);
write(58);
return;
}
int i2 = 0;
while (true) {
if (i2 >= length) {
z = false;
break;
}
char charAt = str.charAt(i2);
byte[] bArr = specicalFlags_singleQuotes;
if (charAt < bArr.length && bArr[charAt] != 0) {
break;
} else {
i2++;
}
}
if (z) {
write(39);
}
for (int i3 = 0; i3 < length; i3++) {
char charAt2 = str.charAt(i3);
byte[] bArr2 = specicalFlags_singleQuotes;
if (charAt2 < bArr2.length && bArr2[charAt2] != 0) {
write(92);
write(replaceChars[charAt2]);
} else {
write(charAt2);
}
}
if (z) {
write(39);
}
write(58);
return;
}
expandCapacity(i);
}
if (length == 0) {
int i4 = this.count;
if (i4 + 3 > this.buf.length) {
expandCapacity(i4 + 3);
}
char[] cArr = this.buf;
int i5 = this.count;
cArr[i5] = '\'';
cArr[i5 + 1] = '\'';
this.count = i5 + 3;
cArr[i5 + 2] = ':';
return;
}
int i6 = this.count;
int i7 = i6 + length;
str.getChars(0, length, this.buf, i6);
this.count = i;
int i8 = i6;
boolean z2 = false;
while (i8 < i7) {
char[] cArr2 = this.buf;
char c = cArr2[i8];
byte[] bArr3 = specicalFlags_singleQuotes;
if (c < bArr3.length && bArr3[c] != 0) {
if (!z2) {
i += 3;
if (i > cArr2.length) {
expandCapacity(i);
}
this.count = i;
char[] cArr3 = this.buf;
int i9 = i8 + 1;
System.arraycopy(cArr3, i9, cArr3, i8 + 3, (i7 - i8) - 1);
char[] cArr4 = this.buf;
System.arraycopy(cArr4, 0, cArr4, 1, i8);
char[] cArr5 = this.buf;
cArr5[i6] = '\'';
cArr5[i9] = '\\';
i8 += 2;
cArr5[i8] = replaceChars[c];
i7 += 2;
cArr5[this.count - 2] = '\'';
z2 = true;
} else {
i++;
if (i > cArr2.length) {
expandCapacity(i);
}
this.count = i;
char[] cArr6 = this.buf;
int i10 = i8 + 1;
System.arraycopy(cArr6, i10, cArr6, i8 + 2, i7 - i8);
char[] cArr7 = this.buf;
cArr7[i8] = '\\';
cArr7[i10] = replaceChars[c];
i7++;
i8 = i10;
}
}
i8++;
}
this.buf[i - 1] = ':';
}
@Override // java.io.Writer, java.io.Flushable
public void flush() {
Writer writer = this.writer;
if (writer == null) {
return;
}
try {
writer.write(this.buf, 0, this.count);
this.writer.flush();
this.count = 0;
} catch (IOException e) {
throw new JSONException(e.getMessage(), e);
}
}
/* JADX INFO: Access modifiers changed from: protected */
public static void getChars(long j, int i, char[] cArr) {
char c;
if (j < 0) {
j = -j;
c = '-';
} else {
c = 0;
}
while (j > 2147483647L) {
long j2 = j / 100;
int i2 = (int) (j - (((j2 << 6) + (j2 << 5)) + (j2 << 2)));
cArr[i - 1] = DigitOnes[i2];
i -= 2;
cArr[i] = DigitTens[i2];
j = j2;
}
int i3 = (int) j;
while (i3 >= 65536) {
int i4 = i3 / 100;
int i5 = i3 - (((i4 << 6) + (i4 << 5)) + (i4 << 2));
cArr[i - 1] = DigitOnes[i5];
i -= 2;
cArr[i] = DigitTens[i5];
i3 = i4;
}
while (true) {
int i6 = (52429 * i3) >>> 19;
int i7 = i - 1;
cArr[i7] = digits[i3 - ((i6 << 3) + (i6 << 1))];
if (i6 == 0) {
break;
}
i3 = i6;
i = i7;
}
if (c != 0) {
cArr[i - 2] = c;
}
}
}