1 | /* | |
2 | * $Id: ByteBuffer.java 4065 2009-09-16 23:09:11Z psoares33 $ | |
3 | * $Name$ | |
4 | * | |
5 | * Copyright 2000, 2001, 2002 by Paulo Soares. | |
6 | * | |
7 | * The contents of this file are subject to the Mozilla Public License Version 1.1 | |
8 | * (the "License"); you may not use this file except in compliance with the License. | |
9 | * You may obtain a copy of the License at http://www.mozilla.org/MPL/ | |
10 | * | |
11 | * Software distributed under the License is distributed on an "AS IS" basis, | |
12 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
13 | * for the specific language governing rights and limitations under the License. | |
14 | * | |
15 | * The Original Code is 'iText, a free JAVA-PDF library'. | |
16 | * | |
17 | * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by | |
18 | * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie. | |
19 | * All Rights Reserved. | |
20 | * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer | |
21 | * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved. | |
22 | * | |
23 | * Contributor(s): all the names of the contributors are added in the source code | |
24 | * where applicable. | |
25 | * | |
26 | * Alternatively, the contents of this file may be used under the terms of the | |
27 | * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the | |
28 | * provisions of LGPL are applicable instead of those above. If you wish to | |
29 | * allow use of your version of this file only under the terms of the LGPL | |
30 | * License and not to allow others to use your version of this file under | |
31 | * the MPL, indicate your decision by deleting the provisions above and | |
32 | * replace them with the notice and other provisions required by the LGPL. | |
33 | * If you do not delete the provisions above, a recipient may use your version | |
34 | * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE. | |
35 | * | |
36 | * This library is free software; you can redistribute it and/or modify it | |
37 | * under the terms of the MPL as stated above or under the terms of the GNU | |
38 | * Library General Public License as published by the Free Software Foundation; | |
39 | * either version 2 of the License, or any later version. | |
40 | * | |
41 | * This library is distributed in the hope that it will be useful, but WITHOUT | |
42 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
43 | * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more | |
44 | * details. | |
45 | * | |
46 | * If you didn't download this code from the following link, you should check if | |
47 | * you aren't using an obsolete version: | |
48 | * http://www.lowagie.com/iText/ | |
49 | */ | |
50 | ||
51 | package com.lowagie.text.pdf; | |
52 | import java.io.IOException; | |
53 | import java.io.OutputStream; | |
54 | import java.io.UnsupportedEncodingException; | |
55 | import java.text.DecimalFormat; | |
56 | import java.text.DecimalFormatSymbols; | |
57 | import java.util.Locale; | |
58 | import com.lowagie.text.error_messages.MessageLocalization; | |
59 | ||
60 | import com.lowagie.text.DocWriter; | |
61 | ||
62 | /** | |
63 | * Acts like a <CODE>StringBuffer</CODE> but works with <CODE>byte</CODE> arrays. | |
64 | * Floating point is converted to a format suitable to the PDF. | |
65 | * @author Paulo Soares (psoares@consiste.pt) | |
66 | */ | |
67 | ||
68 | public class ByteBuffer extends OutputStream { | |
69 | /** The count of bytes in the buffer. */ | |
70 | protected int count; | |
71 | ||
72 | /** | |
73 | * The buffer where the bytes are stored. | |
74 | */ | |
75 | protected byte[] buf; | |
76 | | |
77 | private static int byteCacheSize = 0; | |
78 | | |
79 | private static byte[][] byteCache = new byte[byteCacheSize][]; | |
80 | public static final byte ZERO = (byte)'0'; | |
81 | private static final char[] chars = new char[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; | |
82 | private static final byte[] bytes = new byte[] {48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102}; | |
83 | /** | |
84 | * If <CODE>true</CODE> always output floating point numbers with 6 decimal digits. | |
85 | * If <CODE>false</CODE> uses the faster, although less precise, representation. | |
86 | */ | |
87 | public static boolean HIGH_PRECISION = false; | |
88 | private static final DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US); | |
89 | | |
90 | /** Creates new ByteBuffer with capacity 128 */ | |
91 | public ByteBuffer() { | |
92 | this(128); | |
93 | } | |
94 | | |
95 | /** | |
96 | * Creates a byte buffer with a certain capacity. | |
97 | * @param size the initial capacity | |
98 | */ | |
99 | public ByteBuffer(int size) { | |
100 |
2
1. 2. |
if (size < 1) |
101 | size = 128; | |
102 | buf = new byte[size]; | |
103 | } | |
104 | | |
105 | /** | |
106 | * Sets the cache size. | |
107 | * <P> | |
108 | * This can only be used to increment the size. | |
109 | * If the size that is passed through is smaller than the current size, nothing happens. | |
110 | * | |
111 | * @param size the size of the cache | |
112 | */ | |
113 | | |
114 | public static void setCacheSize(int size) { | |
115 |
2
1. setCacheSize : changed conditional boundary → NO_COVERAGE 2. setCacheSize : negated conditional → NO_COVERAGE |
if (size > 3276700) size = 3276700; |
116 |
2
1. setCacheSize : changed conditional boundary → NO_COVERAGE 2. setCacheSize : negated conditional → NO_COVERAGE |
if (size <= byteCacheSize) return; |
117 | byte[][] tmpCache = new byte[size][]; | |
118 |
1
1. setCacheSize : removed call to java/lang/System::arraycopy → NO_COVERAGE |
System.arraycopy(byteCache, 0, tmpCache, 0, byteCacheSize); |
119 | byteCache = tmpCache; | |
120 | byteCacheSize = size; | |
121 | } | |
122 | | |
123 | /** | |
124 | * You can fill the cache in advance if you want to. | |
125 | * | |
126 | * @param decimals | |
127 | */ | |
128 | | |
129 | public static void fillCache(int decimals) { | |
130 | int step = 1; | |
131 | switch(decimals) { | |
132 | case 0: | |
133 | step = 100; | |
134 | break; | |
135 | case 1: | |
136 | step = 10; | |
137 | break; | |
138 | } | |
139 |
3
1. fillCache : changed conditional boundary → NO_COVERAGE 2. fillCache : Replaced integer addition with subtraction → NO_COVERAGE 3. fillCache : negated conditional → NO_COVERAGE |
for (int i = 1; i < byteCacheSize; i += step) { |
140 |
1
1. fillCache : negated conditional → NO_COVERAGE |
if (byteCache[i] != null) continue; |
141 | byteCache[i] = convertToBytes(i); | |
142 | } | |
143 | } | |
144 | | |
145 | /** | |
146 | * Converts an double (multiplied by 100 and cast to an int) into an array of bytes. | |
147 | * | |
148 | * @param i the int | |
149 | * @return a byte array | |
150 | */ | |
151 | | |
152 | private static byte[] convertToBytes(int i) { | |
153 |
1
1. convertToBytes : Replaced double division with multiplication → NO_COVERAGE |
int size = (int)Math.floor(Math.log(i) / Math.log(10)); |
154 |
2
1. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i % 100 != 0) { |
155 |
1
1. convertToBytes : Changed increment from 2 to -2 → NO_COVERAGE |
size += 2; |
156 | } | |
157 |
2
1. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i % 10 != 0) { |
158 |
1
1. convertToBytes : Changed increment from 1 to -1 → NO_COVERAGE |
size++; |
159 | } | |
160 |
2
1. convertToBytes : changed conditional boundary → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i < 100) { |
161 |
1
1. convertToBytes : Changed increment from 1 to -1 → NO_COVERAGE |
size++; |
162 |
2
1. convertToBytes : changed conditional boundary → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i < 10) { |
163 |
1
1. convertToBytes : Changed increment from 1 to -1 → NO_COVERAGE |
size++; |
164 | } | |
165 | } | |
166 |
1
1. convertToBytes : Changed increment from -1 to 1 → NO_COVERAGE |
size--; |
167 | byte[] cache = new byte[size]; | |
168 |
1
1. convertToBytes : Changed increment from -1 to 1 → NO_COVERAGE |
size --; |
169 |
2
1. convertToBytes : changed conditional boundary → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i < 100) { |
170 | cache[0] = (byte)'0'; | |
171 | } | |
172 |
2
1. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i % 10 != 0) { |
173 |
2
1. convertToBytes : Changed increment from -1 to 1 → NO_COVERAGE 2. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[size--] = bytes[i % 10]; |
174 | } | |
175 |
2
1. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
if (i % 100 != 0) { |
176 |
3
1. convertToBytes : Changed increment from -1 to 1 → NO_COVERAGE 2. convertToBytes : Replaced integer division with multiplication → NO_COVERAGE 3. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[size--] = bytes[(i / 10) % 10]; |
177 |
1
1. convertToBytes : Changed increment from -1 to 1 → NO_COVERAGE |
cache[size--] = (byte)'.'; |
178 | } | |
179 |
2
1. convertToBytes : Replaced double division with multiplication → NO_COVERAGE 2. convertToBytes : Replaced integer subtraction with addition → NO_COVERAGE |
size = (int)Math.floor(Math.log(i) / Math.log(10)) - 1; |
180 | int add = 0; | |
181 |
2
1. convertToBytes : changed conditional boundary → NO_COVERAGE 2. convertToBytes : negated conditional → NO_COVERAGE |
while (add < size) { |
182 |
4
1. convertToBytes : Replaced integer subtraction with addition → NO_COVERAGE 2. convertToBytes : Replaced integer addition with subtraction → NO_COVERAGE 3. convertToBytes : Replaced integer division with multiplication → NO_COVERAGE 4. convertToBytes : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add] = bytes[(i / (int)Math.pow(10, size - add + 1)) % 10]; |
183 |
1
1. convertToBytes : Changed increment from 1 to -1 → NO_COVERAGE |
add++; |
184 | } | |
185 |
1
1. convertToBytes : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::convertToBytes to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return cache; |
186 | } | |
187 | | |
188 | /** | |
189 | * Appends an <CODE>int</CODE>. The size of the array will grow by one. | |
190 | * @param b the int to be appended | |
191 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
192 | */ | |
193 | public ByteBuffer append_i(int b) { | |
194 |
1
1. append_i : Replaced integer addition with subtraction → NO_COVERAGE |
int newcount = count + 1; |
195 |
2
1. append_i : changed conditional boundary → NO_COVERAGE 2. append_i : negated conditional → NO_COVERAGE |
if (newcount > buf.length) { |
196 |
1
1. append_i : Replaced Shift Left with Shift Right → NO_COVERAGE |
byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)]; |
197 |
1
1. append_i : removed call to java/lang/System::arraycopy → NO_COVERAGE |
System.arraycopy(buf, 0, newbuf, 0, count); |
198 | buf = newbuf; | |
199 | } | |
200 | buf[count] = (byte)b; | |
201 | count = newcount; | |
202 |
1
1. append_i : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append_i to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this; |
203 | } | |
204 | | |
205 | /** | |
206 | * Appends the subarray of the <CODE>byte</CODE> array. The buffer will grow by | |
207 | * <CODE>len</CODE> bytes. | |
208 | * @param b the array to be appended | |
209 | * @param off the offset to the start of the array | |
210 | * @param len the length of bytes to append | |
211 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
212 | */ | |
213 | public ByteBuffer append(byte[] b, int off, int len) { | |
214 |
13
1. append : changed conditional boundary → NO_COVERAGE 2. append : changed conditional boundary → NO_COVERAGE 3. append : changed conditional boundary → NO_COVERAGE 4. append : changed conditional boundary → NO_COVERAGE 5. append : changed conditional boundary → NO_COVERAGE 6. append : Replaced integer addition with subtraction → NO_COVERAGE 7. append : Replaced integer addition with subtraction → NO_COVERAGE 8. append : negated conditional → NO_COVERAGE 9. append : negated conditional → NO_COVERAGE 10. append : negated conditional → NO_COVERAGE 11. append : negated conditional → NO_COVERAGE 12. append : negated conditional → NO_COVERAGE 13. append : negated conditional → NO_COVERAGE |
if ((off < 0) || (off > b.length) || (len < 0) || |
215 | ((off + len) > b.length) || ((off + len) < 0) || len == 0) | |
216 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this; |
217 |
1
1. append : Replaced integer addition with subtraction → NO_COVERAGE |
int newcount = count + len; |
218 |
2
1. append : changed conditional boundary → NO_COVERAGE 2. append : negated conditional → NO_COVERAGE |
if (newcount > buf.length) { |
219 |
1
1. append : Replaced Shift Left with Shift Right → NO_COVERAGE |
byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)]; |
220 |
1
1. append : removed call to java/lang/System::arraycopy → NO_COVERAGE |
System.arraycopy(buf, 0, newbuf, 0, count); |
221 | buf = newbuf; | |
222 | } | |
223 |
1
1. append : removed call to java/lang/System::arraycopy → NO_COVERAGE |
System.arraycopy(b, off, buf, count, len); |
224 | count = newcount; | |
225 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this; |
226 | } | |
227 | | |
228 | /** | |
229 | * Appends an array of bytes. | |
230 | * @param b the array to be appended | |
231 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
232 | */ | |
233 | public ByteBuffer append(byte[] b) { | |
234 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append(b, 0, b.length); |
235 | } | |
236 | | |
237 | /** | |
238 | * Appends a <CODE>String</CODE> to the buffer. The <CODE>String</CODE> is | |
239 | * converted according to the encoding ISO-8859-1. | |
240 | * @param str the <CODE>String</CODE> to be appended | |
241 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
242 | */ | |
243 | public ByteBuffer append(String str) { | |
244 |
1
1. append : negated conditional → NO_COVERAGE |
if (str != null) |
245 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append(DocWriter.getISOBytes(str)); |
246 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this; |
247 | } | |
248 | | |
249 | /** | |
250 | * Appends a <CODE>char</CODE> to the buffer. The <CODE>char</CODE> is | |
251 | * converted according to the encoding ISO-8859-1. | |
252 | * @param c the <CODE>char</CODE> to be appended | |
253 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
254 | */ | |
255 | public ByteBuffer append(char c) { | |
256 | return append_i(c); | |
257 | } | |
258 | | |
259 | /** | |
260 | * Appends another <CODE>ByteBuffer</CODE> to this buffer. | |
261 | * @param buf the <CODE>ByteBuffer</CODE> to be appended | |
262 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
263 | */ | |
264 | public ByteBuffer append(ByteBuffer buf) { | |
265 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append(buf.buf, 0, buf.count); |
266 | } | |
267 | | |
268 | /** | |
269 | * Appends the string representation of an <CODE>int</CODE>. | |
270 | * @param i the <CODE>int</CODE> to be appended | |
271 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
272 | */ | |
273 | public ByteBuffer append(int i) { | |
274 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append((double)i); |
275 | } | |
276 | | |
277 | public ByteBuffer append(byte b) { | |
278 | return append_i(b); | |
279 | } | |
280 | | |
281 | public ByteBuffer appendHex(byte b) { | |
282 |
2
1. appendHex : Replaced Shift Right with Shift Left → NO_COVERAGE 2. appendHex : Replaced bitwise AND with OR → NO_COVERAGE |
append(bytes[(b >> 4) & 0x0f]); |
283 |
2
1. appendHex : Replaced bitwise AND with OR → NO_COVERAGE 2. appendHex : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::appendHex to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append(bytes[b & 0x0f]); |
284 | } | |
285 | | |
286 | /** | |
287 | * Appends a string representation of a <CODE>float</CODE> according | |
288 | * to the Pdf conventions. | |
289 | * @param i the <CODE>float</CODE> to be appended | |
290 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
291 | */ | |
292 | public ByteBuffer append(float i) { | |
293 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return append((double)i); |
294 | } | |
295 | | |
296 | /** | |
297 | * Appends a string representation of a <CODE>double</CODE> according | |
298 | * to the Pdf conventions. | |
299 | * @param d the <CODE>double</CODE> to be appended | |
300 | * @return a reference to this <CODE>ByteBuffer</CODE> object | |
301 | */ | |
302 | public ByteBuffer append(double d) { | |
303 | append(formatDouble(d, this)); | |
304 |
1
1. append : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::append to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this; |
305 | } | |
306 | | |
307 | /** | |
308 | * Outputs a <CODE>double</CODE> into a format suitable for the PDF. | |
309 | * @param d a double | |
310 | * @return the <CODE>String</CODE> representation of the <CODE>double</CODE> | |
311 | */ | |
312 | public static String formatDouble(double d) { | |
313 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return formatDouble(d, null); |
314 | } | |
315 | | |
316 | /** | |
317 | * Outputs a <CODE>double</CODE> into a format suitable for the PDF. | |
318 | * @param d a double | |
319 | * @param buf a ByteBuffer | |
320 | * @return the <CODE>String</CODE> representation of the <CODE>double</CODE> if | |
321 | * <CODE>buf</CODE> is <CODE>null</CODE>. If <CODE>buf</CODE> is <B>not</B> <CODE>null</CODE>, | |
322 | * then the double is appended directly to the buffer and this methods returns <CODE>null</CODE>. | |
323 | */ | |
324 | public static String formatDouble(double d, ByteBuffer buf) { | |
325 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (HIGH_PRECISION) { |
326 | DecimalFormat dn = new DecimalFormat("0.######", dfs); | |
327 | String sform = dn.format(d); | |
328 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf == null) |
329 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return sform; |
330 | else { | |
331 | buf.append(sform); | |
332 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
333 | } | |
334 | } | |
335 | boolean negative = false; | |
336 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (Math.abs(d) < 0.000015) { |
337 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
338 | buf.append(ZERO); | |
339 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
340 | } else { | |
341 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return "0"; |
342 | } | |
343 | } | |
344 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (d < 0) { |
345 | negative = true; | |
346 |
1
1. formatDouble : removed negation → NO_COVERAGE |
d = -d; |
347 | } | |
348 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (d < 1.0) { |
349 |
1
1. formatDouble : Replaced double addition with subtraction → NO_COVERAGE |
d += 0.000005; |
350 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (d >= 1) { |
351 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) { |
352 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
353 | buf.append((byte)'-'); | |
354 | buf.append((byte)'1'); | |
355 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
356 | } else { | |
357 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return "-1"; |
358 | } | |
359 | } else { | |
360 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
361 | buf.append((byte)'1'); | |
362 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
363 | } else { | |
364 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return "1"; |
365 | } | |
366 | } | |
367 | } | |
368 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
369 |
1
1. formatDouble : Replaced double multiplication with division → NO_COVERAGE |
int v = (int) (d * 100000); |
370 | | |
371 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) buf.append((byte)'-'); |
372 | buf.append((byte)'0'); | |
373 | buf.append((byte)'.'); | |
374 | | |
375 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE |
buf.append( (byte)(v / 10000 + ZERO) ); |
376 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10000 != 0) { |
377 |
3
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE |
buf.append( (byte)((v / 1000) % 10 + ZERO) ); |
378 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 1000 != 0) { |
379 |
3
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE |
buf.append( (byte)((v / 100) % 10 + ZERO) ); |
380 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 100 != 0) { |
381 |
3
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE |
buf.append((byte)((v / 10) % 10 + ZERO) ); |
382 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10 != 0) { |
383 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE |
buf.append((byte)((v) % 10 + ZERO) ); |
384 | } | |
385 | } | |
386 | } | |
387 | } | |
388 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
389 | } else { | |
390 | int x = 100000; | |
391 |
1
1. formatDouble : Replaced double multiplication with division → NO_COVERAGE |
int v = (int) (d * x); |
392 | | |
393 | StringBuilder res = new StringBuilder(); | |
394 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) res.append('-'); |
395 | res.append("0."); | |
396 | | |
397 |
3
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : negated conditional → NO_COVERAGE |
while( v < x/10 ) { |
398 | res.append('0'); | |
399 |
1
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE |
x /= 10; |
400 | } | |
401 | res.append(v); | |
402 |
1
1. formatDouble : Replaced integer subtraction with addition → NO_COVERAGE |
int cut = res.length() - 1; |
403 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
while (res.charAt(cut) == '0') { |
404 |
1
1. formatDouble : Changed increment from -1 to 1 → NO_COVERAGE |
--cut; |
405 | } | |
406 |
2
1. formatDouble : Replaced integer addition with subtraction → NO_COVERAGE 2. formatDouble : removed call to java/lang/StringBuilder::setLength → NO_COVERAGE |
res.setLength(cut + 1); |
407 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return res.toString(); |
408 | } | |
409 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
} else if (d <= 32767) { |
410 |
1
1. formatDouble : Replaced double addition with subtraction → NO_COVERAGE |
d += 0.005; |
411 |
1
1. formatDouble : Replaced double multiplication with division → NO_COVERAGE |
int v = (int) (d * 100); |
412 | | |
413 |
3
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE 3. formatDouble : negated conditional → NO_COVERAGE |
if (v < byteCacheSize && byteCache[v] != null) { |
414 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
415 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) buf.append((byte)'-'); |
416 | buf.append(byteCache[v]); | |
417 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
418 | } else { | |
419 | String tmp = PdfEncodings.convertToString(byteCache[v], null); | |
420 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) tmp = "-" + tmp; |
421 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return tmp; |
422 | } | |
423 | } | |
424 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (buf != null) { |
425 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v < byteCacheSize) { |
426 | //create the cachebyte[] | |
427 | byte[] cache; | |
428 | int size = 0; | |
429 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000000) { |
430 | //the original number is >=10000, we need 5 more bytes | |
431 |
1
1. formatDouble : Changed increment from 5 to -5 → NO_COVERAGE |
size += 5; |
432 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
} else if (v >= 100000) { |
433 | //the original number is >=1000, we need 4 more bytes | |
434 |
1
1. formatDouble : Changed increment from 4 to -4 → NO_COVERAGE |
size += 4; |
435 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
} else if (v >= 10000) { |
436 | //the original number is >=100, we need 3 more bytes | |
437 |
1
1. formatDouble : Changed increment from 3 to -3 → NO_COVERAGE |
size += 3; |
438 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
} else if (v >= 1000) { |
439 | //the original number is >=10, we need 2 more bytes | |
440 |
1
1. formatDouble : Changed increment from 2 to -2 → NO_COVERAGE |
size += 2; |
441 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
} else if (v >= 100) { |
442 | //the original number is >=1, we need 1 more bytes | |
443 |
1
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE |
size += 1; |
444 | } | |
445 | | |
446 | //now we must check if we have a decimal number | |
447 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 100 != 0) { |
448 | //yes, do not forget the "." | |
449 |
1
1. formatDouble : Changed increment from 2 to -2 → NO_COVERAGE |
size += 2; |
450 | } | |
451 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10 != 0) { |
452 |
1
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE |
size++; |
453 | } | |
454 | cache = new byte[size]; | |
455 | int add = 0; | |
456 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000000) { |
457 |
2
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 1000000)]; |
458 | } | |
459 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100000) { |
460 |
3
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 100000) % 10]; |
461 | } | |
462 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 10000) { |
463 |
3
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 10000) % 10]; |
464 | } | |
465 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000) { |
466 |
3
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 1000) % 10]; |
467 | } | |
468 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100) { |
469 |
3
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 100) % 10]; |
470 | } | |
471 | | |
472 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 100 != 0) { |
473 |
1
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE |
cache[add++] = (byte)'.'; |
474 |
3
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 3. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[(v / 10) % 10]; |
475 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10 != 0) { |
476 |
2
1. formatDouble : Changed increment from 1 to -1 → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
cache[add++] = bytes[v % 10]; |
477 | } | |
478 | } | |
479 | byteCache[v] = cache; | |
480 | } | |
481 | | |
482 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) buf.append((byte)'-'); |
483 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000000) { |
484 |
1
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 1000000)] ); |
485 | } | |
486 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100000) { |
487 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 100000) % 10] ); |
488 | } | |
489 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 10000) { |
490 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 10000) % 10] ); |
491 | } | |
492 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000) { |
493 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 1000) % 10] ); |
494 | } | |
495 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100) { |
496 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 100) % 10] ); |
497 | } | |
498 | | |
499 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 100 != 0) { |
500 | buf.append((byte)'.'); | |
501 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[(v / 10) % 10] ); |
502 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10 != 0) { |
503 |
1
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
buf.append( bytes[v % 10] ); |
504 | } | |
505 | } | |
506 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
507 | } else { | |
508 | StringBuilder res = new StringBuilder(); | |
509 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) res.append('-'); |
510 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000000) { |
511 |
1
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE |
res.append( chars[(v / 1000000)] ); |
512 | } | |
513 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100000) { |
514 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[(v / 100000) % 10] ); |
515 | } | |
516 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 10000) { |
517 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[(v / 10000) % 10] ); |
518 | } | |
519 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 1000) { |
520 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[(v / 1000) % 10] ); |
521 | } | |
522 |
2
1. formatDouble : changed conditional boundary → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v >= 100) { |
523 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[(v / 100) % 10] ); |
524 | } | |
525 | | |
526 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 100 != 0) { |
527 | res.append('.'); | |
528 |
2
1. formatDouble : Replaced integer division with multiplication → NO_COVERAGE 2. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[(v / 10) % 10] ); |
529 |
2
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE 2. formatDouble : negated conditional → NO_COVERAGE |
if (v % 10 != 0) { |
530 |
1
1. formatDouble : Replaced integer modulus with multiplication → NO_COVERAGE |
res.append( chars[v % 10] ); |
531 | } | |
532 | } | |
533 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return res.toString(); |
534 | } | |
535 | } else { | |
536 | StringBuilder res = new StringBuilder(); | |
537 |
1
1. formatDouble : negated conditional → NO_COVERAGE |
if (negative) res.append('-'); |
538 |
1
1. formatDouble : Replaced double addition with subtraction → NO_COVERAGE |
d += 0.5; |
539 | long v = (long) d; | |
540 |
1
1. formatDouble : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::formatDouble to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return res.append(v).toString(); |
541 | } | |
542 | } | |
543 | | |
544 | /** | |
545 | * Sets the size to zero. | |
546 | */ | |
547 | public void reset() { | |
548 | count = 0; | |
549 | } | |
550 | | |
551 | /** | |
552 | * Creates a newly allocated byte array. Its size is the current | |
553 | * size of this output stream and the valid contents of the buffer | |
554 | * have been copied into it. | |
555 | * | |
556 | * @return the current contents of this output stream, as a byte array. | |
557 | */ | |
558 | public byte[] toByteArray() { | |
559 | byte[] newbuf = new byte[count]; | |
560 |
1
1. toByteArray : removed call to java/lang/System::arraycopy → NO_COVERAGE |
System.arraycopy(buf, 0, newbuf, 0, count); |
561 |
1
1. toByteArray : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::toByteArray to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return newbuf; |
562 | } | |
563 | | |
564 | /** | |
565 | * Returns the current size of the buffer. | |
566 | * | |
567 | * @return the value of the <code>count</code> field, which is the number of valid bytes in this byte buffer. | |
568 | */ | |
569 | public int size() { | |
570 | return count; | |
571 | } | |
572 | | |
573 | public void setSize(int size) { | |
574 |
4
1. setSize : changed conditional boundary → NO_COVERAGE 2. setSize : changed conditional boundary → NO_COVERAGE 3. setSize : negated conditional → NO_COVERAGE 4. setSize : negated conditional → NO_COVERAGE |
if (size > count || size < 0) |
575 | throw new IndexOutOfBoundsException(MessageLocalization.getComposedMessage("the.new.size.must.be.positive.and.lt.eq.of.the.current.size")); | |
576 | count = size; | |
577 | } | |
578 | | |
579 | /** | |
580 | * Converts the buffer's contents into a string, translating bytes into | |
581 | * characters according to the platform's default character encoding. | |
582 | * | |
583 | * @return String translated from the buffer's contents. | |
584 | */ | |
585 | public String toString() { | |
586 | return new String(buf, 0, count); | |
587 | } | |
588 | | |
589 | /** | |
590 | * Converts the buffer's contents into a string, translating bytes into | |
591 | * characters according to the specified character encoding. | |
592 | * | |
593 | * @param enc a character-encoding name. | |
594 | * @return String translated from the buffer's contents. | |
595 | * @throws UnsupportedEncodingException | |
596 | * If the named encoding is not supported. | |
597 | */ | |
598 | public String toString(String enc) throws UnsupportedEncodingException { | |
599 |
1
1. toString : mutated return of Object value for com/lowagie/text/pdf/ByteBuffer::toString to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return new String(buf, 0, count, enc); |
600 | } | |
601 | | |
602 | /** | |
603 | * Writes the complete contents of this byte buffer output to | |
604 | * the specified output stream argument, as if by calling the output | |
605 | * stream's write method using <code>out.write(buf, 0, count)</code>. | |
606 | * | |
607 | * @param out the output stream to which to write the data. | |
608 | * @exception IOException if an I/O error occurs. | |
609 | */ | |
610 | public void writeTo(OutputStream out) throws IOException { | |
611 |
1
1. writeTo : removed call to java/io/OutputStream::write → NO_COVERAGE |
out.write(buf, 0, count); |
612 | } | |
613 | | |
614 | public void write(int b) { | |
615 | append((byte)b); | |
616 | } | |
617 | | |
618 | public void write(byte[] b, int off, int len) { | |
619 | append(b, off, len); | |
620 | } | |
621 | | |
622 | public byte[] getBuffer() { | |
623 | return buf; | |
624 | } | |
625 | } | |
Mutations | ||
100 |
1.1 2.2 |
|
115 |
1.1 2.2 |
|
116 |
1.1 2.2 |
|
118 |
1.1 |
|
139 |
1.1 2.2 3.3 |
|
140 |
1.1 |
|
153 |
1.1 |
|
154 |
1.1 2.2 |
|
155 |
1.1 |
|
157 |
1.1 2.2 |
|
158 |
1.1 |
|
160 |
1.1 2.2 |
|
161 |
1.1 |
|
162 |
1.1 2.2 |
|
163 |
1.1 |
|
166 |
1.1 |
|
168 |
1.1 |
|
169 |
1.1 2.2 |
|
172 |
1.1 2.2 |
|
173 |
1.1 2.2 |
|
175 |
1.1 2.2 |
|
176 |
1.1 2.2 3.3 |
|
177 |
1.1 |
|
179 |
1.1 2.2 |
|
181 |
1.1 2.2 |
|
182 |
1.1 2.2 3.3 4.4 |
|
183 |
1.1 |
|
185 |
1.1 |
|
194 |
1.1 |
|
195 |
1.1 2.2 |
|
196 |
1.1 |
|
197 |
1.1 |
|
202 |
1.1 |
|
214 |
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10.10 11.11 12.12 13.13 |
|
216 |
1.1 |
|
217 |
1.1 |
|
218 |
1.1 2.2 |
|
219 |
1.1 |
|
220 |
1.1 |
|
223 |
1.1 |
|
225 |
1.1 |
|
234 |
1.1 |
|
244 |
1.1 |
|
245 |
1.1 |
|
246 |
1.1 |
|
265 |
1.1 |
|
274 |
1.1 |
|
282 |
1.1 2.2 |
|
283 |
1.1 2.2 |
|
293 |
1.1 |
|
304 |
1.1 |
|
313 |
1.1 |
|
325 |
1.1 |
|
328 |
1.1 |
|
329 |
1.1 |
|
332 |
1.1 |
|
336 |
1.1 2.2 |
|
337 |
1.1 |
|
339 |
1.1 |
|
341 |
1.1 |
|
344 |
1.1 2.2 |
|
346 |
1.1 |
|
348 |
1.1 2.2 |
|
349 |
1.1 |
|
350 |
1.1 2.2 |
|
351 |
1.1 |
|
352 |
1.1 |
|
355 |
1.1 |
|
357 |
1.1 |
|
360 |
1.1 |
|
362 |
1.1 |
|
364 |
1.1 |
|
368 |
1.1 |
|
369 |
1.1 |
|
371 |
1.1 |
|
375 |
1.1 2.2 |
|
376 |
1.1 2.2 |
|
377 |
1.1 2.2 3.3 |
|
378 |
1.1 2.2 |
|
379 |
1.1 2.2 3.3 |
|
380 |
1.1 2.2 |
|
381 |
1.1 2.2 3.3 |
|
382 |
1.1 2.2 |
|
383 |
1.1 2.2 |
|
388 |
1.1 |
|
391 |
1.1 |
|
394 |
1.1 |
|
397 |
1.1 2.2 3.3 |
|
399 |
1.1 |
|
402 |
1.1 |
|
403 |
1.1 |
|
404 |
1.1 |
|
406 |
1.1 2.2 |
|
407 |
1.1 |
|
409 |
1.1 2.2 |
|
410 |
1.1 |
|
411 |
1.1 |
|
413 |
1.1 2.2 3.3 |
|
414 |
1.1 |
|
415 |
1.1 |
|
417 |
1.1 |
|
420 |
1.1 |
|
421 |
1.1 |
|
424 |
1.1 |
|
425 |
1.1 2.2 |
|
429 |
1.1 2.2 |
|
431 |
1.1 |
|
432 |
1.1 2.2 |
|
434 |
1.1 |
|
435 |
1.1 2.2 |
|
437 |
1.1 |
|
438 |
1.1 2.2 |
|
440 |
1.1 |
|
441 |
1.1 2.2 |
|
443 |
1.1 |
|
447 |
1.1 2.2 |
|
449 |
1.1 |
|
451 |
1.1 2.2 |
|
452 |
1.1 |
|
456 |
1.1 2.2 |
|
457 |
1.1 2.2 |
|
459 |
1.1 2.2 |
|
460 |
1.1 2.2 3.3 |
|
462 |
1.1 2.2 |
|
463 |
1.1 2.2 3.3 |
|
465 |
1.1 2.2 |
|
466 |
1.1 2.2 3.3 |
|
468 |
1.1 2.2 |
|
469 |
1.1 2.2 3.3 |
|
472 |
1.1 2.2 |
|
473 |
1.1 |
|
474 |
1.1 2.2 3.3 |
|
475 |
1.1 2.2 |
|
476 |
1.1 2.2 |
|
482 |
1.1 |
|
483 |
1.1 2.2 |
|
484 |
1.1 |
|
486 |
1.1 2.2 |
|
487 |
1.1 2.2 |
|
489 |
1.1 2.2 |
|
490 |
1.1 2.2 |
|
492 |
1.1 2.2 |
|
493 |
1.1 2.2 |
|
495 |
1.1 2.2 |
|
496 |
1.1 2.2 |
|
499 |
1.1 2.2 |
|
501 |
1.1 2.2 |
|
502 |
1.1 2.2 |
|
503 |
1.1 |
|
506 |
1.1 |
|
509 |
1.1 |
|
510 |
1.1 2.2 |
|
511 |
1.1 |
|
513 |
1.1 2.2 |
|
514 |
1.1 2.2 |
|
516 |
1.1 2.2 |
|
517 |
1.1 2.2 |
|
519 |
1.1 2.2 |
|
520 |
1.1 2.2 |
|
522 |
1.1 2.2 |
|
523 |
1.1 2.2 |
|
526 |
1.1 2.2 |
|
528 |
1.1 2.2 |
|
529 |
1.1 2.2 |
|
530 |
1.1 |
|
533 |
1.1 |
|
537 |
1.1 |
|
538 |
1.1 |
|
540 |
1.1 |
|
560 |
1.1 |
|
561 |
1.1 |
|
574 |
1.1 2.2 3.3 4.4 |
|
599 |
1.1 |
|
611 |
1.1 |