From 095ee2ffa857c3b8fab26cfdece2581561e87593 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Mon, 18 May 2026 22:01:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: BSC-LT/salamandra-7b-instruct-aina-hack Source: Original Platform --- .gitattributes | 41 ++++ README.md | 310 +++++++++++++++++++++++++++++++ config.json | 29 +++ configuration.json | 1 + generation_config.json | 12 ++ images/corpus_languages.png | Bin 0 -> 49909 bytes images/salamandra_header.png | 3 + model-00001-of-00004.safetensors | 3 + model-00002-of-00004.safetensors | 3 + model-00003-of-00004.safetensors | 3 + model-00004-of-00004.safetensors | 3 + model.safetensors.index.json | 298 +++++++++++++++++++++++++++++ special_tokens_map.json | 28 +++ tokenizer.json | 3 + tokenizer.model | 3 + tokenizer_config.json | 64 +++++++ 16 files changed, 804 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 config.json create mode 100644 configuration.json create mode 100644 generation_config.json create mode 100644 images/corpus_languages.png create mode 100644 images/salamandra_header.png create mode 100644 model-00001-of-00004.safetensors create mode 100644 model-00002-of-00004.safetensors create mode 100644 model-00003-of-00004.safetensors create mode 100644 model-00004-of-00004.safetensors create mode 100644 model.safetensors.index.json create mode 100644 special_tokens_map.json create mode 100644 tokenizer.json create mode 100644 tokenizer.model create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..54d20b8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,41 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +images/salamandra_header.png filter=lfs diff=lfs merge=lfs -text +model-00001-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +model-00002-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +model-00003-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +model-00004-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..5f0584f --- /dev/null +++ b/README.md @@ -0,0 +1,310 @@ +--- +license: apache-2.0 +library_name: transformers +pipeline_tag: text-generation +language: +- bg +- ca +- code +- cs +- cy +- da +- de +- el +- en +- es +- et +- eu +- fi +- fr +- ga +- gl +- hr +- hu +- it +- lt +- lv +- mt +- nl +- nn +- \no +- oc +- pl +- pt +- ro +- ru +- sh +- sk +- sl +- sr +- sv +- uk +base_model: +- BSC-LT/salamandra-7b +--- + +![](./images/salamandra_header.png) + +# Salamandra Model Card (Aina Hack) + +Salamandra is a highly multilingual model pre-trained from scratch that comes in three different +sizes — 2B, 7B and 40B parameters — with their respective base and instruction-tuned variants. +This model card corresponds to the 7B instructed version specific for [AinaHack](https://projecteaina.cat/ainahack/), +an event launched by Generalitat de Catalunya to create AI tools for the Catalan administration. + +To visit the model cards of other Salamandra versions, please refer to the [Model Index](#model-index). + +The entire Salamandra family is released under a permissive [Apache 2.0 license]((https://www.apache.org/licenses/LICENSE-2.0)). +Along with the open weights, all training scripts and configuration files are made publicly available in [this GitHub repository](https://github.com/langtech-bsc/salamandra). + +> [!WARNING] +> **DISCLAIMER:** This model is a first proof-of-concept designed to demonstrate the instruction-following capabilities of recently released base models. +> It has been optimized to engage in conversation but has *NOT* been aligned through RLHF to filter or avoid sensitive topics. +> As a result, it may generate harmful or inappropriate content. +> The team is actively working to enhance its performance through further instruction and alignment with RL techniques. + +--- + +## Model Details + +### Description + +Transformer-based decoder-only language model that has been pre-trained from scratch on 7.8 trillion tokens of highly curated data. +The pre-training corpus contains text in 35 European languages and code. + +### Hyperparameters + +The full list of hyperparameters for each model can be found [here](https://github.com/langtech-bsc/salamandra/tree/main/configs). + +### Architecture + +| | | +|-------------------------|:--------------| +| Total Parameters | 7,768,117,248 | +| Embedding Parameters | 1,048,576,000 | +| Layers | 32 | +| Hidden size | 4,096 | +| Attention heads | 32 | +| Context length | 8,192 | +| Vocabulary size | 256,000 | +| Precision | bfloat16 | +| Embedding type | RoPE | +| Activation Function | SwiGLU | +| Layer normalization | RMS Norm | +| Flash attention | ✅ | +| Grouped Query Attention | ✅ | +| Num. query groups | 8 | + +--- + +## Intended Use + +### Direct Use + +The models are intended for both research and commercial use in any of the languages included in the training data. +The base models are intended either for language generation or to be further fine-tuned for specific use-cases. +The instruction-tuned variants can be used as general-purpose assistants, as long as the user is fully aware of the model’s limitations. + +### Out-of-scope Use + +The model is not intended for malicious activities, such as harming others or violating human rights. +Any downstream application must comply with current laws and regulations. +Irresponsible usage in production environments without proper risk assessment and mitigation is also discouraged. + +--- + +## Hardware and Software + +### Training Framework + +Pre-training was conducted using NVIDIA’s [NeMo Framework](https://docs.nvidia.com/nemo-framework/index.html), +which leverages PyTorch Lightning for efficient model training in highly distributed settings. + +The instruction-tuned versions were produced with [FastChat](https://github.com/lm-sys/FastChat). + +### Compute Infrastructure + +All models were trained on [MareNostrum 5](https://www.bsc.es/ca/marenostrum/marenostrum-5), a pre-exascale EuroHPC supercomputer hosted and +operated by Barcelona Supercomputing Center. + +The accelerated partition is composed of 1,120 nodes with the following specifications: +- 4x Nvidia Hopper GPUs with 64 HBM2 memory +- 2x Intel Sapphire Rapids 8460Y+ at 2.3Ghz and 32c each (64 cores) +- 4x NDR200 (BW per node 800Gb/s) +- 512 GB of Main memory (DDR5) +- 460GB on NVMe storage + +|Model|Nodes|GPUs| +|:---:|:---:|:---:| +|2B|64|256| +|7B|128|512| +|40B|256 / 512|1,024 / 2,048| + +--- + +## How to use + +The instruction-following models use the commonly adopted ChatML template: + +```jinja +{%- if not date_string is defined %}{%- set date_string = "2024-09-30" %}{%- endif %}{%- set system_message = messages[0].content if messages[0].role == "system" else "system message. Today Date: "+ date_string -%}{%- if messages[0].role == "system" -%}{%- set messages = messages[1:] -%}{%- endif -%}{{ "<|im_start|>system\n" + system_message + "<|im_end|>\n" }}{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %} +``` +Where `system_message` is used to guide the model during generation and `date_string` can be set to allow the model to respond with the current date. + +The exact same chat template should be used for an enhanced conversational experience. +The easiest way to apply it is by using the tokenizer's built-in functions, as shown in the following snippet. + +```python +from datetime import datetime +from transformers import AutoTokenizer, AutoModelForCausalLM +import transformers +import torch + +model_id = "BSC-LT/salamandra-7b-instruct-aina-hack" + +text = "At what temperature does water boil?" + +tokenizer = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained( + model_id, + device_map="auto", + torch_dtype=torch.bfloat16 + ) + +message = [ { "role": "user", "content": text } ] +date_string = datetime.today().strftime('%Y-%m-%d') + +prompt = tokenizer.apply_chat_template( + message, + tokenize=False, + add_generation_prompt=True, + date_string=date_string +) + +inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt") +outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=200) + +print(tokenizer.decode(outputs[0], skip_special_tokens=True)) +``` +Using this template, each turn is preceded by a `<|im_start|>` delimiter and the role of the entity +(either `user`, for content supplied by the user, or `assistant` for LLM responses), and finished with the `<|im_end|>` token. + +--- + +## Data + +### Pretraining Data + +The training corpus consists of 2.4 trillion tokens, including 35 European languages and 92 programming languages. It amounts to a total of 33TB of pre-processed text. +Languages were sampled manually by giving x2 oversampling to Spain's co-official languages (Spanish, Catalan, Galician and Basque), code was undersampled by half, +and the rest of the languages were kept as is, resulting in the following distribution: + +![lang distrib](./images/corpus_languages.png) + +This highly multilingual corpus is predominantly composed of data from Colossal OSCAR, +which contributes a significant 66.06% of the total tokens. +Following this, Starcoder provides 11.91%, and Spanish Crawling adds 3.34%. +The next largest sources are French FR at 3.12% and Proof Pile at 1.98%. +Other notable contributions include Macocu, Pile of Law, and Eurlex, each contributing around 1.5% to 1.3%. +These major sources collectively form the bulk of the corpus, ensuring a rich and diverse dataset for training the language model. +The remaining 10% comes from smaller sources in various languages. + +The model was trained for 3 epochs, with two final rounds of 0.3B higher-quality tokens each, +meaning that the total number of tokens seen during pre-training amounts to roughly 7.8 trillion tokens. + +### Finetuning Data + +This instruction-tuned variant has been trained with a mixture of 276k English, Spanish, and Catalan multi-turn instructions gathered from open datasets: +| Dataset | ca | en | es | +|-----------------------|:------:|:------:|:------:| +| alpaca-cleaned | - | 50,000 | - | +| aya-dataset | - | 3,944 | 3,854 | +| CoQCat | 4,797 | - | - | +| databricks-dolly-15k | - | 15,011 | - | +| dolly-3k-ca | 3,232 | - | - | +| flores-instr | 1,994 | 1,994 | 3,988 | +| MentorCA | 7,122 | - | - | +| MentorES | - | - | 7,122 | +| no-robots | - | 9,499 | - | +| oasst-ca | 2,518 | - | - | +| oasst2 | 750 | 31,086 | 15,438 | +| open-orca | - | 50,000 | - | +| RagMultilingual | 16,043 | 14,997 | 11,263 | +| tower-blocks | - | 19,895 | 2,000 | +| **Total** | **36,456** | **196,426** | **43,665** | + +--- + +## Ethical Considerations and Limitations + +We examine the presence of undesired societal and cognitive biases present in this model using different benchmarks. For societal biases, +we test performance using the BBQ dataset (Parrish et al., 2022) in the original English and the Regard dataset (Sheng et al., 2019). +We report that while performance is high (accuracies around 0.8 depending on the social category) in disambiguated settings, +the model performs very poorly in ambiguous settings, which indicates the presence of societal biases that need to be further addressed in post-training phases. + +Our cognitive bias analysis focuses on positional effects in 0-shot settings, and majority class bias in few-shot settings. +For positional effects, we leverage the ARC Multiple Choice Question dataset (Clark et al., 2018). We observe significant, +but relatively weak primacy effects, whereby the model shows a preference for answers towards the beginning of the list of provided answers. +We measure effects of majority class effects in few-shot settings using SST-2 (Socher et al., 2013). We again detect significant effects, +with a small effect size. This suggests that the model is relatively robust against the examined cognitive biases. + + We highlight that our analyses of these biases are by no means exhaustive and are limited by the relative scarcity of adequate resources + in all languages present in the training data. We aim to gradually extend and expand our analyses in future work. + + These results can be expected from a model that has undergone only a preliminary instruction tuning. + These tests are performed in order to show the biases the model may contain. We urge developers to take + them into account and perform safety testing and tuning tailored to their specific applications of the model. + +--- + +## Additional information + +### Author +The Language Technologies Unit from Barcelona Supercomputing Center. + +### Contact +For further information, please send an email to . + +### Copyright +Copyright(c) 2024 by Language Technologies Unit, Barcelona Supercomputing Center. + +### Funding +This work has been promoted and financed by the Government of Catalonia through the [Aina Project](https://projecteaina.cat/). + +This work is funded by the _Ministerio para la Transformación Digital y de la Función Pública_ - Funded by EU – NextGenerationEU +within the framework of [ILENIA Project](https://proyectoilenia.es/) with reference 2022/TL22/00215337. + +### Acknowledgements + + +This project has benefited from the contributions of numerous teams and institutions, mainly through data contributions, knowledge transfer or technical support. + +In Catalonia, many institutions have been involved in the project. Our thanks to Òmnium Cultural, Parlament de Catalunya, Institut d'Estudis Aranesos, Racó Català, Vilaweb, ACN, Nació Digital, El món and Aquí Berguedà. + +At national level, we are especially grateful to our ILENIA project partners: CENID, HiTZ and CiTIUS for their participation. We also extend our genuine gratitude to the Spanish Senate and Congress, Fundación Dialnet, Fundación Elcano and the ‘Instituto Universitario de Sistemas Inteligentes y Aplicaciones Numéricas en Ingeniería (SIANI)’ of the University of Las Palmas de Gran Canaria. + +At the international level, we thank the Welsh government, DFKI, Occiglot project, especially Malte Ostendorff, and The Common Crawl Foundation, especially Pedro Ortiz, for their collaboration. We would also like to give special thanks to the NVIDIA team, with whom we have met regularly, specially to: Ignacio Sarasua, Adam Henryk Grzywaczewski, Oleg Sudakov, Sergio Perez, Miguel Martinez, Felipes Soares and Meriem Bendris. Their constant support has been especially appreciated throughout the entire process. + +Their valuable efforts have been instrumental in the development of this work. + +### Disclaimer +Be aware that the model may contain biases or other unintended distortions. +When third parties deploy systems or provide services based on this model, or use the model themselves, +they bear the responsibility for mitigating any associated risks and ensuring compliance with applicable regulations, +including those governing the use of Artificial Intelligence. + +The Barcelona Supercomputing Center, as the owner and creator of the model, shall not be held liable for any outcomes resulting from third-party use. + +### Citation + +Technical report and paper coming soon. + +### License +[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) + +## Model Index +|Model|Base|Instruct| +|:---:|:---:|:---:| +|2B| [Link](https://huggingface.co/BSC-LT/salamandra-2b) | [Link](https://huggingface.co/BSC-LT/salamandra-2b-instruct) | +|7B| [Link](https://huggingface.co/BSC-LT/salamandra-7b) | [Link](https://huggingface.co/BSC-LT/salamandra-7b-instruct) | +|40B| WiP | WiP | \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..bde5987 --- /dev/null +++ b/config.json @@ -0,0 +1,29 @@ +{ + "_name_or_path": "BSC-LT/salamandra-7b-instruct-aina-hack", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 1, + "eos_token_id": 2, + "hidden_act": "silu", + "hidden_size": 4096, + "initializer_range": 0.02, + "intermediate_size": 11008, + "max_position_embeddings": 8192, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 32, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-06, + "rope_scaling": null, + "rope_theta": 10000.0, + "tie_word_embeddings": false, + "torch_dtype": "bfloat16", + "transformers_version": "4.40.2", + "use_cache": true, + "vocab_size": 256000 +} diff --git a/configuration.json b/configuration.json new file mode 100644 index 0000000..bbeeda1 --- /dev/null +++ b/configuration.json @@ -0,0 +1 @@ +{"framework": "pytorch", "task": "text-generation", "allow_remote": true} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..b973954 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,12 @@ +{ + "_from_model_config": true, + "bos_token_id": 1, + "eos_token_id": [ + 2, + 5 + ], + "do_sample": true, + "temperature": 0.6, + "repetition_penalty": 1.2, + "transformers_version": "4.40.2" +} \ No newline at end of file diff --git a/images/corpus_languages.png b/images/corpus_languages.png new file mode 100644 index 0000000000000000000000000000000000000000..74e6863cc3332aa49390d92bf78c3e0771aaac94 GIT binary patch literal 49909 zcmeFY2T)UM)HaHua4f)4L^`Mx1*A9WD$+zidJRQ-M<9e25EW6Xbm?LO2uVP?gsKP# z2uMjNfdr(7UP1{3{*9jV-TD7}zx(|&-<`R0XYL+m683)cwzb~1p7pG?-#pgUpgYfY zo{EZ!PD}HF0TmT>GZocopTB5;JNE>zdcemSzx!H7e*stMUko9^O5mgvM24Pi9K>?22D|Fzv}Vs*(P`fC&S)hPH^|b-M{0W~;yhm{(q7TtJp< z60O~PpV233Le^ZkoYPcPJp3V>Hrq#yvWIxpy|YxYl07=QHhZa8l#f%M)2^|#DxI_` z4&N)lNuG3ijr4ElJcqy&Dk_77^$RDTno3_qPd=}a8iYlk_xrbN#nanNE_6C0OPl%F zmL^UC&z>2*pJhI2^ftKaaMfWoL?`#je=Xnh{~b~t zKD+yNUtOc2Q-8?_Hu4Z*Q;R;%Hxq4kBgv)*W-4ltJ4JaK8^-C)%HF2OD}U{8fO6<$ zzf~MA*9x90Fk?6p;2Jn>AxZ=8Rxzh&)Jjd$}5Djwg(SG%S}ovB-DeKEIByk3H{%$7F(sIHMoE~xNoEisj5t8PsGNX zEx7F5h82ErKn>xq3q!@R)C>$Og`vcA@%T+Ajol-0tWtO^c;>!_xBR#MnKzy2vND~c zxU@#ab%KN6*|Ja@d9sfN?drVCz_*z?5<4?d^sdh}g;MkS6F8O#TCo4`l@iIw^tP}_>KKZD> zD`29bRC_H~{NB8dH&)b!06)Mzbi43GXPbjlL7=QT8*^irrO~W}n2F)E7~uSPxg#@q zi&VG^KTmvRHP% zv8l#8=bD^N*DlOSM!zd9<2Zb^f_(Y_EJzDsSq;&L(nG|4^q^po))*2H{xiqk&#C zw0OmxpC>1%1Qr=3Z_#|uqFFyv-aJzhx6rue%Z|U|0yldr()81CX^2uJzzwW`t137hE_aY<70pwHgcN2jreH5o4tPIJ}|hlSkub zyuN!orX(5@qZDy8JsU?RHkIypckMJeL#`}sX%D-p$)zM#h4dPJAypS%cGGt@kCE?2 z2b#njJqg}=M%i^g7`UWPPG=sguDI-?+iTh@ZlO<4^3h1hT@hTu(f)X>-Q4%{(gX6> z3NY|sRx>ko%jiuqC1j(TUI}N6A*@N87urxYh1+Wptef-`;hniK>Z}UlMf*mh5@Mu* z@osJEc4QsOZF8Z8hH4}j#}rnit7W0bN2>98m}C!U#Lq4KFtpmQW^bX0Qd^m#C$o9? zlsBp{YiqGasK{v#b@?qLQ(8`2|D(~|rmfb;Pd#Vv1cj`~47!k|VD8?pt9(;eJU6PI z5@dQ6+c3fqb&GAI&0p}Vi!atlL*u-SOQKdxo9d=ktR+yxio>s}oF`JO3t`pCe0L^D zt7{%UsQXCw7lRVpQg6sFJSAi32Iw$7m%m2STVbpp1tG26h34%{;1bug36!TFrI(WC zeMcP{SqGEW4>vc3qp*^CPcibw7Ij@j(_szb^21yLw3hb)w^-kTuy?@ry8Xr+;V&w& zUqs<_h}SJZ*o)lGdPeT;##pW1MC}uUe>GI43ilvK4pk-{=*c%^YHd}Pn)=wZ)Me0l zH+O8esX8wqAjQ}}u1PlB$@|XHXbC;VNvCLa{3ps8Ef_q%?UW$jf*`>AITUU!@gIh=ztO#g(m4{SuE4FBf27vmQv#^OwRjb+*iooxRPrr+SF9B z3OI20_FHOB*5s=D*cWBIZ6@d~yqP=JJc#ZW>D~dmPR4B%;o5}1rOkRO{Gl=WD2;a< zxVNHEyQb@-^mr98K#*FsV6QirLR}Kgmm`^)QT(KkmM7xH0vfyI;;-s{Cmyo)P@``tv@d`pGchyr=aHDfoVX&+5taw! zq1`-VNo#`>d}9 zl9*qW60lyz-`QvV)JZkO>ZO7uFOH)bbh)s3X>sw!Qceyq2;Bsh9M{8sjtI#0g(W2@z6=FhT&P5Z2* zpHPPvPdk#TG_J!~Sxw7Kd4yL>7KD@8j8u!zO6 z(x8#Q^W~hw@he1qd3obTJk34AR;i>>-rKkm3l`mU9=La zOkEIzrdz>Jf(6dyNc!cbrJioYzMq9yy!a%bm0^Kcm~0U)uI&cj`EkzA6`}^1n=zIL zCG9o44WG-gnQRPxxj7l0p^J~XcR6+}z12{dAgtKZ6(v)(vbDpC=q>u(FYm(`$%U3Yl>K7as}BkyB2fWV)Vq@MvoB}h zls(3Bu8-^04`3cfUXBNm{efnZ_LC^r%a zRAm`6C+mn=mfv(^KRO(!4sNQK|A3nqlY|~895vJSvecxqQa$r52RWy{&-AD5bz*C_ zz9mKPQBYxY`=L%-Q+c%lg6AqPvqYb8IeLF5zgR)?hcma9lA}=P$De_FjKJX7X6et8 zu~N`?cZWej&-KTI`f=wTIdKxzUhx#T+s0R@TGnWVNmth|2c2bn6ME zd*SWO;%e+T)83CoXo+$cUhp$zS;EszpdqTYUq?#XAkyVmpV_cXVV$X{YJ>z)VM^!9 z{h~7FitujoBLj|4J(XZ-bM0%C(qG|>ewC2+Ao16=XwU7t0wh*=Beiu zMHmm}{v5yK!TmX}zs?ygzj&wCj^shrGGZZieG$FYQPb|Ye>|>lqUSNoy7<13rcFd$ z6T0jp_UIClfLvUL3Xd5$cB0k`=VmIA3^#;V*(}aX=kIV)@=S5tgT|bV6Q#_$n&)4P zSC`k<3I&EM=_B<-tzq0q7sE(#U@K*9>%Xo^_T9W$kTFP01M1Mc+0@eye^Y435)$wR z(_RBF*{ttG3N_j`#DQ3{&^pl_I)XEj%4U7FQc^2Yk|RexBl%bE9$XbQy$= zzfb$?V*ICaP;irs^q`#c#fIx*A!+?@I`|ZJ78tG0P_^_fAYFBQd4-9$m*(y<#o7qb z0$9<3t3J8#3cD_klmQX*5!Y&#P_=t@<61m;g-Ab9TMln^ivSzHC>it~LS~ooSR{!Z zsFc<0)+lNZ46K%f)d=p77wN9l|GgKp*s~eeAMN{b4dr6`v&_~kxmvl=7#kWC#mCfRXY0!P zkn%;)ErVW?amwK0qG6MpgUmWvZYh1*_pVXMg_^12t0aHIi$wZ&^R7Su)x7_@2;+{- zj2S>?sCQe}p!aJux8{Po<_j1O3yMrlEkNPj-}M@OwmcIHb$6t|(c5nrLI9M#2`w&= z0Zmt=qqss}0_{%@viIzfUvwT;mtS?!sB~gk zk?#120--4k{SSeOH66s}yD{ccZDPhd@d&S4f-u2`7nf!mHJnX+rr(2K z_)!HA3=H<3mou8SNh@o3DKo$1?Zt$f`(#T39j4s%o9rp778!*lBaI96C~yuPb*lGK z!3llwhvF#QUs74690XJ!%E)RREISSvNuiIY@Xf zQm1*_5CA=~D(oZu`vCHTlCCPXnHl{iCPqd}*Kru(i2w+4P|w$YTs%JBY|_O(%edS{ zs@$Z~9^-}x;pY8AkF@s&FgK6~^XyR|XYjYv8j{W|J@34(s1LX!P`M#^qF#7BQ+()# z{Yl4EHDdu$Hd?`skr*K%&Ce%yp5-uBwo;#b`#XTp4 z6dz*P1gDS7tv$Z(3n91<)zI1w|J_Lb@RhGmGih8dq#L(3DURp4rX&a%|J1YOWw@ub z%Az4z$S!Pt)qCsJDJmANCeg+Y zu3);+=NU=CflXFb3^xcIxGt+|q$*)AQLRzjxR~7qBZbor>{I-S_KZxw6 zFXb1gV1s)8)dwE1SWy(n8+@!oCN9d57eNi~l?PFI#&(VRV9Uxi8B?$p`GcX0Y{m)6W| zMAqG%pH+pTc@RwHFi~k!2P7sTSi<5G8}!rP3r6RkoWeOiXk7!WdHC*AJ%CBcJw^~?eWv+8`PsbuFGv!BJuoq#Fyrq)2 zvgoN@j&82HWmdU`Jh-rW1B9dmDOv%H$TTZ+s*2V!-v zu4hM#nt4{J$MBfOgjgv7^o74+s)%Ka$ZcmhPvc`w?85%{R8hoPYhP%6R+iMZgPUxf z%!2_2ZF6w_l@yg^=dNz9& z?>}STS{}=l^PQ_B)XNXp$0Xg1OT-_0nRal^F2HLQ01&5nX`h+u6XStu8wSOs#~6z# z$|}iR+a*~Ae{kFGS&dyS36^h(@wbu*TIp}WNaiEXwG*{_9D7zF0oGisAbdtYPXt2E z7#7LePJ6n(L@RzfWA1K(DJKZOQgRK^Cq+x0_S9Wvtt8kDj5^AHY>ar5I^E0sX+nKj zOg=OMwm1mKxWn_T2bn|pii>Vj_U04E6yU6baMd}6Mkq$&Uhul!Qy?VdbqCyq_JEi2 z&7ODdo}vKS=(a%E?DBS!sP}E}0wH6ogbDMUs@6bHYEyq$H*Cf~^b<4PUrk9>QSM+@ z@t+}^5&XUz7vQa0#PUG&X{{bdu<`{ z>?gMB$@cQ9F#GAx}p;w4b}2D>$s$?ES^PoP=>Hbv!Jh3UkvyW|3F!{iMzc< z-tu>%=cwj|L$iaB#EMsQT(*j1t@$HDVgu^8b+2CN>{~<)Y-4-!K3>?*?=u#JPKTeO z8eszCW)7KIVe|JP7qqntEMU4ZJka90563Gz)wg}Y+HL*9Or5nRTNKR>#~YkEZ)W~} z8SxZ`=Q-2zowa=3-MwQTGyDL3eBIzSmF;1s2eL`F{O}bvW5ojMdEZzxQa!u`9W3a- z{bXiH@IeR~#)Tgv(^||+CjdSt25V4J1qk<4r)BDxL|1!8 zO7H9-cXsZBZWT+W9X%#(Be?YXB1^qQ4&-Z1!~p--AkJg5POLWWJQrT3bW80V6-(aS z(A?rh$L)uoDJYqqc>e&Ap`beW=5+G)c{9LSVP5B`<%P{L$ADUUMEe0<$kY;LNbc zwWf;DvYQBk$&(%*BI)V((uU(gIBklzB&QFJ;wu?YC*8ltaxwjXElm_IsM?frUBQ@ngR} z0wdD%midKSm{(e$r$70by?X=pEG(LGx5@ZKI`*atw7i80fXmhFR`x$8d!s@O~9r7~)}WE(547 zX=nEa^!?v%vXDK$al;5$nZF}AmYZm(^937zjSA=Ky0DNZUuoHRSbKBZ#c9*#^~3V* zEiSzTBT%YCRTksY*ZUtMkJg8qIm`XcHFVYNNd#d>N4nG_v9Oi(^^m#ZQYT$PH0K5! zk~dA1nrSJ?*84J;$Hx7 zqAEB657LPe)~8$KMh&d~UR9b`^mhbK!)RnDvWi z%(R#BAj%-lU~dd&kq*Cw=F%(ch*viF=yu~p-ZTB$1ZUEq)@+Z+)?-Y6IK)|+5GU1$ zjhV*$TqtkB2#kK(J&vifHcqda_g5VqcFrtO#m^VF^ivz_d6QH*YcjBQwhbe8MN0N? zhK7#RrH2qg?f#3EZ$OeT+s+?1QQma4@;FOg_81Q!dmWdwtD>BHO?}O_nDLaCt6xMy zix5xlkrzc(&yFtu4(A$xI?xqmuJIVtEFtQz#2O1WmI><(sn$1O-BRzppOW`{*;GcB z6u5iKD3nFp1%WU%2Y>s~!6N{qNn~-qI%DhMZ@JjPXH!~D_9~eg+d;W*Oc&`vaNE1Vyf;IzE30Fl951{d^H`5%)4X^!27o<<-FX zNt9OS{!Y7j0Gck1iwiZ^S%Aoh-Z8K?ai;;-)?kTUt8jKKU*z3as|hW-iP)}MZUG>y4yo9ccoA_tyifPAnX@Sn7Hd zo!<%%B2_5{_`hRzwR4)pc#b}dQ)k*&FByrzH6w_N``mjm3!in(Oy^QT#=7aj9n zT7UBk1-^Lo7{g6_kHDS_E#14v}QML)UQkgs0-Q3eGFH6^e+y-}Wtg{f*8zwR08uIc!Dlj!YOQoG}@p3I= zW661pmNZ<4$^85YvRLapIgtFy0}aszhm(My@KKV;k+vS~4@n7i;z-KNUr}5IfZes7 z_j4aLj^b#PW_L@VK~)=aE@DPLc0bgqHhdzG_D~{oew!3fVj4p6FE5Er^b)8igGYz? z-DkeLMQ|?-+&32Xk2}-;W1wZBF9K1_kJTD|%yz}MXsA%Zja>?Er^@T-i19%34&u6} zbN27n*PHa6i4S|cNwUc1m<&O8ZYZa7U1Nz--^-)H5a^k^ha9@Hy5q3kgyqR}YjZEMr5If+#u zbKxh@VIpgqgw67+jO#1jY8Z>9r9@jQnF>W$+N^x7v0fpWsSI5YL(&Sxhm9xeBkV~V z_tl)8RF$rNCaX+jaPB{)^7vBL-MJB_E0Qw&p0-o5HlQI2+7XhTY8}V1veYKgzP+>g zZt9!7D6<=g7lcpMFOnuBLXEk~#SYXYaM;V?ijyFqn=f5!f>{eZ$I&9u65z| zFws(&N%#UM80QdA5Qt~n*?bEpCH9}Or@hjWwQSaD5f6#g=D8e}0FH%|{7`vC+r(M4$ zbEqYswHPwd$D+j(GK87mULmH1$+?701%D#Z>by1!x4OOuP(7FXu;k`#7@%8(t%q5Q9I0A2}X-JOijYdh?^=ySsGk^f{lv;lh zsDnC~j`bYjdbUytH*xWbKWJ}tIkx6XpFyb3vF5FsDY3GUM&MDec~P^09e2_)St-CC zi3EKiCL~;>^uh3F$vU*V(3!?L79Eeo+@M?qn-fvAk9;(8ughqpV=f}Om2nHaQbo%u zw7WEMFV2qiqr;{tT*dN9)$%W&n6`YhG|mc#SjO)LizfK_O+B;b0&g{HN~kBCg{J0k zm-6EjeoT{@r~6(Thu}?mbOxG_w_2LMXTYE30C=sxvx5|gDawr@QSzje#cj5|^soYb*H++ z>gqly(SX)>MDGte;78hg8poENhTT~n`2v~aQNk<|2@24hw{hDKXBOW49DFnSc<|l+ z85S_f{wR)X4ZtYJJwxI%^(3~I0JDp>|n4;M6IteKW5ky9O;9FuKikMa`tuBNd5WTPl01@?unq1QxS zM)WgT;1uSX)@csxt&JZB2OUCR0Nbk*zui_CUAo%2Kt4gUS(1q&B4;+~IuzRT^v^XX zsJN1*y4mtx%YxlThHJ1ChBlz0O&Btgh6|@7p@V`Nh|Cd8F{GJQd zwd&Z!$^*PXofJ0Y^zvr*o8($|=x@gR(~C0<$M+(&kL{2UYR$9LLB##eW3MgpZ$`kD zR^a$ZesOm=j^su4_itSuv3pc*uG{^s98VX^FQkSr-B$K@UQvFfkgVKa!enXf!t&2A zJ8iaylh(Ac@uX7Qly{-}skkuMda=f=@STUF$-Qa9-~^Ia!E*trVqcs$lk)y|8I;~{ zRwCeUNV^9(^iXlsVAyQ!yt>xv1b5n?ylT>nZcaWiN4EGd3(*l+HgFwsL_4dSRqVq) z>|Db0-%^^9v)__L+`1Q!0}kvPg<3@3{LULJpH7QXcLan&wmv^G*VFclPrlQ(p3+qL37gR zz)$lcHY;v*PX})}-%YGj807ISy7W!oS_hy)rvvqU9|#pk91ThlQZJ)$4;gtGK9+G*Ip$^%s@bbzi| zUdrUs>u@3mU$nh-8mAj70EAXhzqWJbC&T0SDVtjS=+fhwz>4FAj` z=$?eT-p-Pf76SyRU2L$B66i{b9FOq&{hV}$5TMRY4v6+bKl0l%eP76U7Fa7+^*fJf zKl!()LE)FciGAyViE2xAggtCj<#0rO{fuuv2r+(gHf@=H5JNHW2Rbxb3#=R`Q0_bpJhdqghXT7b1@NC|!qD zNly&_Pr8fdq3@9B+)jxZ;`@*#?YU;xK?kHfQh(kgz7NE4Cs;aw&z)2^7rnEf;{#nv z-;*8{Orbu>jJDr}F3;PRbwJY>Bw5z7v99GIk9oQo^6Uko*X_s7p9qh#lzI)~K&(ZGii3O&gmQ&`9@{ z3WcCQq+qD4i{m$|vBy(HrQ@1qfd$IMWV*fIZ==`3@)r`5$`^i@Dok1mouBlHunBcM560YbGG_u`-<|ycV-h3KwtWhmF_Amv9|(7E7&r;B?wjbL3+X|i~l&d_p>Qd@#Ts|=HQ{N-jNuj)# zRjPLB$ojT1Jl)Qhn5f6+UIa}Tl7{e$3q!!UKeWDh z@3;MFZ{h7AZq8MN8SjvcCS8)HGiS^iM;X9&*EuAZ2A)4c`nBGLm|B6&VFK|ho^q7|?{|QgR0BNpyY7IsX#J)A$&o6&x z8#xzLo=eB6#Ca!JK+4kQVQ}{KKReOVRf0)9LbG^~=c;(>l-A*#0C&XOGf5>Y%2QH!nb{-KutQ-^+~;pCkL^?qQY?ZM2?p1w)@uYU0_ zTm7GQ`EP@u-@G?fOW?K(rk|5ZulqjC%iT!KBqYeB!}$hhR@|%GHqixnyMe)QB480G zvdx&U-WT4UwyW*Gq@50)F_JPlo-i=MzT@0aT&Jn(80c}-OQ4O%wrge0Twz@L8GAx& zq2f6!dOx)Ei)!Zr%*1RgCNaZot=rVt|JAW|xc=rgF1k#6(>N!Iog5;a`!d=RUYP$8t;w%zR+G#L}}2x>8z?XeE|74TW%?2eK{0`IlKRO z?fWaiI|j9>rAr(Ber>}5J$s?ybM4u^e`(yu&KQfexnN_^K<*%&qfMS`3H@j1@@*a|?Ru&LY*~2~|2kvr-XJ3Lv-aSAkBH?`bu;ayE7ZliEExpXU+Gu9T%VPZT z4lfVI)9`&~waFAFzkjWyDNQ4P$A=bARer*6#_}#E-IFzF7y5H7VGD)614sVBA_MiC zT0olg0|513%Ky;*xQXIMNgCGl-msK{8E#om7KfI} zVsa4)TjPWn|0l1W<|$Mz!)lRUS~B$Ba2e$yO=LECI`}W$_8@-ka5&3${MK@O!RqIy`nQ*@tS@q=A`|UV zJ6lQo6!I=RJ^6eqjjS3ufuvl86_&3u;Vi!rw`Ft6;&)|6&Ns#gfZr+&HP1<0alf8x zu*8MC%5brn{R7;`s)Z8c9rC@-VfX4{{~dpOki|#0RWVGyc+C?n z)6}Hb0Z(L%{MG_}5ZOqXv3rDYZ^+)v0WyIk(nX|>ylX5(`8>1KRDvjp^{tSXV<$rQ z-`Bpy2HppXVyS>KfIx96vXkk6TgX%8pH*Sg_vY)gWJlZV2($n2iIzg|jJW6JfSiD} z$Pii+-5>BAKFHwG5=H}_Jjp>a=3mi2JzTtxwbq{YPA^?H!UM07`WVf#>V|R6Q zsVXKwOhsSTgrg!qdm|z5uWFnWtKfI}n2o~QOJ^KDT3 z#tF@v4);lBi>uKH;Cr5+38}^d*(_ut)$ve}tsN9bKCk(W^j z4H^GmxH(Mc$`YBj9^U1=#WK?I)fU_d%^SH2u+;qRHIO-~GM;|>1_fGP zQrNTI(4}L0i*IzSEb$RN}VCoPD2l|HbnZ`&cW!2v&P{Pmk@?QlyLptd^Xw zY>n(9MBgw<=ESkv767EPvwV4P_ih{`m({t3Qft;=#UuKEd_{nL0%EDViJt`_Dq}3= z%#IKp?g-*q(2x)NncZ~4sTpzJsW5Pet#DF|-y07Cyi~fZV^u#}PUg97)5s>*V*E$4 z*;=!ZQSdw^l|1(s7l$vRnvjTW=RR+Jg2`YmS}xm_TsBQeWrESf+@xjR;4sT#QYct6 zFmu(+GrAx*%)7Y;I}y}=XK58(xvvXRcSpi%_of2Q5`d1UCGzRHhWuXp&TlIL)gu8fj4(|roGsR-2@7XxcSES}5rGEh+6UqYLF!RUfY1(PLa3w;Hk4S)B2JTMCwk{akU?aWE<$SnJAls!xpP z8d76}&Bs5y`~{8b?@;i~0`0h{3~9u~HJ_|4fmtx~=X0 z@=IX4a%9_5^hBP$>4V?cOkJy*z%pLJ;d&v?JJGYD#kjyBd!E4DdTLtnz}*)Ph|V9Z zr#_snRF{O$eggzPBPCxSj))6Z=aq{KdQKgP;@Sy=U1Mfz`(f~DS;Omx*&f%-PfEjb zFDmLlP|7ABi6hH<*>ll<@P5*M7}EVF$z%7x>V$owTOrDic<7Of<~ByVYAeYDe}!^a zf)MWf>9wD;#ntEMcye&Is|y>iff8!qdN%Z*zDW9CG7A51HUJFk$@Dc5fz$F#DqF?^ z@g2dYVh?}7i_deBkC!JPft-+t)s3|u8H1RtkTvO==_G5-({K@imo>bf9PH|r@7s9;K_(EemONx$PeNgiq%HNQ0FH#ZJ~ zxKt9PNV4{eF8KZG>V1({Gw;`hZUC3W{a?FK_DZKGO)=MDo#4)))$b4iUfM{TOTd+Q z=~q=P@Hbb_a^v~eve&@%{q+VYfHPO_!WQTvt4?9mH;PL83h_HcYexD?nA!v2Qh$Bi znn7f@-V{CXELd$q{Q*Wv`G732S z(;v*`>$NX6SQFTz#6-xI+O9VYgiZm@VddsKN_%k+vD>jnu?=>^jc&-*EgZtd-|$Q z{L{I(tq0IQ+PV3|o#jUj#}1CG>C%Qcep;f}fA7)8$g+Y!>&+E(U|cynOB7MU`<3g} zapuZfGEY`dqwf=G7F#%QG1RQod38h4#Kc6Jt*p zWpMKhl}^oR|9d`Q-=rpAx^G?&k9Ma75H<-n75(dIY(#V= z%8IbziOl@LR!vtnw#>f%QnLRfuu=EmUqPp!cE%`8gftle+3coCoO_}p<2OfBr;DZs zr}b_sNsZ9R(1c&=+A;R7nVNsfZQbe^H(WUMGTo4$p5_v*vPnweV1%gu!M>Agl1-bi zgh+$rySZnc11l`ZZ92l#KViQ$J;1Y3S43c`IJ0kYe{?(dU+51#;~|L7 zuUd>UpHj9G)JfMJp3Ha|WnXjeg;MCS=jkhvQ7eJKF`bXKwe?WZ1gwJH<{Wv;{_Ys( z%vzG2Pw8QspfqSK9qjs@oiRR-`lCwp><4P!V22&kNR%iO`RGbK3m!;qkzXf-u*BZQoLHNK*OZusN}_Nlp&HQ zs=MKG12-LDIo5jGJAi_Z{jw7q1!YYp2_(By(=+dLJmO*h(D+Otw%q0)G4S@K1$o|h z=g}ER7A9oNXxV;RmWICU$gE52(Su!$tNG&JJQXj6TZ#|y38 z<>563$Ip`Q?BZuXp^LoNDzzAf_dL@AL92R!8B?rHOW0?oe=KcKfZw&&3jz#;*gZf| zdmbcc=Xm;rk88(Gtz%n8=$lOsIM?$yvWXK)Jch@f`e;HxEiJ8e$AKPe8@bnZXQ?i& z)yjR3rvCIl#yPP;NOFohCizfebvEKG?iqHeUVNcd*s7q)DzZ(l%=xH@ntSQu-!fK5D5(g-&$nNEj|~3U zL{_!ZrA^AaglgcWlv8%pz@GQD0MgOPxX4XcAf|f`L5SWT$(9JxyVY}LaEd`o)MjmG zV>XG`@3!oGT^QT$<+e$@&%-aKy&-Npza4@^^wCXM#}{QwzRuTr`noP3Rw;hb>;5%9 z)2I7%%b@F5!BA|D&mJ5UG>ykbJ@k+yHON>?QIjBv9-uCG$qa}#I;*doWGV$Q2_ zHn;v*z1R;bycPL7o6l5cYE<%vrcd42= z#n7mTw7t5(qL^GUVjuEZ_?=U9hoi>WjE1-#bQ*b4$N&dFR&CP}|=d{60d z{0aQDSkTe!)q)>Bb&hY9XMB_Xare2Nx>=#+IE{9**=kjux404!>^x1Fb)0#6A$r^kytR{n_(bnB>7Lv5Gm`FY+JN0!J zW{to4Lk!e267`Qu;?+A+@Y;C%HD=gnf9Y{_H|0gGM()DX{qO><9p^_MyaM7054UEr zo77(6ymbjzaqqwR9FQ)d#6UhE3*EtS6Lphn+7dZGv+9dv&sny~&o|Q#Z#YfKP6m*+ zI3@l;yow8SO?Fnw#wiXFyFVhnpP93uQ2VZBH*wP!+)^sIA^sv_SDGoN&~EZN`#VPu zgcQg^FG#EZ7mE?8Dj1(79(cobBm7}fw$H^Q9^&jiqIZ?h>-Nyo47VA9)5M4rKS`Vh_Ncx#_E9c+7p3EMtE#9{%@nA%wjO74-oQ%K1 zCz08yCuKTgk!u=IEACGj&UK-}zhLeD`(dunYiT47LxvEpD4P6#0BiJ)(?vkFf3?k4 zstFY4I)?WEDnUnmB=L@zHCQ`*XRx3b@jJ-`rm^!NYYv(CEbtaI00ch+JpYQFitcklh~=Xu^|@4ZK=#iz|p z%~v3*b1;Z+cP9Tv8(9m(OV^MN#`dC1-(r7nNlDtlKzUHKd$-)pbRYBAX@r(K`j!y9 zxbmW>)@-bd|3Z2ZvEJl?63TVz2iae{JLM3T;JfWuI^M0eFZ1Z}sb7D&w_>(`UoR$C0B}`&wR&S3lD8xp3!^XWLPRYS(Htlz8 z$}OuW{fBdDoIgiR^u;LQmJch1*V_-=M>#v4QqEF+R(fp$QN|=$ujL8FHe0#{q6b-` zJ9Fj2TRA2~QmPN{F*m1n3X=YNw*7c)G~P*EbUVD5rKBYSB_6iJ$xAWKuo*aLWLplu z(uCJ&r5HcX_3V^`ke(c6j{p)11{uSuZ~RSP{O?ORsR(q6t}fjCaz+p4J8dpE_>CKZ zms~AMBBvjnrHyExr@w4Zjo|-5CvKuQR}*0-!~}6 ziV0~BTK6-?cyd=^AGq7^>~G@I@V#Hz)MV!12MUL#-`PDVX5TO4X0C1@-(ZHS&)Hv( z=1(YMYBp!R3F=?H5)@QE&q{Cg_;OG7cGtD`58L=3$fxB07@mKjp8v#VnU^0vL6b4& z(uQ!3n_DkZ33RBX|FVroew*E2>M2RsMnQ7uUz$AlIal+4-o{^~aX(KdEpp84oI&VV z_bDNHPE*O2p^-_ep)2!5i!IJBFjue~~Lc@UpRPJB0S zn=|z{T&Ab)Vk=r)L|f-B8@x!R9=8o*%{LsRQMippgU_{nM!lhbe=;(6&Xi9S|2N-J zJ>(fhqXt?3*Ov#z$*dVJUaPv7Yy-(tuA^x$_=g!xn?8|V9_z+` z{0lc#0Xj3?LQeM?VWXgrJv@a4Jj+r~2>VOqHru^OU)oQ?v?L|-0B)&59P34Y+sb4} z^$$SlbKq>-2_f=u!GMU$aMEI@=Kyx4)I#-IiNHKO2BbB$;VU)JqXXMEoBbXK%JkSL zyIRB{x?o)M_ub?w+P4I)Z4=b@+N^d9_HxAmKTZPeU$(e?Sq4tGO9zZ1+Jt69$mRS- zU#aQ7x7x*B(_jhmL!Rk7fznsFwU6M%y%W=TQQ>MtblgR;7p6GNZyw!MRDS=?P{mBvY}#4UIWh=*SV={7HC>#4wHvpJXI$Go4eeCB;2~( z^xfI#mO(x_`vEGU1hEQs*@Ge?sVUXqe0!gA1Dn7ochtfzd-+%j?|t}5=U z*QO$q*3h0Dn6upCymApoP*~sh_=O7GZZk2T_j-700<(14p+0c*)`zCshoBWz^2~d% z^$bQxy#x$sVoUAQCRIPWo2E9@mf*K8NIGtyP`+(F5SSj8&`zCQB+F+_?cp)d3C#*O zi$5y=O#B)jmvw&8c^Me>i~eGxcEWuyXU}IpwK4YEsnd~f+I9T7+&WlsD-y>Ub?jK0 z`4N~1GJ}2ilNrewq*>%HTg5^M<-U{aM^PLa^17~Qfw2$=xh`JE>I-Xe!^0x3!|~qR zA0yn}Q2gpi3N&019D8T5?&GD6KYkXI);ILrcmAY+M5(*jzTI=L_a({m% zl^c*kiU4xoPghUU>OgWx@_EU@gQZ52Yl`!+OMd>+ zTZCi2F8n*h9%}dsq!VUHh7q+3^?1_xut`MGWBLK6onx%)&(K(eXi$pm`V}iIRW+iV z4AO#kanARo0d7R3!AgGI6635OF=OXbbK;x_BhypyJ67iAn}M;<_4@xg;cG&wtOVIc=C z_AR|8C-h-PamOkOd%^o9Y((cp4bpmnJSUOn`1dgL--QeEz9g~?zB+$^w71&mzJYt~ zQ{lYEX}L{GZUIt7AEpFbh34Db*Nf}lyf>f2#5V=1DuRR)=yQI9CT86t#x(zC5iZ5| zDz-00^TYad?K|+W0F`^GOqV0MZu7KXGiN1Fqv8m_QmyXTw3)AXtwk1nFG&_Ys0^FE zlImBGe#IccOb= z%I-QQC4c3a0}#4d;}o zQ&sfBaU(sxn)uoWAs$n0tiy5ZQJ!-2vYA@Ee7}14f>y-)ut~&o2TPGjx9cKD5KwA= z!CG6!zJBtc!Fx3+`HROfXiv6R-KPl^4zu+R9qy%B?Fa>*mU-SDs)Xi!VZw{pUQ~c6 zhl-<4;`<~oJC`b|&{q{4yclXnO#E(1!)urSkH7TUcPw^6%D}fY2IQ>#;sE7K1!klDTl^>_}!VzP9l|6s;uD?HQUa6pb1qr*E)$Q`8U_qU&pj{#1uz`4IhDGQje|6=c)y z$Er4r!&~n1wj#@(k)HJiW*Te4w}^kQNjXFS(>1mAB& zFKTdls+_)Hm*c1$SPAYsM?5V4qeGE1^gmR)3ZA7d`lhzBdX`*8w-t(?ezZxZM-YS5 z6WytT702Zgr7b$b#%nw$&|n)q``2u0i*axB?Fte*1c(i}Jx1KF=c$tt?9M8W)?S_S zeQ!2t?`N#1?pGkig$ocfhc@5Mzng(h&3PIEdr>sL-7H?7QESV<`Bmi zEV)LIXv5yGZ6thTDQhyP2&4Soi>m|X(0s00slXY%!G`@0s1m?Xsb)e=^Z}l;xblGV zlVdZKFrO6u6D2SPN9*2kdT+Y6JNEvbubk%^Sw<*vJf@XJ7>se<1S>!7BgCmq%ut_P zZ7}gXp>W2(4zIp`@~gQjN%Hp-FXuPx1$AepQ7$%AYo7--pPqZxdjT)~Ho1%6-(1~7 zrt_*{=4zfS&ePjV4tY3!yc2_0R_Q8d{nqB+`vl@2j>0e8?2`1*_!YN`af>>Aph%3| zM6_&CU|q$%zJJ!uI@*xRwmpP_(}qHabRjN{Y=mjKS=r3<0e4K9QZ*y4*U$SLio{Kg zPixA_(eu;Ox!*P$#Z|nxmDRlWLkCIMpgv@G(-LlwV~W_4t?!xQf>8Y#k?QXZ>A4Tkjn5w|fTM3GA%vNr<=tYJz+@fmFn(iR1ST&|15@qau+irE3P->Is zblWWYB7F_n^uPyxVJjQy`{7;*HxT>Cse3CY518;KHx>$CxjFp+*Ij&+$KZ9Lt7av< zuTJ=m8HrPX{`Y&UU_sy`zY!DS*4bO6AX34sx=do8NXEH5$+`1a*xQknxf0Zxno;N2)~cxO<4(qz{!DuTD zX{z=U37g!{ETdPUUf**v?=`F?vAl4fd(ZWm-dl~`9Ua$G;poi;{su2IpvkUnaEQLI z;kg?W-&lyPXqQ(YLBhHN@3h1=>16Ei7Eo_@E~RX*W(6)(9}yjPM=!um7(4N7s=TtY z%S>w8(s&$b{(W?r^t|?nhTW`Jq~6hym!G}N(5NWOK;^^YrQbsiuBTVMKmO=@ zeH^=Gyi_lYk-RT~9+*LouZu`%6WZAbCN5X^+o9ZjstB>rcTs0Tf`yak=tjXM!t@+m z(iST$h)?vrTluZL#wo|1{@%l|uBfoEA+BxS_JRJA(oPX;9*L5uEuO<+cLsniX_)S6 zgwp#pF$UJXy@W4ZR5Rv=yuS?VTvk6NobtLW>k0gFSIPKJQzINju7GRl$;5K6Bw4dD z(9I0p&S%pjJrlZtc5&6j0(R%1rRAEIQQ{pfem8|^O^+2nsTQR?PZarJLy55aRr?+0 z395_{P;aCxh}7fuZoAUlgGG538?{Qwut;cJ!%%oxI6U)cKHJA}#N)c5W5<`}^~1GT zz8bydp3-Q_EUA~ursx6>i>cFKhd{Q?k6I6DbLuwW)qt30>*h>nIUD^|)Sw(&-+A^a z+*Sa7-hzBp>mWaJwj@#5K3x!zcq5ECSXeA2_@jVo4BInIEAq6`%v9*ci$(q@*Yri4x~p@Tfp1CSCUug* z%u$~f74p->n;PezG&cP=P6ZIwk%=bli;3(7-|dlSe<^Ec7q|xB372RSk&@HPhHZ%a zst+!dV{f32rA+!woQ8t9X1qKNgj=fHZtM^w>Lq*EBkje$J8K}yg@#O?<yMiXIJZ zzY-Sxh=%j3r!}>KcIzbOGzGHwdd@h7OX2>=5sT<2Zl)?gVPT}V?CDpX<%8S{AWe5A z6*@g+h}@Cqc}QH1&l8yOXKb*ET+FY__if^>-kUTts3%p;My7@{y2PnEFP?*kU zxQ5p7=I_om6q@gvsthPgJ=N65*^TSvj0S(aTI`i&&CI+JTi-|z7HF|}WA{7Qbw%Ko zb#A^Xo6j9nwmdmfm!u~m|1|`m6`{%H8Cf3gyJ+V{fyDS;Z?pP6nrS=g+myyfSjnrH z&_h|cI1-Ozvyn~vIgL3QasgPf9B9A8JDWVl;egT-6#ZF-@D-K4{yxo|%QXQ&M`UvZ zvgyM-1Pg=3>#$Q^lG`4|(QXp@QG2K{zmDwAZrO#{oimJS>ifuw=)zaSCX=3|n0h;{Wwub>lSg7L&s03W zR#%99hZCob7*L7%YZK+H=klvvw+V?r3Di!Zu6bZeI;Y-zj=qqtl>UTzF&x^2?CZhS z9wxjvO~JG-ZFK{cA_gaD_fyfzs6)hU$lWE?EU#(um?SWazIPbE(RDC2y?3PFn8sn}Tv0$XiL}Pk5_$?%VrH`#JrVe?;II}`L5OYeA+^}M%OqbVGpA=} z=1)t?zfA`8OD;K*FHy-HcE!f~>=Sa;Fg&?DDN&|wJN~Z2mC<(f#Y>xD%}q2fafIxu z_Cd4DvNs<6vM=S`Ijx&Gh(_6!Nm>I}g$MP5yyf;iSHjsW^50&7njk)>+H`HN%opIH zJ02wBS_B2vTZQ_1@Nc%uNvhd)anEh_Cn?`JGbFL>LCw3rrU_2hrY*9Lo`l1Fd+QHv zIv`F$aZ285FUwM0C{9YscR=MOW?p_*2zcfJc@tT;Um!tvKIvVM+eqz+Mc*gJd($;54)C{DZv7=rv;zM;ES4(RGLZ|4yg^!i#abA z5e;F#X>Pw3iUy>}t|q3JK9tw1BJ;H3ZLft^;q$GPh=%Q-#Ab>`Z4Au)(aZRK5#QN8 z$9ROqd~n*gK}J*pQLfFRP)T9R7ier1`q^1lPXOg&tZ0sa=E*nS?s>ewtHDJ^89`& zQ!gRM=FXRwSH_ckQgb@X-Ce5UG|e`T!K^gVy*w9PwcHm=IIh2>Cw@sQFHf0pgfo(y z1R`0sk|?5&taM3bpu`s~41Sa>RlxEkIn2qENTC5Re^t1W&TUo)c;eN z;s4VG6A<^&vVVHX^w-`h4$Vx2Q96I-u8_R$oBM5PVT_!^`sv$5kx^N{V7sWRo6jdF znz1pUz1pat-J~MwpHJwURxbF=PnF4D`}YsZAiTDlZbq}t%Ku^@^X#tEBbB)6!@#XS zTD^Pr{NuwjInt962^CJL{=o7i%j%3R>O{Ac5ac-Kc2M-CE&2=a#J~8V&XZCT-8|0a z?&pMsdixg1jtz4CCKjSAQ3IDIr;1v(u@Pjys3`OAp!wi;rFgG~bDbe4T4$8W&b%(R_2D8SdPoEvSfRI@0iMb}^j z?R9TAWsYQGuXl6pb3E7PRI(h|urqenVtqYR725`#^_vBkyU~IM?_XWxPu2Fn_SgKQ zQ00b0j-E;>EjC}ZGdtiVBZJGnQZ&ta4nE}3;fed!I@i~wjiP#Tz=VO%aDQ(lcpcJLCOV6T2CnbM+7|Wzr4RO zb(YSVHP!BUiaQ zKV6w|vU{=CbZ8ho$JkHLNm1u>xh6de)sUOj{VMWI5vR=16iou^yz0^nHIT-zXfYX? zg3O3Gx(z1tW?w?m_$B28`)PEw!QEIY z(YnyDh84HK#oxAE%0%wajE5&D)>Ic~l+}({`Y8G(=_AKq=S@(|`tYsgnQM3Q9jeT2 zeODxD=XynR&cLvHf~DD))-+h#@(bTLmp&CsU1nb4sEA{AvJ7NTM`|ho2qSrC!YSy%m`Dxv07TsToYL@>Of!p z6_JyT3CpedK*#y(y z-7v~WfyOJHo?|Ulzh0Ia2>%tgl9E^v>txLGx-m0+P&{PjbiI*HxQS+U^Bi#`k0MA} z(O0bXg|0nl3|JFmV

