模型简介
模型特点
模型能力
使用案例
🚀 多标签命名实体识别模型
这是一个基于RURED2数据集微调的俄语命名实体识别(NER)模型,能够为单个标记输出多个可能的标签,在多种实体类型识别任务上表现良好。
🚀 快速开始
如果您有任何问题,可以在 https://t.me/nlp_party 联系我。
本模型会为单个标记输出多个可能的标签。您可以按照以下代码进行正确使用:
import torch
from torch import nn
from transformers import (AutoTokenizer, AutoModelForTokenClassification,
TrainingArguments, Trainer)
model_name = "denis-gordeev/rured2-ner-microsoft-mdeberta-v3-base"
model = AutoModelForTokenClassification.from_pretrained(
model_name).to('cuda')
tokenizer = AutoTokenizer.from_pretrained(model_name)
def predict(text:str, glue_tokens=False, output_together=True, glue_words=True):
sigmoid = nn.Sigmoid()
tokenized = tokenizer(text)
input_ids = torch.tensor(
[tokenized["input_ids"]], dtype=torch.long
).to("cuda")
token_type_ids = torch.tensor(
[tokenized["token_type_ids"]], dtype=torch.long
).to("cuda")
attention_mask = torch.tensor(
[tokenized["attention_mask"]], dtype=torch.long
).to("cuda")
preds = model(**{"input_ids": input_ids, "token_type_ids": token_type_ids, "attention_mask": attention_mask})
logits = sigmoid(preds.logits)
output_tokens = []
output_preds = []
id_to_label = {int(k): v for k, v in model.config.id2label.items()}
for i, token in enumerate(input_ids[0]):
if token > 3:
class_ids = (logits[0][i] > 0.5).nonzero()
if class_ids.shape[0] >= 1:
class_names = [id_to_label[int(cl)] for cl in class_ids]
else:
class_names = [id_to_label[int(logits[0][i].argmax())]]
converted_token = tokenizer.convert_ids_to_tokens([token])[0]
new_word_bool = converted_token.startswith("▁")
converted_token = converted_token.replace("▁", "")
if glue_words and not(new_word_bool) and output_tokens:
output_tokens[-1] += converted_token
else:
output_tokens.append(converted_token)
output_preds.append(class_names)
else:
class_names = []
if output_together:
return [[output_tokens[t_i], output_preds[t_i]] for t_i in range(len(output_tokens))]
return output_tokens, output_preds
📚 详细文档
模型概述
此模型是 microsoft/mdeberta-v3-base 在RURED2数据集上的微调版本。
评估结果
该模型在评估集上取得了以下结果:
指标 | 值 |
---|---|
Loss | 0.0096 |
F1 Micro | 0.5837 |
O F1 Micro | 0.6370 |
O Recall Micro | 0.9242 |
O Precision Micro | 0.4860 |
B-person F1 Micro | 0.9639 |
B-person Recall Micro | 0.9816 |
B-person Precision Micro | 0.9468 |
B-norp F1 Micro | 0.6190 |
B-norp Recall Micro | 0.8667 |
B-norp Precision Micro | 0.4815 |
B-commodity F1 Micro | 0.7553 |
B-commodity Recall Micro | 0.9470 |
B-commodity Precision Micro | 0.6281 |
B-date F1 Micro | 0.8386 |
B-date Recall Micro | 0.8471 |
B-date Precision Micro | 0.8304 |
I-date F1 Micro | 0.6419 |
I-date Recall Micro | 0.9492 |
I-date Precision Micro | 0.4849 |
B-country F1 Micro | 0.6152 |
B-country Recall Micro | 0.9765 |
B-country Precision Micro | 0.4490 |
B-economic Sector F1 Micro | 0.5576 |
B-economic Sector Recall Micro | 0.5897 |
B-economic Sector Precision Micro | 0.5287 |
I-economic Sector F1 Micro | 0.2517 |
I-economic Sector Recall Micro | 0.6667 |
I-economic Sector Precision Micro | 0.1551 |
B-news Source F1 Micro | 0.7988 |
B-news Source Recall Micro | 0.8327 |
B-news Source Precision Micro | 0.7677 |
B-profession F1 Micro | 0.8088 |
B-profession Recall Micro | 0.9464 |
B-profession Precision Micro | 0.7061 |
I-news Source F1 Micro | 0.4808 |
I-news Source Recall Micro | 0.8400 |
I-news Source Precision Micro | 0.3368 |
I-person F1 Micro | 0.3381 |
I-person Recall Micro | 0.996 |
I-person Precision Micro | 0.2036 |
B-organization F1 Micro | 0.8350 |
B-organization Recall Micro | 0.8993 |
B-organization Precision Micro | 0.7794 |
I-profession F1 Micro | 0.2462 |
I-profession Recall Micro | 0.8030 |
I-profession Precision Micro | 0.1454 |
B-event F1 Micro | 0.5658 |
B-event Recall Micro | 0.5436 |
B-event Precision Micro | 0.5899 |
B-city F1 Micro | 0.625 |
B-city Recall Micro | 0.8904 |
B-city Precision Micro | 0.4815 |
B-gpe F1 Micro | 0.6760 |
B-gpe Recall Micro | 0.9380 |
B-gpe Precision Micro | 0.5284 |
I-event F1 Micro | 0.2577 |
I-event Recall Micro | 0.3776 |
I-event Precision Micro | 0.1956 |
B-group F1 Micro | 0.6667 |
B-group Recall Micro | 0.75 |
B-group Precision Micro | 0.6 |
B-ordinal F1 Micro | 0.5306 |
B-ordinal Recall Micro | 0.8125 |
B-ordinal Precision Micro | 0.3939 |
B-product F1 Micro | 0.6683 |
B-product Recall Micro | 0.8232 |
B-product Precision Micro | 0.5625 |
I-organization F1 Micro | 0.3128 |
I-organization Recall Micro | 0.8425 |
I-organization Precision Micro | 0.1921 |
B-money F1 Micro | 0.8530 |
B-money Recall Micro | 0.8947 |
B-money Precision Micro | 0.8151 |
I-money F1 Micro | 0.6259 |
I-money Recall Micro | 0.9644 |
I-money Precision Micro | 0.4632 |
B-currency F1 Micro | 0.7441 |
B-currency Recall Micro | 0.9658 |
B-currency Precision Micro | 0.6052 |
B-percent F1 Micro | 0.8639 |
B-percent Recall Micro | 0.8902 |
B-percent Precision Micro | 0.8391 |
I-percent F1 Micro | 0.6995 |
I-percent Recall Micro | 0.9846 |
I-percent Precision Micro | 0.5424 |
I-group F1 Micro | 0.1844 |
I-group Recall Micro | 0.4836 |
I-group Precision Micro | 0.1139 |
B-cardinal F1 Micro | 0.6903 |
B-cardinal Recall Micro | 0.7358 |
B-cardinal Precision Micro | 0.65 |
B-law F1 Micro | 0.3704 |
B-law Recall Micro | 0.3571 |
B-law Precision Micro | 0.3846 |
I-law F1 Micro | 0.3246 |
I-law Recall Micro | 0.3936 |
I-law Precision Micro | 0.2761 |
B-fac F1 Micro | 0.6910 |
B-fac Recall Micro | 0.6910 |
B-fac Precision Micro | 0.6910 |
I-fac F1 Micro | 0.3007 |
I-fac Recall Micro | 0.7151 |
I-fac Precision Micro | 0.1904 |
B-age F1 Micro | 0.8649 |
B-age Recall Micro | 0.7619 |
B-age Precision Micro | 1.0 |
I-city F1 Micro | 0.1047 |
I-city Recall Micro | 0.6429 |
I-city Precision Micro | 0.0570 |
B-work Of Art F1 Micro | 0.3158 |
B-work Of Art Recall Micro | 0.375 |
B-work Of Art Precision Micro | 0.2727 |
I-work Of Art F1 Micro | 0.3721 |
I-work Of Art Recall Micro | 0.5 |
I-work Of Art Precision Micro | 0.2963 |
B-region F1 Micro | 0.8070 |
B-region Recall Micro | 0.7731 |
B-region Precision Micro | 0.8440 |
I-region F1 Micro | 0.2817 |
I-region Recall Micro | 0.8197 |
I-region Precision Micro | 0.1701 |
I-cardinal F1 Micro | 0.3851 |
I-cardinal Recall Micro | 0.4831 |
I-cardinal Precision Micro | 0.3202 |
I-currency F1 Micro | 0.0 |
I-currency Recall Micro | 0.0 |
I-currency Precision Micro | 0.0 |
B-quantity F1 Micro | 0.7311 |
B-quantity Recall Micro | 0.7311 |
B-quantity Precision Micro | 0.7311 |
I-quantity F1 Micro | 0.4889 |
I-quantity Recall Micro | 0.7989 |
I-quantity Precision Micro | 0.3522 |
B-crime F1 Micro | 0.3736 |
B-crime Recall Micro | 0.4048 |
B-crime Precision Micro | 0.3469 |
I-crime F1 Micro | 0.3245 |
I-crime Recall Micro | 0.5648 |
I-crime Precision Micro | 0.2276 |
B-trade Agreement F1 Micro | 0.7170 |
B-trade Agreement Recall Micro | 0.7037 |
B-trade Agreement Precision Micro | 0.7308 |
B-nationality F1 Micro | 0.0 |
B-nationality Recall Micro | 0.0 |
B-nationality Precision Micro | 0.0 |
B-family F1 Micro | 0.5 |
B-family Recall Micro | 0.8889 |
B-family Precision Micro | 0.3478 |
I-family F1 Micro | 0.0 |
I-family Recall Micro | 0.0 |
I-family Precision Micro | 0.0 |
I-product F1 Micro | 0.2021 |
I-product Recall Micro | 0.6824 |
I-product Precision Micro | 0.1186 |
B-time F1 Micro | 0.6538 |
B-time Recall Micro | 0.6296 |
B-time Precision Micro | 0.68 |
I-time F1 Micro | 0.6118 |
I-time Recall Micro | 0.9811 |
I-time Precision Micro | 0.4444 |
I-commodity F1 Micro | 0.0444 |
I-commodity Recall Micro | 0.1667 |
I-commodity Precision Micro | 0.0256 |
B-application F1 Micro | 0.0 |
B-application Recall Micro | 0.0 |
B-application Precision Micro | 0.0 |
I-application F1 Micro | 0.0 |
I-application Recall Micro | 0.0 |
I-application Precision Micro | 0.0 |
I-country F1 Micro | 0.1695 |
I-country Recall Micro | 0.7895 |
I-country Precision Micro | 0.0949 |
B-award F1 Micro | 0.5455 |
B-award Recall Micro | 0.4615 |
B-award Precision Micro | 0.6667 |
I-award F1 Micro | 0.4459 |
I-award Recall Micro | 0.8049 |
I-award Precision Micro | 0.3084 |
I-gpe F1 Micro | 0.3284 |
I-gpe Recall Micro | 0.9167 |
I-gpe Precision Micro | 0.2 |
B-location F1 Micro | 0.4885 |
B-location Recall Micro | 0.5161 |
B-location Precision Micro | 0.4638 |
I-location F1 Micro | 0.3189 |
I-location Recall Micro | 0.6316 |
I-location Precision Micro | 0.2133 |
I-ordinal F1 Micro | 0.5 |
I-ordinal Recall Micro | 0.4 |
I-ordinal Precision Micro | 0.6667 |
I-trade Agreement F1 Micro | 0.1163 |
I-trade Agreement Recall Micro | 0.3846 |
I-trade Agreement Precision Micro | 0.0685 |
B-religion F1 Micro | 0.0 |
B-religion Recall Micro | 0.0 |
B-religion Precision Micro | 0.0 |
I-age F1 Micro | 0.4324 |
I-age Recall Micro | 0.5714 |
I-age Precision Micro | 0.3478 |
B-investment Program F1 Micro | 0.0 |
B-investment Program Recall Micro | 0.0 |
B-investment Program Precision Micro | 0.0 |
I-investment Program F1 Micro | 0.0 |
I-investment Program Recall Micro | 0.0 |
I-investment Program Precision Micro | 0.0 |
B-borough F1 Micro | 0.7059 |
B-borough Recall Micro | 0.6667 |
B-borough Precision Micro | 0.75 |
B-price F1 Micro | 0.0 |
B-price Recall Micro | 0.0 |
B-price Precision Micro | 0.0 |
I-price F1 Micro | 0.0 |
I-price Recall Micro | 0.0 |
I-price Precision Micro | 0.0 |
B-character F1 Micro | 0.0 |
B-character Recall Micro | 0.0 |
B-character Precision Micro | 0.0 |
I-character F1 Micro | 0.0 |
I-character Recall Micro | 0.0 |
I-character Precision Micro | 0.0 |
B-website F1 Micro | 0.0 |
B-website Recall Micro | 0.0 |
B-website Precision Micro | 0.0 |
B-street F1 Micro | 0.4000 |
B-street Recall Micro | 0.4286 |
B-street Precision Micro | 0.375 |
I-street F1 Micro | 0.3256 |
I-street Recall Micro | 1.0 |
I-street Precision Micro | 0.1944 |
B-village F1 Micro | 0.6667 |
B-village Recall Micro | 0.7 |
B-village Precision Micro | 0.6364 |
I-village F1 Micro | 0.2222 |
I-village Recall Micro | 0.875 |
I-village Precision Micro | 0.1273 |
B-disease F1 Micro | 0.5965 |
B-disease Recall Micro | 0.7083 |
B-disease Precision Micro | 0.5152 |
I-disease F1 Micro | 0.3704 |
I-disease Recall Micro | 0.7812 |
I-disease Precision Micro | 0.2427 |
B-penalty F1 Micro | 0.1579 |
B-penalty Recall Micro | 0.1579 |
B-penalty Precision Micro | 0.1579 |
I-penalty F1 Micro | 0.1674 |
I-penalty Recall Micro | 0.3175 |
I-penalty Precision Micro | 0.1136 |
B-weapon F1 Micro | 0.6715 |
B-weapon Recall Micro | 0.7302 |
B-weapon Precision Micro | 0.6216 |
I-weapon F1 Micro | 0.2455 |
I-weapon Recall Micro | 0.5965 |
I-weapon Precision Micro | 0.1545 |
I-borough F1 Micro | 0.4091 |
I-borough Recall Micro | 0.6923 |
I-borough Precision Micro | 0.2903 |
B-vehicle F1 Micro | 0.6349 |
B-vehicle Recall Micro | 0.5882 |
B-vehicle Precision Micro | 0.6897 |
I-vehicle F1 Micro | 0.4174 |
I-vehicle Recall Micro | 0.7273 |
I-vehicle Precision Micro | 0.2927 |
B-language F1 Micro | 0.0 |
B-language Recall Micro | 0.0 |
B-language Precision Micro | 0.0 |
I-language F1 Micro | 0.0 |
I-language Recall Micro | 0.0 |
I-language Precision Micro | 0.0 |
B-house F1 Micro | 0.0 |
B-house Recall Micro | 0.0 |
B-house Precision Micro | 0.0 |
I-norp F1 Micro | 0.0 |
I-norp Recall Micro | 0.0 |
I-norp Precision Micro | 0.0 |
I-house F1 Micro | 0.0 |
I-house Recall Micro | 0.0 |
I-house Precision Micro | 0.0 |
I-website F1 Micro | 0.0 |
I-website Recall Micro | 0.0 |
I-website Precision Micro | 0.0 |
F1 Macro | 0.3969 |
Recall Macro | 0.5603 |
Precision Macro | 0.3447 |
🔧 技术细节
训练超参数
训练过程中使用了以下超参数:
- 学习率(learning_rate):1e-05
- 训练批次大小(train_batch_size):4
- 评估批次大小(eval_batch_size):4
- 随机种子(seed):42
- 优化器(optimizer):Adam,
betas=(0.9, 0.999)
,epsilon=1e-08
- 学习率调度器类型(lr_scheduler_type):线性
- 训练轮数(num_epochs):10000
- 混合精度训练(mixed_precision_training):Native AMP
训练结果
| 训练损失 | 轮数 | 步数 | 验证损失 | F1 Micro | O F1 Micro | O 召回率 Micro | O 精确率 Micro | B-person F1 Micro | B-person 召回率 Micro | B-person 精确率 Micro | B-norp F1 Micro | B-norp 召回率 Micro | B-norp 精确率 Micro | B-commodity F1 Micro | B-commodity 召回率 Micro | B-commodity 精确率 Micro | B-date F1 Micro | B-date 召回率 Micro | B-date 精确率 Micro | I-date F1 Micro | I-date 召回率 Micro | I-date 精确率 Micro | B-country F1 Micro | B-country 召回率 Micro | B-country 精确率 Micro | B-economic Sector F1 Micro | B-economic Sector 召回率 Micro | B-economic Sector 精确率 Micro | I-economic Sector F1 Micro | I-economic Sector 召回率 Micro | I-economic Sector 精确率 Micro | B-news Source F1 Micro | B-news Source 召回率 Micro | B-news Source 精确率 Micro | B-profession F1 Micro | B-profession 召回率 Micro | B-profession 精确率 Micro | I-news Source F1 Micro | I-news Source 召回率 Micro | I-news Source 精确率 Micro | I-person F1 Micro | I-person 召回率 Micro | I-person 精确率 Micro | B-organization F1 Micro | B-organization 召回率 Micro | B-organization 精确率 Micro | I-profession F1 Micro | I-profession 召回率 Micro | I-profession 精确率 Micro | B-event F1 Micro | B-event 召回率 Micro | B-event 精确率 Micro | B-city F1 Micro | B-city 召回率 Micro | B-city 精确率 Micro | B-gpe F1 Micro | B-gpe 召回率 Micro | B-gpe 精确率 Micro | I-event F1 Micro | I-event 召回率 Micro | I-event 精确率 Micro | B-group F1 Micro | B-group 召回率 Micro | B-group 精确率 Micro | B-ordinal F1 Micro | B-ordinal 召回率 Micro | B-ordinal 精确率 Micro | B-product F1 Micro | B-product 召回率 Micro | B-product 精确率 Micro | I-organization F1 Micro | I-organization 召回率 Micro | I-organization 精确率 Micro | B-money F1 Micro | B-money 召回率 Micro | B-money 精确率 Micro | I-money F1 Micro | I-money 召回率 Micro | I-money 精确率 Micro | B-currency F1 Micro | B-currency 召回率 Micro | B-currency 精确率 Micro | B-percent F1 Micro | B-percent 召回率 Micro | B-percent 精确率 Micro | I-percent F1 Micro | I-percent 召回率 Micro | I-percent 精确率 Micro | I-group F1 Micro | I-group 召回率 Micro | I-group 精确率 Micro | B-cardinal F1 Micro | B-cardinal 召回率 Micro | B-cardinal 精确率 Micro | B-law F1 Micro | B-law 召回率 Micro | B-law 精确率 Micro | I-law F1 Micro | I-law 召回率 Micro | I-law 精确率 Micro | B-fac F1 Micro | B-fac 召回率 Micro | B-fac 精确率 Micro | I-fac F1 Micro | I-fac 召回率 Micro | I-fac 精确率 Micro | B-age F1 Micro | B-age 召回率 Micro | B-age 精确率 Micro | I-city F1 Micro | I-city 召回率 Micro | I-city 精确率 Micro | B-work Of Art F1 Micro | B-work Of Art 召回率 Micro | B-work Of Art 精确率 Micro | I-work Of Art F1 Micro | I-work Of Art 召回率 Micro | I-work Of Art 精确率 Micro | B-region F1 Micro | B-region 召回率 Micro | B-region 精确率 Micro | I-region F1 Micro | I-region 召回率 Micro | I-region 精确率 Micro | I-cardinal F1 Micro | I-cardinal 召回率 Micro | I-cardinal 精确率 Micro | I-currency F1 Micro | I-currency 召回率 Micro | I-currency 精确率 Micro | B-quantity F1 Micro | B-quantity 召回率 Micro | B-quantity 精确率 Micro | I-quantity F1 Micro | I-quantity 召回率 Micro | I-quantity 精确率 Micro | B-crime F1 Micro | B-crime 召回率 Micro | B-crime 精确率 Micro | I-crime F1 Micro | I-crime 召回率 Micro | I-crime 精确率 Micro | B-trade Agreement F1 Micro | B-trade Agreement 召回率 Micro | B-trade Agreement 精确率 Micro | B-nationality F1 Micro | B-nationality 召回率 Micro | B-nationality 精确率 Micro | B-family F1 Micro | B-family 召回率 Micro | B-family 精确率 Micro | I-family F1 Micro | I-family 召回率 Micro | I-family 精确率 Micro | I-product F1 Micro | I-product 召回率 Micro | I-product 精确率 Micro | B-time F1 Micro | B-time 召回率 Micro | B-time 精确率 Micro | I-time F1 Micro | I-time 召回率 Micro | I-time 精确率 Micro | I-commodity F1 Micro | I-commodity 召回率 Micro | I-commodity 精确率 Micro | B-application F1 Micro | B-application 召回率 Micro | B-application 精确率 Micro | I-application F1 Micro | I-application 召回率 Micro | I-application 精确率 Micro | I-country F1 Micro | I-country 召回率 Micro | I-country 精确率 Micro | B-award F1 Micro | B-award 召回率 Micro | B-award 精确率 Micro | I-award F1 Micro | I-award 召回率 Micro | I-award 精确率 Micro | I-gpe F1 Micro | I-gpe 召回率 Micro | I-gpe 精确率 Micro | B-location F1 Micro | B-location 召回率 Micro | B-location 精确率 Micro | I-location F1 Micro | I-location 召回率 Micro | I-location 精确率 Micro | I-ordinal F1 Micro | I-ordinal 召回率 Micro | I-ordinal 精确率 Micro | I-trade Agreement F1 Micro | I-trade Agreement 召回率 Micro | I-trade Agreement 精确率 Micro | B-religion F1 Micro | B-religion 召回率 Micro | B-religion 精确率 Micro | I-age F1 Micro | I-age 召回率 Micro | I-age 精确率 Micro | B-investment Program F1 Micro | B-investment Program 召回率 Micro | B-investment Program 精确率 Micro | I-investment Program F1 Micro | I-investment Program 召回率 Micro | I-investment Program 精确率 Micro | B-borough F1 Micro | B-borough 召回率 Micro | B-borough 精确率 Micro | B-price F1 Micro | B-price 召回率 Micro | B-price 精确率 Micro | I-price F1 Micro | I-price 召回率 Micro | I-price 精确率 Micro | B-character F1 Micro | B-character 召回率 Micro | B-character 精确率 Micro | I-character F1 Micro | I-character 召回率 Micro | I-character 精确率 Micro | B-website F1 Micro | B-website 召回率 Micro | B-website 精确率 Micro | B-street F1 Micro | B-street 召回率 Micro | B-street 精确率 Micro | I-street F1 Micro | I-street 召回率 Micro | I-street 精确率 Micro | B-village F1 Micro | B-village 召回率 Micro | B-village 精确率 Micro | I-village F1 Micro | I-village 召回率 Micro | I-village 精确率 Micro | B-disease F1 Micro | B-disease 召回率 Micro | B-disease 精确率 Micro | I-disease F1 Micro | I-disease 召回率 Micro | I-disease 精确率 Micro | B-penalty F1 Micro | B-penalty 召回率 Micro | B-penalty 精确率 Micro | I-penalty F1 Micro | I-penalty 召回率 Micro | I-penalty 精确率 Micro | B-weapon F1 Micro | B-weapon 召回率 Micro | B-weapon 精确率 Micro | I-weapon F1 Micro | I-weapon 召回率 Micro | I-weapon 精确率 Micro | I-borough F1 Micro | I-borough 召回率 Micro | I-borough 精确率 Micro | B-vehicle F1 Micro | B-vehicle 召回率 Micro | B-vehicle 精确率 Micro | I-vehicle F1 Micro | I-vehicle 召回率 Micro | I-vehicle 精确率 Micro | B-language F1 Micro | B-language 召回率 Micro | B-language 精确率 Micro | I-language F1 Micro | I-language 召回率 Micro | I-language 精确率 Micro | B-house F1 Micro | B-house 召回率 Micro | B-house 精确率 Micro | I-norp F1 Micro | I-norp 召回率 Micro | I-norp 精确率 Micro | I-house F1 Micro | I-house 召回率 Micro | I-house 精确率 Micro | I-website F1 Micro | I-website 召回率 Micro | I-website 精确率 Micro | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |








