Tanguy85 commited on
Commit
6a4d75f
·
verified ·
1 Parent(s): be5e635

Chess Challenge submission by Tanguy85

Browse files
Files changed (9) hide show
  1. README.md +31 -0
  2. config.json +24 -0
  3. model.py +438 -0
  4. model.safetensors +3 -0
  5. special_tokens_map.json +6 -0
  6. tokenizer.py +224 -0
  7. tokenizer_config.json +50 -0
  8. training_args.bin +3 -0
  9. vocab.json +4214 -0
README.md ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ tags:
4
+ - chess
5
+ - llm-course
6
+ - chess-challenge
7
+ license: mit
8
+ ---
9
+
10
+ # chess-angryCarlsen
11
+
12
+ Chess model submitted to the LLM Course Chess Challenge.
13
+
14
+ ## Submission Info
15
+
16
+ - **Submitted by**: [Tanguy85](https://huggingface.co/Tanguy85)
17
+ - **Parameters**: 951,936
18
+ - **Organization**: LLM-course
19
+
20
+ ## Usage
21
+
22
+ ```python
23
+ from transformers import AutoModelForCausalLM, AutoTokenizer
24
+
25
+ model = AutoModelForCausalLM.from_pretrained("LLM-course/chess-angryCarlsen", trust_remote_code=True)
26
+ tokenizer = AutoTokenizer.from_pretrained("LLM-course/chess-angryCarlsen", trust_remote_code=True)
27
+ ```
28
+
29
+ ## Evaluation
30
+
31
+ This model is evaluated at the [Chess Challenge Arena](https://huggingface.co/spaces/LLM-course/Chess1MChallenge).
config.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ChessForCausalLM"
4
+ ],
5
+ "bos_token_id": 1,
6
+ "dropout": 0.05,
7
+ "dtype": "float32",
8
+ "eos_token_id": 2,
9
+ "layer_norm_epsilon": 1e-05,
10
+ "model_type": "chess_transformer",
11
+ "n_ctx": 256,
12
+ "n_embd": 96,
13
+ "n_head": 6,
14
+ "n_inner": 256,
15
+ "n_layer": 6,
16
+ "pad_token_id": 0,
17
+ "tie_weights": true,
18
+ "transformers_version": "4.57.6",
19
+ "vocab_size": 4212,
20
+ "auto_map": {
21
+ "AutoConfig": "model.ChessConfig",
22
+ "AutoModelForCausalLM": "model.ChessForCausalLM"
23
+ }
24
+ }
model.py ADDED
@@ -0,0 +1,438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Chess Transformer Model for the Chess Challenge.
3
+
4
+ This module provides a simple GPT-style transformer architecture
5
+ designed to fit within the 1M parameter constraint.
6
+
7
+ Key components:
8
+ - ChessConfig: Configuration class for model hyperparameters
9
+ - ChessForCausalLM: The main model class for next-move prediction
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import math
15
+ from dataclasses import dataclass
16
+ from typing import Optional, Tuple, Union
17
+
18
+ import torch
19
+ import torch.nn as nn
20
+ import torch.nn.functional as F
21
+ from transformers import PretrainedConfig, PreTrainedModel
22
+ from transformers.modeling_outputs import CausalLMOutputWithPast
23
+
24
+
25
+ class ChessConfig(PretrainedConfig):
26
+ """
27
+ Configuration class for the Chess Transformer model.
28
+
29
+ This configuration is designed for a ~1M parameter model.
30
+ Students can adjust these values to explore different architectures.
31
+
32
+ Parameter budget breakdown (with default values):
33
+ - Embeddings (vocab): 1200 x 128 = 153,600
34
+ - Position Embeddings: 256 x 128 = 32,768
35
+ - Transformer Layers: 6 x ~120,000 = ~720,000
36
+ - LM Head (with weight tying): 0 (shared with embeddings)
37
+ - Total: ~906,000 parameters
38
+
39
+ Attributes:
40
+ vocab_size: Size of the vocabulary (number of unique moves).
41
+ n_embd: Embedding dimension (d_model).
42
+ n_layer: Number of transformer layers.
43
+ n_head: Number of attention heads.
44
+ n_ctx: Maximum sequence length (context window).
45
+ n_inner: Feed-forward inner dimension (default: 3 * n_embd).
46
+ dropout: Dropout probability.
47
+ layer_norm_epsilon: Epsilon for layer normalization.
48
+ tie_weights: Whether to tie embedding and output weights.
49
+ """
50
+
51
+ model_type = "chess_transformer"
52
+
53
+ def __init__(
54
+ self,
55
+ vocab_size: int = 1200,
56
+ n_embd: int = 128,
57
+ n_layer: int = 6,
58
+ n_head: int = 4,
59
+ n_ctx: int = 256,
60
+ n_inner: Optional[int] = None,
61
+ dropout: float = 0.1,
62
+ layer_norm_epsilon: float = 1e-5,
63
+ tie_weights: bool = True,
64
+ pad_token_id: int = 0,
65
+ bos_token_id: int = 1,
66
+ eos_token_id: int = 2,
67
+ **kwargs,
68
+ ):
69
+ super().__init__(
70
+ pad_token_id=pad_token_id,
71
+ bos_token_id=bos_token_id,
72
+ eos_token_id=eos_token_id,
73
+ **kwargs,
74
+ )
75
+
76
+ self.vocab_size = vocab_size
77
+ self.n_embd = n_embd
78
+ self.n_layer = n_layer
79
+ self.n_head = n_head
80
+ self.n_ctx = n_ctx
81
+ self.n_inner = n_inner if n_inner is not None else 3 * n_embd # Reduced from 4x to 3x
82
+ self.dropout = dropout
83
+ self.layer_norm_epsilon = layer_norm_epsilon
84
+ self.tie_weights = tie_weights
85
+ # Inform HF base class about tying behavior
86
+ self.tie_word_embeddings = bool(tie_weights)
87
+
88
+
89
+ class MultiHeadAttention(nn.Module):
90
+ """
91
+ Multi-head self-attention module.
92
+
93
+ This is a standard scaled dot-product attention implementation
94
+ with causal masking for autoregressive generation.
95
+ """
96
+
97
+ def __init__(self, config: ChessConfig):
98
+ super().__init__()
99
+
100
+ assert config.n_embd % config.n_head == 0, \
101
+ f"n_embd ({config.n_embd}) must be divisible by n_head ({config.n_head})"
102
+
103
+ self.n_head = config.n_head
104
+ self.n_embd = config.n_embd
105
+ self.head_dim = config.n_embd // config.n_head
106
+
107
+ # Combined QKV projection for efficiency
108
+ self.c_attn = nn.Linear(config.n_embd, 3 * config.n_embd)
109
+ self.c_proj = nn.Linear(config.n_embd, config.n_embd)
110
+
111
+ self.dropout = nn.Dropout(config.dropout)
112
+
113
+ # Causal mask (will be created on first forward pass)
114
+ self.register_buffer(
115
+ "bias",
116
+ torch.tril(torch.ones(config.n_ctx, config.n_ctx)).view(
117
+ 1, 1, config.n_ctx, config.n_ctx
118
+ ),
119
+ persistent=False,
120
+ )
121
+
122
+ def forward(
123
+ self,
124
+ x: torch.Tensor,
125
+ attention_mask: Optional[torch.Tensor] = None,
126
+ ) -> torch.Tensor:
127
+ batch_size, seq_len, _ = x.size()
128
+
129
+ # Compute Q, K, V
130
+ qkv = self.c_attn(x)
131
+ q, k, v = qkv.split(self.n_embd, dim=2)
132
+
133
+ # Reshape for multi-head attention
134
+ q = q.view(batch_size, seq_len, self.n_head, self.head_dim).transpose(1, 2)
135
+ k = k.view(batch_size, seq_len, self.n_head, self.head_dim).transpose(1, 2)
136
+ v = v.view(batch_size, seq_len, self.n_head, self.head_dim).transpose(1, 2)
137
+
138
+ # Scaled dot-product attention
139
+ attn_weights = torch.matmul(q, k.transpose(-2, -1)) / math.sqrt(self.head_dim)
140
+
141
+ # Apply causal mask
142
+ causal_mask = self.bias[:, :, :seq_len, :seq_len]
143
+ attn_weights = attn_weights.masked_fill(causal_mask == 0, float("-inf"))
144
+
145
+ # Apply attention mask (for padding)
146
+ if attention_mask is not None:
147
+ # attention_mask shape: (batch_size, seq_len) -> (batch_size, 1, 1, seq_len)
148
+ attention_mask = attention_mask.unsqueeze(1).unsqueeze(2)
149
+ attn_weights = attn_weights.masked_fill(attention_mask == 0, float("-inf"))
150
+
151
+ attn_weights = F.softmax(attn_weights, dim=-1)
152
+ attn_weights = self.dropout(attn_weights)
153
+
154
+ # Apply attention to values
155
+ attn_output = torch.matmul(attn_weights, v)
156
+
157
+ # Reshape back
158
+ attn_output = attn_output.transpose(1, 2).contiguous().view(
159
+ batch_size, seq_len, self.n_embd
160
+ )
161
+
162
+ # Output projection
163
+ attn_output = self.c_proj(attn_output)
164
+
165
+ return attn_output
166
+
167
+
168
+ class FeedForward(nn.Module):
169
+ """
170
+ Feed-forward network (MLP) module.
171
+
172
+ Standard two-layer MLP with GELU activation.
173
+ """
174
+
175
+ def __init__(self, config: ChessConfig):
176
+ super().__init__()
177
+
178
+ self.c_fc = nn.Linear(config.n_embd, config.n_inner)
179
+ self.c_proj = nn.Linear(config.n_inner, config.n_embd)
180
+ self.dropout = nn.Dropout(config.dropout)
181
+
182
+ def forward(self, x: torch.Tensor) -> torch.Tensor:
183
+ x = self.c_fc(x)
184
+ x = F.gelu(x)
185
+ x = self.c_proj(x)
186
+ x = self.dropout(x)
187
+ return x
188
+
189
+
190
+ class TransformerBlock(nn.Module):
191
+ """
192
+ A single transformer block with attention and feed-forward layers.
193
+
194
+ Uses pre-normalization (LayerNorm before attention/FFN) for better
195
+ training stability.
196
+ """
197
+
198
+ def __init__(self, config: ChessConfig):
199
+ super().__init__()
200
+
201
+ self.ln_1 = nn.LayerNorm(config.n_embd, eps=config.layer_norm_epsilon)
202
+ self.attn = MultiHeadAttention(config)
203
+ self.ln_2 = nn.LayerNorm(config.n_embd, eps=config.layer_norm_epsilon)
204
+ self.mlp = FeedForward(config)
205
+
206
+ def forward(
207
+ self,
208
+ x: torch.Tensor,
209
+ attention_mask: Optional[torch.Tensor] = None,
210
+ ) -> torch.Tensor:
211
+ # Pre-norm attention
212
+ x = x + self.attn(self.ln_1(x), attention_mask=attention_mask)
213
+ # Pre-norm FFN
214
+ x = x + self.mlp(self.ln_2(x))
215
+ return x
216
+
217
+
218
+ class ChessForCausalLM(PreTrainedModel):
219
+ """
220
+ Chess Transformer for Causal Language Modeling (next-move prediction).
221
+
222
+ This model is designed to predict the next chess move given a sequence
223
+ of previous moves. It uses a GPT-style architecture with:
224
+ - Token embeddings for chess moves
225
+ - Learned positional embeddings
226
+ - Stacked transformer blocks
227
+ - Linear head for next-token prediction
228
+
229
+ The model supports weight tying between the embedding layer and the
230
+ output projection to save parameters.
231
+
232
+ Example:
233
+ >>> config = ChessConfig(vocab_size=1200, n_embd=128, n_layer=6)
234
+ >>> model = ChessForCausalLM(config)
235
+ >>> inputs = {"input_ids": torch.tensor([[1, 42, 87]])}
236
+ >>> outputs = model(**inputs)
237
+ >>> next_move_logits = outputs.logits[:, -1, :]
238
+ """
239
+
240
+ config_class = ChessConfig
241
+ base_model_prefix = "transformer"
242
+ supports_gradient_checkpointing = True
243
+ # Suppress missing-key warning for tied lm_head when loading
244
+ keys_to_ignore_on_load_missing = ["lm_head.weight"]
245
+
246
+ def __init__(self, config: ChessConfig):
247
+ super().__init__(config)
248
+
249
+ # Token and position embeddings
250
+ self.wte = nn.Embedding(config.vocab_size, config.n_embd)
251
+ self.wpe = nn.Embedding(config.n_ctx, config.n_embd)
252
+
253
+ self.drop = nn.Dropout(config.dropout)
254
+
255
+ # Transformer blocks
256
+ self.h = nn.ModuleList([
257
+ TransformerBlock(config) for _ in range(config.n_layer)
258
+ ])
259
+
260
+ # Final layer norm
261
+ self.ln_f = nn.LayerNorm(config.n_embd, eps=config.layer_norm_epsilon)
262
+
263
+ # Output head
264
+ self.lm_head = nn.Linear(config.n_embd, config.vocab_size, bias=False)
265
+
266
+ # Declare tied weights for proper serialization
267
+ if config.tie_weights:
268
+ self._tied_weights_keys = ["lm_head.weight"]
269
+
270
+ # Initialize weights
271
+ self.post_init()
272
+
273
+ # Tie weights if configured
274
+ if config.tie_weights:
275
+ self.tie_weights()
276
+
277
+ def get_input_embeddings(self) -> nn.Module:
278
+ return self.wte
279
+
280
+ def set_input_embeddings(self, new_embeddings: nn.Module):
281
+ self.wte = new_embeddings
282
+ if getattr(self.config, "tie_weights", False):
283
+ self.tie_weights()
284
+
285
+ def get_output_embeddings(self) -> nn.Module:
286
+ return self.lm_head
287
+
288
+ def set_output_embeddings(self, new_embeddings: nn.Module):
289
+ self.lm_head = new_embeddings
290
+
291
+ def tie_weights(self):
292
+ # Use HF helper to tie or clone depending on config
293
+ if getattr(self.config, "tie_weights", False) or getattr(self.config, "tie_word_embeddings", False):
294
+ self._tie_or_clone_weights(self.lm_head, self.wte)
295
+
296
+ def _init_weights(self, module: nn.Module):
297
+ """Initialize weights following GPT-2 style."""
298
+ if isinstance(module, nn.Linear):
299
+ torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)
300
+ if module.bias is not None:
301
+ torch.nn.init.zeros_(module.bias)
302
+ elif isinstance(module, nn.Embedding):
303
+ torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)
304
+ elif isinstance(module, nn.LayerNorm):
305
+ torch.nn.init.ones_(module.weight)
306
+ torch.nn.init.zeros_(module.bias)
307
+
308
+ def forward(
309
+ self,
310
+ input_ids: torch.LongTensor,
311
+ attention_mask: Optional[torch.Tensor] = None,
312
+ position_ids: Optional[torch.LongTensor] = None,
313
+ labels: Optional[torch.LongTensor] = None,
314
+ return_dict: Optional[bool] = None,
315
+ **kwargs,
316
+ ) -> Union[Tuple, CausalLMOutputWithPast]:
317
+ """
318
+ Forward pass of the model.
319
+
320
+ Args:
321
+ input_ids: Token IDs of shape (batch_size, seq_len).
322
+ attention_mask: Attention mask of shape (batch_size, seq_len).
323
+ position_ids: Position IDs of shape (batch_size, seq_len).
324
+ labels: Labels for language modeling loss.
325
+ return_dict: Whether to return a ModelOutput object.
326
+
327
+ Returns:
328
+ CausalLMOutputWithPast containing loss (if labels provided) and logits.
329
+ """
330
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
331
+
332
+ batch_size, seq_len = input_ids.size()
333
+ device = input_ids.device
334
+
335
+ # Create position IDs if not provided
336
+ if position_ids is None:
337
+ position_ids = torch.arange(seq_len, device=device).unsqueeze(0).expand(batch_size, -1)
338
+
339
+ # Get embeddings
340
+ token_embeds = self.wte(input_ids)
341
+ position_embeds = self.wpe(position_ids)
342
+ hidden_states = self.drop(token_embeds + position_embeds)
343
+
344
+ # Pass through transformer blocks
345
+ for block in self.h:
346
+ hidden_states = block(hidden_states, attention_mask=attention_mask)
347
+
348
+ # Final layer norm
349
+ hidden_states = self.ln_f(hidden_states)
350
+
351
+ # Get logits
352
+ logits = self.lm_head(hidden_states)
353
+
354
+ # Compute loss if labels are provided
355
+ loss = None
356
+ if labels is not None:
357
+ # Shift logits and labels for next-token prediction
358
+ shift_logits = logits[..., :-1, :].contiguous()
359
+ shift_labels = labels[..., 1:].contiguous()
360
+
361
+ # Flatten for cross-entropy
362
+ loss_fct = nn.CrossEntropyLoss(ignore_index=-100)
363
+ # loss_fct = nn.CrossEntropyLoss(ignore_index=self.config.pad_token_id)
364
+ loss = loss_fct(
365
+ shift_logits.view(-1, shift_logits.size(-1)),
366
+ shift_labels.view(-1),
367
+ )
368
+
369
+ if not return_dict:
370
+ output = (logits,)
371
+ return ((loss,) + output) if loss is not None else output
372
+
373
+ return CausalLMOutputWithPast(
374
+ loss=loss,
375
+ logits=logits,
376
+ past_key_values=None,
377
+ hidden_states=None,
378
+ attentions=None,
379
+ )
380
+
381
+ @torch.no_grad()
382
+ def generate_move(
383
+ self,
384
+ input_ids: torch.LongTensor,
385
+ temperature: float = 1.0,
386
+ top_k: Optional[int] = None,
387
+ top_p: Optional[float] = None,
388
+ ) -> int:
389
+ """
390
+ Generate the next move given a sequence of moves.
391
+
392
+ Args:
393
+ input_ids: Token IDs of shape (1, seq_len).
394
+ temperature: Sampling temperature (1.0 = no change).
395
+ top_k: If set, only sample from top k tokens.
396
+ top_p: If set, use nucleus sampling with this threshold.
397
+
398
+ Returns:
399
+ The token ID of the predicted next move.
400
+ """
401
+ self.eval()
402
+
403
+ # Get logits for the last position
404
+ outputs = self(input_ids)
405
+ logits = outputs.logits[:, -1, :] / temperature
406
+
407
+ # Apply top-k filtering
408
+ if top_k is not None:
409
+ indices_to_remove = logits < torch.topk(logits, top_k)[0][..., -1, None]
410
+ logits[indices_to_remove] = float("-inf")
411
+
412
+ # Apply top-p (nucleus) filtering
413
+ if top_p is not None:
414
+ sorted_logits, sorted_indices = torch.sort(logits, descending=True)
415
+ cumulative_probs = torch.cumsum(F.softmax(sorted_logits, dim=-1), dim=-1)
416
+
417
+ # Remove tokens with cumulative probability above the threshold
418
+ sorted_indices_to_remove = cumulative_probs > top_p
419
+ sorted_indices_to_remove[..., 1:] = sorted_indices_to_remove[..., :-1].clone()
420
+ sorted_indices_to_remove[..., 0] = 0
421
+
422
+ indices_to_remove = sorted_indices_to_remove.scatter(
423
+ dim=-1, index=sorted_indices, src=sorted_indices_to_remove
424
+ )
425
+ logits[indices_to_remove] = float("-inf")
426
+
427
+ # Sample from the distribution
428
+ probs = F.softmax(logits, dim=-1)
429
+ next_token = torch.multinomial(probs, num_samples=1)
430
+
431
+ return next_token.item()
432
+
433
+
434
+ # Register the model with Auto classes for easy loading
435
+ from transformers import AutoConfig, AutoModelForCausalLM
436
+
437
+ AutoConfig.register("chess_transformer", ChessConfig)
438
+ AutoModelForCausalLM.register(ChessConfig, ChessForCausalLM)
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f475eab886f76c247b5daa18618c4480f973156598460995919e200ccb81ee72
3
+ size 3814096
special_tokens_map.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "[BOS]",
3
+ "eos_token": "[EOS]",
4
+ "pad_token": "[PAD]",
5
+ "unk_token": "[UNK]"
6
+ }
tokenizer.py ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Custom Chess Tokenizer for the Chess1MChallenge.
3
+
4
+ Goal: maximize legal-move rate in the evaluation.
5
+
6
+ Key idea:
7
+ - The evaluator only needs to recover the UCI move (e.g. "e2e4") from the model output.
8
+ It extracts squares like [a-h][1-8] and builds a move from the first 2 squares.
9
+ - So we normalize dataset tokens like "WPe2e4(x+)" to plain UCI "e2e4" (plus promotion suffix "q/r/b/n").
10
+ - We use a FIXED UCI vocabulary so there is (almost) no OOV -> far fewer [UNK] -> higher legal-move rate.
11
+
12
+ Vocabulary:
13
+ - All from-to square pairs: "a1a2", ..., excluding from==to.
14
+ - All promotion moves: e7e8[qrbn], a2a1[qrbn], including capture-promotions (still covered by from-to).
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import json
20
+ import os
21
+ import re
22
+ from typing import Dict, List, Optional
23
+
24
+ from transformers import PreTrainedTokenizer
25
+
26
+
27
+ _SQUARE_RE = re.compile(r"[a-h][1-8]")
28
+ _PROMO_RE = re.compile(r"=([QRBN])") # dataset often uses "=Q"
29
+
30
+
31
+ class ChessTokenizer(PreTrainedTokenizer):
32
+ """
33
+ Tokenizer that maps each chess move to a single token.
34
+
35
+ It is compatible with Hugging Face `AutoTokenizer(..., trust_remote_code=True)`.
36
+
37
+ Notes:
38
+ - Input text may contain "extended UCI" tokens from the Lichess dataset
39
+ (e.g. "WPe2e4", "BKe8g8(O)", "WPe7e8=Q(+)" ...).
40
+ - We normalize those tokens to plain UCI: "e2e4", "e8g8", "e7e8q", ...
41
+ """
42
+
43
+ model_input_names = ["input_ids", "attention_mask"]
44
+ vocab_files_names = {"vocab_file": "vocab.json"}
45
+
46
+ # Special tokens
47
+ PAD_TOKEN = "[PAD]"
48
+ BOS_TOKEN = "[BOS]"
49
+ EOS_TOKEN = "[EOS]"
50
+ UNK_TOKEN = "[UNK]"
51
+
52
+ def __init__(
53
+ self,
54
+ vocab_file: Optional[str] = None,
55
+ vocab: Optional[Dict[str, int]] = None,
56
+ **kwargs,
57
+ ):
58
+ # Initialize special tokens
59
+ self._pad_token = self.PAD_TOKEN
60
+ self._bos_token = self.BOS_TOKEN
61
+ self._eos_token = self.EOS_TOKEN
62
+ self._unk_token = self.UNK_TOKEN
63
+
64
+ # Avoid duplicate special-token args when loading from disk
65
+ kwargs.pop("pad_token", None)
66
+ kwargs.pop("bos_token", None)
67
+ kwargs.pop("eos_token", None)
68
+ kwargs.pop("unk_token", None)
69
+
70
+ # Load or create vocabulary
71
+ if vocab is not None:
72
+ self._vocab = vocab
73
+ elif vocab_file is not None and os.path.exists(vocab_file):
74
+ with open(vocab_file, "r", encoding="utf-8") as f:
75
+ self._vocab = json.load(f)
76
+ else:
77
+ self._vocab = self._create_default_vocab()
78
+
79
+ self._ids_to_tokens = {v: k for k, v in self._vocab.items()}
80
+
81
+ super().__init__(
82
+ pad_token=self._pad_token,
83
+ bos_token=self._bos_token,
84
+ eos_token=self._eos_token,
85
+ unk_token=self._unk_token,
86
+ **kwargs,
87
+ )
88
+
89
+ def _create_default_vocab(self) -> Dict[str, int]:
90
+ special = [self.PAD_TOKEN, self.BOS_TOKEN, self.EOS_TOKEN, self.UNK_TOKEN]
91
+ return {tok: i for i, tok in enumerate(special)}
92
+
93
+ @staticmethod
94
+ def _normalize_one_token(tok: str) -> str:
95
+ """
96
+ Convert an extended token to plain UCI.
97
+
98
+ Examples:
99
+ "WPe2e4" -> "e2e4"
100
+ "BKe8g8(O)" -> "e8g8"
101
+ "WPe7e8=Q(+)" -> "e7e8q"
102
+ "WPe5d6(x)" -> "e5d6"
103
+ """
104
+ squares = _SQUARE_RE.findall(tok)
105
+ if len(squares) < 2:
106
+ return ChessTokenizer.UNK_TOKEN
107
+
108
+ uci = squares[0] + squares[1]
109
+
110
+ m = _PROMO_RE.search(tok)
111
+ if m:
112
+ uci += m.group(1).lower() # Q->q etc.
113
+
114
+ return uci
115
+
116
+ @classmethod
117
+ def build_fixed_uci_vocab(cls) -> "ChessTokenizer":
118
+ """
119
+ Build a FIXED vocabulary of (almost) all possible UCI moves.
120
+
121
+ This dramatically reduces OOV compared to building vocab from the dataset
122
+ with a high min_frequency.
123
+ """
124
+ files = "abcdefgh"
125
+ ranks = "12345678"
126
+
127
+ tokens: List[str] = []
128
+
129
+ # All from-to square pairs (excluding from==to)
130
+ for f1 in files:
131
+ for r1 in ranks:
132
+ for f2 in files:
133
+ for r2 in ranks:
134
+ if f1 == f2 and r1 == r2:
135
+ continue
136
+ tokens.append(f"{f1}{r1}{f2}{r2}")
137
+
138
+ # Promotions: white (7->8) and black (2->1), with q/r/b/n
139
+ promos = "qrbn"
140
+
141
+ # White promotions
142
+ for f in files:
143
+ fr = f + "7"
144
+ for df in (-1, 0, 1):
145
+ j = files.index(f) + df
146
+ if 0 <= j < 8:
147
+ to = files[j] + "8"
148
+ base = fr + to
149
+ for p in promos:
150
+ tokens.append(base + p)
151
+
152
+ # Black promotions
153
+ for f in files:
154
+ fr = f + "2"
155
+ for df in (-1, 0, 1):
156
+ j = files.index(f) + df
157
+ if 0 <= j < 8:
158
+ to = files[j] + "1"
159
+ base = fr + to
160
+ for p in promos:
161
+ tokens.append(base + p)
162
+
163
+ tokens = sorted(set(tokens))
164
+
165
+ special = [cls.PAD_TOKEN, cls.BOS_TOKEN, cls.EOS_TOKEN, cls.UNK_TOKEN]
166
+ vocab = {tok: i for i, tok in enumerate(special + tokens)}
167
+ return cls(vocab=vocab)
168
+
169
+ @classmethod
170
+ def build_vocab_from_iterator(cls, iterator, min_frequency: int = 1) -> "ChessTokenizer":
171
+ """
172
+ Optional: build vocabulary from an iterator of strings.
173
+
174
+ We normalize tokens to UCI before counting.
175
+ """
176
+ from collections import Counter
177
+
178
+ counts = Counter()
179
+ for game in iterator:
180
+ raw = game.strip().split()
181
+ norm = [cls._normalize_one_token(t) for t in raw]
182
+ counts.update(norm)
183
+
184
+ tokens = [t for t, c in counts.items() if c >= min_frequency]
185
+ tokens = sorted(set(tokens))
186
+
187
+ special = [cls.PAD_TOKEN, cls.BOS_TOKEN, cls.EOS_TOKEN, cls.UNK_TOKEN]
188
+ vocab = {tok: i for i, tok in enumerate(special + tokens)}
189
+ return cls(vocab=vocab)
190
+
191
+ @property
192
+ def vocab_size(self) -> int:
193
+ return len(self._vocab)
194
+
195
+ def get_vocab(self) -> Dict[str, int]:
196
+ return dict(self._vocab)
197
+
198
+ def _tokenize(self, text: str) -> List[str]:
199
+ raw = text.strip().split()
200
+ return [self._normalize_one_token(t) for t in raw]
201
+
202
+ def _convert_token_to_id(self, token: str) -> int:
203
+ return self._vocab.get(token, self._vocab.get(self.UNK_TOKEN, 0))
204
+
205
+ def _convert_id_to_token(self, index: int) -> str:
206
+ return self._ids_to_tokens.get(index, self.UNK_TOKEN)
207
+
208
+ def convert_tokens_to_string(self, tokens: List[str]) -> str:
209
+ special = {self.PAD_TOKEN, self.BOS_TOKEN, self.EOS_TOKEN, self.UNK_TOKEN}
210
+ return " ".join(t for t in tokens if t not in special)
211
+
212
+ def save_vocabulary(self, save_directory: str, filename_prefix: Optional[str] = None) -> tuple:
213
+ if not os.path.isdir(save_directory):
214
+ os.makedirs(save_directory, exist_ok=True)
215
+
216
+ vocab_file = os.path.join(
217
+ save_directory,
218
+ (filename_prefix + "-" if filename_prefix else "") + "vocab.json",
219
+ )
220
+
221
+ with open(vocab_file, "w", encoding="utf-8") as f:
222
+ json.dump(self._vocab, f, ensure_ascii=False, indent=2)
223
+
224
+ return (vocab_file,)
tokenizer_config.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "[PAD]",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "[BOS]",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "[EOS]",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "3": {
28
+ "content": "[UNK]",
29
+ "lstrip": false,
30
+ "normalized": false,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ }
35
+ },
36
+ "bos_token": "[BOS]",
37
+ "clean_up_tokenization_spaces": false,
38
+ "eos_token": "[EOS]",
39
+ "extra_special_tokens": {},
40
+ "model_max_length": 1000000000000000019884624838656,
41
+ "pad_token": "[PAD]",
42
+ "tokenizer_class": "ChessTokenizer",
43
+ "unk_token": "[UNK]",
44
+ "auto_map": {
45
+ "AutoTokenizer": [
46
+ "tokenizer.ChessTokenizer",
47
+ null
48
+ ]
49
+ }
50
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8f8dabf535f9c4c2046f0e43f03076e74ba540b88c69d153982106eb4151d591
3
+ size 5777
vocab.json ADDED
@@ -0,0 +1,4214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "[PAD]": 0,
3
+ "[BOS]": 1,
4
+ "[EOS]": 2,
5
+ "[UNK]": 3,
6
+ "a1a2": 4,
7
+ "a1a3": 5,
8
+ "a1a4": 6,
9
+ "a1a5": 7,
10
+ "a1a6": 8,
11
+ "a1a7": 9,
12
+ "a1a8": 10,
13
+ "a1b1": 11,
14
+ "a1b2": 12,
15
+ "a1b3": 13,
16
+ "a1b4": 14,
17
+ "a1b5": 15,
18
+ "a1b6": 16,
19
+ "a1b7": 17,
20
+ "a1b8": 18,
21
+ "a1c1": 19,
22
+ "a1c2": 20,
23
+ "a1c3": 21,
24
+ "a1c4": 22,
25
+ "a1c5": 23,
26
+ "a1c6": 24,
27
+ "a1c7": 25,
28
+ "a1c8": 26,
29
+ "a1d1": 27,
30
+ "a1d2": 28,
31
+ "a1d3": 29,
32
+ "a1d4": 30,
33
+ "a1d5": 31,
34
+ "a1d6": 32,
35
+ "a1d7": 33,
36
+ "a1d8": 34,
37
+ "a1e1": 35,
38
+ "a1e2": 36,
39
+ "a1e3": 37,
40
+ "a1e4": 38,
41
+ "a1e5": 39,
42
+ "a1e6": 40,
43
+ "a1e7": 41,
44
+ "a1e8": 42,
45
+ "a1f1": 43,
46
+ "a1f2": 44,
47
+ "a1f3": 45,
48
+ "a1f4": 46,
49
+ "a1f5": 47,
50
+ "a1f6": 48,
51
+ "a1f7": 49,
52
+ "a1f8": 50,
53
+ "a1g1": 51,
54
+ "a1g2": 52,
55
+ "a1g3": 53,
56
+ "a1g4": 54,
57
+ "a1g5": 55,
58
+ "a1g6": 56,
59
+ "a1g7": 57,
60
+ "a1g8": 58,
61
+ "a1h1": 59,
62
+ "a1h2": 60,
63
+ "a1h3": 61,
64
+ "a1h4": 62,
65
+ "a1h5": 63,
66
+ "a1h6": 64,
67
+ "a1h7": 65,
68
+ "a1h8": 66,
69
+ "a2a1": 67,
70
+ "a2a1b": 68,
71
+ "a2a1n": 69,
72
+ "a2a1q": 70,
73
+ "a2a1r": 71,
74
+ "a2a3": 72,
75
+ "a2a4": 73,
76
+ "a2a5": 74,
77
+ "a2a6": 75,
78
+ "a2a7": 76,
79
+ "a2a8": 77,
80
+ "a2b1": 78,
81
+ "a2b1b": 79,
82
+ "a2b1n": 80,
83
+ "a2b1q": 81,
84
+ "a2b1r": 82,
85
+ "a2b2": 83,
86
+ "a2b3": 84,
87
+ "a2b4": 85,
88
+ "a2b5": 86,
89
+ "a2b6": 87,
90
+ "a2b7": 88,
91
+ "a2b8": 89,
92
+ "a2c1": 90,
93
+ "a2c2": 91,
94
+ "a2c3": 92,
95
+ "a2c4": 93,
96
+ "a2c5": 94,
97
+ "a2c6": 95,
98
+ "a2c7": 96,
99
+ "a2c8": 97,
100
+ "a2d1": 98,
101
+ "a2d2": 99,
102
+ "a2d3": 100,
103
+ "a2d4": 101,
104
+ "a2d5": 102,
105
+ "a2d6": 103,
106
+ "a2d7": 104,
107
+ "a2d8": 105,
108
+ "a2e1": 106,
109
+ "a2e2": 107,
110
+ "a2e3": 108,
111
+ "a2e4": 109,
112
+ "a2e5": 110,
113
+ "a2e6": 111,
114
+ "a2e7": 112,
115
+ "a2e8": 113,
116
+ "a2f1": 114,
117
+ "a2f2": 115,
118
+ "a2f3": 116,
119
+ "a2f4": 117,
120
+ "a2f5": 118,
121
+ "a2f6": 119,
122
+ "a2f7": 120,
123
+ "a2f8": 121,
124
+ "a2g1": 122,
125
+ "a2g2": 123,
126
+ "a2g3": 124,
127
+ "a2g4": 125,
128
+ "a2g5": 126,
129
+ "a2g6": 127,
130
+ "a2g7": 128,
131
+ "a2g8": 129,
132
+ "a2h1": 130,
133
+ "a2h2": 131,
134
+ "a2h3": 132,
135
+ "a2h4": 133,
136
+ "a2h5": 134,
137
+ "a2h6": 135,
138
+ "a2h7": 136,
139
+ "a2h8": 137,
140
+ "a3a1": 138,
141
+ "a3a2": 139,
142
+ "a3a4": 140,
143
+ "a3a5": 141,
144
+ "a3a6": 142,
145
+ "a3a7": 143,
146
+ "a3a8": 144,
147
+ "a3b1": 145,
148
+ "a3b2": 146,
149
+ "a3b3": 147,
150
+ "a3b4": 148,
151
+ "a3b5": 149,
152
+ "a3b6": 150,
153
+ "a3b7": 151,
154
+ "a3b8": 152,
155
+ "a3c1": 153,
156
+ "a3c2": 154,
157
+ "a3c3": 155,
158
+ "a3c4": 156,
159
+ "a3c5": 157,
160
+ "a3c6": 158,
161
+ "a3c7": 159,
162
+ "a3c8": 160,
163
+ "a3d1": 161,
164
+ "a3d2": 162,
165
+ "a3d3": 163,
166
+ "a3d4": 164,
167
+ "a3d5": 165,
168
+ "a3d6": 166,
169
+ "a3d7": 167,
170
+ "a3d8": 168,
171
+ "a3e1": 169,
172
+ "a3e2": 170,
173
+ "a3e3": 171,
174
+ "a3e4": 172,
175
+ "a3e5": 173,
176
+ "a3e6": 174,
177
+ "a3e7": 175,
178
+ "a3e8": 176,
179
+ "a3f1": 177,
180
+ "a3f2": 178,
181
+ "a3f3": 179,
182
+ "a3f4": 180,
183
+ "a3f5": 181,
184
+ "a3f6": 182,
185
+ "a3f7": 183,
186
+ "a3f8": 184,
187
+ "a3g1": 185,
188
+ "a3g2": 186,
189
+ "a3g3": 187,
190
+ "a3g4": 188,
191
+ "a3g5": 189,
192
+ "a3g6": 190,
193
+ "a3g7": 191,
194
+ "a3g8": 192,
195
+ "a3h1": 193,
196
+ "a3h2": 194,
197
+ "a3h3": 195,
198
+ "a3h4": 196,
199
+ "a3h5": 197,
200
+ "a3h6": 198,
201
+ "a3h7": 199,
202
+ "a3h8": 200,
203
+ "a4a1": 201,
204
+ "a4a2": 202,
205
+ "a4a3": 203,
206
+ "a4a5": 204,
207
+ "a4a6": 205,
208
+ "a4a7": 206,
209
+ "a4a8": 207,
210
+ "a4b1": 208,
211
+ "a4b2": 209,
212
+ "a4b3": 210,
213
+ "a4b4": 211,
214
+ "a4b5": 212,
215
+ "a4b6": 213,
216
+ "a4b7": 214,
217
+ "a4b8": 215,
218
+ "a4c1": 216,
219
+ "a4c2": 217,
220
+ "a4c3": 218,
221
+ "a4c4": 219,
222
+ "a4c5": 220,
223
+ "a4c6": 221,
224
+ "a4c7": 222,
225
+ "a4c8": 223,
226
+ "a4d1": 224,
227
+ "a4d2": 225,
228
+ "a4d3": 226,
229
+ "a4d4": 227,
230
+ "a4d5": 228,
231
+ "a4d6": 229,
232
+ "a4d7": 230,
233
+ "a4d8": 231,
234
+ "a4e1": 232,
235
+ "a4e2": 233,
236
+ "a4e3": 234,
237
+ "a4e4": 235,
238
+ "a4e5": 236,
239
+ "a4e6": 237,
240
+ "a4e7": 238,
241
+ "a4e8": 239,
242
+ "a4f1": 240,
243
+ "a4f2": 241,
244
+ "a4f3": 242,
245
+ "a4f4": 243,
246
+ "a4f5": 244,
247
+ "a4f6": 245,
248
+ "a4f7": 246,
249
+ "a4f8": 247,
250
+ "a4g1": 248,
251
+ "a4g2": 249,
252
+ "a4g3": 250,
253
+ "a4g4": 251,
254
+ "a4g5": 252,
255
+ "a4g6": 253,
256
+ "a4g7": 254,
257
+ "a4g8": 255,
258
+ "a4h1": 256,
259
+ "a4h2": 257,
260
+ "a4h3": 258,
261
+ "a4h4": 259,
262
+ "a4h5": 260,
263
+ "a4h6": 261,
264
+ "a4h7": 262,
265
+ "a4h8": 263,
266
+ "a5a1": 264,
267
+ "a5a2": 265,
268
+ "a5a3": 266,
269
+ "a5a4": 267,
270
+ "a5a6": 268,
271
+ "a5a7": 269,
272
+ "a5a8": 270,
273
+ "a5b1": 271,
274
+ "a5b2": 272,
275
+ "a5b3": 273,
276
+ "a5b4": 274,
277
+ "a5b5": 275,
278
+ "a5b6": 276,
279
+ "a5b7": 277,
280
+ "a5b8": 278,
281
+ "a5c1": 279,
282
+ "a5c2": 280,
283
+ "a5c3": 281,
284
+ "a5c4": 282,
285
+ "a5c5": 283,
286
+ "a5c6": 284,
287
+ "a5c7": 285,
288
+ "a5c8": 286,
289
+ "a5d1": 287,
290
+ "a5d2": 288,
291
+ "a5d3": 289,
292
+ "a5d4": 290,
293
+ "a5d5": 291,
294
+ "a5d6": 292,
295
+ "a5d7": 293,
296
+ "a5d8": 294,
297
+ "a5e1": 295,
298
+ "a5e2": 296,
299
+ "a5e3": 297,
300
+ "a5e4": 298,
301
+ "a5e5": 299,
302
+ "a5e6": 300,
303
+ "a5e7": 301,
304
+ "a5e8": 302,
305
+ "a5f1": 303,
306
+ "a5f2": 304,
307
+ "a5f3": 305,
308
+ "a5f4": 306,
309
+ "a5f5": 307,
310
+ "a5f6": 308,
311
+ "a5f7": 309,
312
+ "a5f8": 310,
313
+ "a5g1": 311,
314
+ "a5g2": 312,
315
+ "a5g3": 313,
316
+ "a5g4": 314,
317
+ "a5g5": 315,
318
+ "a5g6": 316,
319
+ "a5g7": 317,
320
+ "a5g8": 318,
321
+ "a5h1": 319,
322
+ "a5h2": 320,
323
+ "a5h3": 321,
324
+ "a5h4": 322,
325
+ "a5h5": 323,
326
+ "a5h6": 324,
327
+ "a5h7": 325,
328
+ "a5h8": 326,
329
+ "a6a1": 327,
330
+ "a6a2": 328,
331
+ "a6a3": 329,
332
+ "a6a4": 330,
333
+ "a6a5": 331,
334
+ "a6a7": 332,
335
+ "a6a8": 333,
336
+ "a6b1": 334,
337
+ "a6b2": 335,
338
+ "a6b3": 336,
339
+ "a6b4": 337,
340
+ "a6b5": 338,
341
+ "a6b6": 339,
342
+ "a6b7": 340,
343
+ "a6b8": 341,
344
+ "a6c1": 342,
345
+ "a6c2": 343,
346
+ "a6c3": 344,
347
+ "a6c4": 345,
348
+ "a6c5": 346,
349
+ "a6c6": 347,
350
+ "a6c7": 348,
351
+ "a6c8": 349,
352
+ "a6d1": 350,
353
+ "a6d2": 351,
354
+ "a6d3": 352,
355
+ "a6d4": 353,
356
+ "a6d5": 354,
357
+ "a6d6": 355,
358
+ "a6d7": 356,
359
+ "a6d8": 357,
360
+ "a6e1": 358,
361
+ "a6e2": 359,
362
+ "a6e3": 360,
363
+ "a6e4": 361,
364
+ "a6e5": 362,
365
+ "a6e6": 363,
366
+ "a6e7": 364,
367
+ "a6e8": 365,
368
+ "a6f1": 366,
369
+ "a6f2": 367,
370
+ "a6f3": 368,
371
+ "a6f4": 369,
372
+ "a6f5": 370,
373
+ "a6f6": 371,
374
+ "a6f7": 372,
375
+ "a6f8": 373,
376
+ "a6g1": 374,
377
+ "a6g2": 375,
378
+ "a6g3": 376,
379
+ "a6g4": 377,
380
+ "a6g5": 378,
381
+ "a6g6": 379,
382
+ "a6g7": 380,
383
+ "a6g8": 381,
384
+ "a6h1": 382,
385
+ "a6h2": 383,
386
+ "a6h3": 384,
387
+ "a6h4": 385,
388
+ "a6h5": 386,
389
+ "a6h6": 387,
390
+ "a6h7": 388,
391
+ "a6h8": 389,
392
+ "a7a1": 390,
393
+ "a7a2": 391,
394
+ "a7a3": 392,
395
+ "a7a4": 393,
396
+ "a7a5": 394,
397
+ "a7a6": 395,
398
+ "a7a8": 396,
399
+ "a7a8b": 397,
400
+ "a7a8n": 398,
401
+ "a7a8q": 399,
402
+ "a7a8r": 400,
403
+ "a7b1": 401,
404
+ "a7b2": 402,
405
+ "a7b3": 403,
406
+ "a7b4": 404,
407
+ "a7b5": 405,
408
+ "a7b6": 406,
409
+ "a7b7": 407,
410
+ "a7b8": 408,
411
+ "a7b8b": 409,
412
+ "a7b8n": 410,
413
+ "a7b8q": 411,
414
+ "a7b8r": 412,
415
+ "a7c1": 413,
416
+ "a7c2": 414,
417
+ "a7c3": 415,
418
+ "a7c4": 416,
419
+ "a7c5": 417,
420
+ "a7c6": 418,
421
+ "a7c7": 419,
422
+ "a7c8": 420,
423
+ "a7d1": 421,
424
+ "a7d2": 422,
425
+ "a7d3": 423,
426
+ "a7d4": 424,
427
+ "a7d5": 425,
428
+ "a7d6": 426,
429
+ "a7d7": 427,
430
+ "a7d8": 428,
431
+ "a7e1": 429,
432
+ "a7e2": 430,
433
+ "a7e3": 431,
434
+ "a7e4": 432,
435
+ "a7e5": 433,
436
+ "a7e6": 434,
437
+ "a7e7": 435,
438
+ "a7e8": 436,
439
+ "a7f1": 437,
440
+ "a7f2": 438,
441
+ "a7f3": 439,
442
+ "a7f4": 440,
443
+ "a7f5": 441,
444
+ "a7f6": 442,
445
+ "a7f7": 443,
446
+ "a7f8": 444,
447
+ "a7g1": 445,
448
+ "a7g2": 446,
449
+ "a7g3": 447,
450
+ "a7g4": 448,
451
+ "a7g5": 449,
452
+ "a7g6": 450,
453
+ "a7g7": 451,
454
+ "a7g8": 452,
455
+ "a7h1": 453,
456
+ "a7h2": 454,
457
+ "a7h3": 455,
458
+ "a7h4": 456,
459
+ "a7h5": 457,
460
+ "a7h6": 458,
461
+ "a7h7": 459,
462
+ "a7h8": 460,
463
+ "a8a1": 461,
464
+ "a8a2": 462,
465
+ "a8a3": 463,
466
+ "a8a4": 464,
467
+ "a8a5": 465,
468
+ "a8a6": 466,
469
+ "a8a7": 467,
470
+ "a8b1": 468,
471
+ "a8b2": 469,
472
+ "a8b3": 470,
473
+ "a8b4": 471,
474
+ "a8b5": 472,
475
+ "a8b6": 473,
476
+ "a8b7": 474,
477
+ "a8b8": 475,
478
+ "a8c1": 476,
479
+ "a8c2": 477,
480
+ "a8c3": 478,
481
+ "a8c4": 479,
482
+ "a8c5": 480,
483
+ "a8c6": 481,
484
+ "a8c7": 482,
485
+ "a8c8": 483,
486
+ "a8d1": 484,
487
+ "a8d2": 485,
488
+ "a8d3": 486,
489
+ "a8d4": 487,
490
+ "a8d5": 488,
491
+ "a8d6": 489,
492
+ "a8d7": 490,
493
+ "a8d8": 491,
494
+ "a8e1": 492,
495
+ "a8e2": 493,
496
+ "a8e3": 494,
497
+ "a8e4": 495,
498
+ "a8e5": 496,
499
+ "a8e6": 497,
500
+ "a8e7": 498,
501
+ "a8e8": 499,
502
+ "a8f1": 500,
503
+ "a8f2": 501,
504
+ "a8f3": 502,
505
+ "a8f4": 503,
506
+ "a8f5": 504,
507
+ "a8f6": 505,
508
+ "a8f7": 506,
509
+ "a8f8": 507,
510
+ "a8g1": 508,
511
+ "a8g2": 509,
512
+ "a8g3": 510,
513
+ "a8g4": 511,
514
+ "a8g5": 512,
515
+ "a8g6": 513,
516
+ "a8g7": 514,
517
+ "a8g8": 515,
518
+ "a8h1": 516,
519
+ "a8h2": 517,
520
+ "a8h3": 518,
521
+ "a8h4": 519,
522
+ "a8h5": 520,
523
+ "a8h6": 521,
524
+ "a8h7": 522,
525
+ "a8h8": 523,
526
+ "b1a1": 524,
527
+ "b1a2": 525,
528
+ "b1a3": 526,
529
+ "b1a4": 527,
530
+ "b1a5": 528,
531
+ "b1a6": 529,
532
+ "b1a7": 530,
533
+ "b1a8": 531,
534
+ "b1b2": 532,
535
+ "b1b3": 533,
536
+ "b1b4": 534,
537
+ "b1b5": 535,
538
+ "b1b6": 536,
539
+ "b1b7": 537,
540
+ "b1b8": 538,
541
+ "b1c1": 539,
542
+ "b1c2": 540,
543
+ "b1c3": 541,
544
+ "b1c4": 542,
545
+ "b1c5": 543,
546
+ "b1c6": 544,
547
+ "b1c7": 545,
548
+ "b1c8": 546,
549
+ "b1d1": 547,
550
+ "b1d2": 548,
551
+ "b1d3": 549,
552
+ "b1d4": 550,
553
+ "b1d5": 551,
554
+ "b1d6": 552,
555
+ "b1d7": 553,
556
+ "b1d8": 554,
557
+ "b1e1": 555,
558
+ "b1e2": 556,
559
+ "b1e3": 557,
560
+ "b1e4": 558,
561
+ "b1e5": 559,
562
+ "b1e6": 560,
563
+ "b1e7": 561,
564
+ "b1e8": 562,
565
+ "b1f1": 563,
566
+ "b1f2": 564,
567
+ "b1f3": 565,
568
+ "b1f4": 566,
569
+ "b1f5": 567,
570
+ "b1f6": 568,
571
+ "b1f7": 569,
572
+ "b1f8": 570,
573
+ "b1g1": 571,
574
+ "b1g2": 572,
575
+ "b1g3": 573,
576
+ "b1g4": 574,
577
+ "b1g5": 575,
578
+ "b1g6": 576,
579
+ "b1g7": 577,
580
+ "b1g8": 578,
581
+ "b1h1": 579,
582
+ "b1h2": 580,
583
+ "b1h3": 581,
584
+ "b1h4": 582,
585
+ "b1h5": 583,
586
+ "b1h6": 584,
587
+ "b1h7": 585,
588
+ "b1h8": 586,
589
+ "b2a1": 587,
590
+ "b2a1b": 588,
591
+ "b2a1n": 589,
592
+ "b2a1q": 590,
593
+ "b2a1r": 591,
594
+ "b2a2": 592,
595
+ "b2a3": 593,
596
+ "b2a4": 594,
597
+ "b2a5": 595,
598
+ "b2a6": 596,
599
+ "b2a7": 597,
600
+ "b2a8": 598,
601
+ "b2b1": 599,
602
+ "b2b1b": 600,
603
+ "b2b1n": 601,
604
+ "b2b1q": 602,
605
+ "b2b1r": 603,
606
+ "b2b3": 604,
607
+ "b2b4": 605,
608
+ "b2b5": 606,
609
+ "b2b6": 607,
610
+ "b2b7": 608,
611
+ "b2b8": 609,
612
+ "b2c1": 610,
613
+ "b2c1b": 611,
614
+ "b2c1n": 612,
615
+ "b2c1q": 613,
616
+ "b2c1r": 614,
617
+ "b2c2": 615,
618
+ "b2c3": 616,
619
+ "b2c4": 617,
620
+ "b2c5": 618,
621
+ "b2c6": 619,
622
+ "b2c7": 620,
623
+ "b2c8": 621,
624
+ "b2d1": 622,
625
+ "b2d2": 623,
626
+ "b2d3": 624,
627
+ "b2d4": 625,
628
+ "b2d5": 626,
629
+ "b2d6": 627,
630
+ "b2d7": 628,
631
+ "b2d8": 629,
632
+ "b2e1": 630,
633
+ "b2e2": 631,
634
+ "b2e3": 632,
635
+ "b2e4": 633,
636
+ "b2e5": 634,
637
+ "b2e6": 635,
638
+ "b2e7": 636,
639
+ "b2e8": 637,
640
+ "b2f1": 638,
641
+ "b2f2": 639,
642
+ "b2f3": 640,
643
+ "b2f4": 641,
644
+ "b2f5": 642,
645
+ "b2f6": 643,
646
+ "b2f7": 644,
647
+ "b2f8": 645,
648
+ "b2g1": 646,
649
+ "b2g2": 647,
650
+ "b2g3": 648,
651
+ "b2g4": 649,
652
+ "b2g5": 650,
653
+ "b2g6": 651,
654
+ "b2g7": 652,
655
+ "b2g8": 653,
656
+ "b2h1": 654,
657
+ "b2h2": 655,
658
+ "b2h3": 656,
659
+ "b2h4": 657,
660
+ "b2h5": 658,
661
+ "b2h6": 659,
662
+ "b2h7": 660,
663
+ "b2h8": 661,
664
+ "b3a1": 662,
665
+ "b3a2": 663,
666
+ "b3a3": 664,
667
+ "b3a4": 665,
668
+ "b3a5": 666,
669
+ "b3a6": 667,
670
+ "b3a7": 668,
671
+ "b3a8": 669,
672
+ "b3b1": 670,
673
+ "b3b2": 671,
674
+ "b3b4": 672,
675
+ "b3b5": 673,
676
+ "b3b6": 674,
677
+ "b3b7": 675,
678
+ "b3b8": 676,
679
+ "b3c1": 677,
680
+ "b3c2": 678,
681
+ "b3c3": 679,
682
+ "b3c4": 680,
683
+ "b3c5": 681,
684
+ "b3c6": 682,
685
+ "b3c7": 683,
686
+ "b3c8": 684,
687
+ "b3d1": 685,
688
+ "b3d2": 686,
689
+ "b3d3": 687,
690
+ "b3d4": 688,
691
+ "b3d5": 689,
692
+ "b3d6": 690,
693
+ "b3d7": 691,
694
+ "b3d8": 692,
695
+ "b3e1": 693,
696
+ "b3e2": 694,
697
+ "b3e3": 695,
698
+ "b3e4": 696,
699
+ "b3e5": 697,
700
+ "b3e6": 698,
701
+ "b3e7": 699,
702
+ "b3e8": 700,
703
+ "b3f1": 701,
704
+ "b3f2": 702,
705
+ "b3f3": 703,
706
+ "b3f4": 704,
707
+ "b3f5": 705,
708
+ "b3f6": 706,
709
+ "b3f7": 707,
710
+ "b3f8": 708,
711
+ "b3g1": 709,
712
+ "b3g2": 710,
713
+ "b3g3": 711,
714
+ "b3g4": 712,
715
+ "b3g5": 713,
716
+ "b3g6": 714,
717
+ "b3g7": 715,
718
+ "b3g8": 716,
719
+ "b3h1": 717,
720
+ "b3h2": 718,
721
+ "b3h3": 719,
722
+ "b3h4": 720,
723
+ "b3h5": 721,
724
+ "b3h6": 722,
725
+ "b3h7": 723,
726
+ "b3h8": 724,
727
+ "b4a1": 725,
728
+ "b4a2": 726,
729
+ "b4a3": 727,
730
+ "b4a4": 728,
731
+ "b4a5": 729,
732
+ "b4a6": 730,
733
+ "b4a7": 731,
734
+ "b4a8": 732,
735
+ "b4b1": 733,
736
+ "b4b2": 734,
737
+ "b4b3": 735,
738
+ "b4b5": 736,
739
+ "b4b6": 737,
740
+ "b4b7": 738,
741
+ "b4b8": 739,
742
+ "b4c1": 740,
743
+ "b4c2": 741,
744
+ "b4c3": 742,
745
+ "b4c4": 743,
746
+ "b4c5": 744,
747
+ "b4c6": 745,
748
+ "b4c7": 746,
749
+ "b4c8": 747,
750
+ "b4d1": 748,
751
+ "b4d2": 749,
752
+ "b4d3": 750,
753
+ "b4d4": 751,
754
+ "b4d5": 752,
755
+ "b4d6": 753,
756
+ "b4d7": 754,
757
+ "b4d8": 755,
758
+ "b4e1": 756,
759
+ "b4e2": 757,
760
+ "b4e3": 758,
761
+ "b4e4": 759,
762
+ "b4e5": 760,
763
+ "b4e6": 761,
764
+ "b4e7": 762,
765
+ "b4e8": 763,
766
+ "b4f1": 764,
767
+ "b4f2": 765,
768
+ "b4f3": 766,
769
+ "b4f4": 767,
770
+ "b4f5": 768,
771
+ "b4f6": 769,
772
+ "b4f7": 770,
773
+ "b4f8": 771,
774
+ "b4g1": 772,
775
+ "b4g2": 773,
776
+ "b4g3": 774,
777
+ "b4g4": 775,
778
+ "b4g5": 776,
779
+ "b4g6": 777,
780
+ "b4g7": 778,
781
+ "b4g8": 779,
782
+ "b4h1": 780,
783
+ "b4h2": 781,
784
+ "b4h3": 782,
785
+ "b4h4": 783,
786
+ "b4h5": 784,
787
+ "b4h6": 785,
788
+ "b4h7": 786,
789
+ "b4h8": 787,
790
+ "b5a1": 788,
791
+ "b5a2": 789,
792
+ "b5a3": 790,
793
+ "b5a4": 791,
794
+ "b5a5": 792,
795
+ "b5a6": 793,
796
+ "b5a7": 794,
797
+ "b5a8": 795,
798
+ "b5b1": 796,
799
+ "b5b2": 797,
800
+ "b5b3": 798,
801
+ "b5b4": 799,
802
+ "b5b6": 800,
803
+ "b5b7": 801,
804
+ "b5b8": 802,
805
+ "b5c1": 803,
806
+ "b5c2": 804,
807
+ "b5c3": 805,
808
+ "b5c4": 806,
809
+ "b5c5": 807,
810
+ "b5c6": 808,
811
+ "b5c7": 809,
812
+ "b5c8": 810,
813
+ "b5d1": 811,
814
+ "b5d2": 812,
815
+ "b5d3": 813,
816
+ "b5d4": 814,
817
+ "b5d5": 815,
818
+ "b5d6": 816,
819
+ "b5d7": 817,
820
+ "b5d8": 818,
821
+ "b5e1": 819,
822
+ "b5e2": 820,
823
+ "b5e3": 821,
824
+ "b5e4": 822,
825
+ "b5e5": 823,
826
+ "b5e6": 824,
827
+ "b5e7": 825,
828
+ "b5e8": 826,
829
+ "b5f1": 827,
830
+ "b5f2": 828,
831
+ "b5f3": 829,
832
+ "b5f4": 830,
833
+ "b5f5": 831,
834
+ "b5f6": 832,
835
+ "b5f7": 833,
836
+ "b5f8": 834,
837
+ "b5g1": 835,
838
+ "b5g2": 836,
839
+ "b5g3": 837,
840
+ "b5g4": 838,
841
+ "b5g5": 839,
842
+ "b5g6": 840,
843
+ "b5g7": 841,
844
+ "b5g8": 842,
845
+ "b5h1": 843,
846
+ "b5h2": 844,
847
+ "b5h3": 845,
848
+ "b5h4": 846,
849
+ "b5h5": 847,
850
+ "b5h6": 848,
851
+ "b5h7": 849,
852
+ "b5h8": 850,
853
+ "b6a1": 851,
854
+ "b6a2": 852,
855
+ "b6a3": 853,
856
+ "b6a4": 854,
857
+ "b6a5": 855,
858
+ "b6a6": 856,
859
+ "b6a7": 857,
860
+ "b6a8": 858,
861
+ "b6b1": 859,
862
+ "b6b2": 860,
863
+ "b6b3": 861,
864
+ "b6b4": 862,
865
+ "b6b5": 863,
866
+ "b6b7": 864,
867
+ "b6b8": 865,
868
+ "b6c1": 866,
869
+ "b6c2": 867,
870
+ "b6c3": 868,
871
+ "b6c4": 869,
872
+ "b6c5": 870,
873
+ "b6c6": 871,
874
+ "b6c7": 872,
875
+ "b6c8": 873,
876
+ "b6d1": 874,
877
+ "b6d2": 875,
878
+ "b6d3": 876,
879
+ "b6d4": 877,
880
+ "b6d5": 878,
881
+ "b6d6": 879,
882
+ "b6d7": 880,
883
+ "b6d8": 881,
884
+ "b6e1": 882,
885
+ "b6e2": 883,
886
+ "b6e3": 884,
887
+ "b6e4": 885,
888
+ "b6e5": 886,
889
+ "b6e6": 887,
890
+ "b6e7": 888,
891
+ "b6e8": 889,
892
+ "b6f1": 890,
893
+ "b6f2": 891,
894
+ "b6f3": 892,
895
+ "b6f4": 893,
896
+ "b6f5": 894,
897
+ "b6f6": 895,
898
+ "b6f7": 896,
899
+ "b6f8": 897,
900
+ "b6g1": 898,
901
+ "b6g2": 899,
902
+ "b6g3": 900,
903
+ "b6g4": 901,
904
+ "b6g5": 902,
905
+ "b6g6": 903,
906
+ "b6g7": 904,
907
+ "b6g8": 905,
908
+ "b6h1": 906,
909
+ "b6h2": 907,
910
+ "b6h3": 908,
911
+ "b6h4": 909,
912
+ "b6h5": 910,
913
+ "b6h6": 911,
914
+ "b6h7": 912,
915
+ "b6h8": 913,
916
+ "b7a1": 914,
917
+ "b7a2": 915,
918
+ "b7a3": 916,
919
+ "b7a4": 917,
920
+ "b7a5": 918,
921
+ "b7a6": 919,
922
+ "b7a7": 920,
923
+ "b7a8": 921,
924
+ "b7a8b": 922,
925
+ "b7a8n": 923,
926
+ "b7a8q": 924,
927
+ "b7a8r": 925,
928
+ "b7b1": 926,
929
+ "b7b2": 927,
930
+ "b7b3": 928,
931
+ "b7b4": 929,
932
+ "b7b5": 930,
933
+ "b7b6": 931,
934
+ "b7b8": 932,
935
+ "b7b8b": 933,
936
+ "b7b8n": 934,
937
+ "b7b8q": 935,
938
+ "b7b8r": 936,
939
+ "b7c1": 937,
940
+ "b7c2": 938,
941
+ "b7c3": 939,
942
+ "b7c4": 940,
943
+ "b7c5": 941,
944
+ "b7c6": 942,
945
+ "b7c7": 943,
946
+ "b7c8": 944,
947
+ "b7c8b": 945,
948
+ "b7c8n": 946,
949
+ "b7c8q": 947,
950
+ "b7c8r": 948,
951
+ "b7d1": 949,
952
+ "b7d2": 950,
953
+ "b7d3": 951,
954
+ "b7d4": 952,
955
+ "b7d5": 953,
956
+ "b7d6": 954,
957
+ "b7d7": 955,
958
+ "b7d8": 956,
959
+ "b7e1": 957,
960
+ "b7e2": 958,
961
+ "b7e3": 959,
962
+ "b7e4": 960,
963
+ "b7e5": 961,
964
+ "b7e6": 962,
965
+ "b7e7": 963,
966
+ "b7e8": 964,
967
+ "b7f1": 965,
968
+ "b7f2": 966,
969
+ "b7f3": 967,
970
+ "b7f4": 968,
971
+ "b7f5": 969,
972
+ "b7f6": 970,
973
+ "b7f7": 971,
974
+ "b7f8": 972,
975
+ "b7g1": 973,
976
+ "b7g2": 974,
977
+ "b7g3": 975,
978
+ "b7g4": 976,
979
+ "b7g5": 977,
980
+ "b7g6": 978,
981
+ "b7g7": 979,
982
+ "b7g8": 980,
983
+ "b7h1": 981,
984
+ "b7h2": 982,
985
+ "b7h3": 983,
986
+ "b7h4": 984,
987
+ "b7h5": 985,
988
+ "b7h6": 986,
989
+ "b7h7": 987,
990
+ "b7h8": 988,
991
+ "b8a1": 989,
992
+ "b8a2": 990,
993
+ "b8a3": 991,
994
+ "b8a4": 992,
995
+ "b8a5": 993,
996
+ "b8a6": 994,
997
+ "b8a7": 995,
998
+ "b8a8": 996,
999
+ "b8b1": 997,
1000
+ "b8b2": 998,
1001
+ "b8b3": 999,
1002
+ "b8b4": 1000,
1003
+ "b8b5": 1001,
1004
+ "b8b6": 1002,
1005
+ "b8b7": 1003,
1006
+ "b8c1": 1004,
1007
+ "b8c2": 1005,
1008
+ "b8c3": 1006,
1009
+ "b8c4": 1007,
1010
+ "b8c5": 1008,
1011
+ "b8c6": 1009,
1012
+ "b8c7": 1010,
1013
+ "b8c8": 1011,
1014
+ "b8d1": 1012,
1015
+ "b8d2": 1013,
1016
+ "b8d3": 1014,
1017
+ "b8d4": 1015,
1018
+ "b8d5": 1016,
1019
+ "b8d6": 1017,
1020
+ "b8d7": 1018,
1021
+ "b8d8": 1019,
1022
+ "b8e1": 1020,
1023
+ "b8e2": 1021,
1024
+ "b8e3": 1022,
1025
+ "b8e4": 1023,
1026
+ "b8e5": 1024,
1027
+ "b8e6": 1025,
1028
+ "b8e7": 1026,
1029
+ "b8e8": 1027,
1030
+ "b8f1": 1028,
1031
+ "b8f2": 1029,
1032
+ "b8f3": 1030,
1033
+ "b8f4": 1031,
1034
+ "b8f5": 1032,
1035
+ "b8f6": 1033,
1036
+ "b8f7": 1034,
1037
+ "b8f8": 1035,
1038
+ "b8g1": 1036,
1039
+ "b8g2": 1037,
1040
+ "b8g3": 1038,
1041
+ "b8g4": 1039,
1042
+ "b8g5": 1040,
1043
+ "b8g6": 1041,
1044
+ "b8g7": 1042,
1045
+ "b8g8": 1043,
1046
+ "b8h1": 1044,
1047
+ "b8h2": 1045,
1048
+ "b8h3": 1046,
1049
+ "b8h4": 1047,
1050
+ "b8h5": 1048,
1051
+ "b8h6": 1049,
1052
+ "b8h7": 1050,
1053
+ "b8h8": 1051,
1054
+ "c1a1": 1052,
1055
+ "c1a2": 1053,
1056
+ "c1a3": 1054,
1057
+ "c1a4": 1055,
1058
+ "c1a5": 1056,
1059
+ "c1a6": 1057,
1060
+ "c1a7": 1058,
1061
+ "c1a8": 1059,
1062
+ "c1b1": 1060,
1063
+ "c1b2": 1061,
1064
+ "c1b3": 1062,
1065
+ "c1b4": 1063,
1066
+ "c1b5": 1064,
1067
+ "c1b6": 1065,
1068
+ "c1b7": 1066,
1069
+ "c1b8": 1067,
1070
+ "c1c2": 1068,
1071
+ "c1c3": 1069,
1072
+ "c1c4": 1070,
1073
+ "c1c5": 1071,
1074
+ "c1c6": 1072,
1075
+ "c1c7": 1073,
1076
+ "c1c8": 1074,
1077
+ "c1d1": 1075,
1078
+ "c1d2": 1076,
1079
+ "c1d3": 1077,
1080
+ "c1d4": 1078,
1081
+ "c1d5": 1079,
1082
+ "c1d6": 1080,
1083
+ "c1d7": 1081,
1084
+ "c1d8": 1082,
1085
+ "c1e1": 1083,
1086
+ "c1e2": 1084,
1087
+ "c1e3": 1085,
1088
+ "c1e4": 1086,
1089
+ "c1e5": 1087,
1090
+ "c1e6": 1088,
1091
+ "c1e7": 1089,
1092
+ "c1e8": 1090,
1093
+ "c1f1": 1091,
1094
+ "c1f2": 1092,
1095
+ "c1f3": 1093,
1096
+ "c1f4": 1094,
1097
+ "c1f5": 1095,
1098
+ "c1f6": 1096,
1099
+ "c1f7": 1097,
1100
+ "c1f8": 1098,
1101
+ "c1g1": 1099,
1102
+ "c1g2": 1100,
1103
+ "c1g3": 1101,
1104
+ "c1g4": 1102,
1105
+ "c1g5": 1103,
1106
+ "c1g6": 1104,
1107
+ "c1g7": 1105,
1108
+ "c1g8": 1106,
1109
+ "c1h1": 1107,
1110
+ "c1h2": 1108,
1111
+ "c1h3": 1109,
1112
+ "c1h4": 1110,
1113
+ "c1h5": 1111,
1114
+ "c1h6": 1112,
1115
+ "c1h7": 1113,
1116
+ "c1h8": 1114,
1117
+ "c2a1": 1115,
1118
+ "c2a2": 1116,
1119
+ "c2a3": 1117,
1120
+ "c2a4": 1118,
1121
+ "c2a5": 1119,
1122
+ "c2a6": 1120,
1123
+ "c2a7": 1121,
1124
+ "c2a8": 1122,
1125
+ "c2b1": 1123,
1126
+ "c2b1b": 1124,
1127
+ "c2b1n": 1125,
1128
+ "c2b1q": 1126,
1129
+ "c2b1r": 1127,
1130
+ "c2b2": 1128,
1131
+ "c2b3": 1129,
1132
+ "c2b4": 1130,
1133
+ "c2b5": 1131,
1134
+ "c2b6": 1132,
1135
+ "c2b7": 1133,
1136
+ "c2b8": 1134,
1137
+ "c2c1": 1135,
1138
+ "c2c1b": 1136,
1139
+ "c2c1n": 1137,
1140
+ "c2c1q": 1138,
1141
+ "c2c1r": 1139,
1142
+ "c2c3": 1140,
1143
+ "c2c4": 1141,
1144
+ "c2c5": 1142,
1145
+ "c2c6": 1143,
1146
+ "c2c7": 1144,
1147
+ "c2c8": 1145,
1148
+ "c2d1": 1146,
1149
+ "c2d1b": 1147,
1150
+ "c2d1n": 1148,
1151
+ "c2d1q": 1149,
1152
+ "c2d1r": 1150,
1153
+ "c2d2": 1151,
1154
+ "c2d3": 1152,
1155
+ "c2d4": 1153,
1156
+ "c2d5": 1154,
1157
+ "c2d6": 1155,
1158
+ "c2d7": 1156,
1159
+ "c2d8": 1157,
1160
+ "c2e1": 1158,
1161
+ "c2e2": 1159,
1162
+ "c2e3": 1160,
1163
+ "c2e4": 1161,
1164
+ "c2e5": 1162,
1165
+ "c2e6": 1163,
1166
+ "c2e7": 1164,
1167
+ "c2e8": 1165,
1168
+ "c2f1": 1166,
1169
+ "c2f2": 1167,
1170
+ "c2f3": 1168,
1171
+ "c2f4": 1169,
1172
+ "c2f5": 1170,
1173
+ "c2f6": 1171,
1174
+ "c2f7": 1172,
1175
+ "c2f8": 1173,
1176
+ "c2g1": 1174,
1177
+ "c2g2": 1175,
1178
+ "c2g3": 1176,
1179
+ "c2g4": 1177,
1180
+ "c2g5": 1178,
1181
+ "c2g6": 1179,
1182
+ "c2g7": 1180,
1183
+ "c2g8": 1181,
1184
+ "c2h1": 1182,
1185
+ "c2h2": 1183,
1186
+ "c2h3": 1184,
1187
+ "c2h4": 1185,
1188
+ "c2h5": 1186,
1189
+ "c2h6": 1187,
1190
+ "c2h7": 1188,
1191
+ "c2h8": 1189,
1192
+ "c3a1": 1190,
1193
+ "c3a2": 1191,
1194
+ "c3a3": 1192,
1195
+ "c3a4": 1193,
1196
+ "c3a5": 1194,
1197
+ "c3a6": 1195,
1198
+ "c3a7": 1196,
1199
+ "c3a8": 1197,
1200
+ "c3b1": 1198,
1201
+ "c3b2": 1199,
1202
+ "c3b3": 1200,
1203
+ "c3b4": 1201,
1204
+ "c3b5": 1202,
1205
+ "c3b6": 1203,
1206
+ "c3b7": 1204,
1207
+ "c3b8": 1205,
1208
+ "c3c1": 1206,
1209
+ "c3c2": 1207,
1210
+ "c3c4": 1208,
1211
+ "c3c5": 1209,
1212
+ "c3c6": 1210,
1213
+ "c3c7": 1211,
1214
+ "c3c8": 1212,
1215
+ "c3d1": 1213,
1216
+ "c3d2": 1214,
1217
+ "c3d3": 1215,
1218
+ "c3d4": 1216,
1219
+ "c3d5": 1217,
1220
+ "c3d6": 1218,
1221
+ "c3d7": 1219,
1222
+ "c3d8": 1220,
1223
+ "c3e1": 1221,
1224
+ "c3e2": 1222,
1225
+ "c3e3": 1223,
1226
+ "c3e4": 1224,
1227
+ "c3e5": 1225,
1228
+ "c3e6": 1226,
1229
+ "c3e7": 1227,
1230
+ "c3e8": 1228,
1231
+ "c3f1": 1229,
1232
+ "c3f2": 1230,
1233
+ "c3f3": 1231,
1234
+ "c3f4": 1232,
1235
+ "c3f5": 1233,
1236
+ "c3f6": 1234,
1237
+ "c3f7": 1235,
1238
+ "c3f8": 1236,
1239
+ "c3g1": 1237,
1240
+ "c3g2": 1238,
1241
+ "c3g3": 1239,
1242
+ "c3g4": 1240,
1243
+ "c3g5": 1241,
1244
+ "c3g6": 1242,
1245
+ "c3g7": 1243,
1246
+ "c3g8": 1244,
1247
+ "c3h1": 1245,
1248
+ "c3h2": 1246,
1249
+ "c3h3": 1247,
1250
+ "c3h4": 1248,
1251
+ "c3h5": 1249,
1252
+ "c3h6": 1250,
1253
+ "c3h7": 1251,
1254
+ "c3h8": 1252,
1255
+ "c4a1": 1253,
1256
+ "c4a2": 1254,
1257
+ "c4a3": 1255,
1258
+ "c4a4": 1256,
1259
+ "c4a5": 1257,
1260
+ "c4a6": 1258,
1261
+ "c4a7": 1259,
1262
+ "c4a8": 1260,
1263
+ "c4b1": 1261,
1264
+ "c4b2": 1262,
1265
+ "c4b3": 1263,
1266
+ "c4b4": 1264,
1267
+ "c4b5": 1265,
1268
+ "c4b6": 1266,
1269
+ "c4b7": 1267,
1270
+ "c4b8": 1268,
1271
+ "c4c1": 1269,
1272
+ "c4c2": 1270,
1273
+ "c4c3": 1271,
1274
+ "c4c5": 1272,
1275
+ "c4c6": 1273,
1276
+ "c4c7": 1274,
1277
+ "c4c8": 1275,
1278
+ "c4d1": 1276,
1279
+ "c4d2": 1277,
1280
+ "c4d3": 1278,
1281
+ "c4d4": 1279,
1282
+ "c4d5": 1280,
1283
+ "c4d6": 1281,
1284
+ "c4d7": 1282,
1285
+ "c4d8": 1283,
1286
+ "c4e1": 1284,
1287
+ "c4e2": 1285,
1288
+ "c4e3": 1286,
1289
+ "c4e4": 1287,
1290
+ "c4e5": 1288,
1291
+ "c4e6": 1289,
1292
+ "c4e7": 1290,
1293
+ "c4e8": 1291,
1294
+ "c4f1": 1292,
1295
+ "c4f2": 1293,
1296
+ "c4f3": 1294,
1297
+ "c4f4": 1295,
1298
+ "c4f5": 1296,
1299
+ "c4f6": 1297,
1300
+ "c4f7": 1298,
1301
+ "c4f8": 1299,
1302
+ "c4g1": 1300,
1303
+ "c4g2": 1301,
1304
+ "c4g3": 1302,
1305
+ "c4g4": 1303,
1306
+ "c4g5": 1304,
1307
+ "c4g6": 1305,
1308
+ "c4g7": 1306,
1309
+ "c4g8": 1307,
1310
+ "c4h1": 1308,
1311
+ "c4h2": 1309,
1312
+ "c4h3": 1310,
1313
+ "c4h4": 1311,
1314
+ "c4h5": 1312,
1315
+ "c4h6": 1313,
1316
+ "c4h7": 1314,
1317
+ "c4h8": 1315,
1318
+ "c5a1": 1316,
1319
+ "c5a2": 1317,
1320
+ "c5a3": 1318,
1321
+ "c5a4": 1319,
1322
+ "c5a5": 1320,
1323
+ "c5a6": 1321,
1324
+ "c5a7": 1322,
1325
+ "c5a8": 1323,
1326
+ "c5b1": 1324,
1327
+ "c5b2": 1325,
1328
+ "c5b3": 1326,
1329
+ "c5b4": 1327,
1330
+ "c5b5": 1328,
1331
+ "c5b6": 1329,
1332
+ "c5b7": 1330,
1333
+ "c5b8": 1331,
1334
+ "c5c1": 1332,
1335
+ "c5c2": 1333,
1336
+ "c5c3": 1334,
1337
+ "c5c4": 1335,
1338
+ "c5c6": 1336,
1339
+ "c5c7": 1337,
1340
+ "c5c8": 1338,
1341
+ "c5d1": 1339,
1342
+ "c5d2": 1340,
1343
+ "c5d3": 1341,
1344
+ "c5d4": 1342,
1345
+ "c5d5": 1343,
1346
+ "c5d6": 1344,
1347
+ "c5d7": 1345,
1348
+ "c5d8": 1346,
1349
+ "c5e1": 1347,
1350
+ "c5e2": 1348,
1351
+ "c5e3": 1349,
1352
+ "c5e4": 1350,
1353
+ "c5e5": 1351,
1354
+ "c5e6": 1352,
1355
+ "c5e7": 1353,
1356
+ "c5e8": 1354,
1357
+ "c5f1": 1355,
1358
+ "c5f2": 1356,
1359
+ "c5f3": 1357,
1360
+ "c5f4": 1358,
1361
+ "c5f5": 1359,
1362
+ "c5f6": 1360,
1363
+ "c5f7": 1361,
1364
+ "c5f8": 1362,
1365
+ "c5g1": 1363,
1366
+ "c5g2": 1364,
1367
+ "c5g3": 1365,
1368
+ "c5g4": 1366,
1369
+ "c5g5": 1367,
1370
+ "c5g6": 1368,
1371
+ "c5g7": 1369,
1372
+ "c5g8": 1370,
1373
+ "c5h1": 1371,
1374
+ "c5h2": 1372,
1375
+ "c5h3": 1373,
1376
+ "c5h4": 1374,
1377
+ "c5h5": 1375,
1378
+ "c5h6": 1376,
1379
+ "c5h7": 1377,
1380
+ "c5h8": 1378,
1381
+ "c6a1": 1379,
1382
+ "c6a2": 1380,
1383
+ "c6a3": 1381,
1384
+ "c6a4": 1382,
1385
+ "c6a5": 1383,
1386
+ "c6a6": 1384,
1387
+ "c6a7": 1385,
1388
+ "c6a8": 1386,
1389
+ "c6b1": 1387,
1390
+ "c6b2": 1388,
1391
+ "c6b3": 1389,
1392
+ "c6b4": 1390,
1393
+ "c6b5": 1391,
1394
+ "c6b6": 1392,
1395
+ "c6b7": 1393,
1396
+ "c6b8": 1394,
1397
+ "c6c1": 1395,
1398
+ "c6c2": 1396,
1399
+ "c6c3": 1397,
1400
+ "c6c4": 1398,
1401
+ "c6c5": 1399,
1402
+ "c6c7": 1400,
1403
+ "c6c8": 1401,
1404
+ "c6d1": 1402,
1405
+ "c6d2": 1403,
1406
+ "c6d3": 1404,
1407
+ "c6d4": 1405,
1408
+ "c6d5": 1406,
1409
+ "c6d6": 1407,
1410
+ "c6d7": 1408,
1411
+ "c6d8": 1409,
1412
+ "c6e1": 1410,
1413
+ "c6e2": 1411,
1414
+ "c6e3": 1412,
1415
+ "c6e4": 1413,
1416
+ "c6e5": 1414,
1417
+ "c6e6": 1415,
1418
+ "c6e7": 1416,
1419
+ "c6e8": 1417,
1420
+ "c6f1": 1418,
1421
+ "c6f2": 1419,
1422
+ "c6f3": 1420,
1423
+ "c6f4": 1421,
1424
+ "c6f5": 1422,
1425
+ "c6f6": 1423,
1426
+ "c6f7": 1424,
1427
+ "c6f8": 1425,
1428
+ "c6g1": 1426,
1429
+ "c6g2": 1427,
1430
+ "c6g3": 1428,
1431
+ "c6g4": 1429,
1432
+ "c6g5": 1430,
1433
+ "c6g6": 1431,
1434
+ "c6g7": 1432,
1435
+ "c6g8": 1433,
1436
+ "c6h1": 1434,
1437
+ "c6h2": 1435,
1438
+ "c6h3": 1436,
1439
+ "c6h4": 1437,
1440
+ "c6h5": 1438,
1441
+ "c6h6": 1439,
1442
+ "c6h7": 1440,
1443
+ "c6h8": 1441,
1444
+ "c7a1": 1442,
1445
+ "c7a2": 1443,
1446
+ "c7a3": 1444,
1447
+ "c7a4": 1445,
1448
+ "c7a5": 1446,
1449
+ "c7a6": 1447,
1450
+ "c7a7": 1448,
1451
+ "c7a8": 1449,
1452
+ "c7b1": 1450,
1453
+ "c7b2": 1451,
1454
+ "c7b3": 1452,
1455
+ "c7b4": 1453,
1456
+ "c7b5": 1454,
1457
+ "c7b6": 1455,
1458
+ "c7b7": 1456,
1459
+ "c7b8": 1457,
1460
+ "c7b8b": 1458,
1461
+ "c7b8n": 1459,
1462
+ "c7b8q": 1460,
1463
+ "c7b8r": 1461,
1464
+ "c7c1": 1462,
1465
+ "c7c2": 1463,
1466
+ "c7c3": 1464,
1467
+ "c7c4": 1465,
1468
+ "c7c5": 1466,
1469
+ "c7c6": 1467,
1470
+ "c7c8": 1468,
1471
+ "c7c8b": 1469,
1472
+ "c7c8n": 1470,
1473
+ "c7c8q": 1471,
1474
+ "c7c8r": 1472,
1475
+ "c7d1": 1473,
1476
+ "c7d2": 1474,
1477
+ "c7d3": 1475,
1478
+ "c7d4": 1476,
1479
+ "c7d5": 1477,
1480
+ "c7d6": 1478,
1481
+ "c7d7": 1479,
1482
+ "c7d8": 1480,
1483
+ "c7d8b": 1481,
1484
+ "c7d8n": 1482,
1485
+ "c7d8q": 1483,
1486
+ "c7d8r": 1484,
1487
+ "c7e1": 1485,
1488
+ "c7e2": 1486,
1489
+ "c7e3": 1487,
1490
+ "c7e4": 1488,
1491
+ "c7e5": 1489,
1492
+ "c7e6": 1490,
1493
+ "c7e7": 1491,
1494
+ "c7e8": 1492,
1495
+ "c7f1": 1493,
1496
+ "c7f2": 1494,
1497
+ "c7f3": 1495,
1498
+ "c7f4": 1496,
1499
+ "c7f5": 1497,
1500
+ "c7f6": 1498,
1501
+ "c7f7": 1499,
1502
+ "c7f8": 1500,
1503
+ "c7g1": 1501,
1504
+ "c7g2": 1502,
1505
+ "c7g3": 1503,
1506
+ "c7g4": 1504,
1507
+ "c7g5": 1505,
1508
+ "c7g6": 1506,
1509
+ "c7g7": 1507,
1510
+ "c7g8": 1508,
1511
+ "c7h1": 1509,
1512
+ "c7h2": 1510,
1513
+ "c7h3": 1511,
1514
+ "c7h4": 1512,
1515
+ "c7h5": 1513,
1516
+ "c7h6": 1514,
1517
+ "c7h7": 1515,
1518
+ "c7h8": 1516,
1519
+ "c8a1": 1517,
1520
+ "c8a2": 1518,
1521
+ "c8a3": 1519,
1522
+ "c8a4": 1520,
1523
+ "c8a5": 1521,
1524
+ "c8a6": 1522,
1525
+ "c8a7": 1523,
1526
+ "c8a8": 1524,
1527
+ "c8b1": 1525,
1528
+ "c8b2": 1526,
1529
+ "c8b3": 1527,
1530
+ "c8b4": 1528,
1531
+ "c8b5": 1529,
1532
+ "c8b6": 1530,
1533
+ "c8b7": 1531,
1534
+ "c8b8": 1532,
1535
+ "c8c1": 1533,
1536
+ "c8c2": 1534,
1537
+ "c8c3": 1535,
1538
+ "c8c4": 1536,
1539
+ "c8c5": 1537,
1540
+ "c8c6": 1538,
1541
+ "c8c7": 1539,
1542
+ "c8d1": 1540,
1543
+ "c8d2": 1541,
1544
+ "c8d3": 1542,
1545
+ "c8d4": 1543,
1546
+ "c8d5": 1544,
1547
+ "c8d6": 1545,
1548
+ "c8d7": 1546,
1549
+ "c8d8": 1547,
1550
+ "c8e1": 1548,
1551
+ "c8e2": 1549,
1552
+ "c8e3": 1550,
1553
+ "c8e4": 1551,
1554
+ "c8e5": 1552,
1555
+ "c8e6": 1553,
1556
+ "c8e7": 1554,
1557
+ "c8e8": 1555,
1558
+ "c8f1": 1556,
1559
+ "c8f2": 1557,
1560
+ "c8f3": 1558,
1561
+ "c8f4": 1559,
1562
+ "c8f5": 1560,
1563
+ "c8f6": 1561,
1564
+ "c8f7": 1562,
1565
+ "c8f8": 1563,
1566
+ "c8g1": 1564,
1567
+ "c8g2": 1565,
1568
+ "c8g3": 1566,
1569
+ "c8g4": 1567,
1570
+ "c8g5": 1568,
1571
+ "c8g6": 1569,
1572
+ "c8g7": 1570,
1573
+ "c8g8": 1571,
1574
+ "c8h1": 1572,
1575
+ "c8h2": 1573,
1576
+ "c8h3": 1574,
1577
+ "c8h4": 1575,
1578
+ "c8h5": 1576,
1579
+ "c8h6": 1577,
1580
+ "c8h7": 1578,
1581
+ "c8h8": 1579,
1582
+ "d1a1": 1580,
1583
+ "d1a2": 1581,
1584
+ "d1a3": 1582,
1585
+ "d1a4": 1583,
1586
+ "d1a5": 1584,
1587
+ "d1a6": 1585,
1588
+ "d1a7": 1586,
1589
+ "d1a8": 1587,
1590
+ "d1b1": 1588,
1591
+ "d1b2": 1589,
1592
+ "d1b3": 1590,
1593
+ "d1b4": 1591,
1594
+ "d1b5": 1592,
1595
+ "d1b6": 1593,
1596
+ "d1b7": 1594,
1597
+ "d1b8": 1595,
1598
+ "d1c1": 1596,
1599
+ "d1c2": 1597,
1600
+ "d1c3": 1598,
1601
+ "d1c4": 1599,
1602
+ "d1c5": 1600,
1603
+ "d1c6": 1601,
1604
+ "d1c7": 1602,
1605
+ "d1c8": 1603,
1606
+ "d1d2": 1604,
1607
+ "d1d3": 1605,
1608
+ "d1d4": 1606,
1609
+ "d1d5": 1607,
1610
+ "d1d6": 1608,
1611
+ "d1d7": 1609,
1612
+ "d1d8": 1610,
1613
+ "d1e1": 1611,
1614
+ "d1e2": 1612,
1615
+ "d1e3": 1613,
1616
+ "d1e4": 1614,
1617
+ "d1e5": 1615,
1618
+ "d1e6": 1616,
1619
+ "d1e7": 1617,
1620
+ "d1e8": 1618,
1621
+ "d1f1": 1619,
1622
+ "d1f2": 1620,
1623
+ "d1f3": 1621,
1624
+ "d1f4": 1622,
1625
+ "d1f5": 1623,
1626
+ "d1f6": 1624,
1627
+ "d1f7": 1625,
1628
+ "d1f8": 1626,
1629
+ "d1g1": 1627,
1630
+ "d1g2": 1628,
1631
+ "d1g3": 1629,
1632
+ "d1g4": 1630,
1633
+ "d1g5": 1631,
1634
+ "d1g6": 1632,
1635
+ "d1g7": 1633,
1636
+ "d1g8": 1634,
1637
+ "d1h1": 1635,
1638
+ "d1h2": 1636,
1639
+ "d1h3": 1637,
1640
+ "d1h4": 1638,
1641
+ "d1h5": 1639,
1642
+ "d1h6": 1640,
1643
+ "d1h7": 1641,
1644
+ "d1h8": 1642,
1645
+ "d2a1": 1643,
1646
+ "d2a2": 1644,
1647
+ "d2a3": 1645,
1648
+ "d2a4": 1646,
1649
+ "d2a5": 1647,
1650
+ "d2a6": 1648,
1651
+ "d2a7": 1649,
1652
+ "d2a8": 1650,
1653
+ "d2b1": 1651,
1654
+ "d2b2": 1652,
1655
+ "d2b3": 1653,
1656
+ "d2b4": 1654,
1657
+ "d2b5": 1655,
1658
+ "d2b6": 1656,
1659
+ "d2b7": 1657,
1660
+ "d2b8": 1658,
1661
+ "d2c1": 1659,
1662
+ "d2c1b": 1660,
1663
+ "d2c1n": 1661,
1664
+ "d2c1q": 1662,
1665
+ "d2c1r": 1663,
1666
+ "d2c2": 1664,
1667
+ "d2c3": 1665,
1668
+ "d2c4": 1666,
1669
+ "d2c5": 1667,
1670
+ "d2c6": 1668,
1671
+ "d2c7": 1669,
1672
+ "d2c8": 1670,
1673
+ "d2d1": 1671,
1674
+ "d2d1b": 1672,
1675
+ "d2d1n": 1673,
1676
+ "d2d1q": 1674,
1677
+ "d2d1r": 1675,
1678
+ "d2d3": 1676,
1679
+ "d2d4": 1677,
1680
+ "d2d5": 1678,
1681
+ "d2d6": 1679,
1682
+ "d2d7": 1680,
1683
+ "d2d8": 1681,
1684
+ "d2e1": 1682,
1685
+ "d2e1b": 1683,
1686
+ "d2e1n": 1684,
1687
+ "d2e1q": 1685,
1688
+ "d2e1r": 1686,
1689
+ "d2e2": 1687,
1690
+ "d2e3": 1688,
1691
+ "d2e4": 1689,
1692
+ "d2e5": 1690,
1693
+ "d2e6": 1691,
1694
+ "d2e7": 1692,
1695
+ "d2e8": 1693,
1696
+ "d2f1": 1694,
1697
+ "d2f2": 1695,
1698
+ "d2f3": 1696,
1699
+ "d2f4": 1697,
1700
+ "d2f5": 1698,
1701
+ "d2f6": 1699,
1702
+ "d2f7": 1700,
1703
+ "d2f8": 1701,
1704
+ "d2g1": 1702,
1705
+ "d2g2": 1703,
1706
+ "d2g3": 1704,
1707
+ "d2g4": 1705,
1708
+ "d2g5": 1706,
1709
+ "d2g6": 1707,
1710
+ "d2g7": 1708,
1711
+ "d2g8": 1709,
1712
+ "d2h1": 1710,
1713
+ "d2h2": 1711,
1714
+ "d2h3": 1712,
1715
+ "d2h4": 1713,
1716
+ "d2h5": 1714,
1717
+ "d2h6": 1715,
1718
+ "d2h7": 1716,
1719
+ "d2h8": 1717,
1720
+ "d3a1": 1718,
1721
+ "d3a2": 1719,
1722
+ "d3a3": 1720,
1723
+ "d3a4": 1721,
1724
+ "d3a5": 1722,
1725
+ "d3a6": 1723,
1726
+ "d3a7": 1724,
1727
+ "d3a8": 1725,
1728
+ "d3b1": 1726,
1729
+ "d3b2": 1727,
1730
+ "d3b3": 1728,
1731
+ "d3b4": 1729,
1732
+ "d3b5": 1730,
1733
+ "d3b6": 1731,
1734
+ "d3b7": 1732,
1735
+ "d3b8": 1733,
1736
+ "d3c1": 1734,
1737
+ "d3c2": 1735,
1738
+ "d3c3": 1736,
1739
+ "d3c4": 1737,
1740
+ "d3c5": 1738,
1741
+ "d3c6": 1739,
1742
+ "d3c7": 1740,
1743
+ "d3c8": 1741,
1744
+ "d3d1": 1742,
1745
+ "d3d2": 1743,
1746
+ "d3d4": 1744,
1747
+ "d3d5": 1745,
1748
+ "d3d6": 1746,
1749
+ "d3d7": 1747,
1750
+ "d3d8": 1748,
1751
+ "d3e1": 1749,
1752
+ "d3e2": 1750,
1753
+ "d3e3": 1751,
1754
+ "d3e4": 1752,
1755
+ "d3e5": 1753,
1756
+ "d3e6": 1754,
1757
+ "d3e7": 1755,
1758
+ "d3e8": 1756,
1759
+ "d3f1": 1757,
1760
+ "d3f2": 1758,
1761
+ "d3f3": 1759,
1762
+ "d3f4": 1760,
1763
+ "d3f5": 1761,
1764
+ "d3f6": 1762,
1765
+ "d3f7": 1763,
1766
+ "d3f8": 1764,
1767
+ "d3g1": 1765,
1768
+ "d3g2": 1766,
1769
+ "d3g3": 1767,
1770
+ "d3g4": 1768,
1771
+ "d3g5": 1769,
1772
+ "d3g6": 1770,
1773
+ "d3g7": 1771,
1774
+ "d3g8": 1772,
1775
+ "d3h1": 1773,
1776
+ "d3h2": 1774,
1777
+ "d3h3": 1775,
1778
+ "d3h4": 1776,
1779
+ "d3h5": 1777,
1780
+ "d3h6": 1778,
1781
+ "d3h7": 1779,
1782
+ "d3h8": 1780,
1783
+ "d4a1": 1781,
1784
+ "d4a2": 1782,
1785
+ "d4a3": 1783,
1786
+ "d4a4": 1784,
1787
+ "d4a5": 1785,
1788
+ "d4a6": 1786,
1789
+ "d4a7": 1787,
1790
+ "d4a8": 1788,
1791
+ "d4b1": 1789,
1792
+ "d4b2": 1790,
1793
+ "d4b3": 1791,
1794
+ "d4b4": 1792,
1795
+ "d4b5": 1793,
1796
+ "d4b6": 1794,
1797
+ "d4b7": 1795,
1798
+ "d4b8": 1796,
1799
+ "d4c1": 1797,
1800
+ "d4c2": 1798,
1801
+ "d4c3": 1799,
1802
+ "d4c4": 1800,
1803
+ "d4c5": 1801,
1804
+ "d4c6": 1802,
1805
+ "d4c7": 1803,
1806
+ "d4c8": 1804,
1807
+ "d4d1": 1805,
1808
+ "d4d2": 1806,
1809
+ "d4d3": 1807,
1810
+ "d4d5": 1808,
1811
+ "d4d6": 1809,
1812
+ "d4d7": 1810,
1813
+ "d4d8": 1811,
1814
+ "d4e1": 1812,
1815
+ "d4e2": 1813,
1816
+ "d4e3": 1814,
1817
+ "d4e4": 1815,
1818
+ "d4e5": 1816,
1819
+ "d4e6": 1817,
1820
+ "d4e7": 1818,
1821
+ "d4e8": 1819,
1822
+ "d4f1": 1820,
1823
+ "d4f2": 1821,
1824
+ "d4f3": 1822,
1825
+ "d4f4": 1823,
1826
+ "d4f5": 1824,
1827
+ "d4f6": 1825,
1828
+ "d4f7": 1826,
1829
+ "d4f8": 1827,
1830
+ "d4g1": 1828,
1831
+ "d4g2": 1829,
1832
+ "d4g3": 1830,
1833
+ "d4g4": 1831,
1834
+ "d4g5": 1832,
1835
+ "d4g6": 1833,
1836
+ "d4g7": 1834,
1837
+ "d4g8": 1835,
1838
+ "d4h1": 1836,
1839
+ "d4h2": 1837,
1840
+ "d4h3": 1838,
1841
+ "d4h4": 1839,
1842
+ "d4h5": 1840,
1843
+ "d4h6": 1841,
1844
+ "d4h7": 1842,
1845
+ "d4h8": 1843,
1846
+ "d5a1": 1844,
1847
+ "d5a2": 1845,
1848
+ "d5a3": 1846,
1849
+ "d5a4": 1847,
1850
+ "d5a5": 1848,
1851
+ "d5a6": 1849,
1852
+ "d5a7": 1850,
1853
+ "d5a8": 1851,
1854
+ "d5b1": 1852,
1855
+ "d5b2": 1853,
1856
+ "d5b3": 1854,
1857
+ "d5b4": 1855,
1858
+ "d5b5": 1856,
1859
+ "d5b6": 1857,
1860
+ "d5b7": 1858,
1861
+ "d5b8": 1859,
1862
+ "d5c1": 1860,
1863
+ "d5c2": 1861,
1864
+ "d5c3": 1862,
1865
+ "d5c4": 1863,
1866
+ "d5c5": 1864,
1867
+ "d5c6": 1865,
1868
+ "d5c7": 1866,
1869
+ "d5c8": 1867,
1870
+ "d5d1": 1868,
1871
+ "d5d2": 1869,
1872
+ "d5d3": 1870,
1873
+ "d5d4": 1871,
1874
+ "d5d6": 1872,
1875
+ "d5d7": 1873,
1876
+ "d5d8": 1874,
1877
+ "d5e1": 1875,
1878
+ "d5e2": 1876,
1879
+ "d5e3": 1877,
1880
+ "d5e4": 1878,
1881
+ "d5e5": 1879,
1882
+ "d5e6": 1880,
1883
+ "d5e7": 1881,
1884
+ "d5e8": 1882,
1885
+ "d5f1": 1883,
1886
+ "d5f2": 1884,
1887
+ "d5f3": 1885,
1888
+ "d5f4": 1886,
1889
+ "d5f5": 1887,
1890
+ "d5f6": 1888,
1891
+ "d5f7": 1889,
1892
+ "d5f8": 1890,
1893
+ "d5g1": 1891,
1894
+ "d5g2": 1892,
1895
+ "d5g3": 1893,
1896
+ "d5g4": 1894,
1897
+ "d5g5": 1895,
1898
+ "d5g6": 1896,
1899
+ "d5g7": 1897,
1900
+ "d5g8": 1898,
1901
+ "d5h1": 1899,
1902
+ "d5h2": 1900,
1903
+ "d5h3": 1901,
1904
+ "d5h4": 1902,
1905
+ "d5h5": 1903,
1906
+ "d5h6": 1904,
1907
+ "d5h7": 1905,
1908
+ "d5h8": 1906,
1909
+ "d6a1": 1907,
1910
+ "d6a2": 1908,
1911
+ "d6a3": 1909,
1912
+ "d6a4": 1910,
1913
+ "d6a5": 1911,
1914
+ "d6a6": 1912,
1915
+ "d6a7": 1913,
1916
+ "d6a8": 1914,
1917
+ "d6b1": 1915,
1918
+ "d6b2": 1916,
1919
+ "d6b3": 1917,
1920
+ "d6b4": 1918,
1921
+ "d6b5": 1919,
1922
+ "d6b6": 1920,
1923
+ "d6b7": 1921,
1924
+ "d6b8": 1922,
1925
+ "d6c1": 1923,
1926
+ "d6c2": 1924,
1927
+ "d6c3": 1925,
1928
+ "d6c4": 1926,
1929
+ "d6c5": 1927,
1930
+ "d6c6": 1928,
1931
+ "d6c7": 1929,
1932
+ "d6c8": 1930,
1933
+ "d6d1": 1931,
1934
+ "d6d2": 1932,
1935
+ "d6d3": 1933,
1936
+ "d6d4": 1934,
1937
+ "d6d5": 1935,
1938
+ "d6d7": 1936,
1939
+ "d6d8": 1937,
1940
+ "d6e1": 1938,
1941
+ "d6e2": 1939,
1942
+ "d6e3": 1940,
1943
+ "d6e4": 1941,
1944
+ "d6e5": 1942,
1945
+ "d6e6": 1943,
1946
+ "d6e7": 1944,
1947
+ "d6e8": 1945,
1948
+ "d6f1": 1946,
1949
+ "d6f2": 1947,
1950
+ "d6f3": 1948,
1951
+ "d6f4": 1949,
1952
+ "d6f5": 1950,
1953
+ "d6f6": 1951,
1954
+ "d6f7": 1952,
1955
+ "d6f8": 1953,
1956
+ "d6g1": 1954,
1957
+ "d6g2": 1955,
1958
+ "d6g3": 1956,
1959
+ "d6g4": 1957,
1960
+ "d6g5": 1958,
1961
+ "d6g6": 1959,
1962
+ "d6g7": 1960,
1963
+ "d6g8": 1961,
1964
+ "d6h1": 1962,
1965
+ "d6h2": 1963,
1966
+ "d6h3": 1964,
1967
+ "d6h4": 1965,
1968
+ "d6h5": 1966,
1969
+ "d6h6": 1967,
1970
+ "d6h7": 1968,
1971
+ "d6h8": 1969,
1972
+ "d7a1": 1970,
1973
+ "d7a2": 1971,
1974
+ "d7a3": 1972,
1975
+ "d7a4": 1973,
1976
+ "d7a5": 1974,
1977
+ "d7a6": 1975,
1978
+ "d7a7": 1976,
1979
+ "d7a8": 1977,
1980
+ "d7b1": 1978,
1981
+ "d7b2": 1979,
1982
+ "d7b3": 1980,
1983
+ "d7b4": 1981,
1984
+ "d7b5": 1982,
1985
+ "d7b6": 1983,
1986
+ "d7b7": 1984,
1987
+ "d7b8": 1985,
1988
+ "d7c1": 1986,
1989
+ "d7c2": 1987,
1990
+ "d7c3": 1988,
1991
+ "d7c4": 1989,
1992
+ "d7c5": 1990,
1993
+ "d7c6": 1991,
1994
+ "d7c7": 1992,
1995
+ "d7c8": 1993,
1996
+ "d7c8b": 1994,
1997
+ "d7c8n": 1995,
1998
+ "d7c8q": 1996,
1999
+ "d7c8r": 1997,
2000
+ "d7d1": 1998,
2001
+ "d7d2": 1999,
2002
+ "d7d3": 2000,
2003
+ "d7d4": 2001,
2004
+ "d7d5": 2002,
2005
+ "d7d6": 2003,
2006
+ "d7d8": 2004,
2007
+ "d7d8b": 2005,
2008
+ "d7d8n": 2006,
2009
+ "d7d8q": 2007,
2010
+ "d7d8r": 2008,
2011
+ "d7e1": 2009,
2012
+ "d7e2": 2010,
2013
+ "d7e3": 2011,
2014
+ "d7e4": 2012,
2015
+ "d7e5": 2013,
2016
+ "d7e6": 2014,
2017
+ "d7e7": 2015,
2018
+ "d7e8": 2016,
2019
+ "d7e8b": 2017,
2020
+ "d7e8n": 2018,
2021
+ "d7e8q": 2019,
2022
+ "d7e8r": 2020,
2023
+ "d7f1": 2021,
2024
+ "d7f2": 2022,
2025
+ "d7f3": 2023,
2026
+ "d7f4": 2024,
2027
+ "d7f5": 2025,
2028
+ "d7f6": 2026,
2029
+ "d7f7": 2027,
2030
+ "d7f8": 2028,
2031
+ "d7g1": 2029,
2032
+ "d7g2": 2030,
2033
+ "d7g3": 2031,
2034
+ "d7g4": 2032,
2035
+ "d7g5": 2033,
2036
+ "d7g6": 2034,
2037
+ "d7g7": 2035,
2038
+ "d7g8": 2036,
2039
+ "d7h1": 2037,
2040
+ "d7h2": 2038,
2041
+ "d7h3": 2039,
2042
+ "d7h4": 2040,
2043
+ "d7h5": 2041,
2044
+ "d7h6": 2042,
2045
+ "d7h7": 2043,
2046
+ "d7h8": 2044,
2047
+ "d8a1": 2045,
2048
+ "d8a2": 2046,
2049
+ "d8a3": 2047,
2050
+ "d8a4": 2048,
2051
+ "d8a5": 2049,
2052
+ "d8a6": 2050,
2053
+ "d8a7": 2051,
2054
+ "d8a8": 2052,
2055
+ "d8b1": 2053,
2056
+ "d8b2": 2054,
2057
+ "d8b3": 2055,
2058
+ "d8b4": 2056,
2059
+ "d8b5": 2057,
2060
+ "d8b6": 2058,
2061
+ "d8b7": 2059,
2062
+ "d8b8": 2060,
2063
+ "d8c1": 2061,
2064
+ "d8c2": 2062,
2065
+ "d8c3": 2063,
2066
+ "d8c4": 2064,
2067
+ "d8c5": 2065,
2068
+ "d8c6": 2066,
2069
+ "d8c7": 2067,
2070
+ "d8c8": 2068,
2071
+ "d8d1": 2069,
2072
+ "d8d2": 2070,
2073
+ "d8d3": 2071,
2074
+ "d8d4": 2072,
2075
+ "d8d5": 2073,
2076
+ "d8d6": 2074,
2077
+ "d8d7": 2075,
2078
+ "d8e1": 2076,
2079
+ "d8e2": 2077,
2080
+ "d8e3": 2078,
2081
+ "d8e4": 2079,
2082
+ "d8e5": 2080,
2083
+ "d8e6": 2081,
2084
+ "d8e7": 2082,
2085
+ "d8e8": 2083,
2086
+ "d8f1": 2084,
2087
+ "d8f2": 2085,
2088
+ "d8f3": 2086,
2089
+ "d8f4": 2087,
2090
+ "d8f5": 2088,
2091
+ "d8f6": 2089,
2092
+ "d8f7": 2090,
2093
+ "d8f8": 2091,
2094
+ "d8g1": 2092,
2095
+ "d8g2": 2093,
2096
+ "d8g3": 2094,
2097
+ "d8g4": 2095,
2098
+ "d8g5": 2096,
2099
+ "d8g6": 2097,
2100
+ "d8g7": 2098,
2101
+ "d8g8": 2099,
2102
+ "d8h1": 2100,
2103
+ "d8h2": 2101,
2104
+ "d8h3": 2102,
2105
+ "d8h4": 2103,
2106
+ "d8h5": 2104,
2107
+ "d8h6": 2105,
2108
+ "d8h7": 2106,
2109
+ "d8h8": 2107,
2110
+ "e1a1": 2108,
2111
+ "e1a2": 2109,
2112
+ "e1a3": 2110,
2113
+ "e1a4": 2111,
2114
+ "e1a5": 2112,
2115
+ "e1a6": 2113,
2116
+ "e1a7": 2114,
2117
+ "e1a8": 2115,
2118
+ "e1b1": 2116,
2119
+ "e1b2": 2117,
2120
+ "e1b3": 2118,
2121
+ "e1b4": 2119,
2122
+ "e1b5": 2120,
2123
+ "e1b6": 2121,
2124
+ "e1b7": 2122,
2125
+ "e1b8": 2123,
2126
+ "e1c1": 2124,
2127
+ "e1c2": 2125,
2128
+ "e1c3": 2126,
2129
+ "e1c4": 2127,
2130
+ "e1c5": 2128,
2131
+ "e1c6": 2129,
2132
+ "e1c7": 2130,
2133
+ "e1c8": 2131,
2134
+ "e1d1": 2132,
2135
+ "e1d2": 2133,
2136
+ "e1d3": 2134,
2137
+ "e1d4": 2135,
2138
+ "e1d5": 2136,
2139
+ "e1d6": 2137,
2140
+ "e1d7": 2138,
2141
+ "e1d8": 2139,
2142
+ "e1e2": 2140,
2143
+ "e1e3": 2141,
2144
+ "e1e4": 2142,
2145
+ "e1e5": 2143,
2146
+ "e1e6": 2144,
2147
+ "e1e7": 2145,
2148
+ "e1e8": 2146,
2149
+ "e1f1": 2147,
2150
+ "e1f2": 2148,
2151
+ "e1f3": 2149,
2152
+ "e1f4": 2150,
2153
+ "e1f5": 2151,
2154
+ "e1f6": 2152,
2155
+ "e1f7": 2153,
2156
+ "e1f8": 2154,
2157
+ "e1g1": 2155,
2158
+ "e1g2": 2156,
2159
+ "e1g3": 2157,
2160
+ "e1g4": 2158,
2161
+ "e1g5": 2159,
2162
+ "e1g6": 2160,
2163
+ "e1g7": 2161,
2164
+ "e1g8": 2162,
2165
+ "e1h1": 2163,
2166
+ "e1h2": 2164,
2167
+ "e1h3": 2165,
2168
+ "e1h4": 2166,
2169
+ "e1h5": 2167,
2170
+ "e1h6": 2168,
2171
+ "e1h7": 2169,
2172
+ "e1h8": 2170,
2173
+ "e2a1": 2171,
2174
+ "e2a2": 2172,
2175
+ "e2a3": 2173,
2176
+ "e2a4": 2174,
2177
+ "e2a5": 2175,
2178
+ "e2a6": 2176,
2179
+ "e2a7": 2177,
2180
+ "e2a8": 2178,
2181
+ "e2b1": 2179,
2182
+ "e2b2": 2180,
2183
+ "e2b3": 2181,
2184
+ "e2b4": 2182,
2185
+ "e2b5": 2183,
2186
+ "e2b6": 2184,
2187
+ "e2b7": 2185,
2188
+ "e2b8": 2186,
2189
+ "e2c1": 2187,
2190
+ "e2c2": 2188,
2191
+ "e2c3": 2189,
2192
+ "e2c4": 2190,
2193
+ "e2c5": 2191,
2194
+ "e2c6": 2192,
2195
+ "e2c7": 2193,
2196
+ "e2c8": 2194,
2197
+ "e2d1": 2195,
2198
+ "e2d1b": 2196,
2199
+ "e2d1n": 2197,
2200
+ "e2d1q": 2198,
2201
+ "e2d1r": 2199,
2202
+ "e2d2": 2200,
2203
+ "e2d3": 2201,
2204
+ "e2d4": 2202,
2205
+ "e2d5": 2203,
2206
+ "e2d6": 2204,
2207
+ "e2d7": 2205,
2208
+ "e2d8": 2206,
2209
+ "e2e1": 2207,
2210
+ "e2e1b": 2208,
2211
+ "e2e1n": 2209,
2212
+ "e2e1q": 2210,
2213
+ "e2e1r": 2211,
2214
+ "e2e3": 2212,
2215
+ "e2e4": 2213,
2216
+ "e2e5": 2214,
2217
+ "e2e6": 2215,
2218
+ "e2e7": 2216,
2219
+ "e2e8": 2217,
2220
+ "e2f1": 2218,
2221
+ "e2f1b": 2219,
2222
+ "e2f1n": 2220,
2223
+ "e2f1q": 2221,
2224
+ "e2f1r": 2222,
2225
+ "e2f2": 2223,
2226
+ "e2f3": 2224,
2227
+ "e2f4": 2225,
2228
+ "e2f5": 2226,
2229
+ "e2f6": 2227,
2230
+ "e2f7": 2228,
2231
+ "e2f8": 2229,
2232
+ "e2g1": 2230,
2233
+ "e2g2": 2231,
2234
+ "e2g3": 2232,
2235
+ "e2g4": 2233,
2236
+ "e2g5": 2234,
2237
+ "e2g6": 2235,
2238
+ "e2g7": 2236,
2239
+ "e2g8": 2237,
2240
+ "e2h1": 2238,
2241
+ "e2h2": 2239,
2242
+ "e2h3": 2240,
2243
+ "e2h4": 2241,
2244
+ "e2h5": 2242,
2245
+ "e2h6": 2243,
2246
+ "e2h7": 2244,
2247
+ "e2h8": 2245,
2248
+ "e3a1": 2246,
2249
+ "e3a2": 2247,
2250
+ "e3a3": 2248,
2251
+ "e3a4": 2249,
2252
+ "e3a5": 2250,
2253
+ "e3a6": 2251,
2254
+ "e3a7": 2252,
2255
+ "e3a8": 2253,
2256
+ "e3b1": 2254,
2257
+ "e3b2": 2255,
2258
+ "e3b3": 2256,
2259
+ "e3b4": 2257,
2260
+ "e3b5": 2258,
2261
+ "e3b6": 2259,
2262
+ "e3b7": 2260,
2263
+ "e3b8": 2261,
2264
+ "e3c1": 2262,
2265
+ "e3c2": 2263,
2266
+ "e3c3": 2264,
2267
+ "e3c4": 2265,
2268
+ "e3c5": 2266,
2269
+ "e3c6": 2267,
2270
+ "e3c7": 2268,
2271
+ "e3c8": 2269,
2272
+ "e3d1": 2270,
2273
+ "e3d2": 2271,
2274
+ "e3d3": 2272,
2275
+ "e3d4": 2273,
2276
+ "e3d5": 2274,
2277
+ "e3d6": 2275,
2278
+ "e3d7": 2276,
2279
+ "e3d8": 2277,
2280
+ "e3e1": 2278,
2281
+ "e3e2": 2279,
2282
+ "e3e4": 2280,
2283
+ "e3e5": 2281,
2284
+ "e3e6": 2282,
2285
+ "e3e7": 2283,
2286
+ "e3e8": 2284,
2287
+ "e3f1": 2285,
2288
+ "e3f2": 2286,
2289
+ "e3f3": 2287,
2290
+ "e3f4": 2288,
2291
+ "e3f5": 2289,
2292
+ "e3f6": 2290,
2293
+ "e3f7": 2291,
2294
+ "e3f8": 2292,
2295
+ "e3g1": 2293,
2296
+ "e3g2": 2294,
2297
+ "e3g3": 2295,
2298
+ "e3g4": 2296,
2299
+ "e3g5": 2297,
2300
+ "e3g6": 2298,
2301
+ "e3g7": 2299,
2302
+ "e3g8": 2300,
2303
+ "e3h1": 2301,
2304
+ "e3h2": 2302,
2305
+ "e3h3": 2303,
2306
+ "e3h4": 2304,
2307
+ "e3h5": 2305,
2308
+ "e3h6": 2306,
2309
+ "e3h7": 2307,
2310
+ "e3h8": 2308,
2311
+ "e4a1": 2309,
2312
+ "e4a2": 2310,
2313
+ "e4a3": 2311,
2314
+ "e4a4": 2312,
2315
+ "e4a5": 2313,
2316
+ "e4a6": 2314,
2317
+ "e4a7": 2315,
2318
+ "e4a8": 2316,
2319
+ "e4b1": 2317,
2320
+ "e4b2": 2318,
2321
+ "e4b3": 2319,
2322
+ "e4b4": 2320,
2323
+ "e4b5": 2321,
2324
+ "e4b6": 2322,
2325
+ "e4b7": 2323,
2326
+ "e4b8": 2324,
2327
+ "e4c1": 2325,
2328
+ "e4c2": 2326,
2329
+ "e4c3": 2327,
2330
+ "e4c4": 2328,
2331
+ "e4c5": 2329,
2332
+ "e4c6": 2330,
2333
+ "e4c7": 2331,
2334
+ "e4c8": 2332,
2335
+ "e4d1": 2333,
2336
+ "e4d2": 2334,
2337
+ "e4d3": 2335,
2338
+ "e4d4": 2336,
2339
+ "e4d5": 2337,
2340
+ "e4d6": 2338,
2341
+ "e4d7": 2339,
2342
+ "e4d8": 2340,
2343
+ "e4e1": 2341,
2344
+ "e4e2": 2342,
2345
+ "e4e3": 2343,
2346
+ "e4e5": 2344,
2347
+ "e4e6": 2345,
2348
+ "e4e7": 2346,
2349
+ "e4e8": 2347,
2350
+ "e4f1": 2348,
2351
+ "e4f2": 2349,
2352
+ "e4f3": 2350,
2353
+ "e4f4": 2351,
2354
+ "e4f5": 2352,
2355
+ "e4f6": 2353,
2356
+ "e4f7": 2354,
2357
+ "e4f8": 2355,
2358
+ "e4g1": 2356,
2359
+ "e4g2": 2357,
2360
+ "e4g3": 2358,
2361
+ "e4g4": 2359,
2362
+ "e4g5": 2360,
2363
+ "e4g6": 2361,
2364
+ "e4g7": 2362,
2365
+ "e4g8": 2363,
2366
+ "e4h1": 2364,
2367
+ "e4h2": 2365,
2368
+ "e4h3": 2366,
2369
+ "e4h4": 2367,
2370
+ "e4h5": 2368,
2371
+ "e4h6": 2369,
2372
+ "e4h7": 2370,
2373
+ "e4h8": 2371,
2374
+ "e5a1": 2372,
2375
+ "e5a2": 2373,
2376
+ "e5a3": 2374,
2377
+ "e5a4": 2375,
2378
+ "e5a5": 2376,
2379
+ "e5a6": 2377,
2380
+ "e5a7": 2378,
2381
+ "e5a8": 2379,
2382
+ "e5b1": 2380,
2383
+ "e5b2": 2381,
2384
+ "e5b3": 2382,
2385
+ "e5b4": 2383,
2386
+ "e5b5": 2384,
2387
+ "e5b6": 2385,
2388
+ "e5b7": 2386,
2389
+ "e5b8": 2387,
2390
+ "e5c1": 2388,
2391
+ "e5c2": 2389,
2392
+ "e5c3": 2390,
2393
+ "e5c4": 2391,
2394
+ "e5c5": 2392,
2395
+ "e5c6": 2393,
2396
+ "e5c7": 2394,
2397
+ "e5c8": 2395,
2398
+ "e5d1": 2396,
2399
+ "e5d2": 2397,
2400
+ "e5d3": 2398,
2401
+ "e5d4": 2399,
2402
+ "e5d5": 2400,
2403
+ "e5d6": 2401,
2404
+ "e5d7": 2402,
2405
+ "e5d8": 2403,
2406
+ "e5e1": 2404,
2407
+ "e5e2": 2405,
2408
+ "e5e3": 2406,
2409
+ "e5e4": 2407,
2410
+ "e5e6": 2408,
2411
+ "e5e7": 2409,
2412
+ "e5e8": 2410,
2413
+ "e5f1": 2411,
2414
+ "e5f2": 2412,
2415
+ "e5f3": 2413,
2416
+ "e5f4": 2414,
2417
+ "e5f5": 2415,
2418
+ "e5f6": 2416,
2419
+ "e5f7": 2417,
2420
+ "e5f8": 2418,
2421
+ "e5g1": 2419,
2422
+ "e5g2": 2420,
2423
+ "e5g3": 2421,
2424
+ "e5g4": 2422,
2425
+ "e5g5": 2423,
2426
+ "e5g6": 2424,
2427
+ "e5g7": 2425,
2428
+ "e5g8": 2426,
2429
+ "e5h1": 2427,
2430
+ "e5h2": 2428,
2431
+ "e5h3": 2429,
2432
+ "e5h4": 2430,
2433
+ "e5h5": 2431,
2434
+ "e5h6": 2432,
2435
+ "e5h7": 2433,
2436
+ "e5h8": 2434,
2437
+ "e6a1": 2435,
2438
+ "e6a2": 2436,
2439
+ "e6a3": 2437,
2440
+ "e6a4": 2438,
2441
+ "e6a5": 2439,
2442
+ "e6a6": 2440,
2443
+ "e6a7": 2441,
2444
+ "e6a8": 2442,
2445
+ "e6b1": 2443,
2446
+ "e6b2": 2444,
2447
+ "e6b3": 2445,
2448
+ "e6b4": 2446,
2449
+ "e6b5": 2447,
2450
+ "e6b6": 2448,
2451
+ "e6b7": 2449,
2452
+ "e6b8": 2450,
2453
+ "e6c1": 2451,
2454
+ "e6c2": 2452,
2455
+ "e6c3": 2453,
2456
+ "e6c4": 2454,
2457
+ "e6c5": 2455,
2458
+ "e6c6": 2456,
2459
+ "e6c7": 2457,
2460
+ "e6c8": 2458,
2461
+ "e6d1": 2459,
2462
+ "e6d2": 2460,
2463
+ "e6d3": 2461,
2464
+ "e6d4": 2462,
2465
+ "e6d5": 2463,
2466
+ "e6d6": 2464,
2467
+ "e6d7": 2465,
2468
+ "e6d8": 2466,
2469
+ "e6e1": 2467,
2470
+ "e6e2": 2468,
2471
+ "e6e3": 2469,
2472
+ "e6e4": 2470,
2473
+ "e6e5": 2471,
2474
+ "e6e7": 2472,
2475
+ "e6e8": 2473,
2476
+ "e6f1": 2474,
2477
+ "e6f2": 2475,
2478
+ "e6f3": 2476,
2479
+ "e6f4": 2477,
2480
+ "e6f5": 2478,
2481
+ "e6f6": 2479,
2482
+ "e6f7": 2480,
2483
+ "e6f8": 2481,
2484
+ "e6g1": 2482,
2485
+ "e6g2": 2483,
2486
+ "e6g3": 2484,
2487
+ "e6g4": 2485,
2488
+ "e6g5": 2486,
2489
+ "e6g6": 2487,
2490
+ "e6g7": 2488,
2491
+ "e6g8": 2489,
2492
+ "e6h1": 2490,
2493
+ "e6h2": 2491,
2494
+ "e6h3": 2492,
2495
+ "e6h4": 2493,
2496
+ "e6h5": 2494,
2497
+ "e6h6": 2495,
2498
+ "e6h7": 2496,
2499
+ "e6h8": 2497,
2500
+ "e7a1": 2498,
2501
+ "e7a2": 2499,
2502
+ "e7a3": 2500,
2503
+ "e7a4": 2501,
2504
+ "e7a5": 2502,
2505
+ "e7a6": 2503,
2506
+ "e7a7": 2504,
2507
+ "e7a8": 2505,
2508
+ "e7b1": 2506,
2509
+ "e7b2": 2507,
2510
+ "e7b3": 2508,
2511
+ "e7b4": 2509,
2512
+ "e7b5": 2510,
2513
+ "e7b6": 2511,
2514
+ "e7b7": 2512,
2515
+ "e7b8": 2513,
2516
+ "e7c1": 2514,
2517
+ "e7c2": 2515,
2518
+ "e7c3": 2516,
2519
+ "e7c4": 2517,
2520
+ "e7c5": 2518,
2521
+ "e7c6": 2519,
2522
+ "e7c7": 2520,
2523
+ "e7c8": 2521,
2524
+ "e7d1": 2522,
2525
+ "e7d2": 2523,
2526
+ "e7d3": 2524,
2527
+ "e7d4": 2525,
2528
+ "e7d5": 2526,
2529
+ "e7d6": 2527,
2530
+ "e7d7": 2528,
2531
+ "e7d8": 2529,
2532
+ "e7d8b": 2530,
2533
+ "e7d8n": 2531,
2534
+ "e7d8q": 2532,
2535
+ "e7d8r": 2533,
2536
+ "e7e1": 2534,
2537
+ "e7e2": 2535,
2538
+ "e7e3": 2536,
2539
+ "e7e4": 2537,
2540
+ "e7e5": 2538,
2541
+ "e7e6": 2539,
2542
+ "e7e8": 2540,
2543
+ "e7e8b": 2541,
2544
+ "e7e8n": 2542,
2545
+ "e7e8q": 2543,
2546
+ "e7e8r": 2544,
2547
+ "e7f1": 2545,
2548
+ "e7f2": 2546,
2549
+ "e7f3": 2547,
2550
+ "e7f4": 2548,
2551
+ "e7f5": 2549,
2552
+ "e7f6": 2550,
2553
+ "e7f7": 2551,
2554
+ "e7f8": 2552,
2555
+ "e7f8b": 2553,
2556
+ "e7f8n": 2554,
2557
+ "e7f8q": 2555,
2558
+ "e7f8r": 2556,
2559
+ "e7g1": 2557,
2560
+ "e7g2": 2558,
2561
+ "e7g3": 2559,
2562
+ "e7g4": 2560,
2563
+ "e7g5": 2561,
2564
+ "e7g6": 2562,
2565
+ "e7g7": 2563,
2566
+ "e7g8": 2564,
2567
+ "e7h1": 2565,
2568
+ "e7h2": 2566,
2569
+ "e7h3": 2567,
2570
+ "e7h4": 2568,
2571
+ "e7h5": 2569,
2572
+ "e7h6": 2570,
2573
+ "e7h7": 2571,
2574
+ "e7h8": 2572,
2575
+ "e8a1": 2573,
2576
+ "e8a2": 2574,
2577
+ "e8a3": 2575,
2578
+ "e8a4": 2576,
2579
+ "e8a5": 2577,
2580
+ "e8a6": 2578,
2581
+ "e8a7": 2579,
2582
+ "e8a8": 2580,
2583
+ "e8b1": 2581,
2584
+ "e8b2": 2582,
2585
+ "e8b3": 2583,
2586
+ "e8b4": 2584,
2587
+ "e8b5": 2585,
2588
+ "e8b6": 2586,
2589
+ "e8b7": 2587,
2590
+ "e8b8": 2588,
2591
+ "e8c1": 2589,
2592
+ "e8c2": 2590,
2593
+ "e8c3": 2591,
2594
+ "e8c4": 2592,
2595
+ "e8c5": 2593,
2596
+ "e8c6": 2594,
2597
+ "e8c7": 2595,
2598
+ "e8c8": 2596,
2599
+ "e8d1": 2597,
2600
+ "e8d2": 2598,
2601
+ "e8d3": 2599,
2602
+ "e8d4": 2600,
2603
+ "e8d5": 2601,
2604
+ "e8d6": 2602,
2605
+ "e8d7": 2603,
2606
+ "e8d8": 2604,
2607
+ "e8e1": 2605,
2608
+ "e8e2": 2606,
2609
+ "e8e3": 2607,
2610
+ "e8e4": 2608,
2611
+ "e8e5": 2609,
2612
+ "e8e6": 2610,
2613
+ "e8e7": 2611,
2614
+ "e8f1": 2612,
2615
+ "e8f2": 2613,
2616
+ "e8f3": 2614,
2617
+ "e8f4": 2615,
2618
+ "e8f5": 2616,
2619
+ "e8f6": 2617,
2620
+ "e8f7": 2618,
2621
+ "e8f8": 2619,
2622
+ "e8g1": 2620,
2623
+ "e8g2": 2621,
2624
+ "e8g3": 2622,
2625
+ "e8g4": 2623,
2626
+ "e8g5": 2624,
2627
+ "e8g6": 2625,
2628
+ "e8g7": 2626,
2629
+ "e8g8": 2627,
2630
+ "e8h1": 2628,
2631
+ "e8h2": 2629,
2632
+ "e8h3": 2630,
2633
+ "e8h4": 2631,
2634
+ "e8h5": 2632,
2635
+ "e8h6": 2633,
2636
+ "e8h7": 2634,
2637
+ "e8h8": 2635,
2638
+ "f1a1": 2636,
2639
+ "f1a2": 2637,
2640
+ "f1a3": 2638,
2641
+ "f1a4": 2639,
2642
+ "f1a5": 2640,
2643
+ "f1a6": 2641,
2644
+ "f1a7": 2642,
2645
+ "f1a8": 2643,
2646
+ "f1b1": 2644,
2647
+ "f1b2": 2645,
2648
+ "f1b3": 2646,
2649
+ "f1b4": 2647,
2650
+ "f1b5": 2648,
2651
+ "f1b6": 2649,
2652
+ "f1b7": 2650,
2653
+ "f1b8": 2651,
2654
+ "f1c1": 2652,
2655
+ "f1c2": 2653,
2656
+ "f1c3": 2654,
2657
+ "f1c4": 2655,
2658
+ "f1c5": 2656,
2659
+ "f1c6": 2657,
2660
+ "f1c7": 2658,
2661
+ "f1c8": 2659,
2662
+ "f1d1": 2660,
2663
+ "f1d2": 2661,
2664
+ "f1d3": 2662,
2665
+ "f1d4": 2663,
2666
+ "f1d5": 2664,
2667
+ "f1d6": 2665,
2668
+ "f1d7": 2666,
2669
+ "f1d8": 2667,
2670
+ "f1e1": 2668,
2671
+ "f1e2": 2669,
2672
+ "f1e3": 2670,
2673
+ "f1e4": 2671,
2674
+ "f1e5": 2672,
2675
+ "f1e6": 2673,
2676
+ "f1e7": 2674,
2677
+ "f1e8": 2675,
2678
+ "f1f2": 2676,
2679
+ "f1f3": 2677,
2680
+ "f1f4": 2678,
2681
+ "f1f5": 2679,
2682
+ "f1f6": 2680,
2683
+ "f1f7": 2681,
2684
+ "f1f8": 2682,
2685
+ "f1g1": 2683,
2686
+ "f1g2": 2684,
2687
+ "f1g3": 2685,
2688
+ "f1g4": 2686,
2689
+ "f1g5": 2687,
2690
+ "f1g6": 2688,
2691
+ "f1g7": 2689,
2692
+ "f1g8": 2690,
2693
+ "f1h1": 2691,
2694
+ "f1h2": 2692,
2695
+ "f1h3": 2693,
2696
+ "f1h4": 2694,
2697
+ "f1h5": 2695,
2698
+ "f1h6": 2696,
2699
+ "f1h7": 2697,
2700
+ "f1h8": 2698,
2701
+ "f2a1": 2699,
2702
+ "f2a2": 2700,
2703
+ "f2a3": 2701,
2704
+ "f2a4": 2702,
2705
+ "f2a5": 2703,
2706
+ "f2a6": 2704,
2707
+ "f2a7": 2705,
2708
+ "f2a8": 2706,
2709
+ "f2b1": 2707,
2710
+ "f2b2": 2708,
2711
+ "f2b3": 2709,
2712
+ "f2b4": 2710,
2713
+ "f2b5": 2711,
2714
+ "f2b6": 2712,
2715
+ "f2b7": 2713,
2716
+ "f2b8": 2714,
2717
+ "f2c1": 2715,
2718
+ "f2c2": 2716,
2719
+ "f2c3": 2717,
2720
+ "f2c4": 2718,
2721
+ "f2c5": 2719,
2722
+ "f2c6": 2720,
2723
+ "f2c7": 2721,
2724
+ "f2c8": 2722,
2725
+ "f2d1": 2723,
2726
+ "f2d2": 2724,
2727
+ "f2d3": 2725,
2728
+ "f2d4": 2726,
2729
+ "f2d5": 2727,
2730
+ "f2d6": 2728,
2731
+ "f2d7": 2729,
2732
+ "f2d8": 2730,
2733
+ "f2e1": 2731,
2734
+ "f2e1b": 2732,
2735
+ "f2e1n": 2733,
2736
+ "f2e1q": 2734,
2737
+ "f2e1r": 2735,
2738
+ "f2e2": 2736,
2739
+ "f2e3": 2737,
2740
+ "f2e4": 2738,
2741
+ "f2e5": 2739,
2742
+ "f2e6": 2740,
2743
+ "f2e7": 2741,
2744
+ "f2e8": 2742,
2745
+ "f2f1": 2743,
2746
+ "f2f1b": 2744,
2747
+ "f2f1n": 2745,
2748
+ "f2f1q": 2746,
2749
+ "f2f1r": 2747,
2750
+ "f2f3": 2748,
2751
+ "f2f4": 2749,
2752
+ "f2f5": 2750,
2753
+ "f2f6": 2751,
2754
+ "f2f7": 2752,
2755
+ "f2f8": 2753,
2756
+ "f2g1": 2754,
2757
+ "f2g1b": 2755,
2758
+ "f2g1n": 2756,
2759
+ "f2g1q": 2757,
2760
+ "f2g1r": 2758,
2761
+ "f2g2": 2759,
2762
+ "f2g3": 2760,
2763
+ "f2g4": 2761,
2764
+ "f2g5": 2762,
2765
+ "f2g6": 2763,
2766
+ "f2g7": 2764,
2767
+ "f2g8": 2765,
2768
+ "f2h1": 2766,
2769
+ "f2h2": 2767,
2770
+ "f2h3": 2768,
2771
+ "f2h4": 2769,
2772
+ "f2h5": 2770,
2773
+ "f2h6": 2771,
2774
+ "f2h7": 2772,
2775
+ "f2h8": 2773,
2776
+ "f3a1": 2774,
2777
+ "f3a2": 2775,
2778
+ "f3a3": 2776,
2779
+ "f3a4": 2777,
2780
+ "f3a5": 2778,
2781
+ "f3a6": 2779,
2782
+ "f3a7": 2780,
2783
+ "f3a8": 2781,
2784
+ "f3b1": 2782,
2785
+ "f3b2": 2783,
2786
+ "f3b3": 2784,
2787
+ "f3b4": 2785,
2788
+ "f3b5": 2786,
2789
+ "f3b6": 2787,
2790
+ "f3b7": 2788,
2791
+ "f3b8": 2789,
2792
+ "f3c1": 2790,
2793
+ "f3c2": 2791,
2794
+ "f3c3": 2792,
2795
+ "f3c4": 2793,
2796
+ "f3c5": 2794,
2797
+ "f3c6": 2795,
2798
+ "f3c7": 2796,
2799
+ "f3c8": 2797,
2800
+ "f3d1": 2798,
2801
+ "f3d2": 2799,
2802
+ "f3d3": 2800,
2803
+ "f3d4": 2801,
2804
+ "f3d5": 2802,
2805
+ "f3d6": 2803,
2806
+ "f3d7": 2804,
2807
+ "f3d8": 2805,
2808
+ "f3e1": 2806,
2809
+ "f3e2": 2807,
2810
+ "f3e3": 2808,
2811
+ "f3e4": 2809,
2812
+ "f3e5": 2810,
2813
+ "f3e6": 2811,
2814
+ "f3e7": 2812,
2815
+ "f3e8": 2813,
2816
+ "f3f1": 2814,
2817
+ "f3f2": 2815,
2818
+ "f3f4": 2816,
2819
+ "f3f5": 2817,
2820
+ "f3f6": 2818,
2821
+ "f3f7": 2819,
2822
+ "f3f8": 2820,
2823
+ "f3g1": 2821,
2824
+ "f3g2": 2822,
2825
+ "f3g3": 2823,
2826
+ "f3g4": 2824,
2827
+ "f3g5": 2825,
2828
+ "f3g6": 2826,
2829
+ "f3g7": 2827,
2830
+ "f3g8": 2828,
2831
+ "f3h1": 2829,
2832
+ "f3h2": 2830,
2833
+ "f3h3": 2831,
2834
+ "f3h4": 2832,
2835
+ "f3h5": 2833,
2836
+ "f3h6": 2834,
2837
+ "f3h7": 2835,
2838
+ "f3h8": 2836,
2839
+ "f4a1": 2837,
2840
+ "f4a2": 2838,
2841
+ "f4a3": 2839,
2842
+ "f4a4": 2840,
2843
+ "f4a5": 2841,
2844
+ "f4a6": 2842,
2845
+ "f4a7": 2843,
2846
+ "f4a8": 2844,
2847
+ "f4b1": 2845,
2848
+ "f4b2": 2846,
2849
+ "f4b3": 2847,
2850
+ "f4b4": 2848,
2851
+ "f4b5": 2849,
2852
+ "f4b6": 2850,
2853
+ "f4b7": 2851,
2854
+ "f4b8": 2852,
2855
+ "f4c1": 2853,
2856
+ "f4c2": 2854,
2857
+ "f4c3": 2855,
2858
+ "f4c4": 2856,
2859
+ "f4c5": 2857,
2860
+ "f4c6": 2858,
2861
+ "f4c7": 2859,
2862
+ "f4c8": 2860,
2863
+ "f4d1": 2861,
2864
+ "f4d2": 2862,
2865
+ "f4d3": 2863,
2866
+ "f4d4": 2864,
2867
+ "f4d5": 2865,
2868
+ "f4d6": 2866,
2869
+ "f4d7": 2867,
2870
+ "f4d8": 2868,
2871
+ "f4e1": 2869,
2872
+ "f4e2": 2870,
2873
+ "f4e3": 2871,
2874
+ "f4e4": 2872,
2875
+ "f4e5": 2873,
2876
+ "f4e6": 2874,
2877
+ "f4e7": 2875,
2878
+ "f4e8": 2876,
2879
+ "f4f1": 2877,
2880
+ "f4f2": 2878,
2881
+ "f4f3": 2879,
2882
+ "f4f5": 2880,
2883
+ "f4f6": 2881,
2884
+ "f4f7": 2882,
2885
+ "f4f8": 2883,
2886
+ "f4g1": 2884,
2887
+ "f4g2": 2885,
2888
+ "f4g3": 2886,
2889
+ "f4g4": 2887,
2890
+ "f4g5": 2888,
2891
+ "f4g6": 2889,
2892
+ "f4g7": 2890,
2893
+ "f4g8": 2891,
2894
+ "f4h1": 2892,
2895
+ "f4h2": 2893,
2896
+ "f4h3": 2894,
2897
+ "f4h4": 2895,
2898
+ "f4h5": 2896,
2899
+ "f4h6": 2897,
2900
+ "f4h7": 2898,
2901
+ "f4h8": 2899,
2902
+ "f5a1": 2900,
2903
+ "f5a2": 2901,
2904
+ "f5a3": 2902,
2905
+ "f5a4": 2903,
2906
+ "f5a5": 2904,
2907
+ "f5a6": 2905,
2908
+ "f5a7": 2906,
2909
+ "f5a8": 2907,
2910
+ "f5b1": 2908,
2911
+ "f5b2": 2909,
2912
+ "f5b3": 2910,
2913
+ "f5b4": 2911,
2914
+ "f5b5": 2912,
2915
+ "f5b6": 2913,
2916
+ "f5b7": 2914,
2917
+ "f5b8": 2915,
2918
+ "f5c1": 2916,
2919
+ "f5c2": 2917,
2920
+ "f5c3": 2918,
2921
+ "f5c4": 2919,
2922
+ "f5c5": 2920,
2923
+ "f5c6": 2921,
2924
+ "f5c7": 2922,
2925
+ "f5c8": 2923,
2926
+ "f5d1": 2924,
2927
+ "f5d2": 2925,
2928
+ "f5d3": 2926,
2929
+ "f5d4": 2927,
2930
+ "f5d5": 2928,
2931
+ "f5d6": 2929,
2932
+ "f5d7": 2930,
2933
+ "f5d8": 2931,
2934
+ "f5e1": 2932,
2935
+ "f5e2": 2933,
2936
+ "f5e3": 2934,
2937
+ "f5e4": 2935,
2938
+ "f5e5": 2936,
2939
+ "f5e6": 2937,
2940
+ "f5e7": 2938,
2941
+ "f5e8": 2939,
2942
+ "f5f1": 2940,
2943
+ "f5f2": 2941,
2944
+ "f5f3": 2942,
2945
+ "f5f4": 2943,
2946
+ "f5f6": 2944,
2947
+ "f5f7": 2945,
2948
+ "f5f8": 2946,
2949
+ "f5g1": 2947,
2950
+ "f5g2": 2948,
2951
+ "f5g3": 2949,
2952
+ "f5g4": 2950,
2953
+ "f5g5": 2951,
2954
+ "f5g6": 2952,
2955
+ "f5g7": 2953,
2956
+ "f5g8": 2954,
2957
+ "f5h1": 2955,
2958
+ "f5h2": 2956,
2959
+ "f5h3": 2957,
2960
+ "f5h4": 2958,
2961
+ "f5h5": 2959,
2962
+ "f5h6": 2960,
2963
+ "f5h7": 2961,
2964
+ "f5h8": 2962,
2965
+ "f6a1": 2963,
2966
+ "f6a2": 2964,
2967
+ "f6a3": 2965,
2968
+ "f6a4": 2966,
2969
+ "f6a5": 2967,
2970
+ "f6a6": 2968,
2971
+ "f6a7": 2969,
2972
+ "f6a8": 2970,
2973
+ "f6b1": 2971,
2974
+ "f6b2": 2972,
2975
+ "f6b3": 2973,
2976
+ "f6b4": 2974,
2977
+ "f6b5": 2975,
2978
+ "f6b6": 2976,
2979
+ "f6b7": 2977,
2980
+ "f6b8": 2978,
2981
+ "f6c1": 2979,
2982
+ "f6c2": 2980,
2983
+ "f6c3": 2981,
2984
+ "f6c4": 2982,
2985
+ "f6c5": 2983,
2986
+ "f6c6": 2984,
2987
+ "f6c7": 2985,
2988
+ "f6c8": 2986,
2989
+ "f6d1": 2987,
2990
+ "f6d2": 2988,
2991
+ "f6d3": 2989,
2992
+ "f6d4": 2990,
2993
+ "f6d5": 2991,
2994
+ "f6d6": 2992,
2995
+ "f6d7": 2993,
2996
+ "f6d8": 2994,
2997
+ "f6e1": 2995,
2998
+ "f6e2": 2996,
2999
+ "f6e3": 2997,
3000
+ "f6e4": 2998,
3001
+ "f6e5": 2999,
3002
+ "f6e6": 3000,
3003
+ "f6e7": 3001,
3004
+ "f6e8": 3002,
3005
+ "f6f1": 3003,
3006
+ "f6f2": 3004,
3007
+ "f6f3": 3005,
3008
+ "f6f4": 3006,
3009
+ "f6f5": 3007,
3010
+ "f6f7": 3008,
3011
+ "f6f8": 3009,
3012
+ "f6g1": 3010,
3013
+ "f6g2": 3011,
3014
+ "f6g3": 3012,
3015
+ "f6g4": 3013,
3016
+ "f6g5": 3014,
3017
+ "f6g6": 3015,
3018
+ "f6g7": 3016,
3019
+ "f6g8": 3017,
3020
+ "f6h1": 3018,
3021
+ "f6h2": 3019,
3022
+ "f6h3": 3020,
3023
+ "f6h4": 3021,
3024
+ "f6h5": 3022,
3025
+ "f6h6": 3023,
3026
+ "f6h7": 3024,
3027
+ "f6h8": 3025,
3028
+ "f7a1": 3026,
3029
+ "f7a2": 3027,
3030
+ "f7a3": 3028,
3031
+ "f7a4": 3029,
3032
+ "f7a5": 3030,
3033
+ "f7a6": 3031,
3034
+ "f7a7": 3032,
3035
+ "f7a8": 3033,
3036
+ "f7b1": 3034,
3037
+ "f7b2": 3035,
3038
+ "f7b3": 3036,
3039
+ "f7b4": 3037,
3040
+ "f7b5": 3038,
3041
+ "f7b6": 3039,
3042
+ "f7b7": 3040,
3043
+ "f7b8": 3041,
3044
+ "f7c1": 3042,
3045
+ "f7c2": 3043,
3046
+ "f7c3": 3044,
3047
+ "f7c4": 3045,
3048
+ "f7c5": 3046,
3049
+ "f7c6": 3047,
3050
+ "f7c7": 3048,
3051
+ "f7c8": 3049,
3052
+ "f7d1": 3050,
3053
+ "f7d2": 3051,
3054
+ "f7d3": 3052,
3055
+ "f7d4": 3053,
3056
+ "f7d5": 3054,
3057
+ "f7d6": 3055,
3058
+ "f7d7": 3056,
3059
+ "f7d8": 3057,
3060
+ "f7e1": 3058,
3061
+ "f7e2": 3059,
3062
+ "f7e3": 3060,
3063
+ "f7e4": 3061,
3064
+ "f7e5": 3062,
3065
+ "f7e6": 3063,
3066
+ "f7e7": 3064,
3067
+ "f7e8": 3065,
3068
+ "f7e8b": 3066,
3069
+ "f7e8n": 3067,
3070
+ "f7e8q": 3068,
3071
+ "f7e8r": 3069,
3072
+ "f7f1": 3070,
3073
+ "f7f2": 3071,
3074
+ "f7f3": 3072,
3075
+ "f7f4": 3073,
3076
+ "f7f5": 3074,
3077
+ "f7f6": 3075,
3078
+ "f7f8": 3076,
3079
+ "f7f8b": 3077,
3080
+ "f7f8n": 3078,
3081
+ "f7f8q": 3079,
3082
+ "f7f8r": 3080,
3083
+ "f7g1": 3081,
3084
+ "f7g2": 3082,
3085
+ "f7g3": 3083,
3086
+ "f7g4": 3084,
3087
+ "f7g5": 3085,
3088
+ "f7g6": 3086,
3089
+ "f7g7": 3087,
3090
+ "f7g8": 3088,
3091
+ "f7g8b": 3089,
3092
+ "f7g8n": 3090,
3093
+ "f7g8q": 3091,
3094
+ "f7g8r": 3092,
3095
+ "f7h1": 3093,
3096
+ "f7h2": 3094,
3097
+ "f7h3": 3095,
3098
+ "f7h4": 3096,
3099
+ "f7h5": 3097,
3100
+ "f7h6": 3098,
3101
+ "f7h7": 3099,
3102
+ "f7h8": 3100,
3103
+ "f8a1": 3101,
3104
+ "f8a2": 3102,
3105
+ "f8a3": 3103,
3106
+ "f8a4": 3104,
3107
+ "f8a5": 3105,
3108
+ "f8a6": 3106,
3109
+ "f8a7": 3107,
3110
+ "f8a8": 3108,
3111
+ "f8b1": 3109,
3112
+ "f8b2": 3110,
3113
+ "f8b3": 3111,
3114
+ "f8b4": 3112,
3115
+ "f8b5": 3113,
3116
+ "f8b6": 3114,
3117
+ "f8b7": 3115,
3118
+ "f8b8": 3116,
3119
+ "f8c1": 3117,
3120
+ "f8c2": 3118,
3121
+ "f8c3": 3119,
3122
+ "f8c4": 3120,
3123
+ "f8c5": 3121,
3124
+ "f8c6": 3122,
3125
+ "f8c7": 3123,
3126
+ "f8c8": 3124,
3127
+ "f8d1": 3125,
3128
+ "f8d2": 3126,
3129
+ "f8d3": 3127,
3130
+ "f8d4": 3128,
3131
+ "f8d5": 3129,
3132
+ "f8d6": 3130,
3133
+ "f8d7": 3131,
3134
+ "f8d8": 3132,
3135
+ "f8e1": 3133,
3136
+ "f8e2": 3134,
3137
+ "f8e3": 3135,
3138
+ "f8e4": 3136,
3139
+ "f8e5": 3137,
3140
+ "f8e6": 3138,
3141
+ "f8e7": 3139,
3142
+ "f8e8": 3140,
3143
+ "f8f1": 3141,
3144
+ "f8f2": 3142,
3145
+ "f8f3": 3143,
3146
+ "f8f4": 3144,
3147
+ "f8f5": 3145,
3148
+ "f8f6": 3146,
3149
+ "f8f7": 3147,
3150
+ "f8g1": 3148,
3151
+ "f8g2": 3149,
3152
+ "f8g3": 3150,
3153
+ "f8g4": 3151,
3154
+ "f8g5": 3152,
3155
+ "f8g6": 3153,
3156
+ "f8g7": 3154,
3157
+ "f8g8": 3155,
3158
+ "f8h1": 3156,
3159
+ "f8h2": 3157,
3160
+ "f8h3": 3158,
3161
+ "f8h4": 3159,
3162
+ "f8h5": 3160,
3163
+ "f8h6": 3161,
3164
+ "f8h7": 3162,
3165
+ "f8h8": 3163,
3166
+ "g1a1": 3164,
3167
+ "g1a2": 3165,
3168
+ "g1a3": 3166,
3169
+ "g1a4": 3167,
3170
+ "g1a5": 3168,
3171
+ "g1a6": 3169,
3172
+ "g1a7": 3170,
3173
+ "g1a8": 3171,
3174
+ "g1b1": 3172,
3175
+ "g1b2": 3173,
3176
+ "g1b3": 3174,
3177
+ "g1b4": 3175,
3178
+ "g1b5": 3176,
3179
+ "g1b6": 3177,
3180
+ "g1b7": 3178,
3181
+ "g1b8": 3179,
3182
+ "g1c1": 3180,
3183
+ "g1c2": 3181,
3184
+ "g1c3": 3182,
3185
+ "g1c4": 3183,
3186
+ "g1c5": 3184,
3187
+ "g1c6": 3185,
3188
+ "g1c7": 3186,
3189
+ "g1c8": 3187,
3190
+ "g1d1": 3188,
3191
+ "g1d2": 3189,
3192
+ "g1d3": 3190,
3193
+ "g1d4": 3191,
3194
+ "g1d5": 3192,
3195
+ "g1d6": 3193,
3196
+ "g1d7": 3194,
3197
+ "g1d8": 3195,
3198
+ "g1e1": 3196,
3199
+ "g1e2": 3197,
3200
+ "g1e3": 3198,
3201
+ "g1e4": 3199,
3202
+ "g1e5": 3200,
3203
+ "g1e6": 3201,
3204
+ "g1e7": 3202,
3205
+ "g1e8": 3203,
3206
+ "g1f1": 3204,
3207
+ "g1f2": 3205,
3208
+ "g1f3": 3206,
3209
+ "g1f4": 3207,
3210
+ "g1f5": 3208,
3211
+ "g1f6": 3209,
3212
+ "g1f7": 3210,
3213
+ "g1f8": 3211,
3214
+ "g1g2": 3212,
3215
+ "g1g3": 3213,
3216
+ "g1g4": 3214,
3217
+ "g1g5": 3215,
3218
+ "g1g6": 3216,
3219
+ "g1g7": 3217,
3220
+ "g1g8": 3218,
3221
+ "g1h1": 3219,
3222
+ "g1h2": 3220,
3223
+ "g1h3": 3221,
3224
+ "g1h4": 3222,
3225
+ "g1h5": 3223,
3226
+ "g1h6": 3224,
3227
+ "g1h7": 3225,
3228
+ "g1h8": 3226,
3229
+ "g2a1": 3227,
3230
+ "g2a2": 3228,
3231
+ "g2a3": 3229,
3232
+ "g2a4": 3230,
3233
+ "g2a5": 3231,
3234
+ "g2a6": 3232,
3235
+ "g2a7": 3233,
3236
+ "g2a8": 3234,
3237
+ "g2b1": 3235,
3238
+ "g2b2": 3236,
3239
+ "g2b3": 3237,
3240
+ "g2b4": 3238,
3241
+ "g2b5": 3239,
3242
+ "g2b6": 3240,
3243
+ "g2b7": 3241,
3244
+ "g2b8": 3242,
3245
+ "g2c1": 3243,
3246
+ "g2c2": 3244,
3247
+ "g2c3": 3245,
3248
+ "g2c4": 3246,
3249
+ "g2c5": 3247,
3250
+ "g2c6": 3248,
3251
+ "g2c7": 3249,
3252
+ "g2c8": 3250,
3253
+ "g2d1": 3251,
3254
+ "g2d2": 3252,
3255
+ "g2d3": 3253,
3256
+ "g2d4": 3254,
3257
+ "g2d5": 3255,
3258
+ "g2d6": 3256,
3259
+ "g2d7": 3257,
3260
+ "g2d8": 3258,
3261
+ "g2e1": 3259,
3262
+ "g2e2": 3260,
3263
+ "g2e3": 3261,
3264
+ "g2e4": 3262,
3265
+ "g2e5": 3263,
3266
+ "g2e6": 3264,
3267
+ "g2e7": 3265,
3268
+ "g2e8": 3266,
3269
+ "g2f1": 3267,
3270
+ "g2f1b": 3268,
3271
+ "g2f1n": 3269,
3272
+ "g2f1q": 3270,
3273
+ "g2f1r": 3271,
3274
+ "g2f2": 3272,
3275
+ "g2f3": 3273,
3276
+ "g2f4": 3274,
3277
+ "g2f5": 3275,
3278
+ "g2f6": 3276,
3279
+ "g2f7": 3277,
3280
+ "g2f8": 3278,
3281
+ "g2g1": 3279,
3282
+ "g2g1b": 3280,
3283
+ "g2g1n": 3281,
3284
+ "g2g1q": 3282,
3285
+ "g2g1r": 3283,
3286
+ "g2g3": 3284,
3287
+ "g2g4": 3285,
3288
+ "g2g5": 3286,
3289
+ "g2g6": 3287,
3290
+ "g2g7": 3288,
3291
+ "g2g8": 3289,
3292
+ "g2h1": 3290,
3293
+ "g2h1b": 3291,
3294
+ "g2h1n": 3292,
3295
+ "g2h1q": 3293,
3296
+ "g2h1r": 3294,
3297
+ "g2h2": 3295,
3298
+ "g2h3": 3296,
3299
+ "g2h4": 3297,
3300
+ "g2h5": 3298,
3301
+ "g2h6": 3299,
3302
+ "g2h7": 3300,
3303
+ "g2h8": 3301,
3304
+ "g3a1": 3302,
3305
+ "g3a2": 3303,
3306
+ "g3a3": 3304,
3307
+ "g3a4": 3305,
3308
+ "g3a5": 3306,
3309
+ "g3a6": 3307,
3310
+ "g3a7": 3308,
3311
+ "g3a8": 3309,
3312
+ "g3b1": 3310,
3313
+ "g3b2": 3311,
3314
+ "g3b3": 3312,
3315
+ "g3b4": 3313,
3316
+ "g3b5": 3314,
3317
+ "g3b6": 3315,
3318
+ "g3b7": 3316,
3319
+ "g3b8": 3317,
3320
+ "g3c1": 3318,
3321
+ "g3c2": 3319,
3322
+ "g3c3": 3320,
3323
+ "g3c4": 3321,
3324
+ "g3c5": 3322,
3325
+ "g3c6": 3323,
3326
+ "g3c7": 3324,
3327
+ "g3c8": 3325,
3328
+ "g3d1": 3326,
3329
+ "g3d2": 3327,
3330
+ "g3d3": 3328,
3331
+ "g3d4": 3329,
3332
+ "g3d5": 3330,
3333
+ "g3d6": 3331,
3334
+ "g3d7": 3332,
3335
+ "g3d8": 3333,
3336
+ "g3e1": 3334,
3337
+ "g3e2": 3335,
3338
+ "g3e3": 3336,
3339
+ "g3e4": 3337,
3340
+ "g3e5": 3338,
3341
+ "g3e6": 3339,
3342
+ "g3e7": 3340,
3343
+ "g3e8": 3341,
3344
+ "g3f1": 3342,
3345
+ "g3f2": 3343,
3346
+ "g3f3": 3344,
3347
+ "g3f4": 3345,
3348
+ "g3f5": 3346,
3349
+ "g3f6": 3347,
3350
+ "g3f7": 3348,
3351
+ "g3f8": 3349,
3352
+ "g3g1": 3350,
3353
+ "g3g2": 3351,
3354
+ "g3g4": 3352,
3355
+ "g3g5": 3353,
3356
+ "g3g6": 3354,
3357
+ "g3g7": 3355,
3358
+ "g3g8": 3356,
3359
+ "g3h1": 3357,
3360
+ "g3h2": 3358,
3361
+ "g3h3": 3359,
3362
+ "g3h4": 3360,
3363
+ "g3h5": 3361,
3364
+ "g3h6": 3362,
3365
+ "g3h7": 3363,
3366
+ "g3h8": 3364,
3367
+ "g4a1": 3365,
3368
+ "g4a2": 3366,
3369
+ "g4a3": 3367,
3370
+ "g4a4": 3368,
3371
+ "g4a5": 3369,
3372
+ "g4a6": 3370,
3373
+ "g4a7": 3371,
3374
+ "g4a8": 3372,
3375
+ "g4b1": 3373,
3376
+ "g4b2": 3374,
3377
+ "g4b3": 3375,
3378
+ "g4b4": 3376,
3379
+ "g4b5": 3377,
3380
+ "g4b6": 3378,
3381
+ "g4b7": 3379,
3382
+ "g4b8": 3380,
3383
+ "g4c1": 3381,
3384
+ "g4c2": 3382,
3385
+ "g4c3": 3383,
3386
+ "g4c4": 3384,
3387
+ "g4c5": 3385,
3388
+ "g4c6": 3386,
3389
+ "g4c7": 3387,
3390
+ "g4c8": 3388,
3391
+ "g4d1": 3389,
3392
+ "g4d2": 3390,
3393
+ "g4d3": 3391,
3394
+ "g4d4": 3392,
3395
+ "g4d5": 3393,
3396
+ "g4d6": 3394,
3397
+ "g4d7": 3395,
3398
+ "g4d8": 3396,
3399
+ "g4e1": 3397,
3400
+ "g4e2": 3398,
3401
+ "g4e3": 3399,
3402
+ "g4e4": 3400,
3403
+ "g4e5": 3401,
3404
+ "g4e6": 3402,
3405
+ "g4e7": 3403,
3406
+ "g4e8": 3404,
3407
+ "g4f1": 3405,
3408
+ "g4f2": 3406,
3409
+ "g4f3": 3407,
3410
+ "g4f4": 3408,
3411
+ "g4f5": 3409,
3412
+ "g4f6": 3410,
3413
+ "g4f7": 3411,
3414
+ "g4f8": 3412,
3415
+ "g4g1": 3413,
3416
+ "g4g2": 3414,
3417
+ "g4g3": 3415,
3418
+ "g4g5": 3416,
3419
+ "g4g6": 3417,
3420
+ "g4g7": 3418,
3421
+ "g4g8": 3419,
3422
+ "g4h1": 3420,
3423
+ "g4h2": 3421,
3424
+ "g4h3": 3422,
3425
+ "g4h4": 3423,
3426
+ "g4h5": 3424,
3427
+ "g4h6": 3425,
3428
+ "g4h7": 3426,
3429
+ "g4h8": 3427,
3430
+ "g5a1": 3428,
3431
+ "g5a2": 3429,
3432
+ "g5a3": 3430,
3433
+ "g5a4": 3431,
3434
+ "g5a5": 3432,
3435
+ "g5a6": 3433,
3436
+ "g5a7": 3434,
3437
+ "g5a8": 3435,
3438
+ "g5b1": 3436,
3439
+ "g5b2": 3437,
3440
+ "g5b3": 3438,
3441
+ "g5b4": 3439,
3442
+ "g5b5": 3440,
3443
+ "g5b6": 3441,
3444
+ "g5b7": 3442,
3445
+ "g5b8": 3443,
3446
+ "g5c1": 3444,
3447
+ "g5c2": 3445,
3448
+ "g5c3": 3446,
3449
+ "g5c4": 3447,
3450
+ "g5c5": 3448,
3451
+ "g5c6": 3449,
3452
+ "g5c7": 3450,
3453
+ "g5c8": 3451,
3454
+ "g5d1": 3452,
3455
+ "g5d2": 3453,
3456
+ "g5d3": 3454,
3457
+ "g5d4": 3455,
3458
+ "g5d5": 3456,
3459
+ "g5d6": 3457,
3460
+ "g5d7": 3458,
3461
+ "g5d8": 3459,
3462
+ "g5e1": 3460,
3463
+ "g5e2": 3461,
3464
+ "g5e3": 3462,
3465
+ "g5e4": 3463,
3466
+ "g5e5": 3464,
3467
+ "g5e6": 3465,
3468
+ "g5e7": 3466,
3469
+ "g5e8": 3467,
3470
+ "g5f1": 3468,
3471
+ "g5f2": 3469,
3472
+ "g5f3": 3470,
3473
+ "g5f4": 3471,
3474
+ "g5f5": 3472,
3475
+ "g5f6": 3473,
3476
+ "g5f7": 3474,
3477
+ "g5f8": 3475,
3478
+ "g5g1": 3476,
3479
+ "g5g2": 3477,
3480
+ "g5g3": 3478,
3481
+ "g5g4": 3479,
3482
+ "g5g6": 3480,
3483
+ "g5g7": 3481,
3484
+ "g5g8": 3482,
3485
+ "g5h1": 3483,
3486
+ "g5h2": 3484,
3487
+ "g5h3": 3485,
3488
+ "g5h4": 3486,
3489
+ "g5h5": 3487,
3490
+ "g5h6": 3488,
3491
+ "g5h7": 3489,
3492
+ "g5h8": 3490,
3493
+ "g6a1": 3491,
3494
+ "g6a2": 3492,
3495
+ "g6a3": 3493,
3496
+ "g6a4": 3494,
3497
+ "g6a5": 3495,
3498
+ "g6a6": 3496,
3499
+ "g6a7": 3497,
3500
+ "g6a8": 3498,
3501
+ "g6b1": 3499,
3502
+ "g6b2": 3500,
3503
+ "g6b3": 3501,
3504
+ "g6b4": 3502,
3505
+ "g6b5": 3503,
3506
+ "g6b6": 3504,
3507
+ "g6b7": 3505,
3508
+ "g6b8": 3506,
3509
+ "g6c1": 3507,
3510
+ "g6c2": 3508,
3511
+ "g6c3": 3509,
3512
+ "g6c4": 3510,
3513
+ "g6c5": 3511,
3514
+ "g6c6": 3512,
3515
+ "g6c7": 3513,
3516
+ "g6c8": 3514,
3517
+ "g6d1": 3515,
3518
+ "g6d2": 3516,
3519
+ "g6d3": 3517,
3520
+ "g6d4": 3518,
3521
+ "g6d5": 3519,
3522
+ "g6d6": 3520,
3523
+ "g6d7": 3521,
3524
+ "g6d8": 3522,
3525
+ "g6e1": 3523,
3526
+ "g6e2": 3524,
3527
+ "g6e3": 3525,
3528
+ "g6e4": 3526,
3529
+ "g6e5": 3527,
3530
+ "g6e6": 3528,
3531
+ "g6e7": 3529,
3532
+ "g6e8": 3530,
3533
+ "g6f1": 3531,
3534
+ "g6f2": 3532,
3535
+ "g6f3": 3533,
3536
+ "g6f4": 3534,
3537
+ "g6f5": 3535,
3538
+ "g6f6": 3536,
3539
+ "g6f7": 3537,
3540
+ "g6f8": 3538,
3541
+ "g6g1": 3539,
3542
+ "g6g2": 3540,
3543
+ "g6g3": 3541,
3544
+ "g6g4": 3542,
3545
+ "g6g5": 3543,
3546
+ "g6g7": 3544,
3547
+ "g6g8": 3545,
3548
+ "g6h1": 3546,
3549
+ "g6h2": 3547,
3550
+ "g6h3": 3548,
3551
+ "g6h4": 3549,
3552
+ "g6h5": 3550,
3553
+ "g6h6": 3551,
3554
+ "g6h7": 3552,
3555
+ "g6h8": 3553,
3556
+ "g7a1": 3554,
3557
+ "g7a2": 3555,
3558
+ "g7a3": 3556,
3559
+ "g7a4": 3557,
3560
+ "g7a5": 3558,
3561
+ "g7a6": 3559,
3562
+ "g7a7": 3560,
3563
+ "g7a8": 3561,
3564
+ "g7b1": 3562,
3565
+ "g7b2": 3563,
3566
+ "g7b3": 3564,
3567
+ "g7b4": 3565,
3568
+ "g7b5": 3566,
3569
+ "g7b6": 3567,
3570
+ "g7b7": 3568,
3571
+ "g7b8": 3569,
3572
+ "g7c1": 3570,
3573
+ "g7c2": 3571,
3574
+ "g7c3": 3572,
3575
+ "g7c4": 3573,
3576
+ "g7c5": 3574,
3577
+ "g7c6": 3575,
3578
+ "g7c7": 3576,
3579
+ "g7c8": 3577,
3580
+ "g7d1": 3578,
3581
+ "g7d2": 3579,
3582
+ "g7d3": 3580,
3583
+ "g7d4": 3581,
3584
+ "g7d5": 3582,
3585
+ "g7d6": 3583,
3586
+ "g7d7": 3584,
3587
+ "g7d8": 3585,
3588
+ "g7e1": 3586,
3589
+ "g7e2": 3587,
3590
+ "g7e3": 3588,
3591
+ "g7e4": 3589,
3592
+ "g7e5": 3590,
3593
+ "g7e6": 3591,
3594
+ "g7e7": 3592,
3595
+ "g7e8": 3593,
3596
+ "g7f1": 3594,
3597
+ "g7f2": 3595,
3598
+ "g7f3": 3596,
3599
+ "g7f4": 3597,
3600
+ "g7f5": 3598,
3601
+ "g7f6": 3599,
3602
+ "g7f7": 3600,
3603
+ "g7f8": 3601,
3604
+ "g7f8b": 3602,
3605
+ "g7f8n": 3603,
3606
+ "g7f8q": 3604,
3607
+ "g7f8r": 3605,
3608
+ "g7g1": 3606,
3609
+ "g7g2": 3607,
3610
+ "g7g3": 3608,
3611
+ "g7g4": 3609,
3612
+ "g7g5": 3610,
3613
+ "g7g6": 3611,
3614
+ "g7g8": 3612,
3615
+ "g7g8b": 3613,
3616
+ "g7g8n": 3614,
3617
+ "g7g8q": 3615,
3618
+ "g7g8r": 3616,
3619
+ "g7h1": 3617,
3620
+ "g7h2": 3618,
3621
+ "g7h3": 3619,
3622
+ "g7h4": 3620,
3623
+ "g7h5": 3621,
3624
+ "g7h6": 3622,
3625
+ "g7h7": 3623,
3626
+ "g7h8": 3624,
3627
+ "g7h8b": 3625,
3628
+ "g7h8n": 3626,
3629
+ "g7h8q": 3627,
3630
+ "g7h8r": 3628,
3631
+ "g8a1": 3629,
3632
+ "g8a2": 3630,
3633
+ "g8a3": 3631,
3634
+ "g8a4": 3632,
3635
+ "g8a5": 3633,
3636
+ "g8a6": 3634,
3637
+ "g8a7": 3635,
3638
+ "g8a8": 3636,
3639
+ "g8b1": 3637,
3640
+ "g8b2": 3638,
3641
+ "g8b3": 3639,
3642
+ "g8b4": 3640,
3643
+ "g8b5": 3641,
3644
+ "g8b6": 3642,
3645
+ "g8b7": 3643,
3646
+ "g8b8": 3644,
3647
+ "g8c1": 3645,
3648
+ "g8c2": 3646,
3649
+ "g8c3": 3647,
3650
+ "g8c4": 3648,
3651
+ "g8c5": 3649,
3652
+ "g8c6": 3650,
3653
+ "g8c7": 3651,
3654
+ "g8c8": 3652,
3655
+ "g8d1": 3653,
3656
+ "g8d2": 3654,
3657
+ "g8d3": 3655,
3658
+ "g8d4": 3656,
3659
+ "g8d5": 3657,
3660
+ "g8d6": 3658,
3661
+ "g8d7": 3659,
3662
+ "g8d8": 3660,
3663
+ "g8e1": 3661,
3664
+ "g8e2": 3662,
3665
+ "g8e3": 3663,
3666
+ "g8e4": 3664,
3667
+ "g8e5": 3665,
3668
+ "g8e6": 3666,
3669
+ "g8e7": 3667,
3670
+ "g8e8": 3668,
3671
+ "g8f1": 3669,
3672
+ "g8f2": 3670,
3673
+ "g8f3": 3671,
3674
+ "g8f4": 3672,
3675
+ "g8f5": 3673,
3676
+ "g8f6": 3674,
3677
+ "g8f7": 3675,
3678
+ "g8f8": 3676,
3679
+ "g8g1": 3677,
3680
+ "g8g2": 3678,
3681
+ "g8g3": 3679,
3682
+ "g8g4": 3680,
3683
+ "g8g5": 3681,
3684
+ "g8g6": 3682,
3685
+ "g8g7": 3683,
3686
+ "g8h1": 3684,
3687
+ "g8h2": 3685,
3688
+ "g8h3": 3686,
3689
+ "g8h4": 3687,
3690
+ "g8h5": 3688,
3691
+ "g8h6": 3689,
3692
+ "g8h7": 3690,
3693
+ "g8h8": 3691,
3694
+ "h1a1": 3692,
3695
+ "h1a2": 3693,
3696
+ "h1a3": 3694,
3697
+ "h1a4": 3695,
3698
+ "h1a5": 3696,
3699
+ "h1a6": 3697,
3700
+ "h1a7": 3698,
3701
+ "h1a8": 3699,
3702
+ "h1b1": 3700,
3703
+ "h1b2": 3701,
3704
+ "h1b3": 3702,
3705
+ "h1b4": 3703,
3706
+ "h1b5": 3704,
3707
+ "h1b6": 3705,
3708
+ "h1b7": 3706,
3709
+ "h1b8": 3707,
3710
+ "h1c1": 3708,
3711
+ "h1c2": 3709,
3712
+ "h1c3": 3710,
3713
+ "h1c4": 3711,
3714
+ "h1c5": 3712,
3715
+ "h1c6": 3713,
3716
+ "h1c7": 3714,
3717
+ "h1c8": 3715,
3718
+ "h1d1": 3716,
3719
+ "h1d2": 3717,
3720
+ "h1d3": 3718,
3721
+ "h1d4": 3719,
3722
+ "h1d5": 3720,
3723
+ "h1d6": 3721,
3724
+ "h1d7": 3722,
3725
+ "h1d8": 3723,
3726
+ "h1e1": 3724,
3727
+ "h1e2": 3725,
3728
+ "h1e3": 3726,
3729
+ "h1e4": 3727,
3730
+ "h1e5": 3728,
3731
+ "h1e6": 3729,
3732
+ "h1e7": 3730,
3733
+ "h1e8": 3731,
3734
+ "h1f1": 3732,
3735
+ "h1f2": 3733,
3736
+ "h1f3": 3734,
3737
+ "h1f4": 3735,
3738
+ "h1f5": 3736,
3739
+ "h1f6": 3737,
3740
+ "h1f7": 3738,
3741
+ "h1f8": 3739,
3742
+ "h1g1": 3740,
3743
+ "h1g2": 3741,
3744
+ "h1g3": 3742,
3745
+ "h1g4": 3743,
3746
+ "h1g5": 3744,
3747
+ "h1g6": 3745,
3748
+ "h1g7": 3746,
3749
+ "h1g8": 3747,
3750
+ "h1h2": 3748,
3751
+ "h1h3": 3749,
3752
+ "h1h4": 3750,
3753
+ "h1h5": 3751,
3754
+ "h1h6": 3752,
3755
+ "h1h7": 3753,
3756
+ "h1h8": 3754,
3757
+ "h2a1": 3755,
3758
+ "h2a2": 3756,
3759
+ "h2a3": 3757,
3760
+ "h2a4": 3758,
3761
+ "h2a5": 3759,
3762
+ "h2a6": 3760,
3763
+ "h2a7": 3761,
3764
+ "h2a8": 3762,
3765
+ "h2b1": 3763,
3766
+ "h2b2": 3764,
3767
+ "h2b3": 3765,
3768
+ "h2b4": 3766,
3769
+ "h2b5": 3767,
3770
+ "h2b6": 3768,
3771
+ "h2b7": 3769,
3772
+ "h2b8": 3770,
3773
+ "h2c1": 3771,
3774
+ "h2c2": 3772,
3775
+ "h2c3": 3773,
3776
+ "h2c4": 3774,
3777
+ "h2c5": 3775,
3778
+ "h2c6": 3776,
3779
+ "h2c7": 3777,
3780
+ "h2c8": 3778,
3781
+ "h2d1": 3779,
3782
+ "h2d2": 3780,
3783
+ "h2d3": 3781,
3784
+ "h2d4": 3782,
3785
+ "h2d5": 3783,
3786
+ "h2d6": 3784,
3787
+ "h2d7": 3785,
3788
+ "h2d8": 3786,
3789
+ "h2e1": 3787,
3790
+ "h2e2": 3788,
3791
+ "h2e3": 3789,
3792
+ "h2e4": 3790,
3793
+ "h2e5": 3791,
3794
+ "h2e6": 3792,
3795
+ "h2e7": 3793,
3796
+ "h2e8": 3794,
3797
+ "h2f1": 3795,
3798
+ "h2f2": 3796,
3799
+ "h2f3": 3797,
3800
+ "h2f4": 3798,
3801
+ "h2f5": 3799,
3802
+ "h2f6": 3800,
3803
+ "h2f7": 3801,
3804
+ "h2f8": 3802,
3805
+ "h2g1": 3803,
3806
+ "h2g1b": 3804,
3807
+ "h2g1n": 3805,
3808
+ "h2g1q": 3806,
3809
+ "h2g1r": 3807,
3810
+ "h2g2": 3808,
3811
+ "h2g3": 3809,
3812
+ "h2g4": 3810,
3813
+ "h2g5": 3811,
3814
+ "h2g6": 3812,
3815
+ "h2g7": 3813,
3816
+ "h2g8": 3814,
3817
+ "h2h1": 3815,
3818
+ "h2h1b": 3816,
3819
+ "h2h1n": 3817,
3820
+ "h2h1q": 3818,
3821
+ "h2h1r": 3819,
3822
+ "h2h3": 3820,
3823
+ "h2h4": 3821,
3824
+ "h2h5": 3822,
3825
+ "h2h6": 3823,
3826
+ "h2h7": 3824,
3827
+ "h2h8": 3825,
3828
+ "h3a1": 3826,
3829
+ "h3a2": 3827,
3830
+ "h3a3": 3828,
3831
+ "h3a4": 3829,
3832
+ "h3a5": 3830,
3833
+ "h3a6": 3831,
3834
+ "h3a7": 3832,
3835
+ "h3a8": 3833,
3836
+ "h3b1": 3834,
3837
+ "h3b2": 3835,
3838
+ "h3b3": 3836,
3839
+ "h3b4": 3837,
3840
+ "h3b5": 3838,
3841
+ "h3b6": 3839,
3842
+ "h3b7": 3840,
3843
+ "h3b8": 3841,
3844
+ "h3c1": 3842,
3845
+ "h3c2": 3843,
3846
+ "h3c3": 3844,
3847
+ "h3c4": 3845,
3848
+ "h3c5": 3846,
3849
+ "h3c6": 3847,
3850
+ "h3c7": 3848,
3851
+ "h3c8": 3849,
3852
+ "h3d1": 3850,
3853
+ "h3d2": 3851,
3854
+ "h3d3": 3852,
3855
+ "h3d4": 3853,
3856
+ "h3d5": 3854,
3857
+ "h3d6": 3855,
3858
+ "h3d7": 3856,
3859
+ "h3d8": 3857,
3860
+ "h3e1": 3858,
3861
+ "h3e2": 3859,
3862
+ "h3e3": 3860,
3863
+ "h3e4": 3861,
3864
+ "h3e5": 3862,
3865
+ "h3e6": 3863,
3866
+ "h3e7": 3864,
3867
+ "h3e8": 3865,
3868
+ "h3f1": 3866,
3869
+ "h3f2": 3867,
3870
+ "h3f3": 3868,
3871
+ "h3f4": 3869,
3872
+ "h3f5": 3870,
3873
+ "h3f6": 3871,
3874
+ "h3f7": 3872,
3875
+ "h3f8": 3873,
3876
+ "h3g1": 3874,
3877
+ "h3g2": 3875,
3878
+ "h3g3": 3876,
3879
+ "h3g4": 3877,
3880
+ "h3g5": 3878,
3881
+ "h3g6": 3879,
3882
+ "h3g7": 3880,
3883
+ "h3g8": 3881,
3884
+ "h3h1": 3882,
3885
+ "h3h2": 3883,
3886
+ "h3h4": 3884,
3887
+ "h3h5": 3885,
3888
+ "h3h6": 3886,
3889
+ "h3h7": 3887,
3890
+ "h3h8": 3888,
3891
+ "h4a1": 3889,
3892
+ "h4a2": 3890,
3893
+ "h4a3": 3891,
3894
+ "h4a4": 3892,
3895
+ "h4a5": 3893,
3896
+ "h4a6": 3894,
3897
+ "h4a7": 3895,
3898
+ "h4a8": 3896,
3899
+ "h4b1": 3897,
3900
+ "h4b2": 3898,
3901
+ "h4b3": 3899,
3902
+ "h4b4": 3900,
3903
+ "h4b5": 3901,
3904
+ "h4b6": 3902,
3905
+ "h4b7": 3903,
3906
+ "h4b8": 3904,
3907
+ "h4c1": 3905,
3908
+ "h4c2": 3906,
3909
+ "h4c3": 3907,
3910
+ "h4c4": 3908,
3911
+ "h4c5": 3909,
3912
+ "h4c6": 3910,
3913
+ "h4c7": 3911,
3914
+ "h4c8": 3912,
3915
+ "h4d1": 3913,
3916
+ "h4d2": 3914,
3917
+ "h4d3": 3915,
3918
+ "h4d4": 3916,
3919
+ "h4d5": 3917,
3920
+ "h4d6": 3918,
3921
+ "h4d7": 3919,
3922
+ "h4d8": 3920,
3923
+ "h4e1": 3921,
3924
+ "h4e2": 3922,
3925
+ "h4e3": 3923,
3926
+ "h4e4": 3924,
3927
+ "h4e5": 3925,
3928
+ "h4e6": 3926,
3929
+ "h4e7": 3927,
3930
+ "h4e8": 3928,
3931
+ "h4f1": 3929,
3932
+ "h4f2": 3930,
3933
+ "h4f3": 3931,
3934
+ "h4f4": 3932,
3935
+ "h4f5": 3933,
3936
+ "h4f6": 3934,
3937
+ "h4f7": 3935,
3938
+ "h4f8": 3936,
3939
+ "h4g1": 3937,
3940
+ "h4g2": 3938,
3941
+ "h4g3": 3939,
3942
+ "h4g4": 3940,
3943
+ "h4g5": 3941,
3944
+ "h4g6": 3942,
3945
+ "h4g7": 3943,
3946
+ "h4g8": 3944,
3947
+ "h4h1": 3945,
3948
+ "h4h2": 3946,
3949
+ "h4h3": 3947,
3950
+ "h4h5": 3948,
3951
+ "h4h6": 3949,
3952
+ "h4h7": 3950,
3953
+ "h4h8": 3951,
3954
+ "h5a1": 3952,
3955
+ "h5a2": 3953,
3956
+ "h5a3": 3954,
3957
+ "h5a4": 3955,
3958
+ "h5a5": 3956,
3959
+ "h5a6": 3957,
3960
+ "h5a7": 3958,
3961
+ "h5a8": 3959,
3962
+ "h5b1": 3960,
3963
+ "h5b2": 3961,
3964
+ "h5b3": 3962,
3965
+ "h5b4": 3963,
3966
+ "h5b5": 3964,
3967
+ "h5b6": 3965,
3968
+ "h5b7": 3966,
3969
+ "h5b8": 3967,
3970
+ "h5c1": 3968,
3971
+ "h5c2": 3969,
3972
+ "h5c3": 3970,
3973
+ "h5c4": 3971,
3974
+ "h5c5": 3972,
3975
+ "h5c6": 3973,
3976
+ "h5c7": 3974,
3977
+ "h5c8": 3975,
3978
+ "h5d1": 3976,
3979
+ "h5d2": 3977,
3980
+ "h5d3": 3978,
3981
+ "h5d4": 3979,
3982
+ "h5d5": 3980,
3983
+ "h5d6": 3981,
3984
+ "h5d7": 3982,
3985
+ "h5d8": 3983,
3986
+ "h5e1": 3984,
3987
+ "h5e2": 3985,
3988
+ "h5e3": 3986,
3989
+ "h5e4": 3987,
3990
+ "h5e5": 3988,
3991
+ "h5e6": 3989,
3992
+ "h5e7": 3990,
3993
+ "h5e8": 3991,
3994
+ "h5f1": 3992,
3995
+ "h5f2": 3993,
3996
+ "h5f3": 3994,
3997
+ "h5f4": 3995,
3998
+ "h5f5": 3996,
3999
+ "h5f6": 3997,
4000
+ "h5f7": 3998,
4001
+ "h5f8": 3999,
4002
+ "h5g1": 4000,
4003
+ "h5g2": 4001,
4004
+ "h5g3": 4002,
4005
+ "h5g4": 4003,
4006
+ "h5g5": 4004,
4007
+ "h5g6": 4005,
4008
+ "h5g7": 4006,
4009
+ "h5g8": 4007,
4010
+ "h5h1": 4008,
4011
+ "h5h2": 4009,
4012
+ "h5h3": 4010,
4013
+ "h5h4": 4011,
4014
+ "h5h6": 4012,
4015
+ "h5h7": 4013,
4016
+ "h5h8": 4014,
4017
+ "h6a1": 4015,
4018
+ "h6a2": 4016,
4019
+ "h6a3": 4017,
4020
+ "h6a4": 4018,
4021
+ "h6a5": 4019,
4022
+ "h6a6": 4020,
4023
+ "h6a7": 4021,
4024
+ "h6a8": 4022,
4025
+ "h6b1": 4023,
4026
+ "h6b2": 4024,
4027
+ "h6b3": 4025,
4028
+ "h6b4": 4026,
4029
+ "h6b5": 4027,
4030
+ "h6b6": 4028,
4031
+ "h6b7": 4029,
4032
+ "h6b8": 4030,
4033
+ "h6c1": 4031,
4034
+ "h6c2": 4032,
4035
+ "h6c3": 4033,
4036
+ "h6c4": 4034,
4037
+ "h6c5": 4035,
4038
+ "h6c6": 4036,
4039
+ "h6c7": 4037,
4040
+ "h6c8": 4038,
4041
+ "h6d1": 4039,
4042
+ "h6d2": 4040,
4043
+ "h6d3": 4041,
4044
+ "h6d4": 4042,
4045
+ "h6d5": 4043,
4046
+ "h6d6": 4044,
4047
+ "h6d7": 4045,
4048
+ "h6d8": 4046,
4049
+ "h6e1": 4047,
4050
+ "h6e2": 4048,
4051
+ "h6e3": 4049,
4052
+ "h6e4": 4050,
4053
+ "h6e5": 4051,
4054
+ "h6e6": 4052,
4055
+ "h6e7": 4053,
4056
+ "h6e8": 4054,
4057
+ "h6f1": 4055,
4058
+ "h6f2": 4056,
4059
+ "h6f3": 4057,
4060
+ "h6f4": 4058,
4061
+ "h6f5": 4059,
4062
+ "h6f6": 4060,
4063
+ "h6f7": 4061,
4064
+ "h6f8": 4062,
4065
+ "h6g1": 4063,
4066
+ "h6g2": 4064,
4067
+ "h6g3": 4065,
4068
+ "h6g4": 4066,
4069
+ "h6g5": 4067,
4070
+ "h6g6": 4068,
4071
+ "h6g7": 4069,
4072
+ "h6g8": 4070,
4073
+ "h6h1": 4071,
4074
+ "h6h2": 4072,
4075
+ "h6h3": 4073,
4076
+ "h6h4": 4074,
4077
+ "h6h5": 4075,
4078
+ "h6h7": 4076,
4079
+ "h6h8": 4077,
4080
+ "h7a1": 4078,
4081
+ "h7a2": 4079,
4082
+ "h7a3": 4080,
4083
+ "h7a4": 4081,
4084
+ "h7a5": 4082,
4085
+ "h7a6": 4083,
4086
+ "h7a7": 4084,
4087
+ "h7a8": 4085,
4088
+ "h7b1": 4086,
4089
+ "h7b2": 4087,
4090
+ "h7b3": 4088,
4091
+ "h7b4": 4089,
4092
+ "h7b5": 4090,
4093
+ "h7b6": 4091,
4094
+ "h7b7": 4092,
4095
+ "h7b8": 4093,
4096
+ "h7c1": 4094,
4097
+ "h7c2": 4095,
4098
+ "h7c3": 4096,
4099
+ "h7c4": 4097,
4100
+ "h7c5": 4098,
4101
+ "h7c6": 4099,
4102
+ "h7c7": 4100,
4103
+ "h7c8": 4101,
4104
+ "h7d1": 4102,
4105
+ "h7d2": 4103,
4106
+ "h7d3": 4104,
4107
+ "h7d4": 4105,
4108
+ "h7d5": 4106,
4109
+ "h7d6": 4107,
4110
+ "h7d7": 4108,
4111
+ "h7d8": 4109,
4112
+ "h7e1": 4110,
4113
+ "h7e2": 4111,
4114
+ "h7e3": 4112,
4115
+ "h7e4": 4113,
4116
+ "h7e5": 4114,
4117
+ "h7e6": 4115,
4118
+ "h7e7": 4116,
4119
+ "h7e8": 4117,
4120
+ "h7f1": 4118,
4121
+ "h7f2": 4119,
4122
+ "h7f3": 4120,
4123
+ "h7f4": 4121,
4124
+ "h7f5": 4122,
4125
+ "h7f6": 4123,
4126
+ "h7f7": 4124,
4127
+ "h7f8": 4125,
4128
+ "h7g1": 4126,
4129
+ "h7g2": 4127,
4130
+ "h7g3": 4128,
4131
+ "h7g4": 4129,
4132
+ "h7g5": 4130,
4133
+ "h7g6": 4131,
4134
+ "h7g7": 4132,
4135
+ "h7g8": 4133,
4136
+ "h7g8b": 4134,
4137
+ "h7g8n": 4135,
4138
+ "h7g8q": 4136,
4139
+ "h7g8r": 4137,
4140
+ "h7h1": 4138,
4141
+ "h7h2": 4139,
4142
+ "h7h3": 4140,
4143
+ "h7h4": 4141,
4144
+ "h7h5": 4142,
4145
+ "h7h6": 4143,
4146
+ "h7h8": 4144,
4147
+ "h7h8b": 4145,
4148
+ "h7h8n": 4146,
4149
+ "h7h8q": 4147,
4150
+ "h7h8r": 4148,
4151
+ "h8a1": 4149,
4152
+ "h8a2": 4150,
4153
+ "h8a3": 4151,
4154
+ "h8a4": 4152,
4155
+ "h8a5": 4153,
4156
+ "h8a6": 4154,
4157
+ "h8a7": 4155,
4158
+ "h8a8": 4156,
4159
+ "h8b1": 4157,
4160
+ "h8b2": 4158,
4161
+ "h8b3": 4159,
4162
+ "h8b4": 4160,
4163
+ "h8b5": 4161,
4164
+ "h8b6": 4162,
4165
+ "h8b7": 4163,
4166
+ "h8b8": 4164,
4167
+ "h8c1": 4165,
4168
+ "h8c2": 4166,
4169
+ "h8c3": 4167,
4170
+ "h8c4": 4168,
4171
+ "h8c5": 4169,
4172
+ "h8c6": 4170,
4173
+ "h8c7": 4171,
4174
+ "h8c8": 4172,
4175
+ "h8d1": 4173,
4176
+ "h8d2": 4174,
4177
+ "h8d3": 4175,
4178
+ "h8d4": 4176,
4179
+ "h8d5": 4177,
4180
+ "h8d6": 4178,
4181
+ "h8d7": 4179,
4182
+ "h8d8": 4180,
4183
+ "h8e1": 4181,
4184
+ "h8e2": 4182,
4185
+ "h8e3": 4183,
4186
+ "h8e4": 4184,
4187
+ "h8e5": 4185,
4188
+ "h8e6": 4186,
4189
+ "h8e7": 4187,
4190
+ "h8e8": 4188,
4191
+ "h8f1": 4189,
4192
+ "h8f2": 4190,
4193
+ "h8f3": 4191,
4194
+ "h8f4": 4192,
4195
+ "h8f5": 4193,
4196
+ "h8f6": 4194,
4197
+ "h8f7": 4195,
4198
+ "h8f8": 4196,
4199
+ "h8g1": 4197,
4200
+ "h8g2": 4198,
4201
+ "h8g3": 4199,
4202
+ "h8g4": 4200,
4203
+ "h8g5": 4201,
4204
+ "h8g6": 4202,
4205
+ "h8g7": 4203,
4206
+ "h8g8": 4204,
4207
+ "h8h1": 4205,
4208
+ "h8h2": 4206,
4209
+ "h8h3": 4207,
4210
+ "h8h4": 4208,
4211
+ "h8h5": 4209,
4212
+ "h8h6": 4210,
4213
+ "h8h7": 4211
4214
+ }