harshithsaiv commited on
Commit
67bac38
·
0 Parent(s):

feat: baseline + calibration script

Browse files
.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Model weights - too large for git
2
+ mistral-model/
3
+ llama-model/
4
+
5
+ # Python cache
6
+ __pycache__/
7
+ *.pyc
8
+ *.pyo
9
+
10
+ # Jupyter
11
+ .ipynb_checkpoints/
12
+
13
+ # OS
14
+ .DS_Store
baseline.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import AutoTokenizer, AutoModelForCausalLM
3
+ import time, json, os, sys
4
+
5
+ # ── config ──────────────────────────────────────────
6
+ MODEL_NAME = sys.argv[1] if len(sys.argv) > 1 else "mistral-7b"
7
+ MODEL_PATHS = {
8
+ "mistral-7b": "~/kv-hack/mistral-model",
9
+ "llama-3-8b": "~/kv-hack/llama-model",
10
+ }
11
+ model_path = os.path.expanduser(MODEL_PATHS[MODEL_NAME])
12
+ results_dir = f"~/kv-hack/results/{MODEL_NAME}"
13
+ os.makedirs(os.path.expanduser(results_dir), exist_ok=True)
14
+ # ────────────────────────────────────────────────────
15
+
16
+ print(f"Running baseline for: {MODEL_NAME}")
17
+ print("Loading model...")
18
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
19
+ model = AutoModelForCausalLM.from_pretrained(
20
+ model_path,
21
+ dtype=torch.float16,
22
+ device_map="cuda"
23
+ )
24
+ model.eval()
25
+
26
+ results = {}
27
+
28
+ for ctx_len in [1024, 4096, 8192]:
29
+ print(f"\nTesting context length: {ctx_len}")
30
+ input_ids = torch.randint(1, 1000, (1, ctx_len)).cuda()
31
+
32
+ # warmup
33
+ with torch.no_grad():
34
+ for _ in range(2):
35
+ out = model(input_ids, use_cache=True)
36
+
37
+ torch.cuda.synchronize()
38
+ torch.cuda.reset_peak_memory_stats()
39
+
40
+ # measure
41
+ times = []
42
+ with torch.no_grad():
43
+ for _ in range(5):
44
+ t0 = time.time()
45
+ out = model(input_ids, use_cache=True)
46
+ torch.cuda.synchronize()
47
+ times.append(time.time() - t0)
48
+
49
+ peak_mem = torch.cuda.max_memory_allocated() / 1e9
50
+ avg_time = sum(times) / len(times)
51
+
52
+ results[ctx_len] = {
53
+ "peak_memory_gb": round(peak_mem, 2),
54
+ "avg_prefill_ms": round(avg_time * 1000, 1),
55
+ }
56
+ print(f" Peak memory: {peak_mem:.2f} GB")
57
+ print(f" Avg prefill: {avg_time*1000:.1f} ms")
58
+
59
+ # decode speed
60
+ print("\nTesting decode speed...")
61
+ input_ids = torch.randint(1, 1000, (1, 512)).cuda()
62
+ with torch.no_grad():
63
+ t0 = time.time()
64
+ out = model.generate(
65
+ input_ids,
66
+ max_new_tokens=100,
67
+ do_sample=False,
68
+ pad_token_id=tokenizer.eos_token_id
69
+ )
70
+ torch.cuda.synchronize()
71
+ elapsed = time.time() - t0
72
+
73
+ tokens_per_sec = 100 / elapsed
74
+ results["decode_tokens_per_sec"] = round(tokens_per_sec, 1)
75
+ print(f" Decode speed: {tokens_per_sec:.1f} tokens/sec")
76
+
77
+ # save
78
+ out_path = os.path.expanduser(f"{results_dir}/baseline.json")
79
+ with open(out_path, "w") as f:
80
+ json.dump(results, f, indent=2)
81
+
82
+ print(f"\n✅ Saved to {out_path}")
83
+ print(json.dumps(results, indent=2))
calibrate.py ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import json
3
+ import os
4
+ import sys
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM
6
+ from datasets import load_dataset
7
+ from tqdm import tqdm
8
+
9
+ # ── config ──────────────────────────────────────────
10
+ MODEL_NAME = sys.argv[1] if len(sys.argv) > 1 else "mistral-7b"
11
+ MODEL_PATHS = {
12
+ "mistral-7b": "~/kv-hack/mistral-model",
13
+ "llama-3-8b": "~/kv-hack/llama-model",
14
+ }
15
+ model_path = os.path.expanduser(MODEL_PATHS[MODEL_NAME])
16
+ results_dir = os.path.expanduser(f"~/kv-hack/results/{MODEL_NAME}")
17
+ os.makedirs(results_dir, exist_ok=True)
18
+ # ────────────────────────────────────────────────────
19
+
20
+ print(f"Running calibration for: {MODEL_NAME}")
21
+ print("Loading model...")
22
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
23
+ model = AutoModelForCausalLM.from_pretrained(
24
+ model_path,
25
+ dtype=torch.float16,
26
+ device_map="cuda"
27
+ )
28
+ model.eval()
29
+
30
+ # load calibration dataset
31
+ print("Loading calibration data...")
32
+ dataset = load_dataset("wikitext", "wikitext-2-raw-v1", split="train")
33
+ texts = [t for t in dataset["text"] if len(t.strip()) > 200][:256]
34
+
35
+ def quantize_tensor(x, bits):
36
+ """Quantize tensor to given bits and dequantize back"""
37
+ if bits == 16:
38
+ return x
39
+ qmin, qmax = 0, 2**bits - 1
40
+ xmin = x.amin(dim=-1, keepdim=True)
41
+ xmax = x.amax(dim=-1, keepdim=True)
42
+ scale = (xmax - xmin).clamp(min=1e-8) / qmax
43
+ x_q = ((x - xmin) / scale).round().clamp(qmin, qmax)
44
+ return x_q * scale + xmin
45
+
46
+ def get_kv_error(layer_idx, head_idx, bits, num_samples=32):
47
+ """Measure reconstruction error when quantizing a specific head's KV"""
48
+ errors = []
49
+
50
+ for text in texts[:num_samples]:
51
+ inputs = tokenizer(
52
+ text,
53
+ return_tensors="pt",
54
+ max_length=512,
55
+ truncation=True
56
+ ).to("cuda")
57
+
58
+ if inputs["input_ids"].shape[1] < 32:
59
+ continue
60
+
61
+ with torch.no_grad():
62
+ outputs = model(
63
+ **inputs,
64
+ output_attentions=False,
65
+ use_cache=True
66
+ )
67
+
68
+ kv_cache = outputs.past_key_values
69
+ k = kv_cache.layers[layer_idx].keys # [1, heads, seq, head_dim]
70
+ v = kv_cache.layers[layer_idx].values
71
+
72
+ k_head = k[0, head_idx]
73
+ v_head = v[0, head_idx]
74
+
75
+ k_q = quantize_tensor(k_head, bits)
76
+ v_q = quantize_tensor(v_head, bits)
77
+
78
+ k_err = (k_head - k_q).pow(2).mean().item()
79
+ v_err = (v_head - v_q).pow(2).mean().item()
80
+ errors.append(k_err + v_err)
81
+
82
+ return sum(errors) / len(errors) if errors else float('inf')
83
+
84
+ # get model dimensions
85
+ print("Detecting model dimensions...")
86
+ with torch.no_grad():
87
+ dummy = tokenizer("hello", return_tensors="pt").to("cuda")
88
+ out = model(**dummy, use_cache=True)
89
+ kv_cache = out.past_key_values
90
+ num_layers = len(kv_cache.layers)
91
+ num_heads = kv_cache.layers[0].keys.shape[1]
92
+
93
+ print(f"num_layers: {num_layers}, num_heads: {num_heads}")
94
+
95
+
96
+ print(f"Model: {num_layers} layers, {num_heads} heads per layer")
97
+ print("Running per-head sensitivity analysis...")
98
+ print("This will take ~15-20 minutes. Grab a coffee ☕")
99
+
100
+ sensitivity_map = {}
101
+ bit_allocation = {}
102
+
103
+ for layer_idx in tqdm(range(num_layers), desc="Layers"):
104
+ sensitivity_map[layer_idx] = {}
105
+ bit_allocation[layer_idx] = {}
106
+
107
+ for head_idx in range(num_heads):
108
+ err_2bit = get_kv_error(layer_idx, head_idx, 2, num_samples=32)
109
+ err_4bit = get_kv_error(layer_idx, head_idx, 4, num_samples=32)
110
+ err_8bit = get_kv_error(layer_idx, head_idx, 8, num_samples=32)
111
+
112
+ sensitivity_map[layer_idx][head_idx] = {
113
+ "2bit": round(err_2bit, 6),
114
+ "4bit": round(err_4bit, 6),
115
+ "8bit": round(err_8bit, 6),
116
+ }
117
+
118
+ if err_2bit < 1e-4:
119
+ optimal_bits = 2
120
+ elif err_4bit < 1e-4:
121
+ optimal_bits = 4
122
+ else:
123
+ optimal_bits = 8
124
+
125
+ bit_allocation[layer_idx][head_idx] = optimal_bits
126
+
127
+ # summary
128
+ all_bits = [bit_allocation[l][h] for l in bit_allocation for h in bit_allocation[l]]
129
+ avg_bits = sum(all_bits) / len(all_bits)
130
+ dist = {2: all_bits.count(2), 4: all_bits.count(4), 8: all_bits.count(8)}
131
+ compression = 16 / avg_bits
132
+
133
+ print(f"\n✅ Calibration complete!")
134
+ print(f"Bit distribution: {dist}")
135
+ print(f"Average bits: {avg_bits:.2f}")
136
+ print(f"Compression vs FP16: {compression:.1f}x")
137
+
138
+ # save
139
+ with open(f"{results_dir}/sensitivity_map.json", "w") as f:
140
+ json.dump(sensitivity_map, f, indent=2)
141
+
142
+ with open(f"{results_dir}/bit_allocation.json", "w") as f:
143
+ json.dump(bit_allocation, f, indent=2)
144
+
145
+ print(f"✅ Saved to {results_dir}/")
results/llama-3-8b/baseline.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "1024": {
3
+ "peak_memory_gb": 16.87,
4
+ "avg_prefill_ms": 89.1
5
+ },
6
+ "4096": {
7
+ "peak_memory_gb": 19.28,
8
+ "avg_prefill_ms": 352.0
9
+ },
10
+ "8192": {
11
+ "peak_memory_gb": 22.49,
12
+ "avg_prefill_ms": 738.8
13
+ },
14
+ "decode_tokens_per_sec": 35.2
15
+ }
results/mistral-7b/baseline.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "1024": {
3
+ "peak_memory_gb": 14.96,
4
+ "avg_prefill_ms": 86.0
5
+ },
6
+ "4096": {
7
+ "peak_memory_gb": 16.34,
8
+ "avg_prefill_ms": 333.6
9
+ },
10
+ "8192": {
11
+ "peak_memory_gb": 18.17,
12
+ "avg_prefill_ms": 704.5
13
+ },
14
+ "decode_tokens_per_sec": 35.4
15
+ }
results/mistral-7b/bit_allocation.json ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "0": {
3
+ "0": 8,
4
+ "1": 8,
5
+ "2": 8,
6
+ "3": 8,
7
+ "4": 8,
8
+ "5": 8,
9
+ "6": 8,
10
+ "7": 8
11
+ },
12
+ "1": {
13
+ "0": 8,
14
+ "1": 8,
15
+ "2": 8,
16
+ "3": 8,
17
+ "4": 8,
18
+ "5": 8,
19
+ "6": 8,
20
+ "7": 8
21
+ },
22
+ "2": {
23
+ "0": 8,
24
+ "1": 8,
25
+ "2": 8,
26
+ "3": 8,
27
+ "4": 8,
28
+ "5": 8,
29
+ "6": 8,
30
+ "7": 8
31
+ },
32
+ "3": {
33
+ "0": 8,
34
+ "1": 8,
35
+ "2": 8,
36
+ "3": 8,
37
+ "4": 8,
38
+ "5": 8,
39
+ "6": 8,
40
+ "7": 8
41
+ },
42
+ "4": {
43
+ "0": 8,
44
+ "1": 8,
45
+ "2": 8,
46
+ "3": 8,
47
+ "4": 8,
48
+ "5": 8,
49
+ "6": 8,
50
+ "7": 8
51
+ },
52
+ "5": {
53
+ "0": 8,
54
+ "1": 8,
55
+ "2": 8,
56
+ "3": 8,
57
+ "4": 8,
58
+ "5": 8,
59
+ "6": 8,
60
+ "7": 8
61
+ },
62
+ "6": {
63
+ "0": 8,
64
+ "1": 8,
65
+ "2": 8,
66
+ "3": 8,
67
+ "4": 8,
68
+ "5": 8,
69
+ "6": 8,
70
+ "7": 8
71
+ },
72
+ "7": {
73
+ "0": 8,
74
+ "1": 8,
75
+ "2": 8,
76
+ "3": 8,
77
+ "4": 8,
78
+ "5": 8,
79
+ "6": 8,
80
+ "7": 8
81
+ },
82
+ "8": {
83
+ "0": 8,
84
+ "1": 8,
85
+ "2": 8,
86
+ "3": 8,
87
+ "4": 8,
88
+ "5": 8,
89
+ "6": 8,
90
+ "7": 8
91
+ },
92
+ "9": {
93
+ "0": 8,
94
+ "1": 8,
95
+ "2": 8,
96
+ "3": 8,
97
+ "4": 8,
98
+ "5": 8,
99
+ "6": 8,
100
+ "7": 8
101
+ },
102
+ "10": {
103
+ "0": 8,
104
+ "1": 8,
105
+ "2": 8,
106
+ "3": 8,
107
+ "4": 8,
108
+ "5": 8,
109
+ "6": 8,
110
+ "7": 8
111
+ },
112
+ "11": {
113
+ "0": 8,
114
+ "1": 8,
115
+ "2": 8,
116
+ "3": 8,
117
+ "4": 8,
118
+ "5": 8,
119
+ "6": 8,
120
+ "7": 8
121
+ },
122
+ "12": {
123
+ "0": 8,
124
+ "1": 8,
125
+ "2": 8,
126
+ "3": 8,
127
+ "4": 8,
128
+ "5": 8,
129
+ "6": 8,
130
+ "7": 8
131
+ },
132
+ "13": {
133
+ "0": 8,
134
+ "1": 8,
135
+ "2": 8,
136
+ "3": 8,
137
+ "4": 8,
138
+ "5": 8,
139
+ "6": 8,
140
+ "7": 8
141
+ },
142
+ "14": {
143
+ "0": 8,
144
+ "1": 8,
145
+ "2": 8,
146
+ "3": 8,
147
+ "4": 8,
148
+ "5": 8,
149
+ "6": 8,
150
+ "7": 8
151
+ },
152
+ "15": {
153
+ "0": 8,
154
+ "1": 8,
155
+ "2": 8,
156
+ "3": 8,
157
+ "4": 8,
158
+ "5": 8,
159
+ "6": 8,
160
+ "7": 8
161
+ },
162
+ "16": {
163
+ "0": 8,
164
+ "1": 8,
165
+ "2": 8,
166
+ "3": 8,
167
+ "4": 8,
168
+ "5": 8,
169
+ "6": 8,
170
+ "7": 8
171
+ },
172
+ "17": {
173
+ "0": 8,
174
+ "1": 8,
175
+ "2": 8,
176
+ "3": 8,
177
+ "4": 8,
178
+ "5": 8,
179
+ "6": 8,
180
+ "7": 8
181
+ },
182
+ "18": {
183
+ "0": 8,
184
+ "1": 8,
185
+ "2": 8,
186
+ "3": 8,
187
+ "4": 8,
188
+ "5": 8,
189
+ "6": 8,
190
+ "7": 8
191
+ },
192
+ "19": {
193
+ "0": 8,
194
+ "1": 8,
195
+ "2": 8,
196
+ "3": 8,
197
+ "4": 8,
198
+ "5": 8,
199
+ "6": 8,
200
+ "7": 8
201
+ },
202
+ "20": {
203
+ "0": 8,
204
+ "1": 8,
205
+ "2": 8,
206
+ "3": 8,
207
+ "4": 8,
208
+ "5": 8,
209
+ "6": 8,
210
+ "7": 8
211
+ },
212
+ "21": {
213
+ "0": 8,
214
+ "1": 8,
215
+ "2": 8,
216
+ "3": 8,
217
+ "4": 8,
218
+ "5": 8,
219
+ "6": 8,
220
+ "7": 8
221
+ },
222
+ "22": {
223
+ "0": 8,
224
+ "1": 8,
225
+ "2": 8,
226
+ "3": 8,
227
+ "4": 8,
228
+ "5": 8,
229
+ "6": 8,
230
+ "7": 8
231
+ },
232
+ "23": {
233
+ "0": 8,
234
+ "1": 8,
235
+ "2": 8,
236
+ "3": 8,
237
+ "4": 8,
238
+ "5": 8,
239
+ "6": 8,
240
+ "7": 8
241
+ },
242
+ "24": {
243
+ "0": 8,
244
+ "1": 8,
245
+ "2": 8,
246
+ "3": 8,
247
+ "4": 8,
248
+ "5": 8,
249
+ "6": 8,
250
+ "7": 8
251
+ },
252
+ "25": {
253
+ "0": 8,
254
+ "1": 8,
255
+ "2": 8,
256
+ "3": 8,
257
+ "4": 8,
258
+ "5": 8,
259
+ "6": 8,
260
+ "7": 8
261
+ },
262
+ "26": {
263
+ "0": 8,
264
+ "1": 8,
265
+ "2": 8,
266
+ "3": 8,
267
+ "4": 8,
268
+ "5": 8,
269
+ "6": 8,
270
+ "7": 8
271
+ },
272
+ "27": {
273
+ "0": 8,
274
+ "1": 8,
275
+ "2": 8,
276
+ "3": 8,
277
+ "4": 8,
278
+ "5": 8,
279
+ "6": 8,
280
+ "7": 8
281
+ },
282
+ "28": {
283
+ "0": 8,
284
+ "1": 8,
285
+ "2": 8,
286
+ "3": 8,
287
+ "4": 8,
288
+ "5": 8,
289
+ "6": 8,
290
+ "7": 8
291
+ },
292
+ "29": {
293
+ "0": 8,
294
+ "1": 8,
295
+ "2": 8,
296
+ "3": 8,
297
+ "4": 8,
298
+ "5": 8,
299
+ "6": 8,
300
+ "7": 8
301
+ },
302
+ "30": {
303
+ "0": 8,
304
+ "1": 8,
305
+ "2": 8,
306
+ "3": 8,
307
+ "4": 8,
308
+ "5": 8,
309
+ "6": 8,
310
+ "7": 8
311
+ },
312
+ "31": {
313
+ "0": 8,
314
+ "1": 8,
315
+ "2": 8,
316
+ "3": 8,
317
+ "4": 8,
318
+ "5": 8,
319
+ "6": 8,
320
+ "7": 8
321
+ }
322
+ }
results/mistral-7b/sensitivity_map.json ADDED
@@ -0,0 +1,1346 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "0": {
3
+ "0": {
4
+ "2bit": 1.275651,
5
+ "4bit": 0.050053,
6
+ "8bit": 0.000181
7
+ },
8
+ "1": {
9
+ "2bit": 0.875911,
10
+ "4bit": 0.022568,
11
+ "8bit": 8.4e-05
12
+ },
13
+ "2": {
14
+ "2bit": 0.352025,
15
+ "4bit": 0.016612,
16
+ "8bit": 6e-05
17
+ },
18
+ "3": {
19
+ "2bit": 0.206239,
20
+ "4bit": 0.009488,
21
+ "8bit": 3.4e-05
22
+ },
23
+ "4": {
24
+ "2bit": 0.122591,
25
+ "4bit": 0.00476,
26
+ "8bit": 1.7e-05
27
+ },
28
+ "5": {
29
+ "2bit": 0.303784,
30
+ "4bit": 0.01026,
31
+ "8bit": 3.8e-05
32
+ },
33
+ "6": {
34
+ "2bit": 0.861406,
35
+ "4bit": 0.034991,
36
+ "8bit": 0.000124
37
+ },
38
+ "7": {
39
+ "2bit": 1.169842,
40
+ "4bit": 0.041992,
41
+ "8bit": 0.000154
42
+ }
43
+ },
44
+ "1": {
45
+ "0": {
46
+ "2bit": 1.52893,
47
+ "4bit": 0.052165,
48
+ "8bit": 0.000179
49
+ },
50
+ "1": {
51
+ "2bit": 1.11751,
52
+ "4bit": 0.047545,
53
+ "8bit": 0.000174
54
+ },
55
+ "2": {
56
+ "2bit": 1.410196,
57
+ "4bit": 0.056624,
58
+ "8bit": 0.000205
59
+ },
60
+ "3": {
61
+ "2bit": 1.020669,
62
+ "4bit": 0.039215,
63
+ "8bit": 0.000141
64
+ },
65
+ "4": {
66
+ "2bit": 1.20992,
67
+ "4bit": 0.045675,
68
+ "8bit": 0.000166
69
+ },
70
+ "5": {
71
+ "2bit": 1.460292,
72
+ "4bit": 0.052388,
73
+ "8bit": 0.000193
74
+ },
75
+ "6": {
76
+ "2bit": 0.634232,
77
+ "4bit": 0.02644,
78
+ "8bit": 9.7e-05
79
+ },
80
+ "7": {
81
+ "2bit": 1.043682,
82
+ "4bit": 0.039064,
83
+ "8bit": 0.000141
84
+ }
85
+ },
86
+ "2": {
87
+ "0": {
88
+ "2bit": 2.299476,
89
+ "4bit": 0.078987,
90
+ "8bit": 0.000286
91
+ },
92
+ "1": {
93
+ "2bit": 1.363926,
94
+ "4bit": 0.081288,
95
+ "8bit": 0.000286
96
+ },
97
+ "2": {
98
+ "2bit": 2.503927,
99
+ "4bit": 0.091683,
100
+ "8bit": 0.00032
101
+ },
102
+ "3": {
103
+ "2bit": 0.807431,
104
+ "4bit": 0.039283,
105
+ "8bit": 0.000146
106
+ },
107
+ "4": {
108
+ "2bit": 1.176411,
109
+ "4bit": 0.044124,
110
+ "8bit": 0.00016
111
+ },
112
+ "5": {
113
+ "2bit": 1.832608,
114
+ "4bit": 0.068379,
115
+ "8bit": 0.000249
116
+ },
117
+ "6": {
118
+ "2bit": 1.473303,
119
+ "4bit": 0.096679,
120
+ "8bit": 0.00034
121
+ },
122
+ "7": {
123
+ "2bit": 2.977381,
124
+ "4bit": 0.096091,
125
+ "8bit": 0.000351
126
+ }
127
+ },
128
+ "3": {
129
+ "0": {
130
+ "2bit": 0.993681,
131
+ "4bit": 0.042615,
132
+ "8bit": 0.000156
133
+ },
134
+ "1": {
135
+ "2bit": 1.837716,
136
+ "4bit": 0.06231,
137
+ "8bit": 0.000225
138
+ },
139
+ "2": {
140
+ "2bit": 2.007418,
141
+ "4bit": 0.067538,
142
+ "8bit": 0.000242
143
+ },
144
+ "3": {
145
+ "2bit": 1.825185,
146
+ "4bit": 0.068191,
147
+ "8bit": 0.000251
148
+ },
149
+ "4": {
150
+ "2bit": 0.998271,
151
+ "4bit": 0.037708,
152
+ "8bit": 0.000138
153
+ },
154
+ "5": {
155
+ "2bit": 1.696072,
156
+ "4bit": 0.068816,
157
+ "8bit": 0.000259
158
+ },
159
+ "6": {
160
+ "2bit": 2.722304,
161
+ "4bit": 0.116425,
162
+ "8bit": 0.000427
163
+ },
164
+ "7": {
165
+ "2bit": 2.207015,
166
+ "4bit": 0.083942,
167
+ "8bit": 0.000299
168
+ }
169
+ },
170
+ "4": {
171
+ "0": {
172
+ "2bit": 0.911254,
173
+ "4bit": 0.034233,
174
+ "8bit": 0.000124
175
+ },
176
+ "1": {
177
+ "2bit": 1.669543,
178
+ "4bit": 0.074327,
179
+ "8bit": 0.000275
180
+ },
181
+ "2": {
182
+ "2bit": 2.616326,
183
+ "4bit": 0.083657,
184
+ "8bit": 0.000306
185
+ },
186
+ "3": {
187
+ "2bit": 1.392276,
188
+ "4bit": 0.051905,
189
+ "8bit": 0.000187
190
+ },
191
+ "4": {
192
+ "2bit": 1.398877,
193
+ "4bit": 0.060551,
194
+ "8bit": 0.000213
195
+ },
196
+ "5": {
197
+ "2bit": 1.775969,
198
+ "4bit": 0.097584,
199
+ "8bit": 0.000345
200
+ },
201
+ "6": {
202
+ "2bit": 0.735877,
203
+ "4bit": 0.030724,
204
+ "8bit": 0.00011
205
+ },
206
+ "7": {
207
+ "2bit": 1.986083,
208
+ "4bit": 0.093931,
209
+ "8bit": 0.000333
210
+ }
211
+ },
212
+ "5": {
213
+ "0": {
214
+ "2bit": 1.646835,
215
+ "4bit": 0.072494,
216
+ "8bit": 0.000269
217
+ },
218
+ "1": {
219
+ "2bit": 2.589399,
220
+ "4bit": 0.097729,
221
+ "8bit": 0.00035
222
+ },
223
+ "2": {
224
+ "2bit": 1.087101,
225
+ "4bit": 0.041702,
226
+ "8bit": 0.000152
227
+ },
228
+ "3": {
229
+ "2bit": 1.805192,
230
+ "4bit": 0.073288,
231
+ "8bit": 0.000257
232
+ },
233
+ "4": {
234
+ "2bit": 1.40546,
235
+ "4bit": 0.070294,
236
+ "8bit": 0.000262
237
+ },
238
+ "5": {
239
+ "2bit": 1.311666,
240
+ "4bit": 0.061274,
241
+ "8bit": 0.000216
242
+ },
243
+ "6": {
244
+ "2bit": 1.299382,
245
+ "4bit": 0.050681,
246
+ "8bit": 0.000185
247
+ },
248
+ "7": {
249
+ "2bit": 1.360648,
250
+ "4bit": 0.062991,
251
+ "8bit": 0.000235
252
+ }
253
+ },
254
+ "6": {
255
+ "0": {
256
+ "2bit": 2.172036,
257
+ "4bit": 0.075287,
258
+ "8bit": 0.000272
259
+ },
260
+ "1": {
261
+ "2bit": 3.144641,
262
+ "4bit": 0.092277,
263
+ "8bit": 0.000336
264
+ },
265
+ "2": {
266
+ "2bit": 1.608095,
267
+ "4bit": 0.082313,
268
+ "8bit": 0.000292
269
+ },
270
+ "3": {
271
+ "2bit": 2.546202,
272
+ "4bit": 0.082835,
273
+ "8bit": 0.000298
274
+ },
275
+ "4": {
276
+ "2bit": 2.563858,
277
+ "4bit": 0.077362,
278
+ "8bit": 0.000281
279
+ },
280
+ "5": {
281
+ "2bit": 1.45694,
282
+ "4bit": 0.064594,
283
+ "8bit": 0.00024
284
+ },
285
+ "6": {
286
+ "2bit": 1.372081,
287
+ "4bit": 0.057948,
288
+ "8bit": 0.000214
289
+ },
290
+ "7": {
291
+ "2bit": 2.494781,
292
+ "4bit": 0.16486,
293
+ "8bit": 0.000581
294
+ }
295
+ },
296
+ "7": {
297
+ "0": {
298
+ "2bit": 1.963428,
299
+ "4bit": 0.082925,
300
+ "8bit": 0.000291
301
+ },
302
+ "1": {
303
+ "2bit": 1.632993,
304
+ "4bit": 0.060651,
305
+ "8bit": 0.000221
306
+ },
307
+ "2": {
308
+ "2bit": 1.787988,
309
+ "4bit": 0.076841,
310
+ "8bit": 0.000288
311
+ },
312
+ "3": {
313
+ "2bit": 1.388928,
314
+ "4bit": 0.054667,
315
+ "8bit": 0.000197
316
+ },
317
+ "4": {
318
+ "2bit": 1.665172,
319
+ "4bit": 0.072744,
320
+ "8bit": 0.000259
321
+ },
322
+ "5": {
323
+ "2bit": 1.588525,
324
+ "4bit": 0.054458,
325
+ "8bit": 0.000197
326
+ },
327
+ "6": {
328
+ "2bit": 1.923881,
329
+ "4bit": 0.068322,
330
+ "8bit": 0.000251
331
+ },
332
+ "7": {
333
+ "2bit": 1.328365,
334
+ "4bit": 0.044822,
335
+ "8bit": 0.000163
336
+ }
337
+ },
338
+ "8": {
339
+ "0": {
340
+ "2bit": 2.403139,
341
+ "4bit": 0.126164,
342
+ "8bit": 0.000467
343
+ },
344
+ "1": {
345
+ "2bit": 2.082456,
346
+ "4bit": 0.098564,
347
+ "8bit": 0.000347
348
+ },
349
+ "2": {
350
+ "2bit": 1.387552,
351
+ "4bit": 0.069329,
352
+ "8bit": 0.000245
353
+ },
354
+ "3": {
355
+ "2bit": 1.672266,
356
+ "4bit": 0.064297,
357
+ "8bit": 0.000231
358
+ },
359
+ "4": {
360
+ "2bit": 1.023611,
361
+ "4bit": 0.04128,
362
+ "8bit": 0.000153
363
+ },
364
+ "5": {
365
+ "2bit": 1.653714,
366
+ "4bit": 0.065364,
367
+ "8bit": 0.000233
368
+ },
369
+ "6": {
370
+ "2bit": 2.049061,
371
+ "4bit": 0.069308,
372
+ "8bit": 0.000253
373
+ },
374
+ "7": {
375
+ "2bit": 1.781504,
376
+ "4bit": 0.08367,
377
+ "8bit": 0.000313
378
+ }
379
+ },
380
+ "9": {
381
+ "0": {
382
+ "2bit": 0.918524,
383
+ "4bit": 0.037062,
384
+ "8bit": 0.000137
385
+ },
386
+ "1": {
387
+ "2bit": 1.273425,
388
+ "4bit": 0.049196,
389
+ "8bit": 0.000178
390
+ },
391
+ "2": {
392
+ "2bit": 1.576742,
393
+ "4bit": 0.068121,
394
+ "8bit": 0.000253
395
+ },
396
+ "3": {
397
+ "2bit": 1.219413,
398
+ "4bit": 0.045919,
399
+ "8bit": 0.000166
400
+ },
401
+ "4": {
402
+ "2bit": 1.273967,
403
+ "4bit": 0.050365,
404
+ "8bit": 0.000185
405
+ },
406
+ "5": {
407
+ "2bit": 1.33001,
408
+ "4bit": 0.053997,
409
+ "8bit": 0.000193
410
+ },
411
+ "6": {
412
+ "2bit": 1.227499,
413
+ "4bit": 0.052792,
414
+ "8bit": 0.000187
415
+ },
416
+ "7": {
417
+ "2bit": 1.416939,
418
+ "4bit": 0.060307,
419
+ "8bit": 0.000223
420
+ }
421
+ },
422
+ "10": {
423
+ "0": {
424
+ "2bit": 1.412758,
425
+ "4bit": 0.051217,
426
+ "8bit": 0.000184
427
+ },
428
+ "1": {
429
+ "2bit": 1.113165,
430
+ "4bit": 0.048842,
431
+ "8bit": 0.00018
432
+ },
433
+ "2": {
434
+ "2bit": 1.711709,
435
+ "4bit": 0.071217,
436
+ "8bit": 0.000253
437
+ },
438
+ "3": {
439
+ "2bit": 2.097556,
440
+ "4bit": 0.113594,
441
+ "8bit": 0.0004
442
+ },
443
+ "4": {
444
+ "2bit": 1.393269,
445
+ "4bit": 0.049211,
446
+ "8bit": 0.000177
447
+ },
448
+ "5": {
449
+ "2bit": 1.650199,
450
+ "4bit": 0.0649,
451
+ "8bit": 0.000232
452
+ },
453
+ "6": {
454
+ "2bit": 2.387558,
455
+ "4bit": 0.100509,
456
+ "8bit": 0.000358
457
+ },
458
+ "7": {
459
+ "2bit": 2.05618,
460
+ "4bit": 0.078283,
461
+ "8bit": 0.000281
462
+ }
463
+ },
464
+ "11": {
465
+ "0": {
466
+ "2bit": 0.78626,
467
+ "4bit": 0.029687,
468
+ "8bit": 0.000107
469
+ },
470
+ "1": {
471
+ "2bit": 1.489031,
472
+ "4bit": 0.068943,
473
+ "8bit": 0.000258
474
+ },
475
+ "2": {
476
+ "2bit": 1.061362,
477
+ "4bit": 0.046822,
478
+ "8bit": 0.000174
479
+ },
480
+ "3": {
481
+ "2bit": 1.445414,
482
+ "4bit": 0.05927,
483
+ "8bit": 0.000209
484
+ },
485
+ "4": {
486
+ "2bit": 2.216359,
487
+ "4bit": 0.074722,
488
+ "8bit": 0.00027
489
+ },
490
+ "5": {
491
+ "2bit": 2.193741,
492
+ "4bit": 0.079334,
493
+ "8bit": 0.000287
494
+ },
495
+ "6": {
496
+ "2bit": 2.017558,
497
+ "4bit": 0.080408,
498
+ "8bit": 0.000295
499
+ },
500
+ "7": {
501
+ "2bit": 1.906577,
502
+ "4bit": 0.077715,
503
+ "8bit": 0.000283
504
+ }
505
+ },
506
+ "12": {
507
+ "0": {
508
+ "2bit": 1.749719,
509
+ "4bit": 0.087972,
510
+ "8bit": 0.00031
511
+ },
512
+ "1": {
513
+ "2bit": 2.169801,
514
+ "4bit": 0.07679,
515
+ "8bit": 0.000275
516
+ },
517
+ "2": {
518
+ "2bit": 2.21439,
519
+ "4bit": 0.091871,
520
+ "8bit": 0.000335
521
+ },
522
+ "3": {
523
+ "2bit": 1.476136,
524
+ "4bit": 0.07285,
525
+ "8bit": 0.000258
526
+ },
527
+ "4": {
528
+ "2bit": 1.452321,
529
+ "4bit": 0.056441,
530
+ "8bit": 0.000206
531
+ },
532
+ "5": {
533
+ "2bit": 1.342228,
534
+ "4bit": 0.055908,
535
+ "8bit": 0.0002
536
+ },
537
+ "6": {
538
+ "2bit": 1.544378,
539
+ "4bit": 0.061596,
540
+ "8bit": 0.000223
541
+ },
542
+ "7": {
543
+ "2bit": 1.050014,
544
+ "4bit": 0.04722,
545
+ "8bit": 0.000168
546
+ }
547
+ },
548
+ "13": {
549
+ "0": {
550
+ "2bit": 1.624628,
551
+ "4bit": 0.085572,
552
+ "8bit": 0.000302
553
+ },
554
+ "1": {
555
+ "2bit": 1.997908,
556
+ "4bit": 0.087123,
557
+ "8bit": 0.000323
558
+ },
559
+ "2": {
560
+ "2bit": 1.999066,
561
+ "4bit": 0.087278,
562
+ "8bit": 0.000322
563
+ },
564
+ "3": {
565
+ "2bit": 1.395491,
566
+ "4bit": 0.061202,
567
+ "8bit": 0.000226
568
+ },
569
+ "4": {
570
+ "2bit": 2.343725,
571
+ "4bit": 0.097322,
572
+ "8bit": 0.000343
573
+ },
574
+ "5": {
575
+ "2bit": 1.710008,
576
+ "4bit": 0.081722,
577
+ "8bit": 0.000288
578
+ },
579
+ "6": {
580
+ "2bit": 1.815651,
581
+ "4bit": 0.069256,
582
+ "8bit": 0.000252
583
+ },
584
+ "7": {
585
+ "2bit": 2.440488,
586
+ "4bit": 0.116316,
587
+ "8bit": 0.000408
588
+ }
589
+ },
590
+ "14": {
591
+ "0": {
592
+ "2bit": 1.322071,
593
+ "4bit": 0.054413,
594
+ "8bit": 0.000201
595
+ },
596
+ "1": {
597
+ "2bit": 1.034706,
598
+ "4bit": 0.039935,
599
+ "8bit": 0.000146
600
+ },
601
+ "2": {
602
+ "2bit": 1.570443,
603
+ "4bit": 0.061607,
604
+ "8bit": 0.000226
605
+ },
606
+ "3": {
607
+ "2bit": 1.920502,
608
+ "4bit": 0.072978,
609
+ "8bit": 0.000267
610
+ },
611
+ "4": {
612
+ "2bit": 1.107241,
613
+ "4bit": 0.046085,
614
+ "8bit": 0.000171
615
+ },
616
+ "5": {
617
+ "2bit": 1.736773,
618
+ "4bit": 0.067422,
619
+ "8bit": 0.000243
620
+ },
621
+ "6": {
622
+ "2bit": 1.745196,
623
+ "4bit": 0.072617,
624
+ "8bit": 0.000259
625
+ },
626
+ "7": {
627
+ "2bit": 0.986826,
628
+ "4bit": 0.041658,
629
+ "8bit": 0.000148
630
+ }
631
+ },
632
+ "15": {
633
+ "0": {
634
+ "2bit": 1.314292,
635
+ "4bit": 0.053463,
636
+ "8bit": 0.000197
637
+ },
638
+ "1": {
639
+ "2bit": 1.34888,
640
+ "4bit": 0.060297,
641
+ "8bit": 0.000214
642
+ },
643
+ "2": {
644
+ "2bit": 1.837393,
645
+ "4bit": 0.068633,
646
+ "8bit": 0.00025
647
+ },
648
+ "3": {
649
+ "2bit": 1.82893,
650
+ "4bit": 0.086975,
651
+ "8bit": 0.000323
652
+ },
653
+ "4": {
654
+ "2bit": 1.82945,
655
+ "4bit": 0.066882,
656
+ "8bit": 0.000241
657
+ },
658
+ "5": {
659
+ "2bit": 1.514484,
660
+ "4bit": 0.064664,
661
+ "8bit": 0.000239
662
+ },
663
+ "6": {
664
+ "2bit": 1.492166,
665
+ "4bit": 0.061424,
666
+ "8bit": 0.00022
667
+ },
668
+ "7": {
669
+ "2bit": 1.865242,
670
+ "4bit": 0.075858,
671
+ "8bit": 0.000274
672
+ }
673
+ },
674
+ "16": {
675
+ "0": {
676
+ "2bit": 1.669918,
677
+ "4bit": 0.082674,
678
+ "8bit": 0.000292
679
+ },
680
+ "1": {
681
+ "2bit": 1.574098,
682
+ "4bit": 0.062568,
683
+ "8bit": 0.000225
684
+ },
685
+ "2": {
686
+ "2bit": 1.468039,
687
+ "4bit": 0.061834,
688
+ "8bit": 0.00022
689
+ },
690
+ "3": {
691
+ "2bit": 1.782679,
692
+ "4bit": 0.073019,
693
+ "8bit": 0.00026
694
+ },
695
+ "4": {
696
+ "2bit": 1.308494,
697
+ "4bit": 0.054399,
698
+ "8bit": 0.000195
699
+ },
700
+ "5": {
701
+ "2bit": 1.680173,
702
+ "4bit": 0.064292,
703
+ "8bit": 0.000234
704
+ },
705
+ "6": {
706
+ "2bit": 1.309707,
707
+ "4bit": 0.054918,
708
+ "8bit": 0.000202
709
+ },
710
+ "7": {
711
+ "2bit": 1.601349,
712
+ "4bit": 0.069984,
713
+ "8bit": 0.000248
714
+ }
715
+ },
716
+ "17": {
717
+ "0": {
718
+ "2bit": 1.968627,
719
+ "4bit": 0.086298,
720
+ "8bit": 0.00032
721
+ },
722
+ "1": {
723
+ "2bit": 1.41837,
724
+ "4bit": 0.066183,
725
+ "8bit": 0.000235
726
+ },
727
+ "2": {
728
+ "2bit": 1.751224,
729
+ "4bit": 0.091822,
730
+ "8bit": 0.000325
731
+ },
732
+ "3": {
733
+ "2bit": 1.66518,
734
+ "4bit": 0.08592,
735
+ "8bit": 0.00032
736
+ },
737
+ "4": {
738
+ "2bit": 2.6849,
739
+ "4bit": 0.095523,
740
+ "8bit": 0.000344
741
+ },
742
+ "5": {
743
+ "2bit": 2.200622,
744
+ "4bit": 0.090865,
745
+ "8bit": 0.000325
746
+ },
747
+ "6": {
748
+ "2bit": 1.405657,
749
+ "4bit": 0.060244,
750
+ "8bit": 0.000215
751
+ },
752
+ "7": {
753
+ "2bit": 1.097151,
754
+ "4bit": 0.042971,
755
+ "8bit": 0.000156
756
+ }
757
+ },
758
+ "18": {
759
+ "0": {
760
+ "2bit": 2.010584,
761
+ "4bit": 0.078786,
762
+ "8bit": 0.000289
763
+ },
764
+ "1": {
765
+ "2bit": 1.670967,
766
+ "4bit": 0.079038,
767
+ "8bit": 0.000279
768
+ },
769
+ "2": {
770
+ "2bit": 1.396168,
771
+ "4bit": 0.062601,
772
+ "8bit": 0.000223
773
+ },
774
+ "3": {
775
+ "2bit": 1.462345,
776
+ "4bit": 0.055801,
777
+ "8bit": 0.000204
778
+ },
779
+ "4": {
780
+ "2bit": 1.904111,
781
+ "4bit": 0.071439,
782
+ "8bit": 0.000257
783
+ },
784
+ "5": {
785
+ "2bit": 1.329314,
786
+ "4bit": 0.052623,
787
+ "8bit": 0.000189
788
+ },
789
+ "6": {
790
+ "2bit": 1.718576,
791
+ "4bit": 0.093508,
792
+ "8bit": 0.000331
793
+ },
794
+ "7": {
795
+ "2bit": 1.933535,
796
+ "4bit": 0.086362,
797
+ "8bit": 0.000318
798
+ }
799
+ },
800
+ "19": {
801
+ "0": {
802
+ "2bit": 1.534418,
803
+ "4bit": 0.081535,
804
+ "8bit": 0.000304
805
+ },
806
+ "1": {
807
+ "2bit": 1.857097,
808
+ "4bit": 0.067898,
809
+ "8bit": 0.000247
810
+ },
811
+ "2": {
812
+ "2bit": 2.240644,
813
+ "4bit": 0.088436,
814
+ "8bit": 0.000316
815
+ },
816
+ "3": {
817
+ "2bit": 1.620667,
818
+ "4bit": 0.067017,
819
+ "8bit": 0.000239
820
+ },
821
+ "4": {
822
+ "2bit": 1.589832,
823
+ "4bit": 0.060374,
824
+ "8bit": 0.000216
825
+ },
826
+ "5": {
827
+ "2bit": 3.267183,
828
+ "4bit": 0.105293,
829
+ "8bit": 0.000391
830
+ },
831
+ "6": {
832
+ "2bit": 1.32155,
833
+ "4bit": 0.065992,
834
+ "8bit": 0.000247
835
+ },
836
+ "7": {
837
+ "2bit": 1.600902,
838
+ "4bit": 0.07471,
839
+ "8bit": 0.000278
840
+ }
841
+ },
842
+ "20": {
843
+ "0": {
844
+ "2bit": 1.816447,
845
+ "4bit": 0.070234,
846
+ "8bit": 0.000253
847
+ },
848
+ "1": {
849
+ "2bit": 1.978655,
850
+ "4bit": 0.082553,
851
+ "8bit": 0.000308
852
+ },
853
+ "2": {
854
+ "2bit": 1.260029,
855
+ "4bit": 0.055176,
856
+ "8bit": 0.000196
857
+ },
858
+ "3": {
859
+ "2bit": 1.904745,
860
+ "4bit": 0.069508,
861
+ "8bit": 0.000253
862
+ },
863
+ "4": {
864
+ "2bit": 1.5048,
865
+ "4bit": 0.061951,
866
+ "8bit": 0.000229
867
+ },
868
+ "5": {
869
+ "2bit": 1.57513,
870
+ "4bit": 0.074261,
871
+ "8bit": 0.000262
872
+ },
873
+ "6": {
874
+ "2bit": 1.69522,
875
+ "4bit": 0.065696,
876
+ "8bit": 0.000238
877
+ },
878
+ "7": {
879
+ "2bit": 1.816767,
880
+ "4bit": 0.068307,
881
+ "8bit": 0.00025
882
+ }
883
+ },
884
+ "21": {
885
+ "0": {
886
+ "2bit": 1.153863,
887
+ "4bit": 0.040871,
888
+ "8bit": 0.000149
889
+ },
890
+ "1": {
891
+ "2bit": 1.814577,
892
+ "4bit": 0.073578,
893
+ "8bit": 0.000263
894
+ },
895
+ "2": {
896
+ "2bit": 1.362879,
897
+ "4bit": 0.051833,
898
+ "8bit": 0.000188
899
+ },
900
+ "3": {
901
+ "2bit": 1.166707,
902
+ "4bit": 0.04918,
903
+ "8bit": 0.000176
904
+ },
905
+ "4": {
906
+ "2bit": 1.296553,
907
+ "4bit": 0.052385,
908
+ "8bit": 0.000193
909
+ },
910
+ "5": {
911
+ "2bit": 3.967201,
912
+ "4bit": 0.124592,
913
+ "8bit": 0.000468
914
+ },
915
+ "6": {
916
+ "2bit": 1.52414,
917
+ "4bit": 0.085691,
918
+ "8bit": 0.000302
919
+ },
920
+ "7": {
921
+ "2bit": 2.410778,
922
+ "4bit": 0.109507,
923
+ "8bit": 0.000407
924
+ }
925
+ },
926
+ "22": {
927
+ "0": {
928
+ "2bit": 0.747227,
929
+ "4bit": 0.030391,
930
+ "8bit": 0.000108
931
+ },
932
+ "1": {
933
+ "2bit": 0.910305,
934
+ "4bit": 0.036248,
935
+ "8bit": 0.000133
936
+ },
937
+ "2": {
938
+ "2bit": 1.360477,
939
+ "4bit": 0.051683,
940
+ "8bit": 0.000188
941
+ },
942
+ "3": {
943
+ "2bit": 1.91634,
944
+ "4bit": 0.124982,
945
+ "8bit": 0.000463
946
+ },
947
+ "4": {
948
+ "2bit": 0.754953,
949
+ "4bit": 0.028669,
950
+ "8bit": 0.000104
951
+ },
952
+ "5": {
953
+ "2bit": 1.513672,
954
+ "4bit": 0.077863,
955
+ "8bit": 0.000274
956
+ },
957
+ "6": {
958
+ "2bit": 1.416754,
959
+ "4bit": 0.065633,
960
+ "8bit": 0.000246
961
+ },
962
+ "7": {
963
+ "2bit": 1.103243,
964
+ "4bit": 0.049249,
965
+ "8bit": 0.000183
966
+ }
967
+ },
968
+ "23": {
969
+ "0": {
970
+ "2bit": 1.724428,
971
+ "4bit": 0.085561,
972
+ "8bit": 0.000318
973
+ },
974
+ "1": {
975
+ "2bit": 1.592232,
976
+ "4bit": 0.064306,
977
+ "8bit": 0.000226
978
+ },
979
+ "2": {
980
+ "2bit": 1.310122,
981
+ "4bit": 0.049167,
982
+ "8bit": 0.000177
983
+ },
984
+ "3": {
985
+ "2bit": 0.951035,
986
+ "4bit": 0.034097,
987
+ "8bit": 0.000123
988
+ },
989
+ "4": {
990
+ "2bit": 1.758739,
991
+ "4bit": 0.083453,
992
+ "8bit": 0.000311
993
+ },
994
+ "5": {
995
+ "2bit": 1.647038,
996
+ "4bit": 0.061161,
997
+ "8bit": 0.00022
998
+ },
999
+ "6": {
1000
+ "2bit": 2.10231,
1001
+ "4bit": 0.104304,
1002
+ "8bit": 0.000387
1003
+ },
1004
+ "7": {
1005
+ "2bit": 2.364744,
1006
+ "4bit": 0.094391,
1007
+ "8bit": 0.00033
1008
+ }
1009
+ },
1010
+ "24": {
1011
+ "0": {
1012
+ "2bit": 1.151069,
1013
+ "4bit": 0.050224,
1014
+ "8bit": 0.000185
1015
+ },
1016
+ "1": {
1017
+ "2bit": 1.123055,
1018
+ "4bit": 0.041769,
1019
+ "8bit": 0.000152
1020
+ },
1021
+ "2": {
1022
+ "2bit": 1.196377,
1023
+ "4bit": 0.054532,
1024
+ "8bit": 0.000202
1025
+ },
1026
+ "3": {
1027
+ "2bit": 1.314301,
1028
+ "4bit": 0.048999,
1029
+ "8bit": 0.000179
1030
+ },
1031
+ "4": {
1032
+ "2bit": 1.047907,
1033
+ "4bit": 0.046386,
1034
+ "8bit": 0.000173
1035
+ },
1036
+ "5": {
1037
+ "2bit": 1.679045,
1038
+ "4bit": 0.076513,
1039
+ "8bit": 0.000271
1040
+ },
1041
+ "6": {
1042
+ "2bit": 1.21999,
1043
+ "4bit": 0.045077,
1044
+ "8bit": 0.000163
1045
+ },
1046
+ "7": {
1047
+ "2bit": 2.599075,
1048
+ "4bit": 0.104117,
1049
+ "8bit": 0.000389
1050
+ }
1051
+ },
1052
+ "25": {
1053
+ "0": {
1054
+ "2bit": 1.472107,
1055
+ "4bit": 0.063345,
1056
+ "8bit": 0.000236
1057
+ },
1058
+ "1": {
1059
+ "2bit": 1.502398,
1060
+ "4bit": 0.069731,
1061
+ "8bit": 0.00026
1062
+ },
1063
+ "2": {
1064
+ "2bit": 1.57387,
1065
+ "4bit": 0.059204,
1066
+ "8bit": 0.000216
1067
+ },
1068
+ "3": {
1069
+ "2bit": 1.629566,
1070
+ "4bit": 0.068947,
1071
+ "8bit": 0.000246
1072
+ },
1073
+ "4": {
1074
+ "2bit": 0.910637,
1075
+ "4bit": 0.03775,
1076
+ "8bit": 0.000135
1077
+ },
1078
+ "5": {
1079
+ "2bit": 1.551672,
1080
+ "4bit": 0.061317,
1081
+ "8bit": 0.00023
1082
+ },
1083
+ "6": {
1084
+ "2bit": 1.11796,
1085
+ "4bit": 0.048358,
1086
+ "8bit": 0.000172
1087
+ },
1088
+ "7": {
1089
+ "2bit": 1.577454,
1090
+ "4bit": 0.067808,
1091
+ "8bit": 0.000252
1092
+ }
1093
+ },
1094
+ "26": {
1095
+ "0": {
1096
+ "2bit": 1.231514,
1097
+ "4bit": 0.05502,
1098
+ "8bit": 0.000203
1099
+ },
1100
+ "1": {
1101
+ "2bit": 1.106922,
1102
+ "4bit": 0.042905,
1103
+ "8bit": 0.000157
1104
+ },
1105
+ "2": {
1106
+ "2bit": 1.269325,
1107
+ "4bit": 0.050961,
1108
+ "8bit": 0.00018
1109
+ },
1110
+ "3": {
1111
+ "2bit": 0.933496,
1112
+ "4bit": 0.036494,
1113
+ "8bit": 0.000133
1114
+ },
1115
+ "4": {
1116
+ "2bit": 0.801933,
1117
+ "4bit": 0.030255,
1118
+ "8bit": 0.00011
1119
+ },
1120
+ "5": {
1121
+ "2bit": 1.335897,
1122
+ "4bit": 0.06658,
1123
+ "8bit": 0.000235
1124
+ },
1125
+ "6": {
1126
+ "2bit": 1.621925,
1127
+ "4bit": 0.069036,
1128
+ "8bit": 0.000244
1129
+ },
1130
+ "7": {
1131
+ "2bit": 1.989624,
1132
+ "4bit": 0.084026,
1133
+ "8bit": 0.000309
1134
+ }
1135
+ },
1136
+ "27": {
1137
+ "0": {
1138
+ "2bit": 2.556004,
1139
+ "4bit": 0.114416,
1140
+ "8bit": 0.000404
1141
+ },
1142
+ "1": {
1143
+ "2bit": 1.349316,
1144
+ "4bit": 0.05246,
1145
+ "8bit": 0.000192
1146
+ },
1147
+ "2": {
1148
+ "2bit": 3.095371,
1149
+ "4bit": 0.131381,
1150
+ "8bit": 0.000488
1151
+ },
1152
+ "3": {
1153
+ "2bit": 1.425734,
1154
+ "4bit": 0.052843,
1155
+ "8bit": 0.000192
1156
+ },
1157
+ "4": {
1158
+ "2bit": 1.196075,
1159
+ "4bit": 0.049564,
1160
+ "8bit": 0.000177
1161
+ },
1162
+ "5": {
1163
+ "2bit": 2.229198,
1164
+ "4bit": 0.096098,
1165
+ "8bit": 0.000337
1166
+ },
1167
+ "6": {
1168
+ "2bit": 0.938061,
1169
+ "4bit": 0.035635,
1170
+ "8bit": 0.00013
1171
+ },
1172
+ "7": {
1173
+ "2bit": 1.25318,
1174
+ "4bit": 0.04978,
1175
+ "8bit": 0.000183
1176
+ }
1177
+ },
1178
+ "28": {
1179
+ "0": {
1180
+ "2bit": 1.667999,
1181
+ "4bit": 0.075404,
1182
+ "8bit": 0.000266
1183
+ },
1184
+ "1": {
1185
+ "2bit": 1.987015,
1186
+ "4bit": 0.079003,
1187
+ "8bit": 0.000283
1188
+ },
1189
+ "2": {
1190
+ "2bit": 1.484013,
1191
+ "4bit": 0.063911,
1192
+ "8bit": 0.000225
1193
+ },
1194
+ "3": {
1195
+ "2bit": 1.981274,
1196
+ "4bit": 0.072937,
1197
+ "8bit": 0.000261
1198
+ },
1199
+ "4": {
1200
+ "2bit": 0.918701,
1201
+ "4bit": 0.040401,
1202
+ "8bit": 0.000144
1203
+ },
1204
+ "5": {
1205
+ "2bit": 0.945871,
1206
+ "4bit": 0.038321,
1207
+ "8bit": 0.000141
1208
+ },
1209
+ "6": {
1210
+ "2bit": 0.933807,
1211
+ "4bit": 0.035623,
1212
+ "8bit": 0.00013
1213
+ },
1214
+ "7": {
1215
+ "2bit": 1.214512,
1216
+ "4bit": 0.048709,
1217
+ "8bit": 0.000179
1218
+ }
1219
+ },
1220
+ "29": {
1221
+ "0": {
1222
+ "2bit": 1.492014,
1223
+ "4bit": 0.066029,
1224
+ "8bit": 0.000245
1225
+ },
1226
+ "1": {
1227
+ "2bit": 3.013687,
1228
+ "4bit": 0.143306,
1229
+ "8bit": 0.000532
1230
+ },
1231
+ "2": {
1232
+ "2bit": 1.229637,
1233
+ "4bit": 0.047642,
1234
+ "8bit": 0.000172
1235
+ },
1236
+ "3": {
1237
+ "2bit": 1.523476,
1238
+ "4bit": 0.067737,
1239
+ "8bit": 0.000252
1240
+ },
1241
+ "4": {
1242
+ "2bit": 1.546013,
1243
+ "4bit": 0.060067,
1244
+ "8bit": 0.00022
1245
+ },
1246
+ "5": {
1247
+ "2bit": 1.292553,
1248
+ "4bit": 0.058714,
1249
+ "8bit": 0.000208
1250
+ },
1251
+ "6": {
1252
+ "2bit": 1.107986,
1253
+ "4bit": 0.044617,
1254
+ "8bit": 0.000159
1255
+ },
1256
+ "7": {
1257
+ "2bit": 2.442818,
1258
+ "4bit": 0.089641,
1259
+ "8bit": 0.000322
1260
+ }
1261
+ },
1262
+ "30": {
1263
+ "0": {
1264
+ "2bit": 1.299538,
1265
+ "4bit": 0.047529,
1266
+ "8bit": 0.000172
1267
+ },
1268
+ "1": {
1269
+ "2bit": 0.89185,
1270
+ "4bit": 0.038019,
1271
+ "8bit": 0.000136
1272
+ },
1273
+ "2": {
1274
+ "2bit": 1.310513,
1275
+ "4bit": 0.053666,
1276
+ "8bit": 0.000197
1277
+ },
1278
+ "3": {
1279
+ "2bit": 1.010298,
1280
+ "4bit": 0.04109,
1281
+ "8bit": 0.000151
1282
+ },
1283
+ "4": {
1284
+ "2bit": 1.146852,
1285
+ "4bit": 0.043392,
1286
+ "8bit": 0.000158
1287
+ },
1288
+ "5": {
1289
+ "2bit": 2.16995,
1290
+ "4bit": 0.080771,
1291
+ "8bit": 0.000284
1292
+ },
1293
+ "6": {
1294
+ "2bit": 1.234642,
1295
+ "4bit": 0.045607,
1296
+ "8bit": 0.000166
1297
+ },
1298
+ "7": {
1299
+ "2bit": 1.553858,
1300
+ "4bit": 0.061193,
1301
+ "8bit": 0.000218
1302
+ }
1303
+ },
1304
+ "31": {
1305
+ "0": {
1306
+ "2bit": 0.85825,
1307
+ "4bit": 0.037179,
1308
+ "8bit": 0.000137
1309
+ },
1310
+ "1": {
1311
+ "2bit": 1.297428,
1312
+ "4bit": 0.052789,
1313
+ "8bit": 0.00019
1314
+ },
1315
+ "2": {
1316
+ "2bit": 1.489906,
1317
+ "4bit": 0.05656,
1318
+ "8bit": 0.000206
1319
+ },
1320
+ "3": {
1321
+ "2bit": 1.519638,
1322
+ "4bit": 0.057934,
1323
+ "8bit": 0.000207
1324
+ },
1325
+ "4": {
1326
+ "2bit": 1.264908,
1327
+ "4bit": 0.055957,
1328
+ "8bit": 0.000205
1329
+ },
1330
+ "5": {
1331
+ "2bit": 2.053621,
1332
+ "4bit": 0.077441,
1333
+ "8bit": 0.00029
1334
+ },
1335
+ "6": {
1336
+ "2bit": 1.156225,
1337
+ "4bit": 0.044922,
1338
+ "8bit": 0.000161
1339
+ },
1340
+ "7": {
1341
+ "2bit": 1.146229,
1342
+ "4bit": 0.042921,
1343
+ "8bit": 0.000156
1344
+ }
1345
+ }
1346
+ }