`JM{C0&;g}I_jt&5jLCE$rT%tv9L9y^!wvDIu=EW;rXr4 z+w6Nh^21SBUPKG4ijVc$V%N0q&5qqTEFYsI`1Vu^pq{Weh1QazB+5%Q$Zp_Fgy^Qu(E14?0sjOJ5KH z8o7FRl(Tl`?8W(*00j@&DJxa_-WVGh?D}oG9-$RYbQVxu%Rnod6B48tzrW9NU3?q( zS%jTd>Z8=E=hsg^H~lsyK773~SGV*eaozy!WQg!Pz|Oy9>u~SqeIeMV5d6u}?}PSJ zeGQ{{1zup}vQBSlAu#Sp+oomTh_Zqa-Tg}HCJFuCrQrmZ-C`8f7VZNMpT7%h;T1$O z)iNNx7h?qFtH43!inIWq+z>ylbWd@_283ft19EEkLioi@XJpnugZ@A$;CG5;UxS|X zOxM~%tJ((d4mgDB4rVb$|RFB85NJ&^&7kd;G}6nn$$GN((S#lKPFnrUOuF z5)?{7pa$w*@FHcd@CeKu#U-#r{UUzYCNAsu@G#X!B#0EMgrpLms#)G0S?3SOWKj^B zV?bdS#;y0m3t7|P1yzeY)Dl@zmrsw2v*DUKf9ynDM2ez^8-XcxSi0N0TIN|Y1i3wy zscNZglEodA5D&3%pPHCC6!UgN+DS~nSL_D8VqoN6>hs-5PAXDgbCK=FrOp2F6$=te$+IXY+l>J^ zzgAjg3!t)vn$PFr&GRIs)!$Pm9JayTtvb<+?zgwN=hG_;>E(t{F*uz=AH?nGY;wyZ z(qOc4_6Ld{=I=d$VFp~9sbA#GJC_c!@0N@guY7%J|IQZDABEC0j$co5 zacn%V>+I5qjsV6y4l{l}q}fEOKf}bE8P!?J2)g%Mti|c~y{ZwZm`wjE`F$wngB7NI zeB3WMw_nOFD^I9O`Yu=*AYXdxSVfLaoRCy-H-!VV!`_j@}U$vop@ZjLi(04-+Kti(o$Ygt3_lpw+ z0FAr4kGi6KdWE0f&2*ONlkzx6+8{+dQRD;7?L(Cq&v?tv}3lup&@ zI_G(!YV_wzc#&-IJS?dJ{{N^ZA~=Ekv_D@Q0ok8 zg`|ev%(N@qQ+e&_r*@?A#sVb3W*dIX7K+TJe~(c2YvOaM(O^*Fd#OZr1w4vMKRt zs@K)H(e3T-h#_?>{QBQRda$zusnY{v1bu7(hZMbf2mh2;TTQt=&sgGR#)O)>b-!5-9d!9L! zuE{014fL;jeL_7aed%w8OFCbuQH@N@?>3uXnYb<&8aj_7o;Ol5MckaAq_p-sq|NkytHkCG4AiAe(5jpWMiBq zF>Ocip>rV2ZDubWHRS8YTmY{|O>aJiymA`(tA>$FPw36|ruWumIW|#&%JUq%Cm{$4 zR>Ccj>d0dWR#D#X&nA~#?p38O@O}q8Ln&9TiR><;t;{e*4emj@i-;t*^`3!G9^BwM3qmVv!qEo5kD{!;0 zPtRafbzz_i(2FagC(%$sI-e{6^hVqCeiFdKj)UhPFy``LA zUo}niok%+tbLj>U9s6#2!C$$jvoEX=;Gl>BHOIRe72Wjjjgzfe!(#v7RT{VmW;5T; zASJR3tz45~Uz5vo&g@l$qNg!pcq+>b z$WR+ZCAuoJA;1TpPN?StRs~=X*Ex>FtH`v{YmVrXy;c)|O8GKHcDZ z??LpeXbi}AwY{l3>rxx?c4HpfGs4&91=WX(nZct)Mgw~hroJ%uSRlVo&DRj`fcc#X zky$tP$WYyzI`Np&P2W^VNblj%*4}7UHLPV)I&&3`3&>9?ZHs7a;2wUCkca40<&(!Q zcf7)wM(cH4gs)euFrMjv?XG0Rl(fid2?29rOvciLc*bB?oO>Iqg>jxz1tiFxe%)lRt6b~`<7pi(ly&9Yzq?W@EMpZ< z5RZMZGvn0&jxMcW9c{8$={B>KZ$Ek6legz@@q%%g74FjW>A~x~H(hXLJ)0Z+ z;5GImo59xOC^_*io@#c@Iu|hj<{vWHp-vCT*u|^^iA!4VaU?)?Z$?%d+1TrRDEtPQ zZ!sm5`f)}YujpE52{Bfv!rwO=e+)5dm3y;(ywNVOyhxT^$J?m_mcHyOhM9-0*I!$i z#~0;OALyz@7?PDHuNYe!hv~yZ9H9YEwyb^Bg^2LQ7oHk=#q?*fW8=LJJ}vySY%<1h zQu`$BoZ#lh37zo(^JW@IR_m;Un?|p@(0kC}w8rFfFIK9FH4FwfK|$eWMp)hw%k8e1EL`cZYPE`{ zyz+$p3d)Vy;$4@ap<9tua*A|+6lrW^2GX#}lH}R)&^J>=kF}XT?gP<$9o;i<1d=^( zUOesR;y8G;s!M&KISv)T-q!WDPD)zBXwc6Y7Ao@2*osj>!LD#z+}ng*_IM4{RMU=} zPq}xX^-;1)oTAAqv0ceoVxfV9;!~EO+p!chW(1cCJIQpt`9?29n z(n$X%403Z<16n?EoB~1a^tTmfej<$&s#)e@Das8n_;@D)FXI8&X_fbg>hfSpKK)Cq za~oR+W;JO(6I!uvAJaW}|Kh8j(S#$IMImwX6*P8=H&%N5*9mI@OCk7$?H>Ee({DG_I^Nm!roDP#!pM(jeP$g#1Wgq>lJgMY8ye_) zc{P5{i67{FmUw5_X=6{>Vh=10UQBo1-tu#>#BExFBeW1)qB==5%L#%{@whC`zVC-1 zNDe?I7{7__qO_N2;A@d1C|TF1l_KzIY{-24KqI3iR;k_)0hks##*J8k6UI@KaT37TSa!wU^e^eGOWe=w{))z*xC(G#Hp32oL%lPNG08|NpQ7jbH z`%pC=p>yy~Bqn}_uDpgNpMuXNrq&tjq;5+x6@Nt+#g6&hs9rm6q-~6#?!z#yLl>N^`^ z?2kDb5e66zLZS-@@9fbBEehIngR*^VPZ)8(w4`U9foaPIxK6Iu=XoHmQViys(RTqB zFN}~}M?!dBY^cj+@n1uxJ*|^2!V&e}fcJ#qh~_bgYUoNP+G_P7Vj|_spVegy-<{j+ z-qlbtbW`m07h85fspz(x#?!I}R-e(kByRV>iJgTwa*dl}Q)9@gHpcR17lmanvp`RV zPHT{B@}AkItB-?18Z*|>=Xb1I>wb9qdaiS!5coSQ z9=cQP`Qwk{yZm;rd=|N#fbqmxSo3(0zYppdQm|P#iu;?<$>KBiH+y*Q-qJ)h z8)ABRO(*sEg^UjkQlsOy0ObZDhadP=d*7068+`T89T*w%G@>ZK<$&4?2PY45H7tRAVb2~Z~|GYlD5JBAzcbyYyRhAQsoSt1X0{EO!pbZCRGCt0=@eXRILqiQTKJCl$ck zkj5p_5TXuKw<38+m^0U{hsi6}6s@cGoX;^nQZLQ*4x%JXE^!a^#I6vGjQu{BV@ou5 zT)%h)CaFArqE2qhAGMa@SHGU=PS_NSI+eccvA$Qw6I|t|nAM*#c-?Go=QYRm@%WE` zlpWN2-9yR1OQR{jA8;R?nB;6*;+u73RtqqOe9HU{60>?vm;pO)M(CQ(AMK*%Ep$IT zdMh1x)7{Y2mHC#@8H97G{TwZdr$vS7IDx55&Ri)#5!CQvhAwhMQ?vz?aqiyirYQ{=(MNuo@4jn&d za45LMcVRuN96wVyslc>G&JIq$<~W{YK7$xu9+y>LBn0Z$Ci^R*6dDSdWna$`Yh+qG zSOhsDev76s1vPQZoQcZJJ~z#}8-5YZeip%O1(9`Bnd(_bwJpjqK+Aq#p} z-W1!30o{oPt~<|m65*uvQd9oAes&S{TY z9@SA{ue&}U8g?+$B3bqk^)qZUACYUnf4kXjckU`x@A{GG8xuZtIrj0H2F3=xux2cO zP0wblhWy`b^gBvhJ>a3g7CA2Ulod27X<#HxBf#>*#ktRxNNaeY^_G#KVyb!~*LL@p zfvg4PzHQ8jA8Y+ok{Jxa8u1a+r%Fz0pjutAqKgC%BjvbZ8g1_J@%;nx9|q2}{lQH; ztcogqXDTv@os{JJLZ!!JtOlvDt2PUq7D1jS=OMynUfwMp&dv$*Aw=cRQ6^YM znb8t4bcacCz0Ey$vvx?EQ&pd?;oG$1Awa(VFW6NA3= z>*>+*rNVw-lC$MGDS9bf!>y}`%Z^>0>z#jo5sm6T0@vs{CL7k*ToQvPWWQ#oi3(o3 zelKD6qScMp#SdiOy1J0C6-U~`*E@*#*%34*Aepb$+wP9Sc$o`}qfyh3X!O!0e93_uqD{=UpX!#w}pvMDAL}&ZDFoc__xnim-$pJvHxfb+oJK z%SA_>95tVC4Z*rh!;et3ay@mMUgeyMGVU=?TYWu7&au?E)(@}0!kjxE<8>@+=1jtv zdF!PRPhN*;SFAtC6~yzrUyKWK)L9c|nMxR?TyB`e(%<^swiUAh9`dCg>;zXgpx&LI zwVK)Qzpft}hVD4ALQz5p2O`(K_b)at9wRMj4ryfZkph(<|RSaV*jKR~-u?HLd zP^VBy*7<;sd_4HaA6&(k-E)&zhhN^hFYcUNtq)#P;!3(1Xwwkb)R?36Kd!8mKVzch z^~O=7T&U~w;rk4pXJ1l(7RAsYRiyklmdeIH^bW-Qw+k11@=eSNf%RoSk<>+V* zIzl9?(t*|c@aooh7398HV(+iJ)&hZ(s3xVx!2?WRmkfQs&%5B77wED`r>7%@kCW&L zCth4?W}yZC=NgeSbuOK5z$qm+wOjJCr7yZ$zrM`yPsb0ue#*$t=HLX332vgc-`>1= zS#I?>QqgPEHRZZDpB#n=bI4B!KrZhKVT~l{`P15>qax*1r!8Zlcg*>^oiQ#*rmlzK zsgF5HHzZ-hvxEcBIj_JzwI*b9H`g^V*gOcBdZepLB>`6@v_2Ho4Nkuen@InJI|W+= z((#yi%Qa@aAYg=a@_Mtgo>aqrlIH{q8Lj|(?!?Fs;yKC4wdGb63lje@BJ9{nq8HX6 z9BG~&e^+#qL>li5_6gUf;?11e*5}0<*zNTlua+0|GBiYGa~5%zG4J(%If^?Iz(g-I zxYYK%_uAJ9E1!KTlBJ@_3|lvU&iH)P!Xg*l31H%_>6u!_*3IWzg=6X|Dn~&c?|t|` zM#mi&7Vi$L)ej=Z#{Y;tH}4aOoNi%s^}-Zwko8qTJ)T&V$Soqz{O9$U0p0D3PWrW}Jqne7lFL2WE`W$U;f7{m5FpaSq=Lsw|&r8F-3 z;EL_muUe1`Teb8{z=IB%wM48}z@mJfnb2+g?-Sa}v2xxrUq3v}oab({4ey0WTEe0n zIG)_Yl^<70k41N!n}yV;c88q-2!XJ-zj0*|R1o+4TDXua>UMHF*m9`7#r> z*N%^?Ts@PvprViUM9J3DwSdw7y0(V%C}SNl4bewY`G13!lgt3M6HePi+OWz6FN#qG*f#Sr;$l}R=<7|o6nqj=S;RD? z!hd!&q2!%cj~8GVzVjOqK$q0sTB<$92H>Sq$`jxea9YC6n7%0HYyojzt={FV~W zw;XJJwFK!Jh5cGDw7qNQOQ5lbZFYMH;!3i-sZPH>X*4m*e={YVc!1Xa`yPZ}Ebuhj z-@`+AB10{PHdm%b^?g*Kb)TR8PW%y?C~4LxD7VeUxVr#q(GMy~Zjz_=?S)q?n=5h^hZMgGEqSxla5jzLyA0+ny6#L>6B;I$qW$qtMZ%;< z?GGFI^Wx5oMNbERUMWXBTYq+$D@ds81K@YIeQ{LDkw_r|!F{p)z=358+DBV*X{5TxBkjSeJ)O+eB17@lY}wQ>|eH5mit~->-bTe>O>Z#kF3v`Ok$F zgM$&zDop+PX~(kZhFajfUah8B56kHw{GP1NqD7(jmhTs8@93BC>llP^2~)D;|7@_+ z_bV2DN>s}d5hHvr@Oy zfo_cfT?@+hA6mk^^`D{V%1~VI_ZfSx1=JSi-73=)jX%Cqfy?iACU^Xll4QvGD}$KK zpSWOZUFIgqSs{#(Q{hDoKIBod5u3FPc9({v8C~r^(bTwdVvYI`9|k6(NEBllI( zN$dI3hZM*OwPa;9$rDnjne|=0j=7m-Z-M){#R#T9oJ;|zKftB5=u=P94%earG&I7iZn<|*N73) z;0WmkB~`k+Tbj|`IT}WcI4}DB{?7TF|IXPT`>>6@d)}w+>%Q*mz8?#^5KhU-{iTju z$GPqepA&i>^6Bn{>hw5PYAo5+idgRv zz=D`dgw>qrNZe_8h7XZC55T)PPlCfY-e;LH?G|-ddEOk%07Zy@uHlUH=;+XnA z!sc1okFeT2P)CE{6N1DL(}8Fp&rW*4+>{>DdisNy({{n}9!pSN_xzX=aD&fpivyxg z>)cRjIM@u(9OjXpQ=39wPg{z)GM+m=XZ*o~6SG`;E(e0ho@{I&cqMH-P4W78c?&;W zb8nBTeNKe5DnFMiwc)A85t511U}etou;Pq+XYBIVBj-OUea<%Zmh3Y(f2cR=0EEMx z!Q|yb3+74vJNF_jipoSIR_Vm(1zaN79C7`H&URGQZdM^Wo_^}rHY=~mvJB_4r`l82 z6Yjg!x>rpICF~h-jmh<6#YaMlqf0kF=kVwNNcG?1;@RER){wf1la0GUkRS_^<>-6* z^Cu{{K7qnE;)#&Z*Wx4n8Tw5vjW`$my~j_p`!s<;1$ zWr%51SCo^XPBr1p-75i7k^VCXc*d7*J48D_U2Bt$%pmAbm=(<6x|UlkN>~QHR2ynY z9lVYrL<^i(vVAv8Kq8jiB?Y*O4Y)1+O|E;Y^F*3V=llzh_z9@U`;rhWzsC})C2f54 zuOG;M6w!vU(}H?Ch3e98K>gB@0zT7P-b%OoUB5ZOMQ z@IU+1-)-S;+YHUUvyXQVQ_=s&MgD(negFHC8%j=Sz=vR>jxm95-yng=ckuRs#~dpM zQ;y5ybr{!dSG%%rlWGBuakRl3y8s8Li_&b^&vps_q-<-?`5nonKfK`yK}hZ$$|gu8 z;Bl!czML71cBnqCo>3QluiU<~%6aR-58ScIlI=n#Hz~DaN(xobr1N!Y55C*TrXC=- z`fK*3bHwOOOAw8CltPxE8C$W9>X|i!p!D(4CobIS^$o*BOwBrN*>S*ejg7D|T?jbF zUe8jJ*(6dqdns+~vHiF38ayqaV>}{1$J+4OFRU)xT_=2h`@jrbMkwMzpcL~IEVs_v zI9Z4j(dv+ZsI!|__ZMSv;*^%|{7>s|l%gx`JM%hA*wAo8GvhjB<50BZbO!_Ckv8g`&!|=-3D5OA3?zS{9!R=RjW|O49!WJ z-DX6?PthM(dY_FQ>ao0~7u=orn*ENLbm%nK{3zKngW}HMKC0yV^l?Zp?bUEH>h>mG5JNgn+4a1dP6e2c=bEPe5E`Wg74Y-_Y$&qh#@$I8>v%?rmyi0cC*F}tn)&N#Rfu**0=s7)tM73Ib|C^5&?X0$Nrh@|?ZYoCH0a^CzkzGn2i#D+JS$x~2y zl55Q#x?U`J)Bz@@tT?pJ7dMNE0o=}#34I1OLwAOPfX=nx{8bQt68HhlLl=qL2~dM_ z<1X>W!}0OtRjO0Rb-^{M2z?ELs(KT9f-=3iwwCwV^c81-liyRg6R&ziqC^QaGxG31 zn-Hh9J_Qc-6lGPu9sJ%S0V*_u34X<8LUHeR0s!wm<$9*YCg&kn-8ts?`t#0O%D(tx z{OGxT{g<{<)2sUJ_lJQQPL}=`I3ywg`fH@T^dzflpY`=hz%9zhenL|Pt4_Q)1|V*Q z_b%b7djZ|Vyh^WG{l78#B|FI{8g!_*x%_v%=59A@zwvt3ryIZd+EhG<=*7)?jEly9 z;EBWUq`ckR)$;$Y^Hp`Bxo=VNo6L-=eCR%mC^I;=#e!FQKt|$#VSM3bCL`utBQ2i_3cGQR=Ds$*S;nOFf9lymv z;kCKgf7aE3YqqQKhQmw8K`P^w{6j3vrma~#$vMfV){#DB_MEeUJx}o)(>A%JjWPdW zFt`F2Xh~7omO(fa{!*2#@9AR}Lt+9UvcIUrc$x*m6uoZ8BpfO~OoBH|y8VE*e<^1& zHKq9DHfAkZc?O!gEBt^wTwZJec>_E*cB{LZs!H_Y%o;N(?={84dzK{qTSws%6{6R4 z#K4Xur0}D6Py=VslnbQn#2npfBz)fbW5VJQ)o>AO z-m&~NU#xN?QZZ6zXAkDZHbKPNo zu}TsGEXeokjnMy#?GkBs6zW6p4Hc>>F()(_?s0MU#x9zxgePvI{j(L)jLCm77VwHu zlFjtc*i!Ts7t2h#dYoV#HRX+?Yh?F?K!dJpz`_4&>!G`~U(H30OIW8^tETr@(h!d_E z*Pqt=lo9Ca_drC24c-hV$yyI2!G>k#(x%StVuc7Re^SA+e*XX)CbQ}kh2Rk!qI%Y5 z>A?JCNz&zh5!_%V@`+wxhMpu54dyHP7?3G%rlJhijeh$J`485~f)H}G+5bm)5&iD)eY&%(lQSc~Q;I^c|KS~ThyWq4fH7%eXo0Gjl&wi^yG!;LH(`M)?;M?e| zIpU7z^Gto9VvrbYZeGMX>;Gwt5w_3x0o@D%$%2SVyayO>+0IBZ(-4io@q5b6u{6 z&fnv+#iD!1$QcbLWVtiF5&0I6bJzXZ6{{J1PzuKeYE<$e8-;1v0P zerxEr(fOxmQxjyywEbAk24BsxNJzhY42@|^eMdGQYQ%MNWU$Hb@~t+frn8*6o^Wzw z3h_}THT^auYIM2{fb7w;ga)*8K?EU$r-CK87~Z`n)>4F#TXJ)0fERBp`+8wP<%2aZ z6^Wbi7}c{=Ni1g#4)pIvdg5hzGi@!7>qGI;N>h&fq{CYRuSIPY=>W)J=br(1r}zA} zAYuI{4c2|`4foi92&1H&42NUdf=u7qcSjWv5bOftuCc{~GNU`609cuL?1A_3&Dl-I zx$tFoq1ek6w>2gbIc*bh2F@{GlcjBn_Bme3i|84Pb$Qn%F{B| zh_k-5g;(-gr-;A64-=xSFsu1X!?n9I#h<8}rW(h~N2i!q1O3 z*3tdbsx%vmCqH&(c zt1y(%?Ls>JsR5HLpX?s;RTkCe_k!mV!#^5CUWrvS_;_Ikb@F0l?b_x7(}ZGQPp;?E z{UwVY*KSXCar4AH%!JgcW<_*_T!br=8>y=!FXx6&%JnVM*p?#MOSeTvS|#qz?ix$4 zNWosW-v|w1cu4@ij>w0FjSdy$RWT=87h6^}()XSW*IT`~snm;`y(I_42sdmJA~t&R zs%o+sub>)QAd)-mPq{>Ts=<-vdTj%|vHU3T)R3yT({;ju53lz7S+97Js4+Ej7lm) z+Z;S9+xRLIO;8%#ZSg7_s1>^EPma`7|1jCafs66H7Z16ofxM&L;JyBpSLB#?2K*vV z*`W;YrQzg)`Qd7r8hQiMd{t@dVw5xf9|gRq>mdm=EPSneZ?R78WR)D2m(l~$zgQ0X zi)uG%zBJvwOeh19>p)8UrerW}1e~0jDJYCY51md{wfId!0rUI*m`(ilOa&L?x1|xn z=C9Ym8w1Byuvto=U|?9Z#LdMyub-Y{K##MA za539t#Y{%Q9GDeu;8oM&dw~zqAe%j7?Pq%qHVSA%rrQYU*cJ9*71ib$0*Z z`dHVwn#8K~_T8e-!nTkDxZ)I4aT*ypC{b^Fvaujh2xS6;%^up4v)xE$WPX$9GVIx} zufg0%vnGVK2sF|BsPrm-Z_wi5*Hq_t^^QHCuX;}bEAnT9{#@Gd^&=cyacD%e7yi3wHLBCiU@MGKro!JtO;hp{|r! zY!VZsS8`QE)516vceB(X8%Fx$OH|jKlC*IjOrY3|VGqYw1ka<<9zqyN)&>x4H%8jb zlMdem#GSdt0=DRO0F4*V{-HH6wJ}FLMrVt0`-Y$H;LvzP1J(km`!+UsNM@C9gs{Z5 zOtsCEvGr5BAK}@Xl{N!Xa_whNQl@F+`bxB=5}H>9c;^~_4h$SJNm=ZZ)`{|BP(mo{ z_tB$q2B>Z)OA@Y8ESy~i3-^>u!Qd5<`D3ORC#YU^ETB=n3$y(r=}ijSCO6ePtZ9?7 zZP~F->Z>J)+?}4^A}^uYy5!7I4c;3%F+{z^ntC7`IQN$nP9vOL!HJZ&bpj?Dvq-92 z?Dlw+Itge^e8iQYVNcPF$t_uUXp@)g+oVjl*-YIh8XV9K+idauU($?Vv#$v`51t4a z)%ZU9ZL2B61s_CAoP}$qk5GOWkih#gpWzghj8U!uS|t6DZeW-EYS>&LAeivp+<>&$wyEQlckn(B@>gBz2~uXwfl3`>0$zKPMTV~=Ai z^(IM$R?0hDD}@v(eU+34X*%~OL^3CyvIFpnzN|5z9Anoh)-DwCJp&3hwg?H~3eUFvWJRs!^lWV1Qzp(s3EIr6Z%MXd7x22bby{kVPOtIax@k_T+ zoc6{&Z0@j;Umi}p0Ea9!?Sl^x+9i~X*2fM#R_4l1Ky70lY{vYVCSYmBzmJm-g;d^<_O-Ny2& zyyiA!o|rCJY$I>G7Lfb<4sV497k|iQmOD#o2X)L}gKp3CbrJ%vMSj$D%p)r)D6jTP zHoIq^7y$Y!RbO9GKhH4Gg#PYgNN%Q%cZJ_5v8$nH=yh1q;u}U4?+-l5`&uGLZZ|Yl zBelifB<&d=Xp@t@uIMt8sprs$;&_t7WCSYFiNeWm{}+Q}OzUtdCRRfNAQ~i^fAeqzJgB zuhL&KkCb=r*KC}5kw0UYqRxaKd<*D(5O9HcdosoqcrP8L&2+p@o|QBCN(YIk_?aYd ziL*G&lram*^piw$N3qS?Kt=88(VN@_|A@H=UJOJ;@cLzRLt`qd!uo3I>JNXx?mdL2 z3cf;~;Q|uFV$~H-AShXadC4sf#qn4yT0EkdM;+em+J65|xg`hCR37tlUAndanTT_>;BEiQW@>$EAhR_G2ZeS2qgH4`z@Z=p;#^skk=II(xeRbO8CO3U#u zF!Ei5NiT(%eG)zFJ2$G_yE+j(4G$dMtNb}vP;~`9+QSW0xw5)<-WuOk=)G8_Mtxr3 z9z$t86He;w5+5xgW*IRfW*ON7=bSvVfkaBJJc9u@vysmQj1*l0W=uSp=&1*8M3=!B z4^eUYEkhZuo;yS5yTOPX@t;X%#ip@6E2G)5n{4}OfzZh!ou%wEl11T zI}>iZ*om!#1drSifP|sqyp`s$(Nu7esR#>{lo8 zIbM^{P2jh!Q1Z6+fLGTpAOhxt{IDq9xipD>5*wUi!Pe%_Z(KQxB#BZOnTf~Mu*5@Ah! ziQPHS|Iz!pY0>4Z)kkbmvGrpu=1ymXQMJwr1X_9N2l3F>^J~=WX7^Vt><~N~32D&8 z{(g7ovZ7}Wp&Q|e_Cg>EYuzd~U_O_G{4$v`a#qdC8OX@7aY}Ba^*F}L6!U5|gr0{2 zrp?Ku9x2+VegEu==!5wa>T~MZvxSfP4Nu#){2Qsy_c=eg*4u4t(2CGl&QKhnPzZnI zR|?fVX^ET1`C|MBKU5_&|3anjDOT}?k_La)+SJ4mWc4_TKw0!o|6v5JSj%WLz6UhFD-|qtW?`bfoP4( zB&OYS@VgAKmwCXNYDx6sJazX2a)^&az*4(Qf?5T!o*M{%KPc*mDBWnE1DYPtg*)+6 z>oaFjQQ(i&2_9VLG>WEF39?J{E+I(4^+w9Y;o+ReMu<@ob^<8YmdCa7*I*3DWXg}yb?p)|{ zv8`mo!6>d32`|7E2^^*=_dcKA=oEs#xyV>D!DkYrG>WjV_rpRVjH+k%NxPh~fEl!k zJ2q`&KYYOm*u@Zhlb58JlorZP#5^R^U<^TA49gBN;N7=~&He9mpC(*IDfdLI30pVN zu@>Cu2!x)o_B{Tz^)dZod(s(gOOweN7o&LZf~lJ{moHi3ViZH^2*cn6la^t3G{Q0I zEx@@u1WxN&4|^D2jX1&Is}_BJnu;x);pgGH?-+t_q>zu?uy@A{&u@d7WTd}Fq7WUdAk7As?SLV5mK)8zjvEvT z@vH-V4<}1DmvlteteJcnH$Xgeb=* zPUrFNL4w}pj^=07i2U>@$EP({#MRgD95^EV4|AJ08Us%!F%ICjzCPl0*^tBM`8(oA z;UW9Mbxpyi?Y4`L&y1Wa{5Z+}ohl62LFKm*%Q7xN;7Gwu)UCUa!co9!+s@rb%UAqJa z+*fFt+?I_{S9Uv0+~FKke6Q|Q7eamy+}ZH?`$G!{=kCFXZp4(eY`Q|mNfV24Rbud4r3pBN|Eo#MScddm(d?#n-r zd@IXK#MtQ1=JfuoWduEXi_Ju%-K8#V?Ea<~2qcE?G&L?OI6VYA;P&zXY6uUuTnr^Y zq?_BjIH3MA$QAwi9YmZUGK6o7y@_n=AlBPy>9`fn*?vA}bO`^N#Hizv?FXR9x9@&r zVx&QZ{^0CHNEpgPKptx_prDeb$F2xLej>MyvNU5e;P?WDDLP;24)*Cwh~5APrz3$K zo%pckUU6VxmE2r7i^y5a@t<6T4j3G5I1;@eV&k|hBDJ58EU^eM1&mGJq6z@C1Afn@ zZdi)B&)$sodXrs6iOB1Q!t;WdAQ^sdqG_SUsM0>Nbx?Ts*2`GpA;TfOH&8nNhi;p~!& zqCr5G5I<=kBTa9}$bZpbUeE);d9j9XQKFEBE{vyXW~I(S9q$Hb^j}asmJzc2(L)k1 z*m;d!3kj14s5H4-;_R(%V_8lxT*l_bRex7%-*di6O-pV;b0({nwnxERSAS=Cyy7dA?jS|(d) zs=q$ehd8>vXK6(0fvG1#Uwc>r5Nx?aHJLRX%C$IOIdQ$H@H-F2v~reH=PnEIwk z!0UP*gZs#_C7rm*Q|tMxQ>q_E5ZldF%C_LwU~8`cd8xFPHt*1*ej4eACn(G z07awlC(jBS4Ns_%Ct9;N&zQWSxzSNmm_0YrGR!=U1}cvl2gL7W6J&VSe4Ok#d4kca z>u9F*3O3F}K<*NwaGyngurxMP4Ui@R&~7-Ay%}J%6hAc}w??)P9Zp+Q5g*)}mCF@Y z-g%esVf><;fyaY@z#uA0zwJwecYDapgQjz3e>>x=-I2Guaf$Pd=WA{0@R4P08*ztd zq6jRnn;qtoMAY>=>G|wR2+aHTgK-wgS?cB#uXvk5R`2<+_q=^_w7w|m66#F$r)@%u zfMia=&zYWNZzw^KM%=geGkvXC3-{q!fVL>~@)nlebta_-@O!uhTw+`8 zSc#0L4YgQ+kf6A$r%~}YTKBA{zprvw!qP(#TRnL|j0^yIAOYzBnYy8NqlEWEofE~8 zGMKNieRzUD;;JWvZV10d|+SH;>5 zL>`y-sLF}F;j2Sa*{g`pn9V{@a)9O47%qM!Kx4qwp{TF-{91EGX}}>A!;)3jYmcKR zqmCZtm)DCnnH(>?Cw?vY{k%cH3W(Pv46RP^Ee*`13R2oF6oLI)ndWbrrC=X%|0pOM zlr#MBD3q6Dy6=t{tnwI=QsB8-Y!=owNMT zXd3p|+DEpaI34Y(raPJ6yLfNT~(xcBx&e160?p z(T5l^|CjBtQ`S`VkYi`iqkiMZ1HAX@3J)7LRVdSNgE|tUV2~OMdD5>DJQd6y}|QEbI%xb$&d;;=Wnt1 z7A}`ICrkTq{R$nWDe z*=n$jE)dv4JGq=a(Tjx4I*QHBb>}*O95s->XXHqE`((!3yu&dTq4?mGM4&mkj+OFi zK2l}^I-ZF}eV45sDA>}74C9n0X3O^uPU_IXZxQ9Kk>kU*vA`DgG|l$t4+ZycmoN^O z8rn&kg;v6l&_W^tH-QrbP>OJ&w;{-_=FBdm4G=GK5k+0O2L{F%XSIAS3tvEwipO!Q z!StcV5cE1OhGWyzjmdw<0*Felx;GDX3eO#Jy$^9M*3}5y9-kn5EDO0bE8E)*TL-;~ zO!jZi{cry$Dv#&$aVz;LYa5APGNHr^v`ig#WAXD7I`(NIN-L&6sl~Pc+`R$$(EL4# z8yWw6-0E#lq~eJFt+;}>MD?8AAeBlZD!MzAm4@LRlgo_My0|t*oXkoR4?cc{4R!AV z;bMxd#9$z&o)q&~7Xq)YXU6LxuHW7i8KTi0TbBM$DX7BrUyCnEWj=N+Z{H_mo0IFr3n1Zy^{H!e>7lmV?nB2%8 z()~*Wo-RgWf=Ob+sDI(^?<;z~S)kI0+#Q}uhr4WaReBac1{KO}FZ`qBOV;S+QpJNZ(I(g{bETft}8gg?-y zV%N?tEC<(9JXHq}^(gTT&%xvKYr9@NkmbaTj%PrJews2tcyokpWrFaqv81=3xA!Mr z*Y7R(Y*D zH(O6~!%~$it1^5VtLQ%5_{b6V5U5&Rb-^{9A=;QC79dIAIhqTyGw73a(4M|<7c%OG8{5VS3YBE1EIyi;$RE#U5>QfGO2tA6?!X3K+%Mf73jP%5KhuV_U+%;5x$M~@Z{o7_-Zp!8!mDQ6iW~NK4g!)J$XjJ0 z;%5?kPgW=J6x}l2EQ>0Q44lu-21QRlOjWR1rvB^-9Wi2hZ-$#r#3Z99*ihGRBusmDV7g-N*Zv_f zh#WBuulUMD>GS5{Csf4ze)tsV9aCccWnBLfWK-MNAkl6=Rs8GAgBCf+2A&TYT*;=U z<SiDgE#eCIkZg#MyiCvA9{bOuJzXwm)HXnICrrf@8 zJrzq+SGD(kY=6yaJ6VtV(O=}XZnOizN`DMQLDM{*$=DN!UO7rMxv_<;G;b(UevTKJ z^-S(K`NfE1NojNS!{wTsTz5K?%PP2~7Efz+u zRHt6w*#{OGoJYkEJSm$xE;z>sXXli%>Pf$3Kh}}AbHQ2B*B=XQga=4a8tr4+sf@61>s`xw8dPoq7I#R<(jP|dnC#(Z! zUzf-+L&Wc01+CD(oYKsD@g)3h`3fztgfgy2qVFq8mnzY|IxhV1{W#l3^=t4$w4E2# zN@<(dY`81}538g^mmV}+c-EVJ*{>dJ-N5Me|6_;=P1bo~V=rh{z9crIjrQOHCVK(b z1|y9L!@QZs`y_<*c9LwGQ(8+WJN~YkxupwBcaVX&^mM5ac1@N>b$zgJgCWqEgb?EE z#?Q-d-je|*12u7mT9UJQxq?{tno>y4^i^D6b6c*fG(fu75gZ!GQ?Od5Ob3~3K7V7~(O;5Xg zzB_T!Sf!0RzLtuk>9!!%}SY+5B1?-**d%dVxWdXs<7fquBLwf1d5~>lnVH&5>7l<5r?& zzjXZ4jF)>Hhe#}*%S%p*`DZ$+XAC#6M2Hq*}OoGln z6G}|J>3!eQf_svk>t*L$?Gw>fhj#vI<+JJ2h}ViU5_2^_CuYuTYi00b;}cgwISm$D zCUqJ@l(WA_+<;nZX&1WHf}R+-1d((fZZ$jyx0VIBdsW{nYt!*thb4-Km5sB}Z*sTRZOwOSV%E|XZ_iX8=4o&6C?k-uB?sJzH1{|A; pxdp2F_ouPggS!j`;1P9tgT+oJ)n118jR*~R$jhim7rr#`{a;fj5VQaQ literal 0 HcmV?d00001 diff --git a/images/salamandra_header.png b/images/salamandra_header.png new file mode 100644 index 0000000..948bbfc --- /dev/null +++ b/images/salamandra_header.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de12bec43f22c0c41b45b84425759d6c9e38ecdf06d58519f048f10fe6e826de +size 11097851 diff --git a/model-00001-of-00004.safetensors b/model-00001-of-00004.safetensors new file mode 100644 index 0000000..a75501e --- /dev/null +++ b/model-00001-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eea2c7b2e6a1297187a84592f94700cd4d3f42faa7d1839a29b1a99df448953 +size 4982973048 diff --git a/model-00002-of-00004.safetensors b/model-00002-of-00004.safetensors new file mode 100644 index 0000000..7c00f7b --- /dev/null +++ b/model-00002-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38d01fbd8bb3194161275a74e71239eb734619ab1ee62db4e65acb7eb6585fa8 +size 4995660232 diff --git a/model-00003-of-00004.safetensors b/model-00003-of-00004.safetensors new file mode 100644 index 0000000..42bcd5a --- /dev/null +++ b/model-00003-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7dc3c1785fd22fedcebce9c5d8982e8d5cc5738600e3ca997f852231533931f +size 3460482936 diff --git a/model-00004-of-00004.safetensors b/model-00004-of-00004.safetensors new file mode 100644 index 0000000..48b9083 --- /dev/null +++ b/model-00004-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca77f00acbdff6cb57589db5debdd459014544212d2510c12fd2663ce5dc5c29 +size 2097152128 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..5cbd692 --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,298 @@ +{ + "metadata": { + "total_size": 15536234496 + }, + "weight_map": { + "lm_head.weight": "model-00004-of-00004.safetensors", + "model.embed_tokens.weight": "model-00001-of-00004.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.10.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.20.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.22.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.23.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.28.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.28.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.28.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.29.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.29.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.29.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.30.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.30.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.30.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.30.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.31.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.31.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.31.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.4.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.8.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.9.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.norm.weight": "model-00003-of-00004.safetensors" + } +} diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..4b560cf --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,28 @@ +{ + "additional_special_tokens": [ + "<|im_start|>", + "<|im_end|>" + ], + "bos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "", + "unk_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..11e0807 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:139de51e6bbe12b772a255e157829f43bd67b63a4d55f1fe0e3abce37b2d8c9a +size 19066993 diff --git a/tokenizer.model b/tokenizer.model new file mode 100644 index 0000000..3307f8d --- /dev/null +++ b/tokenizer.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa490e57cebce5cb1a0a5b1a5d3fa4de05aee53dc3a44791f1c3401db44d802d +size 4813274 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..ac0a734 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,64 @@ +{ + "add_bos_token": true, + "add_eos_token": false, + "add_prefix_space": true, + "added_tokens_decoder": { + "0": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "1": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "2": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "4": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "5": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|im_start|>", + "<|im_end|>" + ], + "bos_token": "", + "chat_template": "{%- if not date_string is defined %}{%- set date_string = \"2024-09-30\" %}{%- endif %}{%- set system_message = messages[0].content if messages[0].role == \"system\" else \"You are Salamandra, an AI language model developed at the Barcelona Supercomputing Centre (BSC) by the Language Technologies Unit. Your knowledge base was last updated on August 2023. Today Date: \"+ date_string -%}{%- if messages[0].role == \"system\" -%}{%- set messages = messages[1:] -%}{%- endif -%}{{ \"<|im_start|>system\n\" + system_message + \"<|im_end|>\n\" }}{% for message in messages %}{{'<|im_start|>' + message['role'] + '\n' + message['content'] + '<|im_end|>' + '\n'}}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}", + "clean_up_tokenization_spaces": false, + "eos_token": "", + "legacy": true, + "model_max_length": 8192, + "pad_token": "", + "padding_side": "right", + "sp_model_kwargs": {}, + "spaces_between_special_tokens": false, + "tokenizer_class": "LlamaTokenizer", + "unk_token": "", + "use_default_system_prompt": false +}