From bb87963601a76ef13d72c11b74912190240c0b3c Mon Sep 17 00:00:00 2001 From: Jakub Adamski Date: Sat, 18 Feb 2023 01:26:59 +0100 Subject: [PATCH] BERT custom & cleanup --- projekt/BERT_custom_sms_spam.ipynb | 5417 +++++++++++++++++ .../Ver_1_FLAN-T5_sms_spam.ipynb} | 0 .../Ver_2_FLAN-T5_sms_spam.ipynb | 0 .../Ver_3_FLAN-T5_sms_spam.ipynb} | 0 .../Ver_4_FLAN-T5_sms_spam.ipynb | 0 .../Ver_5_FLAN-T5_sms_spam.ipynb | 0 .../Ver_6_FLAN-T5_sms_spam.ipynb | 0 projekt/README.md | 36 +- 8 files changed, 5445 insertions(+), 8 deletions(-) create mode 100644 projekt/BERT_custom_sms_spam.ipynb rename projekt/{Ver1_FLAN-T5_sms_spam.ipynb => FLAN-T5_experiments/Ver_1_FLAN-T5_sms_spam.ipynb} (100%) rename projekt/{ => FLAN-T5_experiments}/Ver_2_FLAN-T5_sms_spam.ipynb (100%) rename projekt/{Ver3_FLAN-T5_sms_spam.ipynb => FLAN-T5_experiments/Ver_3_FLAN-T5_sms_spam.ipynb} (100%) rename projekt/{ => FLAN-T5_experiments}/Ver_4_FLAN-T5_sms_spam.ipynb (100%) rename projekt/{ => FLAN-T5_experiments}/Ver_5_FLAN-T5_sms_spam.ipynb (100%) rename projekt/{ => FLAN-T5_experiments}/Ver_6_FLAN-T5_sms_spam.ipynb (100%) diff --git a/projekt/BERT_custom_sms_spam.ipynb b/projekt/BERT_custom_sms_spam.ipynb new file mode 100644 index 0000000..56a41e1 --- /dev/null +++ b/projekt/BERT_custom_sms_spam.ipynb @@ -0,0 +1,5417 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "gpuClass": "standard", + "accelerator": "GPU", + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "faaab551ac144913bdeb5a7d6f036285": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a663f1f2ef884ad7b2ef87281f50b07c", + "IPY_MODEL_9c7a0cd78fba490da413bc7083fc7a27", + "IPY_MODEL_04529b4a3714492cb6b2a6a388929c85" + ], + "layout": "IPY_MODEL_3accb74af07c4fd6be92666a46bd9db9" + } + }, + "a663f1f2ef884ad7b2ef87281f50b07c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ec974fdfc4f940a895186ae129442ec0", + "placeholder": "​", + "style": "IPY_MODEL_955da7fdb5ff4f539d707839110ad27a", + "value": "Downloading builder script: 100%" + } + }, + "9c7a0cd78fba490da413bc7083fc7a27": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e3f2f4acb97540ba93fcb56cb658cb6b", + "max": 3208, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b1fad0c4a8694b88b1a9a3998b120289", + "value": 3208 + } + }, + "04529b4a3714492cb6b2a6a388929c85": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90c3eca7bac44244b5ae12fe88d780dd", + "placeholder": "​", + "style": "IPY_MODEL_b291cc3d759c485aa2e65afb1c91fbd7", + "value": " 3.21k/3.21k [00:00<00:00, 58.7kB/s]" + } + }, + "3accb74af07c4fd6be92666a46bd9db9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec974fdfc4f940a895186ae129442ec0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "955da7fdb5ff4f539d707839110ad27a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e3f2f4acb97540ba93fcb56cb658cb6b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b1fad0c4a8694b88b1a9a3998b120289": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "90c3eca7bac44244b5ae12fe88d780dd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b291cc3d759c485aa2e65afb1c91fbd7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "659bfbe1501d45bcbfc2fd4c8b9b51f0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d16034be81314b0ab22a57075520bd00", + "IPY_MODEL_110f9ceef95345cbbe9b1cc908414dd2", + "IPY_MODEL_c2fbae82bace49a59ef379157308e082" + ], + "layout": "IPY_MODEL_dda5aaa2c75a4ade9088f21c2df614d9" + } + }, + "d16034be81314b0ab22a57075520bd00": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_912b150fa20a415c8d5e5d0f63ddeab5", + "placeholder": "​", + "style": "IPY_MODEL_9633d2a01238445aaa787802680f666e", + "value": "Downloading metadata: 100%" + } + }, + "110f9ceef95345cbbe9b1cc908414dd2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e6b4768ffc4e43dc9e9978e3048e9560", + "max": 1687, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7938719f380046a3afb64fdeb0e6f7b5", + "value": 1687 + } + }, + "c2fbae82bace49a59ef379157308e082": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f07575607b5142379c572b0d2859a01f", + "placeholder": "​", + "style": "IPY_MODEL_8f0fc0909de4401d9277c7cd4d3d62fa", + "value": " 1.69k/1.69k [00:00<00:00, 72.0kB/s]" + } + }, + "dda5aaa2c75a4ade9088f21c2df614d9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "912b150fa20a415c8d5e5d0f63ddeab5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9633d2a01238445aaa787802680f666e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e6b4768ffc4e43dc9e9978e3048e9560": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7938719f380046a3afb64fdeb0e6f7b5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f07575607b5142379c572b0d2859a01f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8f0fc0909de4401d9277c7cd4d3d62fa": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6e349bfc9f4643828f64b3835aa11e71": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5ae276dee6084ec794c8c54547c39875", + "IPY_MODEL_d862c64d967d4502b02ab57dc648474a", + "IPY_MODEL_4dadade114f649bb84bd3245db78829a" + ], + "layout": "IPY_MODEL_1b228494ac544dc6ad10de7164e5cab9" + } + }, + "5ae276dee6084ec794c8c54547c39875": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_aa1136948401479988b355417b5afd3a", + "placeholder": "​", + "style": "IPY_MODEL_ac57cf6d2ee94786be93c39bacd288c0", + "value": "Downloading readme: 100%" + } + }, + "d862c64d967d4502b02ab57dc648474a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_101a9188bebf4997bdbd81a1ba3d49cf", + "max": 4872, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_14d5a610583743b6af98ff3a1d30d717", + "value": 4872 + } + }, + "4dadade114f649bb84bd3245db78829a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f3f77136ea684efca4e0774bae1eb3f3", + "placeholder": "​", + "style": "IPY_MODEL_f82c24b096ea402da6597ead02b2f6fe", + "value": " 4.87k/4.87k [00:00<00:00, 61.0kB/s]" + } + }, + "1b228494ac544dc6ad10de7164e5cab9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aa1136948401479988b355417b5afd3a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac57cf6d2ee94786be93c39bacd288c0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "101a9188bebf4997bdbd81a1ba3d49cf": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14d5a610583743b6af98ff3a1d30d717": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f3f77136ea684efca4e0774bae1eb3f3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f82c24b096ea402da6597ead02b2f6fe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a2c3c8977a9e4c8bb6c0fe5cdcd3ceac": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_98d5729aa1674d239c286edd6bd75d4b", + "IPY_MODEL_3d20ff84da944f6fa1078228eee062ee", + "IPY_MODEL_6fcf5f5540bc419aa23fcb8be82bc777" + ], + "layout": "IPY_MODEL_0573bfba71bc4742a47112f4a664d14f" + } + }, + "98d5729aa1674d239c286edd6bd75d4b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a2aa3e788e1b4a16b113256294436c71", + "placeholder": "​", + "style": "IPY_MODEL_149a763e14f541d39d7153e1e1989921", + "value": "Downloading data: 100%" + } + }, + "3d20ff84da944f6fa1078228eee062ee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b44dbebc2aca42039964df60715022bd", + "max": 203415, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0159df9cab8844a29232e00311fb8fd7", + "value": 203415 + } + }, + "6fcf5f5540bc419aa23fcb8be82bc777": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a1decedbe7f9411b97f27e76b1d5539a", + "placeholder": "​", + "style": "IPY_MODEL_eeecf24c1ba64460a86c9dc141cf48c0", + "value": " 203k/203k [00:00<00:00, 948kB/s]" + } + }, + "0573bfba71bc4742a47112f4a664d14f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a2aa3e788e1b4a16b113256294436c71": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "149a763e14f541d39d7153e1e1989921": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b44dbebc2aca42039964df60715022bd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0159df9cab8844a29232e00311fb8fd7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a1decedbe7f9411b97f27e76b1d5539a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eeecf24c1ba64460a86c9dc141cf48c0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d0e5525f045f409287c8873153ef495c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9616f2fe8e4b4d59bb8e233089f18949", + "IPY_MODEL_84c8cdd28bb74cdca76b1aba43a326dc", + "IPY_MODEL_ac95b4de0957453e899fe3f461b4dfb9" + ], + "layout": "IPY_MODEL_e127270bbb834fe09dac3638574a0eae" + } + }, + "9616f2fe8e4b4d59bb8e233089f18949": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_250c97757de64dc59dfede5ea1f9c1b8", + "placeholder": "​", + "style": "IPY_MODEL_6f6e7f5c15bb4170bed7f1acedaa2868", + "value": "Generating train split: 100%" + } + }, + "84c8cdd28bb74cdca76b1aba43a326dc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_061c430fc36c47929e02ece94720b377", + "max": 5574, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f6f3e433ad6d46ed99a3a0cc26624760", + "value": 5574 + } + }, + "ac95b4de0957453e899fe3f461b4dfb9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_61039dd008c848bc91f67a11961236f2", + "placeholder": "​", + "style": "IPY_MODEL_ac902e290cdb46e7a76a9202dfbfeea6", + "value": " 5574/5574 [00:18<00:00, 6599.81 examples/s]" + } + }, + "e127270bbb834fe09dac3638574a0eae": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "250c97757de64dc59dfede5ea1f9c1b8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f6e7f5c15bb4170bed7f1acedaa2868": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "061c430fc36c47929e02ece94720b377": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6f3e433ad6d46ed99a3a0cc26624760": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "61039dd008c848bc91f67a11961236f2": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac902e290cdb46e7a76a9202dfbfeea6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "00ff5a79c3474438b9a2d3d5a613c38a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5b2a5d29ab18450990dff3d0038098e3", + "IPY_MODEL_586924ae3bed49f4bcc34b62b88015cc", + "IPY_MODEL_9185e41c357b4348a227a5dd2b02e17a" + ], + "layout": "IPY_MODEL_32d8bb3c116842eeb4b08eec26fa2dbe" + } + }, + "5b2a5d29ab18450990dff3d0038098e3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dfeff42101544ba5830e9cb4bfa11204", + "placeholder": "​", + "style": "IPY_MODEL_784b879d84b9412e933b4d1990991f52", + "value": "100%" + } + }, + "586924ae3bed49f4bcc34b62b88015cc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_469c46e6825446b6b205ba1a9e9b7d97", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b103284a69f64cf6908e494ec3b88b0c", + "value": 1 + } + }, + "9185e41c357b4348a227a5dd2b02e17a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cae316c7fd2b42b4901fe22cc07f6a28", + "placeholder": "​", + "style": "IPY_MODEL_767a6eb624374e0fbf51bf257cccc53b", + "value": " 1/1 [00:00<00:00, 14.12it/s]" + } + }, + "32d8bb3c116842eeb4b08eec26fa2dbe": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dfeff42101544ba5830e9cb4bfa11204": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "784b879d84b9412e933b4d1990991f52": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "469c46e6825446b6b205ba1a9e9b7d97": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b103284a69f64cf6908e494ec3b88b0c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cae316c7fd2b42b4901fe22cc07f6a28": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "767a6eb624374e0fbf51bf257cccc53b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dd1ec83063aa42faacf6e996dee95a58": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_563eb31845224d4093e9dc96cf57c445", + "IPY_MODEL_7ea724412ddf4fdaaf9c76f19c39ab34", + "IPY_MODEL_b1d74065386d454788fb573b7a01d73a" + ], + "layout": "IPY_MODEL_16d7dfccfd0c4801ba14eaa3640ea231" + } + }, + "563eb31845224d4093e9dc96cf57c445": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_91a0abd03d494b2699e8eb645ed7eda7", + "placeholder": "​", + "style": "IPY_MODEL_acfe963e793840f5af98d016c3a5be4d", + "value": "Downloading (…)solve/main/vocab.txt: 100%" + } + }, + "7ea724412ddf4fdaaf9c76f19c39ab34": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_12eecded77aa4c0b8270958c429c5e33", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e7eb4aa69ede435e911ccb4f6bb27eca", + "value": 231508 + } + }, + "b1d74065386d454788fb573b7a01d73a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7df4f48608fc4f3185771b93105584dc", + "placeholder": "​", + "style": "IPY_MODEL_1e5ffcf81cc649c3b9beacb8a7ab70c8", + "value": " 232k/232k [00:00<00:00, 935kB/s]" + } + }, + "16d7dfccfd0c4801ba14eaa3640ea231": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "91a0abd03d494b2699e8eb645ed7eda7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "acfe963e793840f5af98d016c3a5be4d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "12eecded77aa4c0b8270958c429c5e33": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e7eb4aa69ede435e911ccb4f6bb27eca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7df4f48608fc4f3185771b93105584dc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1e5ffcf81cc649c3b9beacb8a7ab70c8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1e464642d1a046eba08a6b5b94dfd060": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_02f6d5269ce6403b93301e1cc0810c2e", + "IPY_MODEL_93d7c900c84b488ba7fc0e801e8db5a7", + "IPY_MODEL_a0bc131511d941189e834a4c6eab91ad" + ], + "layout": "IPY_MODEL_585307a3684a47cc8f0bd1f92b682373" + } + }, + "02f6d5269ce6403b93301e1cc0810c2e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b2e8a810e8c54e6b99ef5f9597a20077", + "placeholder": "​", + "style": "IPY_MODEL_c61939fef83c4cb987192a3aaccc64fe", + "value": "Downloading (…)okenizer_config.json: 100%" + } + }, + "93d7c900c84b488ba7fc0e801e8db5a7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_412fe82e08214f89804c8d68a599ac78", + "max": 28, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d0b28111954e4a2abba91a096c19f06c", + "value": 28 + } + }, + "a0bc131511d941189e834a4c6eab91ad": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d5b8ded6476744a3b935d167d44b3b56", + "placeholder": "​", + "style": "IPY_MODEL_1f5be997bd8641afbd3e0534387fe378", + "value": " 28.0/28.0 [00:00<00:00, 895B/s]" + } + }, + "585307a3684a47cc8f0bd1f92b682373": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b2e8a810e8c54e6b99ef5f9597a20077": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c61939fef83c4cb987192a3aaccc64fe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "412fe82e08214f89804c8d68a599ac78": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d0b28111954e4a2abba91a096c19f06c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d5b8ded6476744a3b935d167d44b3b56": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1f5be997bd8641afbd3e0534387fe378": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "99e4648ab3bb4068afabf5bb441dbd43": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_52a54be01e8f48a180e966021b38a629", + "IPY_MODEL_c8c5f72bee734aeca1019c11bedf1b3b", + "IPY_MODEL_e302c57ba0a14ba8bed6825155dac372" + ], + "layout": "IPY_MODEL_a4c5260f6e89479088a3e22e48e2dfe3" + } + }, + "52a54be01e8f48a180e966021b38a629": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_38a5be06cf344b1ba233bcb4b380ef40", + "placeholder": "​", + "style": "IPY_MODEL_aebaeada4ced48058c2aeeb825b43d12", + "value": "Downloading (…)lve/main/config.json: 100%" + } + }, + "c8c5f72bee734aeca1019c11bedf1b3b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_67dd29a08bb549dfb8515bbb55a83c63", + "max": 570, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ca258a0856da4668a6efaae834984f1a", + "value": 570 + } + }, + "e302c57ba0a14ba8bed6825155dac372": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5b334b7e24224d0291c68a765bee7a83", + "placeholder": "​", + "style": "IPY_MODEL_ef04044742d64af2becb6fd4561c871e", + "value": " 570/570 [00:00<00:00, 16.1kB/s]" + } + }, + "a4c5260f6e89479088a3e22e48e2dfe3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "38a5be06cf344b1ba233bcb4b380ef40": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aebaeada4ced48058c2aeeb825b43d12": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "67dd29a08bb549dfb8515bbb55a83c63": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ca258a0856da4668a6efaae834984f1a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5b334b7e24224d0291c68a765bee7a83": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ef04044742d64af2becb6fd4561c871e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d92c1e0371f44bf1a09ab322f66e37af": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9fb44ba6139b41849d40fb5ac20301da", + "IPY_MODEL_81efef51b9d245bba85c978f34b4b945", + "IPY_MODEL_4db1c74d5d5b4ea3a9bf298a30f69dfe" + ], + "layout": "IPY_MODEL_9c1441d4a6594e1894af6554ea357453" + } + }, + "9fb44ba6139b41849d40fb5ac20301da": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90fd9ee5752a498bb1fe1e85469c86f5", + "placeholder": "​", + "style": "IPY_MODEL_ba8f4bb285154ca08194c4dc912b0d8f", + "value": "Downloading (…)"pytorch_model.bin";: 100%" + } + }, + "81efef51b9d245bba85c978f34b4b945": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dd2a99f30f4e403e89cde06b1acab3d4", + "max": 440473133, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_018f52dd2214404c85a53593f0e2ebc3", + "value": 440473133 + } + }, + "4db1c74d5d5b4ea3a9bf298a30f69dfe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d65dd677908d4e6c873291c59d94b729", + "placeholder": "​", + "style": "IPY_MODEL_5a2347b2bca94f798434ec43fbd41028", + "value": " 440M/440M [00:02<00:00, 249MB/s]" + } + }, + "9c1441d4a6594e1894af6554ea357453": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "90fd9ee5752a498bb1fe1e85469c86f5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba8f4bb285154ca08194c4dc912b0d8f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dd2a99f30f4e403e89cde06b1acab3d4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "018f52dd2214404c85a53593f0e2ebc3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d65dd677908d4e6c873291c59d94b729": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a2347b2bca94f798434ec43fbd41028": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Instalacja pakietów" + ], + "metadata": { + "id": "t2xXKpOpcZg_" + } + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fdpN7ugfauLD", + "outputId": "5140c905-6bcf-4a6c-979f-b927f224d1a5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", + "Collecting transformers\n", + " Downloading transformers-4.26.1-py3-none-any.whl (6.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.3/6.3 MB\u001b[0m \u001b[31m64.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting datasets\n", + " Downloading datasets-2.9.0-py3-none-any.whl (462 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m462.8/462.8 KB\u001b[0m \u001b[31m41.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (1.13.1+cu116)\n", + "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.21.6)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0)\n", + "Collecting huggingface-hub<1.0,>=0.11.0\n", + " Downloading huggingface_hub-0.12.1-py3-none-any.whl (190 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.3/190.3 KB\u001b[0m \u001b[31m24.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.9.0)\n", + "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n", + " Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m101.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (23.0)\n", + "Requirement already satisfied: dill<0.3.7 in /usr/local/lib/python3.8/dist-packages (from datasets) (0.3.6)\n", + "Requirement already satisfied: pyarrow>=6.0.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (9.0.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from datasets) (3.8.4)\n", + "Collecting responses<0.19\n", + " Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n", + "Collecting xxhash\n", + " Downloading xxhash-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.0/213.0 KB\u001b[0m \u001b[31m26.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting multiprocess\n", + " Downloading multiprocess-0.70.14-py38-none-any.whl (132 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.0/132.0 KB\u001b[0m \u001b[31m16.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (2023.1.0)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from datasets) (1.3.5)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch) (4.5.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.8.2)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.3)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (4.0.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (22.2.0)\n", + "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (3.0.1)\n", + "Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.24.3)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7)\n", + "Collecting urllib3<1.27,>=1.21.1\n", + " Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.6/140.6 KB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2022.7.1)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->datasets) (1.15.0)\n", + "Installing collected packages: tokenizers, xxhash, urllib3, multiprocess, responses, huggingface-hub, transformers, datasets\n", + " Attempting uninstall: urllib3\n", + " Found existing installation: urllib3 1.24.3\n", + " Uninstalling urllib3-1.24.3:\n", + " Successfully uninstalled urllib3-1.24.3\n", + "Successfully installed datasets-2.9.0 huggingface-hub-0.12.1 multiprocess-0.70.14 responses-0.18.0 tokenizers-0.13.2 transformers-4.26.1 urllib3-1.26.14 xxhash-3.2.0\n" + ] + } + ], + "source": [ + "!pip install transformers datasets torch" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Załadowanie pakietów" + ], + "metadata": { + "id": "s8cfdy_6ldCn" + } + }, + { + "cell_type": "code", + "source": [ + "from datasets import load_dataset\n", + "from transformers import BertTokenizer\n", + "import torch\n", + "from torch.utils.data import TensorDataset, random_split\n", + "from torch.utils.data import DataLoader, RandomSampler, SequentialSampler\n", + "from transformers import get_linear_schedule_with_warmup\n", + "import numpy as np\n", + "import time\n", + "import datetime\n", + "import random" + ], + "metadata": { + "id": "yLS_x9DIlgSs" + }, + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Załadowanie datasetu\n", + "sms_spam" + ], + "metadata": { + "id": "fPwDyJd5cdaE" + } + }, + { + "cell_type": "code", + "source": [ + "dataset = load_dataset(\"sms_spam\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 263, + "referenced_widgets": [ + "faaab551ac144913bdeb5a7d6f036285", + "a663f1f2ef884ad7b2ef87281f50b07c", + "9c7a0cd78fba490da413bc7083fc7a27", + "04529b4a3714492cb6b2a6a388929c85", + "3accb74af07c4fd6be92666a46bd9db9", + "ec974fdfc4f940a895186ae129442ec0", + "955da7fdb5ff4f539d707839110ad27a", + "e3f2f4acb97540ba93fcb56cb658cb6b", + "b1fad0c4a8694b88b1a9a3998b120289", + "90c3eca7bac44244b5ae12fe88d780dd", + "b291cc3d759c485aa2e65afb1c91fbd7", + "659bfbe1501d45bcbfc2fd4c8b9b51f0", + "d16034be81314b0ab22a57075520bd00", + "110f9ceef95345cbbe9b1cc908414dd2", + "c2fbae82bace49a59ef379157308e082", + "dda5aaa2c75a4ade9088f21c2df614d9", + "912b150fa20a415c8d5e5d0f63ddeab5", + "9633d2a01238445aaa787802680f666e", + "e6b4768ffc4e43dc9e9978e3048e9560", + "7938719f380046a3afb64fdeb0e6f7b5", + "f07575607b5142379c572b0d2859a01f", + "8f0fc0909de4401d9277c7cd4d3d62fa", + "6e349bfc9f4643828f64b3835aa11e71", + "5ae276dee6084ec794c8c54547c39875", + "d862c64d967d4502b02ab57dc648474a", + "4dadade114f649bb84bd3245db78829a", + "1b228494ac544dc6ad10de7164e5cab9", + "aa1136948401479988b355417b5afd3a", + "ac57cf6d2ee94786be93c39bacd288c0", + "101a9188bebf4997bdbd81a1ba3d49cf", + "14d5a610583743b6af98ff3a1d30d717", + "f3f77136ea684efca4e0774bae1eb3f3", + "f82c24b096ea402da6597ead02b2f6fe", + "a2c3c8977a9e4c8bb6c0fe5cdcd3ceac", + "98d5729aa1674d239c286edd6bd75d4b", + "3d20ff84da944f6fa1078228eee062ee", + "6fcf5f5540bc419aa23fcb8be82bc777", + "0573bfba71bc4742a47112f4a664d14f", + "a2aa3e788e1b4a16b113256294436c71", + "149a763e14f541d39d7153e1e1989921", + "b44dbebc2aca42039964df60715022bd", + "0159df9cab8844a29232e00311fb8fd7", + "a1decedbe7f9411b97f27e76b1d5539a", + "eeecf24c1ba64460a86c9dc141cf48c0", + "d0e5525f045f409287c8873153ef495c", + "9616f2fe8e4b4d59bb8e233089f18949", + "84c8cdd28bb74cdca76b1aba43a326dc", + "ac95b4de0957453e899fe3f461b4dfb9", + "e127270bbb834fe09dac3638574a0eae", + "250c97757de64dc59dfede5ea1f9c1b8", + "6f6e7f5c15bb4170bed7f1acedaa2868", + "061c430fc36c47929e02ece94720b377", + "f6f3e433ad6d46ed99a3a0cc26624760", + "61039dd008c848bc91f67a11961236f2", + "ac902e290cdb46e7a76a9202dfbfeea6", + "00ff5a79c3474438b9a2d3d5a613c38a", + "5b2a5d29ab18450990dff3d0038098e3", + "586924ae3bed49f4bcc34b62b88015cc", + "9185e41c357b4348a227a5dd2b02e17a", + "32d8bb3c116842eeb4b08eec26fa2dbe", + "dfeff42101544ba5830e9cb4bfa11204", + "784b879d84b9412e933b4d1990991f52", + "469c46e6825446b6b205ba1a9e9b7d97", + "b103284a69f64cf6908e494ec3b88b0c", + "cae316c7fd2b42b4901fe22cc07f6a28", + "767a6eb624374e0fbf51bf257cccc53b" + ] + }, + "id": "N1EWeM0KcYtO", + "outputId": "9fc3f675-a80c-4869-cfb5-160a2a25b6e2" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading builder script: 0%| | 0.00/3.21k [00:005,} test samples'.format(test_size))\n", + "print(\"Ratio: {}\\n\".format(check_class_balance(test_dataset)))\n", + "print('{:>5,} training samples'.format(train_size))\n", + "print(\"Ratio: {}\\n\".format(check_class_balance(train_dataset)))\n", + "print('{:>5,} validation samples'.format(val_size))\n", + "print(\"Ratio: {}\\n\".format(check_class_balance(val_dataset)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vH3yXhA0hT3n", + "outputId": "4fc01e6d-5f37-4fd0-f7d6-a6ba43e6875d" + }, + "execution_count": 23, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Spam to not spam messages ratio: 0.15475450590428838\n", + "\n", + "1,000 test samples\n", + "Ratio: 0.1792452830188679\n", + "\n", + "4,116 training samples\n", + "Ratio: 0.15100671140939598\n", + "\n", + " 458 validation samples\n", + "Ratio: 0.13647642679900746\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Create train and validation loaders" + ], + "metadata": { + "id": "z1hVsejihpO2" + } + }, + { + "cell_type": "code", + "source": [ + "batch_size = 32\n", + "\n", + "train_dataloader = DataLoader(\n", + " train_dataset,\n", + " sampler = RandomSampler(train_dataset),\n", + " batch_size = batch_size\n", + " )\n", + "\n", + "validation_dataloader = DataLoader(\n", + " val_dataset,\n", + " sampler = SequentialSampler(val_dataset),\n", + " batch_size = batch_size\n", + " )" + ], + "metadata": { + "id": "k4pXght6hre3" + }, + "execution_count": 24, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Device check" + ], + "metadata": { + "id": "MnErwHAbl_rF" + } + }, + { + "cell_type": "code", + "source": [ + "if torch.cuda.is_available(): \n", + " device = torch.device(\"cuda\")\n", + "\n", + " print('There are %d GPU(s) available.' % torch.cuda.device_count())\n", + " print('We will use the GPU:', torch.cuda.get_device_name(0))\n", + "\n", + "else:\n", + " print('No GPU available, using the CPU instead.')\n", + " device = torch.device(\"cpu\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aUvyBFxzmBUy", + "outputId": "24abe05a-2dd4-46ae-90ed-b0b775aecfc2" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "There are 1 GPU(s) available.\n", + "We will use the GPU: Tesla T4\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Custom BERT for classification\n", + "Compared to default BertForSequenceClassification - additional linear layer.\n", + "https://github.com/huggingface/transformers/blob/bd469c40659ce76c81f69c7726759d249b4aef49/src/transformers/models/bert/modeling_bert.py#L1506" + ], + "metadata": { + "id": "o-YrojT-iIfY" + } + }, + { + "cell_type": "code", + "source": [ + "from transformers import BertForSequenceClassification, BertConfig, BertModel\n", + "from torch import nn" + ], + "metadata": { + "id": "GlTdPmbxtMPI" + }, + "execution_count": 27, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# in original model - no custom head just linear layer\n", + "# self.classifier = nn.Linear(config.hidden_size, config.num_labels)\n", + "\n", + "class BertClassificationHeadCustom(nn.Module):\n", + " def __init__(self, config):\n", + " super().__init__()\n", + " self.dense_1 = nn.Linear(config.hidden_size, config.hidden_size)\n", + " self.dense_2 = nn.Linear(config.hidden_size, config.num_labels)\n", + "\n", + " def forward(self, x):\n", + " x = self.dense_1(x)\n", + " x = torch.relu(x)\n", + "\n", + " x = self.dense_2(x)\n", + " x = torch.relu(x)\n", + " return x\n", + "\n", + "\n", + "class BertForSequenceClassificationCustom(BertForSequenceClassification):\n", + " def __init__(self, config):\n", + " super().__init__(config)\n", + " self.num_labels = config.num_labels\n", + " self.config = config\n", + "\n", + " self.bert = BertModel(config)\n", + " classifier_dropout = (\n", + " config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob\n", + " )\n", + " self.dropout = nn.Dropout(classifier_dropout)\n", + " self.classifier = BertClassificationHeadCustom(config)\n", + "\n", + " # Initialize weights and apply final processing\n", + " self.post_init()\n", + "\n", + "\n", + "\n", + "model = BertForSequenceClassificationCustom.from_pretrained(\n", + " \"bert-base-uncased\",\n", + " num_labels = 2,\n", + " output_attentions = False,\n", + " output_hidden_states = False,\n", + ")\n", + "\n", + "model.cuda()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "d92c1e0371f44bf1a09ab322f66e37af", + "9fb44ba6139b41849d40fb5ac20301da", + "81efef51b9d245bba85c978f34b4b945", + "4db1c74d5d5b4ea3a9bf298a30f69dfe", + "9c1441d4a6594e1894af6554ea357453", + "90fd9ee5752a498bb1fe1e85469c86f5", + "ba8f4bb285154ca08194c4dc912b0d8f", + "dd2a99f30f4e403e89cde06b1acab3d4", + "018f52dd2214404c85a53593f0e2ebc3", + "d65dd677908d4e6c873291c59d94b729", + "5a2347b2bca94f798434ec43fbd41028" + ] + }, + "id": "sIP3VGZmiK9s", + "outputId": "bc2ef8ba-1a9d-4d83-fc07-82d09d188630" + }, + "execution_count": 28, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading (…)\"pytorch_model.bin\";: 0%| | 0.00/440M [00:005,} of {:>5,}. Elapsed: {:}.'.format(step, len(train_dataloader), elapsed))\n", + "\n", + " b_input_ids = batch[0].to(device)\n", + " b_input_mask = batch[1].to(device)\n", + " b_labels = batch[2].to(device)\n", + "\n", + " model.zero_grad() \n", + "\n", + " outputs = model(b_input_ids, \n", + " token_type_ids=None, \n", + " attention_mask=b_input_mask, \n", + " labels=b_labels)\n", + "\n", + " loss = outputs['loss']\n", + " total_train_loss += loss.item()\n", + "\n", + " loss.backward()\n", + " torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)\n", + "\n", + " optimizer.step()\n", + " scheduler.step()\n", + "\n", + " avg_train_loss = total_train_loss / len(train_dataloader) \n", + " training_time = format_time(time.time() - t0)\n", + "\n", + " print(\"\")\n", + " print(\" Average training loss: {0:.2f}\".format(avg_train_loss))\n", + " print(\" Training epcoh took: {:}\".format(training_time))\n", + " \n", + " # ========================================\n", + " # Validation\n", + " # ========================================\n", + "\n", + " print(\"\")\n", + " print(\"Running Validation...\")\n", + "\n", + " t0 = time.time()\n", + " model.eval()\n", + "\n", + " total_eval_accuracy = 0\n", + " total_eval_loss = 0\n", + " nb_eval_steps = 0\n", + "\n", + " for batch in validation_dataloader:\n", + " b_input_ids = batch[0].to(device)\n", + " b_input_mask = batch[1].to(device)\n", + " b_labels = batch[2].to(device)\n", + " \n", + " with torch.no_grad(): \n", + " outputs = model(b_input_ids, \n", + " token_type_ids=None, \n", + " attention_mask=b_input_mask,\n", + " labels=b_labels)\n", + " loss = outputs['loss']\n", + " logits = outputs['logits']\n", + " \n", + " total_eval_loss += loss.item()\n", + "\n", + " logits = logits.detach().cpu().numpy()\n", + " label_ids = b_labels.to('cpu').numpy()\n", + "\n", + " total_eval_accuracy += flat_accuracy(logits, label_ids)\n", + " \n", + "\n", + " avg_val_accuracy = total_eval_accuracy / len(validation_dataloader)\n", + " print(\" Accuracy: {0:.2f}\".format(avg_val_accuracy))\n", + "\n", + " avg_val_loss = total_eval_loss / len(validation_dataloader)\n", + " validation_time = format_time(time.time() - t0)\n", + " \n", + " print(\" Validation Loss: {0:.2f}\".format(avg_val_loss))\n", + " print(\" Validation took: {:}\".format(validation_time))\n", + "\n", + " training_stats.append(\n", + " {\n", + " 'epoch': epoch_i + 1,\n", + " 'Training Loss': avg_train_loss,\n", + " 'Valid. Loss': avg_val_loss,\n", + " 'Valid. Accur.': avg_val_accuracy,\n", + " 'Training Time': training_time,\n", + " 'Validation Time': validation_time\n", + " }\n", + " )\n", + "\n", + "print(\"\")\n", + "print(\"Training complete!\")\n", + "\n", + "print(\"Total training took {:} (h:mm:ss)\".format(format_time(time.time()-total_t0)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QZ9H2EJNksT_", + "outputId": "ad4bce2c-b443-4fe7-fdf2-99d678821d46" + }, + "execution_count": 31, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "======== Epoch 1 / 4 ========\n", + "Training...\n", + " Batch 40 of 129. Elapsed: 0:00:48.\n", + " Batch 80 of 129. Elapsed: 0:01:35.\n", + " Batch 120 of 129. Elapsed: 0:02:23.\n", + "\n", + " Average training loss: 0.13\n", + " Training epcoh took: 0:02:34\n", + "\n", + "Running Validation...\n", + " Accuracy: 0.98\n", + " Validation Loss: 0.08\n", + " Validation took: 0:00:06\n", + "\n", + "======== Epoch 2 / 4 ========\n", + "Training...\n", + " Batch 40 of 129. Elapsed: 0:00:49.\n", + " Batch 80 of 129. Elapsed: 0:01:38.\n", + " Batch 120 of 129. Elapsed: 0:02:27.\n", + "\n", + " Average training loss: 0.03\n", + " Training epcoh took: 0:02:38\n", + "\n", + "Running Validation...\n", + " Accuracy: 0.99\n", + " Validation Loss: 0.06\n", + " Validation took: 0:00:06\n", + "\n", + "======== Epoch 3 / 4 ========\n", + "Training...\n", + " Batch 40 of 129. Elapsed: 0:00:49.\n", + " Batch 80 of 129. Elapsed: 0:01:37.\n", + " Batch 120 of 129. Elapsed: 0:02:26.\n", + "\n", + " Average training loss: 0.01\n", + " Training epcoh took: 0:02:37\n", + "\n", + "Running Validation...\n", + " Accuracy: 0.99\n", + " Validation Loss: 0.06\n", + " Validation took: 0:00:06\n", + "\n", + "======== Epoch 4 / 4 ========\n", + "Training...\n", + " Batch 40 of 129. Elapsed: 0:00:49.\n", + " Batch 80 of 129. Elapsed: 0:01:37.\n", + " Batch 120 of 129. Elapsed: 0:02:26.\n", + "\n", + " Average training loss: 0.01\n", + " Training epcoh took: 0:02:36\n", + "\n", + "Running Validation...\n", + " Accuracy: 0.99\n", + " Validation Loss: 0.06\n", + " Validation took: 0:00:06\n", + "\n", + "Training complete!\n", + "Total training took 0:10:50 (h:mm:ss)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Train summary" + ], + "metadata": { + "id": "eZ1fmJMjrRgc" + } + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "\n", + "pd.set_option('precision', 2)\n", + "df_stats = pd.DataFrame(data=training_stats)\n", + "\n", + "df_stats = df_stats.set_index('epoch')\n", + "df_stats" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "id": "w4ov2mClrLGW", + "outputId": "b574eb2f-90ff-47b2-ac8f-99682c9b938d" + }, + "execution_count": 32, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Training Loss Valid. Loss Valid. Accur. Training Time Validation Time\n", + "epoch \n", + "1 1.26e-01 0.08 0.98 0:02:34 0:00:06\n", + "2 2.58e-02 0.06 0.99 0:02:38 0:00:06\n", + "3 1.26e-02 0.06 0.99 0:02:37 0:00:06\n", + "4 9.73e-03 0.06 0.99 0:02:36 0:00:06" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Training LossValid. LossValid. Accur.Training TimeValidation Time
epoch
11.26e-010.080.980:02:340:00:06
22.58e-020.060.990:02:380:00:06
31.26e-020.060.990:02:370:00:06
49.73e-030.060.990:02:360:00:06
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 32 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "import seaborn as sns\n", + "\n", + "sns.set(style='darkgrid')\n", + "\n", + "sns.set(font_scale=1.5)\n", + "plt.rcParams[\"figure.figsize\"] = (12,6)\n", + "\n", + "plt.plot(df_stats['Training Loss'], 'b-o', label=\"Training\")\n", + "plt.plot(df_stats['Valid. Loss'], 'g-o', label=\"Validation\")\n", + "\n", + "plt.title(\"Training & Validation Loss\")\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.legend()\n", + "plt.xticks([1, 2, 3, 4])\n", + "\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 427 + }, + "id": "4Jg3MOeZrTf9", + "outputId": "bb270a48-8d19-4854-a074-2845da4ee513" + }, + "execution_count": 33, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvAAAAGaCAYAAABpIXfbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd0BTV/sH8G9CCHsPQbYgQ5Zo3bRWXLgX7jpbR6u2P61vq6+127avtXXU6ttaW611Czhx4mi1jqLWyVBwoYAIMmUkJL8/KHmNoAYI3IDfzz9tzr3n3ieB0z65POcckVKpVIKIiIiIiBoEsdABEBERERGR5pjAExERERE1IEzgiYiIiIgaECbwREREREQNCBN4IiIiIqIGhAk8EREREVEDwgSeiF54qamp8PHxwXfffVfja8yZMwc+Pj5ajKrxetrn7ePjgzlz5mh0je+++w4+Pj5ITU3VenxRUVHw8fHB6dOntX5tIiJtkAgdABHRk6qTCMfGxsLZ2bkOo2l4Hj16hP/+97+IiYnB/fv3YW1tjdatW+Ott96Cp6enRtd4++23sX//fmzfvh1+fn5VnqNUKtG1a1fk5eXh+PHjMDQ01ObbqFOnT5/GmTNnMG7cOJibmwsdTiWpqano2rUrRo8ejQ8//FDocIhIxzCBJyKds3DhQrXXZ8+exebNmzF8+HC0bt1a7Zi1tXWt7+fk5ISLFy9CT0+vxtf47LPP8Mknn9Q6Fm344IMPsGfPHvTt2xdt27ZFZmYmDh8+jAsXLmicwEdERGD//v2IjIzEBx98UOU5p06dwt27dzF8+HCtJO8XL16EWFw/fxg+c+YMli9fjkGDBlVK4AcMGIA+ffpAX1+/XmIhIqouJvBEpHMGDBig9rqsrAybN29Gy5YtKx17UkFBAUxNTat1P5FIBAMDg2rH+ThdSfaKioqwb98+hIaG4ptvvlG1T58+HaWlpRpfJzQ0FI6Ojti1axfee+89SKXSSudERUUBKE/2taG2PwNt0dPTq9WXOSKiusYaeCJqsMLCwjBmzBhcvXoVr7/+Olq3bo3+/fsDKE/kFy9ejKFDh6Jdu3YICAhA9+7dsWjRIhQVFaldp6qa7Mfbjhw5giFDhiAwMBChoaH4z3/+A7lcrnaNqmrgK9ry8/Px0UcfoUOHDggMDMSIESNw4cKFSu/n4cOHmDt3Ltq1a4eQkBCMHTsWV69exZgxYxAWFqbRZyISiSASiar8QlFVEv40YrEYgwYNQk5ODg4fPlzpeEFBAQ4cOABvb28EBQVV6/N+mqpq4BUKBX744QeEhYUhMDAQffv2xc6dO6vsn5ycjI8//hh9+vRBSEgIgoODMXjwYGzdulXtvDlz5mD58uUAgK5du8LHx0ft5/+0Gvjs7Gx88skn6Ny5MwICAtC5c2d88sknePjwodp5Ff1PnjyJ1atXo1u3bggICEDPnj0RHR2t0WdRHQkJCZg2bRratWuHwMBA9O7dG6tWrUJZWZnaeWlpaZg7dy66dOmCgIAAdOjQASNGjFCLSaFQYM2aNejXrx9CQkLQqlUr9OzZE//+978hk8m0HjsR1QyfwBNRg3bv3j2MGzcO4eHh6NGjBx49egQAyMjIwLZt29CjRw/07dsXEokEZ86cwU8//YT4+HisXr1ao+sfO3YMGzZswIgRIzBkyBDExsbi559/hoWFBaZOnarRNV5//XVYW1tj2rRpyMnJwS+//ILJkycjNjZW9deC0tJSTJgwAfHx8Rg8eDACAwORmJiICRMmwMLCQuPPw9DQEAMHDkRkZCR2796Nvn37atz3SYMHD8bKlSsRFRWF8PBwtWN79uxBcXExhgwZAkB7n/eTvvzyS/z6669o06YNxo8fj6ysLHz66adwcXGpdO6ZM2cQFxeHV199Fc7Ozqq/RnzwwQfIzs7GlClTAADDhw9HQUEBDh48iLlz58LKygrAs+de5OfnY+TIkbh16xaGDBmCFi1aID4+Hhs3bsSpU6ewdevWSn/5Wbx4MYqLizF8+HBIpVJs3LgRc+bMgaura6VSsJq6dOkSxowZA4lEgtGjR8PW1hZHjhzBokWLkJCQoPorjFwux4QJE5CRkYFRo0bB3d0dBQUFSExMRFxcHAYNGgQAWLlyJZYtW4YuXbpgxIgR0NPTQ2pqKg4fPozS0lKd+UsT0QtPSUSk4yIjI5Xe3t7KyMhItfYuXboovb29lVu2bKnUp6SkRFlaWlqpffHixUpvb2/lhQsXVG137txRent7K5ctW1apLTg4WHnnzh1Vu0KhUPbp00fZqVMnteu+//77Sm9v7yrbPvroI7X2mJgYpbe3t3Ljxo2qtt9++03p7e2tXLFihdq5Fe1dunSp9F6qkp+fr5w0aZIyICBA2aJFC+WePXs06vc0Y8eOVfr5+SkzMjLU2ocNG6b09/dXZmVlKZXK2n/eSqVS6e3trXz//fdVr5OTk5U+Pj7KsWPHKuVyuar98uXLSh8fH6W3t7faz6awsLDS/cvKypSvvfaaslWrVmrxLVu2rFL/ChW/b6dOnVK1ffvtt0pvb2/lb7/9pnZuxc9n8eLFlfoPGDBAWVJSompPT09X+vv7K2fOnFnpnk+q+Iw++eSTZ543fPhwpZ+fnzI+Pl7VplAolG+//bbS29tb+eeffyqVSqUyPj5e6e3trfzxxx+feb2BAwcqe/Xq9dz4iEhYLKEhogbN0tISgwcPrtQulUpVTwvlcjlyc3ORnZ2Njh07AkCVJSxV6dq1q9oqNyKRCO3atUNmZiYKCws1usb48ePVXrdv3x4AcOvWLVXbkSNHoKenh7Fjx6qdO3ToUJiZmWl0H4VCgXfeeQcJCQnYu3cvXnnlFcyePRu7du1SO2/+/Pnw9/fXqCY+IiICZWVl2L59u6otOTkZf//9N8LCwlSTiLX1eT8uNjYWSqUSEyZMUKtJ9/f3R6dOnSqdb2xsrPr3kpISPHz4EDk5OejUqRMKCgqQkpJS7RgqHDx4ENbW1hg+fLha+/Dhw2FtbY1Dhw5V6jNq1Ci1sqUmTZrAw8MDN2/erHEcj8vKysL58+cRFhYGX19fVbtIJMKbb76pihuA6nfo9OnTyMrKeuo1TU1NkZGRgbi4OK3ESER1gyU0RNSgubi4PHXC4fr167Fp0yZcv34dCoVC7Vhubq7G13+SpaUlACAnJwcmJibVvkZFyUZOTo6qLTU1Ffb29pWuJ5VK4ezsjLy8vOfeJzY2FsePH8fXX38NZ2dnLF26FNOnT8d7770HuVyuKpNITExEYGCgRjXxPXr0gLm5OaKiojB58mQAQGRkJACoymcqaOPzftydO3cAAM2aNat0zNPTE8ePH1drKywsxPLly7F3716kpaVV6qPJZ/g0qampCAgIgESi/r9NiUQCd3d3XL16tVKfp/3u3L17t8ZxPBkTAHh5eVU61qxZM4jFYtVn6OTkhKlTp+LHH39EaGgo/Pz80L59e4SHhyMoKEjVb9asWZg2bRpGjx4Ne3t7tG3bFq+++ip69uxZrTkURFS3mMATUYNmZGRUZfsvv/yCr776CqGhoRg7dizs7e2hr6+PjIwMzJkzB0qlUqPrP2s1ktpeQ9P+mqqYdNmmTRsA5cn/8uXL8eabb2Lu3LmQy+Xw9fXFhQsXsGDBAo2uaWBggL59+2LDhg04d+4cgoODsXPnTjg4OODll19Wnaetz7s23n33XRw9ehTDhg1DmzZtYGlpCT09PRw7dgxr1qyp9KWirtXXkpiamjlzJiIiInD06FHExcVh27ZtWL16Nd544w3861//AgCEhITg4MGDOH78OE6fPo3Tp09j9+7dWLlyJTZs2KD68kpEwmICT0SN0o4dO+Dk5IRVq1apJVK///67gFE9nZOTE06ePInCwkK1p/AymQypqakabTZU8T7v3r0LR0dHAOVJ/IoVKzB16lTMnz8fTk5O8Pb2xsCBAzWOLSIiAhs2bEBUVBRyc3ORmZmJqVOnqn2udfF5VzzBTklJgaurq9qx5ORktdd5eXk4evQoBgwYgE8//VTt2J9//lnp2iKRqNqx3LhxA3K5XO0pvFwux82bN6t82l7XKkq7rl+/XulYSkoKFApFpbhcXFwwZswYjBkzBiUlJXj99dfx008/YeLEibCxsQEAmJiYoGfPnujZsyeA8r+sfPrpp9i2bRveeOONOn5XRKQJ3Xo8QESkJWKxGCKRSO3Jr1wux6pVqwSM6unCwsJQVlaGX3/9Va19y5YtyM/P1+ganTt3BlC++snj9e0GBgb49ttvYW5ujtTUVPTs2bNSKciz+Pv7w8/PDzExMVi/fj1EIlGltd/r4vMOCwuDSCTCL7/8orYk4pUrVyol5RVfGp580n///v1Ky0gC/6uX17S0p1u3bsjOzq50rS1btiA7OxvdunXT6DraZGNjg5CQEBw5cgRJSUmqdqVSiR9//BEA0L17dwDlq+g8uQykgYGBqjyp4nPIzs6udB9/f3+1c4hIeHwCT0SNUnh4OL755htMmjQJ3bt3R0FBAXbv3l2txLU+DR06FJs2bcKSJUtw+/Zt1TKS+/btg5ubW6V156vSqVMnREREYNu2bejTpw8GDBgABwcH3LlzBzt27ABQnox9//338PT0RK9evTSOLyIiAp999hn++OMPtG3bttKT3br4vD09PTF69Gj89ttvGDduHHr06IGsrCysX78evr6+anXnpqam6NSpE3bu3AlDQ0MEBgbi7t272Lx5M5ydndXmGwBAcHAwAGDRokXo168fDAwM0Lx5c3h7e1cZyxtvvIF9+/bh008/xdWrV+Hn54f4+Hhs27YNHh4edfZk+vLly1ixYkWldolEgsmTJ2PevHkYM2YMRo8ejVGjRsHOzg5HjhzB8ePH0bdvX3To0AFAeXnV/Pnz0aNHD3h4eMDExASXL1/Gtm3bEBwcrErke/fujZYtWyIoKAj29vbIzMzEli1boK+vjz59+tTJeySi6tPN/5MREdXS66+/DqVSiW3btmHBggWws7NDr169MGTIEPTu3Vvo8CqRSqVYu3YtFi5ciNjYWOzduxdBQUFYs2YN5s2bh+LiYo2us2DBArRt2xabNm3C6tWrIZPJ4OTkhPDwcEycOBFSqRTDhw/Hv/71L5iZmSE0NFSj6/br1w8LFy5ESUlJpcmrQN193vPmzYOtrS22bNmChQsXwt3dHR9++CFu3bpVaeLo119/jW+++QaHDx9GdHQ03N3dMXPmTEgkEsydO1ft3NatW2P27NnYtGkT5s+fD7lcjunTpz81gTczM8PGjRuxbNkyHD58GFFRUbCxscGIESMwY8aMau/+q6kLFy5UuYKPVCrF5MmTERgYiE2bNmHZsmXYuHEjHj16BBcXF8yePRsTJ05Une/j44Pu3bvjzJkz2LVrFxQKBRwdHTFlyhS18yZOnIhjx45h3bp1yM/Ph42NDYKDgzFlyhS1lW6ISFgiZX3MLCIiohopKytD+/btERQUVOPNkIiIqHFhDTwRkY6o6in7pk2bkJeXV+W650RE9GJiCQ0RkY744IMPUFpaipCQEEilUpw/fx67d++Gm5sbhg0bJnR4RESkI1hCQ0SkI7Zv347169fj5s2bePToEWxsbNC5c2e88847sLW1FTo8IiLSEUzgiYiIiIgaENbAExERERE1IEzgiYiIiIgaEE5iraaHDwuhUNR/1ZGNjSmysgrq/b5EDQ3HCpFmOFaINCPEWBGLRbCyMnnqcSbw1aRQKAVJ4CvuTUTPx7FCpBmOFSLN6NpYYQkNEREREVEDwgSeiIiIiKgBYQJPRERERNSAMIEnIiIiImpAmMATERERETUgXIWGiIiISAuKigpRUJCLsjKZ0KGQFt2/L4ZCodDa9fT09GFqagEjo6cvE/k8TOCJiIiIakkmK0V+/kNYWtpCX98AIpFI6JBISyQSMeRy7STwSqUSMlkJcnIeQCLRh76+tEbXYQkNERERUS3l5+fA1NQCUqkhk3d6KpFIBKnUECYmFigoyKnxdZjAExEREdWSXF4KAwMjocOgBsLQ0AgyWWmN+7OERsedvJKOqGPJyM4rgbW5AQZ39kQHfwehwyIiIqLHKBRlEIv1hA6DGgixWA8KRVmN+zOB12Enr6Rj7d4ElP5Td5WVV4K1exMAgEk8ERGRjmHpDGmqtr8rLKHRYVHHklXJe4VSuQJRx5IFioiIiIiIhMYEXodl5ZVUq52IiIiooZk+fTKmT59c730bMpbQ6DAbc4Mqk3UbcwMBoiEiIqIXSWjoSxqdt3XrTjg6Nq3jaOhxTOB12ODOnmo18AAgAtC/k4dwQREREdELYf78T9Veb9myERkZaZgxY5Zau6WlVa3us3jx94L0bciYwOuwiomqFavQmBrrI/+RDFdvPURokCMnyxAREVGd6dmzt9rro0djkZubU6n9ScXFxTA0NNT4Pvr6+jWKr7Z9GzIm8Dqug78DOvg7wM7ODJmZ+dhz8iYij6XAw8EMPdq6Ch0eERERvcCmT5+MgoICvPfev/Hdd4uRmJiA0aPH4vXXp+CPP45i585oJCUlIi8vF3Z29ujdux/GjJkAPT09tWsAwPLlPwIAzp2Lw9tvT8WCBQtx40YKtm+PRF5eLgIDg/Gvf/0bzs4uWukLAJGRW7Bp03pkZT2Ap6cnpk+fiVWrVqpdUxcxgW9gerd3w820fGw5kgyXJmbwc6vdn62IiIhIN1XsBZOVVwIbHd4LJifnId57byZ69AhHeHgfNGlSHmNMzG4YGRlj+PDRMDY2wtmzcfjpp/+isLAQ06a989zrrl27GmKxHkaNGov8/Dxs3LgOn3zyAVatWquVvtHR27B48UK0bNkKw4ePRFpaGubOnQ0zMzPY2dnX/AOpB0zgGxiRSISJffzw+a9xWLn9Mj4a3wY2Fpr/mYqIiIh0X0PaC+bBg0zMmTMfffsOUGv/+OPPYWDwvxxl4MAIfP31F4iO3opJk96EVCp95nXlcjl+/nktJJLydNXc3AJLly5CSsp1NGvmVau+MpkMP/20Ev7+gViyZIXqPC+v5liw4GMm8KR9RgYSTB8ciM9/jcP30Zcw97VW0Jdw9zciIiJdc+JSGo5fTKt2v+R7uZCXKdXaSuUK/BITj9//vlft64UGOaJToGO1+2nC0NAQ4eF9KrU/nrw/elSI0lIZgoNDsGNHFG7duonmzb2fed0+ffqrEmsACA5uCQC4d+/ucxP45/VNSLiK3NxcvPXWILXzuncPx7Jl3z7z2rqACXwD5Whjgjf6tsB3kZfw6/5ETOztx0mtREREjcSTyfvz2oVkZ2evlgRXSElJxqpVK3Hu3F8oLCxUO1ZYWPDc61aU4lQwMzMHAOTn59e6b3p6+ZeqJ2viJRIJHB3r5ouONgmawJeWlmLp0qXYsWMH8vLy4Ovri5kzZ6JDhw7P7Hfx4kVERUXh4sWLSEpKgkwmQ2JiYqXzkpOTERkZiRMnTuD27dswMTGBv78/3n77bfj7+9fV26o3Ic3t0L+TO3aeuAkPR3OEtXIWOiQiIiJ6TKfAmj35/teKE0/dC+b90a20EZrWPP6kvUJ+fj5mzJgMY2NTvP76VDg5OUMqlSIpKQErV34HhUJRxZXUicVVVxcolc//ElObvg2BoDuxzpkzB2vXrkX//v0xb948iMViTJo0CefPn39mv2PHjmHr1q0AABcXl6eet23bNmzduhUBAQGYM2cOxo8fj5SUFAwbNgynTp3S6nsRSv9QDwR52mDjoWu4lpojdDhERESkBYM7e0IqUU/TpBIxBnf2FCii6jl//ixyc3Mxb95HGDZsJDp1ehlt2rRTPQkXmoND+Zeq1NQ7au1yuRxpadUveapvgiXwFy9exJ49ezB79my89957GD58ONauXQtHR0csWrTomX1HjhyJs2fPIioqCqGhoU89r0+fPjh69CgWLFiA4cOH44033sCWLVtgbm6O779vHAv/i0UiTO7XAjYWhlgRfRkP8yt/WyciIqKGpYO/A8b18lXtvm5jboBxvXx1bgLr04jF5Snm40+8ZTIZoqO3ChWSGl/fFrCwsMDOndGQy+Wq9oMH9yE/P0/AyDQjWAnNvn37oK+vj6FDh6raDAwMEBERgcWLF+P+/fuwt696BrCtra1G9wgICKjUZmVlhZdeeglnz56tWeA6yNhQHzMGB+LzX89ixfZLeH9UK0j0BP3jChEREdVSxV4wDVFgYBDMzMyxYMHHiIgYDpFIhP37Y6ArFSz6+vqYOHEyFi/+Gv/3f2+hS5euSEtLw969u+Dk5Kzz8woFy/Li4+Ph4eEBExMTtfagoCAolUrEx8fX2b0zMzNhZdW41k93sjPFxD5+SL6bhw2HrgkdDhEREb3ALCwssXDhYtjY2GLVqpXYuPE3vPRSO7z11ttCh6YyZMhw/N//zUZ6ehq+/34pLlw4j6+++hampmaQSg2EDu+ZBHsCn5mZiSZNmlRqt7OzAwDcv3+/Tu4bFxeHv//+G9OnT6+T6wupja89brZzxd7Tt+HhYIaXg5sKHRIRERE1El9++U2ltmftVhoYGIwffvilUvvx43HPvEarVi9VOgcAHB2barUvAEREjEBExAjVa4VCgbS0e/D29qniHekOwRL44uJi6OvrV2o3MCj/xlNSov1a7qysLLz77rtwdXXFxIkTa3QNGxtTLUelOTs7s+eeMyWiJdIeFmHdgSQEeNvD27Vx/aWBSBOajBUi4ljRpvv3xZBIWL7akJSUlKjyzgq7d+9GXl4uWrd+Se3nWRc/W7FYXOMxKFgCb2hoCJlMVqm9InF/8gOtrUePHmHKlCkoKirC6tWrYWxsXKPrZGUVQKGo/wIuOzszZGY+f91TAJjYyxefrvkLn/98Gh+NbwNzk2fvdEbUmFRnrBC9yDhWtEuhUEAuf/7SiKQ7zp07h5Urv8Orr4bB3NwCSUkJ2LNnJ5o180Tnzl1VP0+JRFwnP1uFQvHUMSgWi5750Fiwr4p2dnZVlslkZmYCwFMnsNZEaWkpZsyYgaSkJKxYsQJeXs/evauhMzXSx7RBgSgokmHl9suQl/E/KERERESPa9rUCba2dti2bTOWLPkax4//jvDwPli6dGWVVSK6RLAn8L6+vli3bh0KCwvVJrJeuHBBdVwbFAoF3n//fZw8eRLLli3DSy+9pJXr6jo3BzOMD/fFqt1XsfVIMkZ2ay50SEREREQ6w8nJGQsXLhY6jBoR7Al8eHg4ZDKZakMmoPxJeVRUFFq1aqWa4Hrv3j0kJyfX+D6fffYZYmJi8NFHH6Fbt261jrsh6RDggG4vOeNg3B2cvJIudDhEREREpAWCPYEPDg5GeHg4Fi1ahMzMTLi6uiI6Ohr37t3Dl19+qTrv/fffx5kzZ5CYmKhqu3v3Lnbs2AEAuHTpEgBgxYoVAMqf3IeFhQEA1qxZgw0bNiAkJASGhoaqPhUGDBhQp+9RFwzr4oU7GQVYuzcBTrYmcG3CCUtEREREDZlgCTwALFy4EEuWLMGOHTuQm5sLHx8f/Pjjj2jduvUz+6WmpmLp0qVqbRWvBw0apErgExISAADnz5/H+fPnK13nRUjgJXpiTB0YgE/X/IXlUZfw4fg2MDXS7bouIiIiIno6kVKpK3tiNQwNYRWaqqTcy8NX68/Cx9UKM4cGQyzW7R3GiGqKK2sQaYZjRbvS02/BwcFN6DCoDtTVKjTP+p3R2VVoqH41a2qO13r44MqNbET9niJ0OERERERUQ0zgXyCvBDfFqy2bIubULcQl1M1Ot0RERERUt5jAv2BGdvOGp5M5Vu+Jx93MAqHDISIiIqJqYgL/gtGXiPHWwEAYSvWwPOoSHhVX3g2XiIiISNtiYnYhNPQlpKXdU7VFRPTDggUf16hvbZ07F4fQ0Jdw7lyc1q5ZX5jAv4CszAzw5sAAPMgtxqpdV6HgPGYiIiJ6wnvvzUS3bqEoKip66jmzZk1Hz56dUVJSUo+RVc+hQ/uxZcsGocPQKibwLyhvF0uM6NocF5KzsPP4DaHDISIiIh3TvXtPFBcX4/jxY1Uef/gwG2fP/oVXXukCAwODGt1jw4ZIvP/+B7UJ87liYw9gy5aNldpbtmyF2NgTaNmyVZ3evy4wgX+BhbVyQqdAB+w8cRN/X3sgdDhERESkQ15++VUYGRnj0KH9VR4/fPgQysrK0KNHeI3vIZVKIZEIsy2RWCyGgYEBxOKGlw4LupETCUskEmFsTx+kZhZi1e4rmD+uDRysjYUOi4iIiHSAoaEhXn65M44cOYS8vDyYm5urHT90aD9sbGzg4uKGRYu+wtmzZ5CRkQFDQ0O0avUSpk17B46OTZ95j4iIfggJaY158z5WtaWkJGPJkq9x+fIlWFhYYMCAwbC1tavU948/jmLnzmgkJSUiLy8Xdnb26N27H8aMmQA9PT0AwPTpk/H33+cAAKGhLwEAHBwcsW3bLpw7F4e3356KZcv+i1atXlJdNzb2AH77bQ1u3boJY2MTvPzyK5gyZQYsLS1V50yfPhkFBQX48MNP8e23CxEffwVmZuYYOnQERo8eV70PugaYwL/g9CV6mD4oEJ+s+QvfRV7EB2NfgpEBfy2IiIiEdib9HHYm78PDkhxYGViiv2c42jrUb7lH9+7hOHBgL44ejUX//oNU7enpabh8+SIiIkYgPv4KLl++iG7desLOzh5pafewfXskZsyYgt9+2wpDQ0ON75eV9QBvvz0VCoUCr702DoaGRti5M7rKEp2YmN0wMjLG8OGjYWxshLNn4/DTT/9FYWEhpk17BwAwbtxEFBUVISMjDTNmzAIAGBk9/WFlTMwufPHFJ/D3D8Sbb76N+/czEBm5GVeuXMaqVb+qxZGXl4t3330bXbp0RdeuPXDkyCGsXPkdmjXzQocOnTR+zzXBTI1gY2GINwf4Y9Hmv/FzTDzeGhgAkYg7tRIREQnlTPo5bEiIhExRvlrcw5IcbEiIBIB6TeLbtGkHS0srHDq0Xy2BP3RoP5RKJbp37wlPTy906dJNrV+nTq9g6tQJOHo0FuHhfTS+3/r1a5Gbm4OffloHHx9fAECvXn0xcuSgSud+/PHnMDD435eDgQMj8PXXXyA6eismTXoTUqkUbdq0R1TUVqmUXroAACAASURBVOTm5qBnz97PvLdcLsfKld/By8sb3333A6RSKQCgRYsWmD9/LnbtikZExAjV+ffvZ+Cjjz5H9+7lJUR9+w5ARERf7Nmzgwk81Q8/d2sM6+KFzYevI+bULfTp4C50SERERA3e6bSzOJn2V7X73ci9DblSrtYmU8iwPn4b/rx3ptrX6+DYBu0cW1e7n0QiQVhYN2zfHokHDx7A1tYWAHDo0AE4O7ugRYsAtfPlcjkKCwvg7OwCU1MzJCUlVCuBP3nyBAIDg1XJOwBYWVmhe/deiI7eqnbu48n7o0eFKC2VITg4BDt2ROHWrZto3ty7Wu81IeEqHj7MViX/Fbp27Y5lyxbjzz9PqCXwpqam6Natp+q1vr4+/Pz8ce/e3WrdtyaYwJNKjzYuuJGWh6hjKXBrYoaAZjZCh0RERPRCejJ5f157XerePRxRUVtx+PABDBs2Cjdv3sD160mYMGESAKCkpBjr1q1BTMwuZGbeh/Kx5akLCqq3aWRGRjoCA4Mrtbu6ulVqS0lJxqpVK3Hu3F8oLCxUO1ZYWP3NKtPT06q8l1gshrOzCzIy0tTa7e2bVKpYMDMzR3Ly9Wrfu7qYwJOKSCTChF5+uPfgEX7YeQXzx7eBvaWR0GERERE1WO0cW9foyfcHJ77Aw5KcSu1WBpb4v1ZTtRGaxgIDg+Ho6ISDB/dh2LBROHhwHwCoSkcWL/4aMTG7MHToSAQEBMLU1BSACB9//G+1ZF6b8vPzMWPGZBgbm+L116fCyckZUqkUSUkJWLnyOygUijq57+PEYr0q2+vqPavdu87vQA2KgVQP0weX/zns+6hLKJGVCRwRERHRi6e/Zzj0xfpqbfpiffT3rPmSjbXRrVsPxMdfRWrqHcTGHoCPj5/qSXVFnfuMGTPRpUs3tGnTHkFBLav99B0AmjRxQGrqnUrtt2/fUnt9/vxZ5ObmYt68jzBs2Eh06vQy2rRpBzMz80p9Ac3m9Tk4OFZ5L6VSidTUO2jSxFGzN1EPmMBTJfZWxpjc3x+p9wuwdm9CvXyTJCIiov9p69AKo3yHwMqgfOlCKwNLjPIdUu+r0FTo0aMXAGD58sVITb2jtvZ7VU+iIyM3o6ys+g8BO3TohEuXLiAxMUHV9vDhQxw8uFftvIq12x/PUWQyWaU6eQAwMjLS6MuEr28LWFlZY/v2bZDJZKr2w4cPITPzPjp2rNuJqdXBEhqqUmAzGwx6pRmifk+Bu4MZerR1FTokIiKiF0pbh1aCJexP8vBoBi8vbxw//jvEYjG6dv3f5M2OHUOxf38MTExM4e7ugStXLiEu7gwsLCyqfZ9Ro8Zh//4YzJo1DRERI2BgYIidO6PRpIkjCgquqc4LDAyCmZk5Fiz4GBERwyESibB/fwyqeubo4+OLAwf24rvvvoWvbwsYGRkjNPSVSudJJBK8+eYMfPHFJ5gxYwq6deuB+/czsG3bZjRr5ol+/SqvhCMUJvD0VH06uOFmej62HEmGSxMz+LlZCR0SERERCaRHj3Bcv56EkJDWqtVoAOCdd2ZDLBbj4MG9KCkpRWBgMJYs+R6zZs2o9j1sbW2xbNkPWLx4IdatW6O2kdNXX32mOs/CwhILFy7G8uVLsGrVSpiZmaNHj1546aW2mDVruto1BwwYgqSkBMTE7MbmzRvg4OBYZQIPAL1794NUKsX69Wvx/fdLYWJigp49e2Hy5OlVrkUvFJGS9RHVkpVVAIWi/j8yOzszZGbm1/t9i0rk+PzXOBQUyfDR+DawNtd8MwYiIQg1VogaGo4V7UpPvwUHh8orpVDDJ5GIIZdrf1Lss35nxGIRbGxMn9qXNfD0TEYGEkwfHAh5mQLLoy5BJuekViIiIiIhMYGn53K0McEbfVvgZno+1u1P4qRWIiIiIgExgSeNhDS3Q7+O7jh+KQ1Hz9f9DmNEREREVDUm8KSxAS97IMjTBhsOXcO11MqbSxARERFR3WMCTxoTi0SY3K8FbCwMsSL6Mh7mlwgdEhEREdELhwk8VYuxoT6mDw5EcWkZVm6/DHlZ3W9VTERERET/wwSeqs3ZzhQT+/jh+t1cbDx07fkdiIiIiEhrmMBTjbTxtUevdq44cv4u/rhwT+hwiIiIBMdV2khTtf1dYQJPNTa4czO0cLfCugOJuJGWJ3Q4REREgtHTk0AmKxU6DGogZLJS6OlJatyfCTzVmJ5YjKkDAmBhYoDlUZeQV8j/cBER0YvJ1NQSOTmZKC0t4ZN4eiqlUonS0hLk5GTC1NSyxtepeepPBMDUqHxS6xe/ncXK7Zfx7oiWkOjxeyEREb1YjIxMAAC5uQ9QViYXOBrSJrFYDIVCe4t26OlJYGZmpfqdqQkm8FRrbg5mGB/ui1W7r2LrkWSM7NZc6JCIiIjqnZGRSa2SMtJNdnZmyMzMFzoMNUzgSSs6BDjgRloeDsbdgYejGdr7OwgdEhEREVGjxFoH0pphYV7wdrHEmr0JuJ2hW99UiYiIiBoLJvCkNRI9Md4cGAATI30sj7qEgiKZ0CERERERNTpM4EmrLEykmDYoEDkFJfhh5xUoFJyJT0RERKRNTOBJ65o1NcdrPXxw5UY2on5PETocIiIiokaFCTzViVeCm+LVlk0Rc+oW4hLuCx0OERERUaPBBJ7qzMhu3vBsao7Ve+JxN7NA6HCIiIiIGgVBE/jS0lJ8/fXXCA0NRVBQEIYNG4aTJ08+t9/Fixfx8ccfY/DgwQgICICPj89Tz1UoFFi1ahXCwsIQGBiIfv36ISYmRptvg55CXyLGW4MCYSDVw/KoS3hUzEmtRERERLUlaAI/Z84crF27Fv3798e8efMgFosxadIknD9//pn9jh07hq1btwIAXFxcnnnu4sWLsWjRIoSGhmL+/Plo2rQpZs6ciX379mntfdDTWZkZ4K2BAXiQW4xVu65Cwe2liYiIiGpFpFQKk1FdvHgRQ4cOxdy5czF+/HgAQElJCfr27Qt7e3usX7/+qX0fPHgAU1NTGBoaYsGCBfj111+RmJhY6byMjAx07doVI0eOxLx58wAASqUSr732GtLS0nDo0CGIxdX7DpOVVSDIyiq6uAtYdcSeTcX6g0kYEOqBAaEeQodDjVhDHytE9YVjhUgzQowVsVgEGxvTpx+vx1jU7Nu3D/r6+hg6dKiqzcDAABERETh79izu33/6xEdbW1sYGho+9x6HDh2CTCbDqFGjVG0ikQgjR47E3bt3cfHixdq9CdJYWCsndApwwI7jN/D3tQdCh0NERETUYAmWwMfHx8PDwwMmJiZq7UFBQVAqlYiPj9fKPUxNTeHhof7ENygoCABw9erVWt+DNCMSiTCmpw/cmphh1e4rSM9+JHRIRERERA2SYAl8ZmYm7O3tK7Xb2dkBwDOfwFfnHra2tnV6D9KcVF8P0wYHQE8sxvKoSygqkQsdEhEREVGDIxHqxsXFxdDX16/UbmBgAKC8Hl4b95BKpVq9x7PqkeqanZ2ZYPfWFjs7M8wZ1wYf/vAn1sdew5yxbSASiYQOixqZxjBWiOoDxwqRZnRtrAiWwBsaGkImq7ysYEVSXZFk1/YepaWlWr0HJ7HWXlNLQ0S86oUtR65j7a7L6NPBXeiQqBFpTGOFqC5xrBBphpNYH2NnZ1dlCUtmZiYAVFleU5N7PHhQecKkNu9BNdOzrQva+tkj6vcUXL6RJXQ4RERERA2GYAm8r68vbty4gcLCQrX2CxcuqI7Xlp+fHwoKCnDjxo0q7+Hn51fre1DNiEQiTOjlBydbE/yw4woyc4qEDomIiIioQRAsgQ8PD4dMJlNtyASU78waFRWFVq1aoUmTJgCAe/fuITk5uUb36Nq1K/T19bFhwwZVm1KpxKZNm9C0aVMEBwfX7k1QrRhI9TB9cCCUSmB51CWUyMqEDomIiIhI5wlWAx8cHIzw8HAsWrQImZmZcHV1RXR0NO7du4cvv/xSdd7777+PM2fOqG3UdPfuXezYsQMAcOnSJQDAihUrAJQ/uQ8LCwMAODg4YOzYsfj5559RUlKCwMBAHDp0CHFxcVi8eHG1N3Ei7bO3MsaUAf5YsuUC1u5NwKR+LTiplYiIiOgZBEvgAWDhwoVYsmQJduzYgdzcXPj4+ODHH39E69atn9kvNTUVS5cuVWureD1o0CBVAg8As2fPhoWFBTZv3oyoqCh4eHjgm2++Qe/evbX/hqhGApvZYOArzRD9ewrcHc3Ro42L0CERERER6SyRUqms/yVVGjCuQlM3FEolVkRfxt/XHmD2iJbwdbMSOiRqoBr7WCHSFo4VIs1wFRqipxCLRHi9jx+aWBth5Y7LyM4rFjokIiIiIp3EBJ50hpGBBNMHB0ImV2B51CXI5JzUSkRERPQkJvCkUxxtTDCpbwvcTM/HugNJYIUXERERkTom8KRzQrzt0K+jO45fTMPRv+8JHQ4RERGRTmECTzppwMseCPK0wYaDSbiemit0OEREREQ6gwk86SSxSIRJ/VrAxtwQ30dfQk5BidAhEREREekEJvCks0wM9TF9SCCKS8uwIvoy5GUKoUMiIiIiEhwTeNJpznammNDbF9fv5mLjoWtCh0NEREQkOEF3YiXSRFu/JriZno99p2/D3dEMLwc1FTokIiIiIsHwCTw1CEM6N4OfmxXW7U/CjbQ8ocMhIiIiEgwTeGoQ9MRiTB3gDwsTKb6PvoS8wlKhQyIiIiISBBN4ajDMjKWYPjgQ+Y9k+O+OyyhTcFIrERERvXiYwFOD4uZghnHhPki4nYOtR5KFDoeIiIio3nESKzU4HQMccTMtHwf+ugN3BzO093cQOiQiIiKiesMn8NQgDQvzgreLJdbsTcDtjHyhwyEiIiKqN0zgqUGS6Inx5sAAmBjpY3nUJRQUyYQOiYiIiKheMIGnBsvCRIq3BgUgp6AEP+y8AoVCKXRIRERERHWOCTw1aJ5NLfBaDx9cuZGN6D9ShA6HiIiIqM4xgacG75Xgpujcsin2nLyFuIT7QodDREREVKeYwFOjMKqbNzybmmN1TDzuPigUOhwiIiKiOsMEnhoFfYkYbw0KhIG+HpZHXsSjYrnQIRERERHVCSbw1GhYmRngrYEBeJBbjJ92X4VCyUmtRERE1PgwgadGxdvFEiO6Nsff1x9g14mbQodDREREpHVM4KnRCWvlhI4BDthx/Ab+vv5A6HCIiIiItIoJPDU6IpEIY3v6wK2JGVbtuoqM7EdCh0RERESkNUzgqVGS6uth2uAA6IlF+C7qEopKOKmViIiIGgcm8NRo2VoY4c0B/kjLKsQvMfFQclIrERERNQJM4KlR83O3xtBXvRCXmIm9p28LHQ4RERFRrTGBp0avZ1sXtPWzR+SxZFy+kSV0OERERES1wgSeGj2RSIQJvfzgZGuCH3ZcQWZOkdAhEREREdUYE3h6IRhI9TB9cCCUSmB51CWUyMqEDomIiIioRiRCB0DPdib9HHYm70NOSQ4sDSzR3zMcbR1aCR1Wg2RvZYzJ/f2xdOsFrN2XgEl9W0AkEgkdFhEREVG18Am8DjuTfg4bEiLxsCQHSgAPS3KwISESZ9LPCR1agxXkaYOBrzTDqSsZOBSXKnQ4RERERNXGBF6H7UzeB5lCptYmU8iwM3mfQBE1Dn06uCGkuS02H76OhFsPhQ6HiIiIqFqYwOuwhyU5T20/k34OeaX59RxR4yAWifBG3xZoYm2ElTsuIzuvWOiQiIiIiDTGBF6HWRlYVtkugghrr27C3OOf4cszS7D9egwSsq9BViar8nyqzMhAgumDAyGTK/B99CXI5JzUSkRERA2D3scff/yx0EE0JEVFpaivDT1NpSa4mpUIhVKhatMX62O0bwTC3bvCxtAKOSW5OHf/Ik6lxyH2zh9IzrmJgtICGEoMYapvwkmaz2BmLEVTGxPs/+sOcgpK0dLLlp9XI2BiYoBHj0qFDoNI53GsEGlGiLEiEolgbCx9+nGlgPvLl5aWYunSpdixYwfy8vLg6+uLmTNnokOHDs/tm5GRgS+++AInTpyAQqFA+/btMXfuXLi4uKidl5+fjxUrViA2Nhbp6emwtbVFaGgopk2bhiZNmlQ75qysAigU9feRabIKTbG8BNdzUhCfnYT47CRkPMoEAFgaWMDXujn8rL3ha9UcplKTeou7IYn6PQW7/7yJMT190CXESehwqJbs7MyQmcnyMqLn4Vgh0owQY0UsFsHGxvSpxwVN4GfNmoUDBw5g7NixcHNzQ3R0NC5fvox169YhJCTkqf0KCwsxePBgFBYWYvz48ZBIJFizZg1EIhG2b98OCwsLAIBCocCIESNw7do1jBw5Eh4eHrhx4wY2btwIOzs77N69G1Lp07/dVKW+E/gK1fnlySp6iISHSYjPvobE7Gt4JC+CCCK4mDWFr7U3/Ky90czCDRIxVxEFAIVCiaXbLuLqzWy8P7oVvJwshA6JaoFJCZFmOFaINMME/jEXL17E0KFDMXfuXIwfPx4AUFJSgr59+8Le3h7r169/at9Vq1bhm2++QVRUFFq0aAEASE5ORr9+/TBlyhS88847AIALFy5g2LBh+PDDDzF69GhV/99++w2fffYZ1q5di/bt21cr7oaQwD9OoVTgdn4q4rOuIT47CTfybkGhVECqJ4W3ZTP4WnujhbU37I3tXujykcJiGT5bE4cSeRk+Gt8GlqYGQodENcSkhEgzHCtEmtHFBF6wR7D79u2Dvr4+hg4dqmozMDBAREQEFi9ejPv378Pe3r7Kvvv370fLli1VyTsAeHp6okOHDti7d68qgS8oKAAA2NjYqPW3tbUFABgaGmr1PekisUgMd3NXuJu7opdHVxTJi3HtYTLis68hITsJl7MSAJRPmPWz9oafjTd8rLxgom8scOT1y8RQH9OHBOLzX+OwIvoy3hsVAoke53gTERGR7hEsgY+Pj4eHhwdMTNTrsoOCgqBUKhEfH19lAq9QKJCYmIjhw4dXOhYYGIgTJ06gqKgIRkZG8Pf3h7GxMZYuXQoLCws0a9YMKSkpWLp0Kdq1a4fg4OA6e3+6ykhiiCA7fwTZ+QMAHhRlI+Gf2vnzmRfxZ9oZiCCCq7lzeUJv7Q0Pc1foifUEjrzuOduZYmJvP/x3xxVsjL2GMT18hA6JiIiIqBLBEvjMzMwqJ5Ha2dkBAO7fv19lv5ycHJSWlqrOe7KvUqlEZmYmXF1dYWlpicWLF+ODDz5QlekAQJcuXbBkyZIXumSkgq2RNUKd2iPUqT3KFGW4lZ+K+OwkJGQn4cCtI9h3MxaGegZobuX5T0LfHHZGjXe1lrZ+TXAzPR/7Tt+Gh4M5QoMchQ6JiIiISI1gCXxxcTH09fUrtRsYlNcel5SUVNmvor2qyacVfYuL/7cxj7W1NQICAhASEgJPT08kJCTgp59+wr///W98++231Y77WfVIdc3OzqzO7+HQxBLtEAAAKCx9hCv3k3Ah/SoupF/FpaSr5XGY2CC4iR+CHVsgwN4HJtLGVW4zdUgw0rIfYd2BRAR426G5i5XQIVE11cdYIWoMOFaINKNrY0WwBN7Q0BAyWeWNhyoS9Ipk/EkV7aWlldfjrOhbUdt+584djB07FosWLUK3bt0AAN26dYOTkxPmzJmDIUOGoFOnTtWKu6FNYq0tDwNPeLh5YqBbP2Q+ykJ8diLis6/h+K2/cCjlOEQQwd3cFX7WzeFn4w03M5dGUW4zsZcvPl0Th89/Po0Px7WBuUn1Visi4XBiHpFmOFaINMNJrI+xs7OrskwmM7N8DfOnTWC1tLSEVCpVnfdkX5FIpCqviYqKQmlpKTp37qx2XlhYGADg3Llz1U7gX2R2xjawM+6IV5w7okxRhht5t/+pn7+GvTdjEXPzEAz1DOFj7VWe0Ft7w9bI5vkX1kFmxlJMHxyIL347i//uuIx3R7SEnpiTWomIiEh4giXwvr6+WLduHQoLC9Umsl64cEF1vCpisRje3t64fPlypWMXL16Em5sbjIyMAABZWVlQKpV4cqVMuVyu9k+qPj2xHrwsPeBl6YG+zXqiUPYIiQ+vIyE7CVezknAhs/znY2tko6qd97byhJHESODINefmYIZx4T74aXc8th5JxoiuzYUOiYiIiEi4BD48PBw///wztm7dqppgWlpaiqioKLRq1Uo1wfXevXsoKiqCp6enqm/Pnj3x7bff4urVq6qlJFNSUnDq1ClMmjRJdZ67uzsUCgX27t2LAQMGqNp3794NAGrLUFLtmOgbo5V9EFrZl68idL/oAeKzyle3OZ1+Fn/cPQmxSAwPc9fynWGtveFm7gyxSLefancMcMSNtHwc+OsO3B3M0N7fQeiQiIiI6AUn6E6s77zzDmJjYzFu3Di4urqqdmJdu3YtWrduDQAYM2YMzpw5g8TERFW/goICDBo0CEVFRZgwYQL09PSwZs0aKJVKbN++HVZW5ZMOHz58iH79+iEnJwcjR46El5cXrly5gm3btsHLywuRkZFVTqR9lhetBl4b5Ao5buTeQnx2+WZSd/LvQgkljCRG8LXyUiX0Nka6OVlUXqbAoo3ncTM9H/8e0xquTXRrIgupa8hjhag+cawQaUYXa+AFTeBLSkqwZMkS7Nq1C7m5ufDx8cGsWbPQsWNH1TlVJfAAkJ6eji+++AInTpyAQqFAu3btMG/ePLi4uKidl5GRgaVLl+L06dPIyMiApaUlwsLCMHPmTFWiXx1M4GuvoLQQiQ+vqRL6nJJcAIC9sa1q7fnmls1gKNGdjbZyC0vx6Zq/oCcW4cPxbWBqVL0vflR/GtNYIapLHCtEmmEC3wgwgdcupVKJjEf3Vcn8tYfJKFXIoCfSQzMLN/j+Uz/vYuYkeLlN8r1c/Gf9Ofi6WuH/hgZDLG6ca+E3dI11rBBpG8cKkWaYwDcCTODrlkwhR0rOTdVmUncK7gEor7H3tWquSuitDC0Fie/Y33exdl8i+nRww5DOns/vQPXuRRkrRLXFsUKkGV1M4AWbxEpUFX2xBD7WXvCx9gLQG/mlBUj45+l8QnYSzt4vX6XIwdj+n9r55mhu5QkDvfpZp71zSyfcSMvHnpO34O5ghtY+VS93SkRERFRXmMCTTjOTmqKNQwjaOIRAqVQirTAD8dnlq9scv3cKR1KPQyLSQzML9/KE3qY5nE2b1mm5zeju3kjNLMBPe+LhYGMCJ1uT53ciIiIi0hKW0FQTS2h0h6xMhuu5N/55On8NdwvSAACm+ibw/WcjKV/r5rA0sND6vR/ml+CTNX/BSKqH+ePawNiQ34V1BccKkWY4Vog0o4slNEzgq4kJvO7KLcn7p9zmGhKyk5AvKwAANDVxUCX0XpYekGqp3CbpTg6+3ngegc1sMH1IIMQiTmrVBRwrRJrhWCHSDBP4RoAJfMOgUCpwryBd9XT+eu4NyBVySMQSeFl4qBJ6J1NHiGqReB+Ku4MNh65hYKgH+od6aPEdUE1xrBBphmOFSDO6mMDz7/7UKIlFYjibNYWzWVN0d3sVpWWluJZzAwn/1M9vT47B9uQYmElNVWvP+1g1h4VB9TZp6traGTfT87Hj+A24OpihpZdtHb0jIiIionJaSeDlcjliY2ORm5uLLl26wM7OThuXJdIaqZ4U/jY+8LfxAQDklOSqSm2uZiXiTPo5AICTqaMqofe0cIe+3rM3bBKJRBjb0wd3MwuxatdVfDjuJTSxNq7z90NEREQvrmqX0CxcuBCnT59GZGQkgPKNeMaOHYu4uDgolUpYWlpiy5YtcHV1rZOAhcYSmsZHoVQgteAeErLKl6tMzr2JMmUZ9MUSeFk2UyX0jiZNnlpu8yC3CJ+uiYO5iRQfjG0NQyn/uCUUjhUizXCsEGmmUZTQ/PHHH+jYsaPq9eHDh/HXX3/hjTfegJ+fHz777DP8+OOP+Pzzz2sWMVE9E4vEcDVzhquZM3q4d0GxvATXc1L+Wa7yGqKu7wYAWEjN/tlIqnx1GzPp/waWrYURpg7wxzeb/8bPe+Lx5sCAWtXWExERET1NtRP49PR0uLm5qV4fOXIEzs7OmD17NgDg2rVr2LVrl/YiJKpnhhIDBNj6IcDWDwCQXfxQtZnU5QfxOJ1+FgDgYub0z9P55vCwcEcLd2sMfdULW45cx77Tt9GrvduzbkNERERUI9VO4GUyGSSS/3U7ffq02hN5FxcXZGZmaic6Ih1gbWiFjk3bomPTtlAoFbiTf1e1mdSh28dw4NYRSMX6aG7lCV/H5gjyl2LbsetwbWIGfw9rocMnIiKiRqbaCbyDgwPOnz+PYcOG4dq1a7hz5w7efvtt1fGsrCwYG3MSHzVOYpEYbuYucDN3Qbh7VxTLi3FNVW6ThCtZCYAJYBxihBVnryJC2R5tXFrAVJ+7tRIREZF2VDuB79OnD1asWIHs7Gxcu3YNpqam6Ny5s+p4fHx8o53ASvQkQ4khAm1bINC2BQDgQVE2ErKT8HdGPOJxHdtubkXkTRFczZzhZ90cvtbe8LBwhUTMSa5ERERUM9XOIqZMmYK0tDTExsbC1NQU//nPf2Bubg4AyM/Px+HDhzF+/Hhtx0nUINgaWSPUqT1Cndrj7+uZWL73D7g2L4aeOAcHbh/FvluHYaAnhbeVp2pCrL2RLSe8EhERkca0uhOrQqFAYWEhDA0Noa//7PWzGyouI0nVsevEDUT/cQMjuzZHaIgtkh4mIz77GuKzEvGgOBtAeY19xdN5XysvGOuzBK02OFaINMOxQqSZRrGM5LPI5XKYmVVvJ0uixqxPR3fcTM/H5sPX4drEFMGuAQi2CwAAZD7KQnx2EhKyk3A24yJO3DsDEURwM3eBn3Vz+Fn7wN3cBXpiPYHfBREREemSaj+BP3bsGC5evIgZM2ao2tavX49vvvkGxcXF6NWrF7766is+gdcyPilpuIpK5PhsbRwKi2X4aHwbWJsbVjqnTFGGm3l3VAn9zbw7UEIJQz1D+DxWbmNnbCPAO2hYOFaINMOxQqSZwzvp8gAAIABJREFURvEEfvXq1bCx+V8SkZycjC+++AIuLi5wdnZGTEwMAgMDWQdP9A8jAwlmDAnEZ2vj8H30JcwZ3Qr6EvWn6npiPXhausPT0h19m/XAI9kjJD5MVq1uc+HBFQCAraE1fG3Kk3kfK08YSYyEeEtEREQkoGon8CkpKWqrzsTExMDAwADbtm2Dqakp3n33XWzfvp0JPNFjHG1M8EbfFlgedQm/HUjC+F6+z5y4aqxvjBD7QITYB0KpVOJ+0QPV0/m/0s/h+N1TEIvEcDd3+WczKW+4mjmz3IaIiOgFUO0EPjc3F1ZWVqrXf/75J9q3bw9T0/LH/G3btsWxY8e0FyFRI9HK2w59O7pj95834eFojldDnDTqJxKJ0MTYDk2M7fCqcyfIFXLcyL2NhOwkxGdfQ8yNQ9hz4yCMJEbwsfL6p37eGzZG3ESKiIioMap2Am9lZYV79+4BAAoKCnDp0iXMmjVLdVwul6OsrEx7ERI1IgNDPXArPR/rDybB2d4UXk4W1b6GRCxBc6tmaG7VDP08w1EgK0Ri9nUkZCfhanYS/s68BACwN7L9p3a+OZpbecJIUrn2noiIiBqeaifwLVu2xKZNm+Dl5YXff/8dZWVleOWVV1THb926BXt7e60GSdRYiMUiTO7fAp+tKa+H/2h8G1j+f3t3Hldlmf+P/3WflX0/bAqIqCCCa2Zki6lNjlnu47RI2miZOh+1XzOTU9PvM9XUVOYnp7LcyiWbJg2lsdzSytLKUhORRUFcEGSV/cA5h3N//wBuOJyDHhG4z4HX85EP5LqX877pccvrvu/rum4P7U3t00PtjhFBQzAiaAhEUURBTZHUd/7H/J9x6PIRKAQFIr0iGrrb+PdHuGdvKARFBx0VERERdaUbnoUmKysLiYmJKC1tmMN66tSpePXVVwEAoihi3LhxGDVqlNTW3XAWGuoIuYVVeHnLLwgP8sSfHxoGlbJzwrTRbEJO+fmGuedLz+BS5WUAgLvKDdF+/TDQbwBi/PrDz8X3OntyHjxXiOzDc4XIPo44C027XuRUVlaG48ePw9PTEyNHjpTay8vLsXPnTowaNQoxMTHtq9jBMcBTRzmaXoD3k09j7PBeePQ30V3ymZWGKmSWnpUCfbmhAgAQ5BYo9Z3v59MXLqqbeyogJ54rRPbhuUJkn24T4HsyBnjqSJ8ezMKeoxfx+MSBuGNwSJd+tiiKyK8ukPrOZ5Wdg9FsglJQoq93hDS7TW/PUKfqbsNzhcg+PFeI7OOIAb7db2K9ePEiDhw4gEuXLgEAwsLCMG7cOISHh7d3l0Q9zvQxfXGhoBKb92ail84dkSFeXfbZgiAg1CMYoR7BGBt+F4z1RmSXn5f6z39+bg8+P7cHHmr3xtltBmCg/wD4aG984C0RERF1nHbdgX/rrbewbt06q9lmFAoFnnzySSxZsqTDCnQ0vANPHa2yxoAXN/4MEcALc0bCy00jd0kAgPK6SmRePSsF+kpDFQAgxD2ose/8APT3iYRG6Rj1NuG5QmQfnitE9nHEO/A3HOC3b9+O559/HsOGDcO8efPQv39/AMDZs2exYcMGnDhxAv/4xz8wbdq0m6vcQTHAU2e4cKUSr3x0DFGhXvj/fj8USoVjdVkRRRF51VcawnzJGWSV58BkNkElKBHlEykF+l4ewbJ3t+G5QmQfnitE9ukWAX7atGlQq9XYunUrVCrLHjgmkwmPPPIIjEYjkpKS2lexg2OAp85y+FQ+NnyRjt+MDMPvx/WXu5xrMtQbkFWW0/h22LPIq74CAPBUeyCmcTBsjF9/eGu7rktQE54rRNd29MpxfJ69B2V1ZfDR+uDBqAm4NXi43GURORw5z5UO7wOfnZ2Np59+2iq8A4BKpcLEiROxcuXKG90tUY83Oj4E5/Mrse/nS+gT4onbYoPlLqlNGqUGsf7RiPVvmD2nrK4cGaXN3W1+LjgBAOjlESIF+ijvSGiUajnLJurRzKIZP+b/gk/PJMNoNgIArtaV4eOM7agx6jEsMB6AAEEABAgAGr82fi+1CNKSxu8t1gYav5dahealTX8ncnRHrxzHxxmftTpXPgMAh7jgveEAr1arUVNT0+by6upqqNX8JU3UHrPG9cOlwkps/DIDof7uCA/ylLsku/hovXFbyC24LeQWmEUzLlflS91tvrl0GAcuHoJaoUI/n75SoA91D+Yvc+qxRFGEyWyC0WyEwWyEsb7h7w1/TDDWN7abjTDWG6+5XvMyo7TM0GJZ0z5Mou23pBvNJmw7m4xtZ5O77PhbhnuhVfC3fSFgeeHQ8sICaOtCQ7DxWW3sX7DY87UvQqxqbXURY3WB07rOtvfd9sWSPT+jVvu60YsxQYDihn/W9vx8bvD/pc192XcMzcsVN/7/sdWyz87+VwrvTYxmIz7P3uMQAf6Gu9DMnTsXOTk52L59OwICAiyWlZSUYPr06YiKisKGDRs6tFBHwS401NnKq+rw940/Q6VU4IU5I+Hh6twXxHX1Bpy9mi3dob9SUwgA8NZ4Iqaxq02MX394aTrmYoXnCrVHvbne7sB83fXqG9e1CtbN25vMJoho3+8SAQLUSjU0CjXUCjXUShXUipbfN35VqKFpXNbwR4Uvz3/V5n5/Hz0VDYmgoTIRIhr+a6iz4fsWy9BwIYJW60ot0r4a20SLPdncl7S21ee2tW/Lumwvs9xXy7paH8P167zO/qVjaNrO1uder862fz5t19nqZ9TqGCz+P0nf23EM7fz/2PKzuqN3x77e6Z/R4V1oFi5ciDlz5mDixImYPn06+vXrB6DhDa1JSUmorq7GihUr2l8xUQ/n7aHFoqnx+OfW41j7+WksnTkECoXz3qnWKjWICxiIuICBAICrtWVILz2LjNIzSC1Ox09XjgEAenuESn3no3wioVa0e5ZbcnJm0Xztu8stAnLbYdkIg1Wobg7PhpZ3p80mmEVzu+uVwrNSDZVCZRGs3VSu0Gi8LEK1WqlqFbZVLQL3tdZr+ByFoGj306sf8n/B1boyq3ZfrQ/u7JXQ7p8BUVvElhcy17lYanlhcdMXY60u6mxdHF3rAufdkxtQYbC+GeSr9emQn8vNatc0kgcPHsRLL72E/Px8i/bQ0FC88MILGDNmTEfV53B4B566yje/XsbmPZm4PyEC0++OkrucTmEWzbhUeVkK9Nnl52EWzVAr1Ojv21d6mVSwW6DdgYXnSscSRbE5LLe602xo1UXDYDa1+r4xLLcK1sZ60zXvYte30dXDHipB2Sosq6FpEZDVLe9It7yL3c5grVKonKorWOt+vUDDBcjDMdMdolsAkaOQ+1zptDexms1mpKamIjc3F0DDi5wGDRqETz/9FJs3b8aXX37ZvoodHAM8daWNuzNw6GQeFk2Nw4joQLnL6XS1plqcLTsnDYYtrCkG0NDHXprdxrc/PDTube6jO58roiiiXqxv4+6yHcG61R1tKVy3CM9WYdtsane9CkFxjRDcIli3Csttdg9pub1C1Wq9hja5pzF1BpyFhsg+jjwLTbsDfFvee+89/Otf/0J6enpH7tZhMMBTVzKazHjt4+O4XFyN5xNvQa+AtoNrd1SiL5X6zmdczYLepIcAAWGeoYhpvDvf1zsCKoVKln9ozaK5nWG5IRhbDzy0DuOtg/XN9JuWune0DMw2QrBlWG4ZstVW21uE8sbvmz5HqVB28E+cOhJ/rxDZxxHngZe1k6nBYMCqVauQnJyMiooKxMTEYNmyZUhIuH4/vIKCArzyyis4fPgwzGYzbrvtNixfvhxhYWFW6xYWFmLVqlX49ttvUV5ejqCgIIwbNw7Lly/vjMMi6jBqlQILp8ThxY0/452kU/hb4i1wc+k5fcP9Xf0wutcojO41CmbRjAsVuchovDv/1cVvse/C19AoNQh0CUB+TYHU9aJparyrtWWI9ut3zWAtDS68RrC23r4Duno0BeDGr6oWd6RdlFp4ajyuE6yb70JfN1gr1VAJSqfq6kFERG2TNQk8++yz2LdvHxITExEREYEdO3Zg/vz52LJlC4YNG9bmdtXV1UhMTER1dTUWLFgAlUqFjRs3IjExETt37oS3t7e07uXLl/HQQw/Bw8MDiYmJ8PX1xZUrV5CTk9MVh0h00/y8XPDUlDis+ORXrN+VhsXT46HogUFMISgQ6R2OSO9w/DZyPPQmPc5cbehuczjvJ6tBiEazCZ+f2wOcs2/f1oMFm8Oxm8r1mnehre9itw7Sluup2NWDiIhugmwBPiUlBV988QWWL1+OOXPmAACmTJmCSZMmYcWKFdi6dWub23788ce4cOECkpKSEBsbCwC488478cADD2Djxo1YsmSJtO4LL7yA4OBgbN68GS4uLp16TESdJTrcF7PG9sPHX53FriPn8eDoSLlLkp2ryhVDdIMwRDcI313+oc31nho897rBml09iIjImch2C2jPnj1Qq9WYOXOm1KbVajFjxgwcO3YMhYWFbW67d+9eDB06VArvABAVFYWEhATs3r1basvOzsb333+PRYsWwcXFBXq9HiZT+wdkEclp3IjeSBgUjOTvcnAyq1juchxKW9N6+Wp9EBcwENF+/dDXOwJhnqEIdg+Ev6svPDUecFG5MLwTEZHTsesO/Icffmj3Do8fP27Xeunp6YiMjIS7u+WgvMGDB0MURaSnpyMw0HrWDbPZjMzMTMyaNctqWXx8PA4fPgy9Xg9XV1ccOXIEAKDRaDBt2jScPn0aarUaY8eOxf/+7//Cz8/P7uMikpsgCHhsQjQuF1dh7X/T8MJjtyDIz03ushzCg1ETbE739WDUBBmrIiIi6hx2BfjXXnvthnZqz0CpoqIiBAUFWbXrdDoAaPMOfFlZGQwGg7Re621FUURRURHCw8Nx4cIFAMDSpUtxxx134Mknn0RWVhbef/995ObmYtu2bVAqefeNnIdGrcTiqfF4cdMveCfpFJ5LHAEXTc8Z1NqWptlmODUeERH1BHb95t+8eXOHf3BtbS3UautXxGu1WgBAXV2dze2a2jUaTZvb1tbWAgBqamoANNyZf/PNNwEA9913H3x8fPDiiy/i66+/xvjx42+o7mtN6dPZdLqOedU8OTedzhN/SbwF///aH7D1qyz8JfEWzi4C4H7d3bg//m65yyByKvy9QmQfRztX7Arwt956a4d/sIuLC4xGo1V7U0BvCuOtNbUbDIY2t20arNr0ddKkSRbrPfjgg3jxxRdx/PjxGw7wnAeeHEEvX1dMHxOFbV9nY8uu0/jtbRFyl+QweK4Q2YfnCpF9HHEeeNkGsep0OpvdZIqKigDAZv93APDx8YFGo5HWa72tIAhS95qmr/7+/hbreXp6QqPRoKKi4qaOgUhOE24Nx8iYQGz/Nhunc0rlLoeIiIi6iGwBPiYmBjk5OaiurrZoP3nypLTcFoVCgQEDBiA1NdVqWUpKCiIiIuDq6goAGDRoEICGlz61VFpaCoPBwEGs5NQEQcDciTEIDXDH+8mpKCrTy10SERERdQHZAvyECRNgNBqxbds2qc1gMCApKQnDhw+XBrjm5eUhOzvbYtv77rsPv/76K9LS0qS2c+fO4ccff8SECc2zTowaNQq+vr5ISkqC2dz8kpemz7Tnja9EjsxFo8LiafEQReDdpFOoM7b/zaBERETkHARRFLu+Q3ejJUuW4MCBA3jssccQHh6OHTt2IDU1FZs2bcKIESMAALNnz8bRo0eRmZkpbVdVVYWpU6dCr9dj7ty5UCqV2LhxI0RRxM6dO+Hr6yutu337djz33HO4/fbbMX78eGRnZ+Pf//437rrrLqxZs+aGa2YfeHJEKdnFWLUtBbcNCsK8SbE9elArzxUi+/BcIbKPI/aBl3X+uddffx1vvfUWkpOTUV5ejujoaKxdu1YK723x8PDAli1b8Morr2D16tUwm80YNWoUnnvuOYvwDgAzZsyAWq3G+vXr8eqrr8LHxwePPfYYli5d2pmHRtSlBkcFYMqdkdjxXQ76hHjh3lvC5C6JiIiIOomsd+CdEe/Ak6MyiyLeTTqFk1kl+NNDQxEd7nv9jbohnitE9uG5QmQfR7wDL1sfeCLqWApBwLxJsQj0dcV7O1NRWlErd0lERETUCRjgiboRV23DoNY6kxnv7kiF0WS+/kZERETkVBjgibqZ0AB3zLs/Fjn5FfhoXybYS46IiKh7YYAn6oZGROsw6fYIfJeSj29/zZO7HCIiIupADPBE3dSUO/oirq8ftu4/g6zL5XKXQ0RERB2EAZ6om1IoBDz54CD4eWmxescplFfVyV0SERERdQAGeKJuzN1FjcXTBqOmzoTVO1NhquegViIiImfHAE/UzYUFemDubwfibG45PjlwVu5yiIiI6CbJ+iZWIuoao2KDcP5KBfYevYTIEC+Mjg+RuyQiIiJqJ96BJ+ohZoyJwsAIX2zak4nzVyrkLoeIiIjaiQGeqIdQKhRYMHkQvN3VeCfpFCpqDHKXRERERO3AAE/Ug3i6abBoWjwqqo1Yk3wa9WYOaiUiInI2DPBEPUyfYC88NiEa6ReuYvs32XKXQ0RERDeIg1iJeqDR8SE4n1+JvUcvoU+wF0bFBsldEhEREdmJd+CJeqhZ4/qhf29vfPhlOi4VVsldDhEREdmJAZ6oh1IpFVg4JQ5uLiq8k5SCKr1R7pKIiIjIDgzwRD2Yt4cWi6bGo7SiDmv/expmsyh3SURERHQdDPBEPVxUL2888psBSD1Xip3fn5O7HCIiIroOBngiwpihvXDXkBDsOnIBxzKL5C6HiIiIroEBnogAAI/cG43IEC+s/yINecXVcpdDREREbWCAJyIAgFqlwKKpcdCqFHgn6RRqak1yl0REREQ2MMATkcTPywVPTYlDUZke63elwSxyUCsREZGjYYAnIgvR4b743dh++DWrGLuOnJe7HCIiImqFAZ6IrIwf0RsJg4KQ/F0OUrKL5S6HiIiIWmCAJyIrgiAgcUIMwoI8sObzNBRcrZG7JCIiImrEAE9ENmnVSiyeGg+lQsA7n51CrYGDWomIiBwBAzwRtSnAxxVPTh6EvJJqfPhlBkQOaiUiIpIdAzwRXdOgPn6YMSYKP2cUYs/Ri3KXQ0RE1OMxwBPRdU24NRwjYwKx/ZtsnM4plbscIiKiHo0BnoiuSxAEzJ0Yg9AAd7yfnIriMr3cJREREfVYDPBEZBcXjQqLp8XDLALv7DgFg7Fe7pKIiIh6JAZ4IrJbkK8bnnggFpcKqrBpDwe1EhERyYEBnohuyJB+AZh8ZyR+OF2Ar47lyl0OERFRj8MAT0Q3bNLtfTC0XwD+cyALmRevyl0OERFRj8IAT0Q3TCEImDcpFjpfV7y3MxWlFbVyl0RERNRjMMATUbu4uajwx2nxqDOZ8e6OVBhNZrlLIiIi6hEY4Imo3UID3DHv/ljk5Fdg6/5MucshIiLqEWQN8AaDAW+88QbuuOMODB48GL/73e/www8/2LVtQUEBlixZgltuuQXDhw/HwoULcenSpWtuc/LkScTExCA6OhoVFRUdcQhEPd6IaB3uT4jAoZP5+ObXy3KXQ0RE1O3JGuCfffZZbNq0CQ8++CCee+45KBQKzJ8/HydOnLjmdtXV1UhMTMSxY8ewYMEC/M///A/S0tKQmJiI8vJym9uIooiXX34Zrq6unXEoRD3a1Dv7Iq6vH7buO4Osy7bPQSIiIuoYsgX4lJQUfPHFF3jmmWfw5z//GbNmzcKmTZsQEhKCFStWXHPbjz/+GBcuXMDatWsxb948zJkzBxs2bEBBQQE2btxoc5sdO3bg4sWLmD59eiccDVHPplAIePLBQfDz0mL1jlMor6qTuyQiIqJuS7YAv2fPHqjVasycOVNq02q1mDFjBo4dO4bCwsI2t927dy+GDh2K2NhYqS0qKgoJCQnYvXu31fpVVVVYuXIlFi9eDG9v7449ECICALi7qLF42mDU1JmwemcqTPUc1EpERNQZZAvw6enpiIyMhLu7u0X74MGDIYoi0tPTbW5nNpuRmZmJuLg4q2Xx8fE4f/489Hq9Rfvq1avh4eGBhx56qOMOgIishAV6YO5vB+Jsbjn+cyBL7nKIiIi6JdkCfFFREQIDA63adTodALR5B76srAwGg0Far/W2oiiiqKhIajt//jw2b96Mv/zlL1CpVB1UPRG1ZVRsEO67NQwHjufi8Kl8ucshIiLqdmRLtLW1tVCr1VbtWq0WAFBXZ7sPbVO7RqNpc9va2uaXyrz66qsYOXIk7rnnnpuuGQD8/T06ZD/todN5yvbZRDfiqRlDkV+qx+a9mYjrH4h+YT5d+vk8V4jsw3OFyD6Odq7IFuBdXFxgNBqt2psCelMYb62p3WAwtLmti4sLAODQoUP47rvvsGPHjg6pGQBKSqpgNosdtj976XSeKCqq7PLPJWqvxyfG4KWNP+PlD37E3+aMhJeb9UV3Z+C5QmQfnitE9pHjXFEohGveNJatC41Op7PZTaap+4ut7jUA4OPjA41GY9FNpuW2giBI3WveeOMNjB07Fu7u7sjNzUVubq40/3teXt41B8oS0c3xctNg0bR4lFcbsSb5NOrNHNRKRETUEWS7Ax8TE4MtW7agurraYiDryZMnpeW2KBQKDBgwAKmpqVbLUlJSEBERIc31np+fjzNnzmD//v1W606ePBlDhgzBp59+2hGHQ0Q29An2QuJ90fjgy3R89s05/G5sP7lLIiIicnqyBfgJEybggw8+wLZt2zBnzhwADd1ikpKSMHz4cAQFBQFouFOu1+sRFRUlbXvfffdh5cqVSEtLk6aSPHfuHH788UfMnz9fWm/FihUwmUwWn/vFF1/gyy+/xBtvvIGQkJBOPkoiumNwCM5fqcCeoxcREeyJUbFBcpdERETk1GQL8EOGDMGECROwYsUKFBUVITw8HDt27EBeXh5effVVab2//OUvOHr0KDIzM6W2hx9+GNu2bcMTTzyBuXPnQqlUYuPGjdDpdNLFAACMGTPG6nObpqccM2YMvLy8Ou34iKjZ78f1x8XCKny4Ox2hAe4IC5RvMDgREZGzk60PPAC8/vrrmD17NpKTk/Hyyy/DZDJh7dq1GDFixDW38/DwwJYtWzB8+HCsXr0aq1atQkxMDD766CP4+vp2UfVEZC+VUoFFU+LgplXhnaQUVOmtB7ATERGRfQRRFLt+ShUnxlloiNov63I5Xtt6HAP7+GLpjCFQKIQO/wyeK0T24blCZB/OQkNEPVq/Xt545N4BSD1Xip3fn5O7HCIiIqfEAE9EXeruoaG4c3AIdh25gONnrKeDJSIiomtjgCeiLiUIAh79zQBEhnhh/a405BVXy10SERGRU2GAJ6Iup1YpsWhqHDQqBd5JOgV9nen6GxEREREABngikomflwuemhKHwqt6rN+VBjPH0xMREdmFAZ6IZBMd7otZ4/rhxNlifHHkvNzlEBEROQUGeCKS1fgRvZEwKAg7v8tBSnax3OUQERE5PAZ4IpKVIAhInBCDsEAPrPk8DQVXa+QuiYiIyKExwBOR7LRqJRZPi4dCAN5JOoVaAwe1EhERtYUBnogcQoCPKxZMjkNecTU+/DIDfEk0ERGRbQzwROQwBkX6YcbdUfg5oxB7jl6UuxwiIiKHxABPRA5lwqhw3BITiO3fZOP0+VK5yyEiInI4DPBE5FAEQcDjE2MQ6u+ONcmnUVyml7skIiIih8IAT0QOx0WjwuJp8ag3i3hnxykYjPVyl0REROQwGOCJyCEF+bnhiQdicamgCpv2ZHJQKxERUSMGeCJyWEP6BWDyHZH44fQVHDiWK3c5REREDoEBnogc2qTRfTC0XwD+czALmRevyl0OERGR7BjgicihKQQB8ybFIsDHFe/tTEVpRa3cJREREcmKAZ6IHJ6biwp/nBaPOpMZq3emwmgyy10SERGRbBjgicgphAa4Y979A3EurwJb95+RuxwiIiLZMMATkdMYER2I+xMicOhkHr759bLc5RAREcmCAZ6InMrUO/siLtIPW/edQfblcrnLISIi6nIM8ETkVBQKAU88OAh+Xlq8u+MUyqvq5C6JiIioSzHAE5HT8XBVY9HUeNTUmrB6ZypM9RzUSkREPQcDPBE5pfAgT8yZGIOzueX4z4EsucshIiLqMiq5CyAiaq/bYoNxPr8S+36+hD4hnhgdHyJ3SURERJ2OAZ6InNrMe6JwsaASH36Zju3fZKOi2gA/Ly2m3R2FhEHBcpdHRETU4diFhoicmlKhwC0DA2EWgfJqA0QAJRV12LQ7Az+cviJ3eURERB2Od+CJyOnt/uGCVZvBZMam3RkoKa9FaIA7QgPcEejjCoVCkKFCIiKijsMAT0ROr6TC9lSSBpMZSYfOSd+rlAoE+7mhl84dof5uzcHe1xVKBR9IEhGRc2CAJyKn5++ltRni/b20eGneKOSX1CCvuBqXi6uRV1yN7Mvl+CmtQFpPpRQQ5OeGXgHuCPV3twj2KiWDPRERORYGeCJyetPujsKm3RkwmJrng9eoFJh2dxRcNCpEhnghMsTLYps6Qz3yS6txuagaeSXVyC+uQU5+BX5OL4TYuI5SISDYzw0hAQ137HvpPBDq74YgPzcGeyIikg0DPBE5vabZZpK+zUZpRZ1ds9BoNUr0CfZCn+BWwd5YjyuNd+zzShoC/sWCShzLsAz2gb6uCA1wb7hr3/gnyNcNahWDPRERdS5BFEXx+qtRk5KSKpjNXf8j0+k8UVRU2eWfS+RsOutcMRjrcaXUsitOXkkNCq/WoOlfUYXQEOx7BbgjpEW4D/ZzhVql7PCaiG4Gf68Q2UeOc0WhEODv79Hmct6BJyKyg0atRHiQJ8KDPC3ajaZ6XCnVS8E+v/HribPFMDcme0EAAn3dpIGzTcE+xN+NwZ6IiG4YAzwR0U1Qq5QIC/RAWKDlnRKjyYyCq41dcVrctU/JLkG9uTnY63xcEerv3jgzTuMde383aNUBYyKkAAAXD0lEQVQM9kREZBsDPBFRJ1CrFOit80BvnWWwN9WbUVBag7ySGlwuqkJeSQ3yi6tx6lyLYA8gwMcFvQI8EBLg1nzH3s8dWg2DPRFRTydrgDcYDFi1ahWSk5NRUVGBmJgYLFu2DAkJCdfdtqCgAK+88goOHz4Ms9mM2267DcuXL0dYWJi0Tn5+PrZv345vv/0WFy5cgEKhwIABA7Bw4UK7PoOIqKOplAr00nmgl84DI2MCpXZTvRmFV/XSHfu8koa79q2Dvb+3i9Xg2RB/N7hoeD+GiKinkHUQ69NPP419+/YhMTERERER2LFjB1JTU7FlyxYMGzasze2qq6sxbdo0VFdXY86cOVCpVNi4cSMEQcDOnTvh7e0NAPjoo4/wxhtvYPz48Rg+fDhMJhOSk5Nx+vRpvPbaa5gyZcoN18xBrESOrbudK/Vmy2Df0BWnBldKq2Gqb/63yN+rOdg33LX3QIi/G1y1DPZkW3c7V4g6iyMOYpUtwKekpGDmzJlYvnw55syZAwCoq6vDpEmTEBgYiK1bt7a57bp16/Dmm28iKSkJsbGxAIDs7Gw88MADePLJJ7FkyRIAwNmzZ+Hv7w8/Pz9pW4PBgMmTJ6Ourg4HDx684boZ4IkcW085V+rNZhSV1VoMnm2aGcdU3zwfvp+XtuFOvX/LwbPucHNhsO/pesq5QnSzHDHAy/Yv+J49e6BWqzFz5kypTavVYsaMGfi///s/FBYWIjAw0Oa2e/fuxdChQ6XwDgBRUVFISEjA7t27pQDfv39/q201Gg3uvvtufPjhh6itrYWLi0sHHxkRUedTKhQI9nNDsJ8bhg/QSe1ms4iicj3yGl9Q1RTwMy+WwdjiRVe+nlrLrjj+7ggNcIObi1qOwyEiohsgW4BPT09HZGQk3N3dLdoHDx4MURSRnp5uM8CbzWZkZmZi1qxZVsvi4+Nx+PBh6PV6uLq6tvnZRUVFcHNzg1arvfkDISJyIAqFgCBfNwT5umEYLIN9cUWtFOyb3kD7za+XYTA2B3sfD400j33LgO/OYE9E5DBkC/BFRUUICgqyatfpGn7hFBYW2tyurKwMBoNBWq/1tqIooqioCOHh4Ta3v3DhAvbv34/7778fgiDcxBEQETkPhUJAoI8rAn1cMbR/gNRuFkWUlNc2D55tHED73cl81BnrpfW83TXSoNmWA2g9XBnsiYi6mmwBvra2Fmq19T/8TXfF6+rqbG7X1K7RaNrctra21ua2er0eS5YsgaurK5YtW9auuq/VH6mz6XSe11+JiHiu3KCgQC/EtupxaDaLKC7T42JBJS5eqcSlgkpcLKjAkdR86Ouag72PpxbhQZ4IC/JEeHDj1yBPeHvwCacz4LlCZB9HO1dkC/AuLi4wGo1W7U0Bva3uLU3tBoOhzW1t9Wuvr6/HsmXLkJ2djQ0bNrTZv/56OIiVyLHxXOk4AoCIADdEBLgBcQ1PTEVRRGlFnUX/+vziahz85aJFsPd0Uzf0q9dZDqD1dFPz6aeD4LlCZB8OYm1Bp9PZ7CZTVFQEAG0GbB8fH2g0Gmm91tsKgmCze83zzz+Pb7/9Fm+++SZuvfXWm6yeiKhnEgQB/t4u8Pd2QXxff6ldFEVcrWwM9tIA2hr8eLoA+jqTtJ6Hq9qyK46/G0ID3OHlrmGwJyKyk2wBPiYmBlu2bEF1dbXFQNaTJ09Ky21pehlTamqq1bKUlBRERERYDWB97bXXkJSUhOeffx4TJ07swKMgIiKgIdj7ebnAz8sFcZGWwb6symAR7C8XV+NoWgFqWgR7dxeVFOxbBnxvBnsiIiuyBfgJEybggw8+wLZt26R54A0GA5KSkjB8+HBpgGteXh70ej2ioqKkbe+77z6sXLkSaWlp0lSS586dw48//oj58+dbfM769evxwQcfYMGCBZg9e3bXHBwREQFoCPa+nlr4emoxqE/zOzlEUURFtaHxxVTNf37JKER1bXOwd9OqrEJ9aIA7fDwY7Imo55L1TaxLlizBgQMH8NhjjyE8PFx6E+umTZswYsQIAMDs2bNx9OhRZGZmSttVVVVh6tSp0Ov1mDt3LpRKJTZu3AhRFLFz5074+voCAPbv34/FixejT58+WLhwodXn33vvvXBzc7uhmtkHnsix8VxxbqIooqLGaDkrTmNf+yp987gpV60KoQFuFv3rQwPc4eupZbC3E88VIvuwD3wrr7/+Ot566y0kJyejvLwc0dHRWLt2rRTe2+Lh4YEtW7bglVdewerVq2E2mzFq1Cg899xzUngHgIyMDADA+fPn8ec//9lqPwcOHLjhAE9ERJ1HEAR4u2vg7a7BwAhfi2UVNQbkN4b5pmB/MqsY36XkS+u4aJQtXkzVfNfez4vBnoi6D1nvwDsj3oEncmw8V3qeyhpD4/z1NRZvoC2vbp6tTKtRSgNmmwfQusPP2wWKHhrsea4Q2Yd34ImIiDqYp5sG0eEaRIdb3rGv0hutXlCVmlOKw6euSOto1UqENAb7lm+gDejBwZ6IHB8DPBERdUsermoMCPPBgDAfi/bqWiPyi2twubgKecU1yCuuQvqFqziS2hzsNSoFQqRuOM0BP8DbFQoFgz0RyYsBnoiIehR3FzX69fZGv97eFu01tSap+03Tn8xLV/HD6eZgr1YpEOLnZvWCKp0Pgz0RdR0GeCIiIgBuLir06+WNfr0sg72+zmT1gqqzl8rw4+kCaR2VUiF1xWkeROuGQF9XKBWKrj4UIurmGOCJiIiuwVWrQlSoN6JCrYN9fkmN1L8+r7ga2ZfL8VNay2AvINjPMtj30jXcsVcpGeyJqH0Y4ImIiNrBVatC31Av9A31smivM9RbdcXJya/Az+mFaJrDTKmwDPZNA2iDfBnsiej6GOCJiIg6kFajRGSIFyJDWgV7Yz2uNN6xb5rL/sKVSvySYRnsg/zcLKa8DA1wR7CfG4M9EUkY4ImIiLqAVq1ERLAnIoI9LdoNxnpcKa2xeEHVpcIqHDtThKY3tSgEAUF+rlYvqAryc4NaxWBP1NMwwBMREclIo1YiPMgT4UGWwd5oqm/oYy91x2kI+SfOFsPcmOwVggCdr2vjbDhuUj/7EH83qFVKm5/3w+krSPo2G6UVdfDz0mLa3VFIGBTc6cdJRB2HAZ6IiMgBqVVtBXszCkobgv3lFm+e/bVFsBcEINDH1aIbTqi/Oy4WVmLrvjMwmMwAgJKKOmzanQEADPFEToQBnoiIyImoVQr0DvRA70APYGBzu6m+Idhftnj7bA1SsktQbxbb3J/BZMZH+zJRUl4LjUoBjVoJdeNXjUoBjUoBddPfG7+qW6zHN9YSdT0GeCIiom5ApVSgl84DvXQeFu2mejMKruqRX1yN1TtTbW6rr6tH0qFz7f5crbox1KuU0KgVUKsag75aAa1KCbVa0Xgx0PT3hvU0qsaLBRsXB00XDlpV4/7UCigVAgReMBAxwBMREXVnKqUCvRoHvfp7aVFSUWe1jr+XFq88kQCjqR4GkxkGY8NXY4u/G4xmi+VGkxl1jV9bthlMZhhM9TAYzajWG3HVVNe8P2PDMlN9208ErkUQYPFkQHpa0MYFQcPFQOPyVk8SbF04aFvsT63m0wVyXAzwREREPcS0u6OwaXeG1AceADQqBabdHQV1Y4h164I6zGaxMew3BH2DqTH8N/699QWB0ViPOlPjBYSxuc3Q6gKjSm9sdaHRsD+xfdcLUCmbQn7Lpwe2niQ0PyWQLhYsLg6UzU8p1K0uJhrb+HSBbgQDPBERUQ/RNFBV7lloFAoBWo0SWo3tmXI6kiiKqDeLzUG/VfhveJJg/XSh5ZOE1hcExhZPF5qeKjRdWJjqzdcvygZBQJsXBFZPC6QnCY0XBy3aLMcvNHVpavWUgk8XnB4DPBERUQ+SMCgYCYOCodN5oqioUu5yOp0gCFApBaiUXfR0QRSlUN+6m1Hzk4QW3ZSkC4umiwXbf6+uNdp8SnGzTxekpwotnha0fJJgMaahZTcjq/Xb6pqkhErpnE8XHHnKVQZ4IiIiog6iEOR4utDwlKCuxQWBxfgFGxcETU8SmpZLfzfWo1pvQpmpzrJ7U+M+26Pp6ULDBYDlIOeW4xO0Np4uXHe8Q4unCtoOfLrww+krFt3NHG3KVQZ4IiIiIifU8ulCV0Q6s9gwdsFycLPlkwRbg5sNFuMXrMc71NSaLLor1TUOeDa38/GCSilYPhloNTuSxYxHLbsZtRjkvP2bLIuxIkDDlKtJ32YzwBMRERGRc1AIArRqJbRqJeCq7vTPM9W3fpLQcozC9Z8kWF44NPy9ps6Esqo6q6cU9j5dsDWLkxwY4ImIiIjI4aiUCqiUCrhqu/7pwsubf0FZlcFqPX8vbafXYg+F3AUQEREREcmp6emCh6safl4umHlPP2hUljG5acpVR8A78ERERERELTjKlKttYYAnIiIiImrFkadcZRcaIiIiIiInwgBPREREROREGOCJiIiIiJwIAzwRERERkRNhgCciIiIiciIM8EREREREToQBnoiIiIjIiTDAExERERE5EQZ4IiIiIiInwjex3iCFQuiRn03kTHiuENmH5wqRfbr6XLne5wmiKIpdVAsREREREd0kdqEhIiIiInIiDPBERERERE6EAZ6IiIiIyIkwwBMREREROREGeCIiIiIiJ8IAT0RERETkRBjgiYiIiIicCAM8EREREZETYYAnIiIiInIiDPBERERERE5EJXcBZFthYSE2b96MkydPIjU1FTU1Ndi8eTNGjRold2lEDiUlJQU7duzATz/9hLy8PPj4+GDYsGFYunQpIiIi5C6PyGGcOnUK77//PtLS0lBSUgJPT0/ExMRg0aJFGD58uNzlETmsdevWYcWKFYiJiUFycrLc5QBggHdYOTk5WLduHSIiIhAdHY0TJ07IXRKRQ1q/fj2OHz+OCRMmIDo6GkVFRdi6dSumTJmC7du3IyoqSu4SiRzCpUuXUF9fj5kzZ0Kn06GyshL//e9/8eijj2LdunUYPXq03CUSOZyioiK89957cHNzk7sUC4IoiqLcRZC1qqoqGI1G+Pr64quvvsKiRYt4B57IhuPHjyMuLg4ajUZqO3/+PB544AHcf//9+Oc//yljdUSOTa/XY/z48YiLi8OaNWvkLofI4Tz77LPIy8uDKIqoqKhwmDvw7APvoDw8PODr6yt3GUQOb/jw4RbhHQD69OmD/v37Izs7W6aqiJyDq6sr/Pz8UFFRIXcpRA4nJSUFn3/+OZYvXy53KVYY4Imo2xFFEcXFxbwIJrKhqqoKpaWlOHfuHFauXIkzZ84gISFB7rKIHIooinjppZcwZcoUDBw4UO5yrLAPPBF1O59//jkKCgqwbNkyuUshcjh//etfsXfvXgCAWq3G73//eyxYsEDmqogcy86dO5GVlYV3331X7lJsYoAnom4lOzsbL774IkaMGIHJkyfLXQ6Rw1m0aBFmzZqFK1euIDk5GQaDAUaj0aorGlFPVVVVhTfffBNPPPEEAgMD5S7HJnahIaJuo6ioCE8++SS8vb2xatUqKBT8J46otejoaIwePRrTp0/Hhg0bcPr0aYfs40skl/feew9qtRpz586Vu5Q28bcbEXULlZWVmD9/PiorK7F+/XrodDq5SyJyeGq1GuPGjcO+fftQW1srdzlEsissLMSmTZvw8MMPo7i4GLm5ucjNzUVdXR2MRiNyc3NRXl4ud5nsQkNEzq+urg4LFizA+fPnsXHjRvTt21fukoicRm1tLURRRHV1NVxcXOQuh0hWJSUlMBqNWLFiBVasWGG1fNy4cZg/fz6eeeYZGaprxgBPRE6tvr4eS5cuxa+//orVq1dj6NChcpdE5JBKS0vh5+dn0VZVVYW9e/ciJCQE/v7+MlVG5Dh69+5tc+DqW2+9hZqaGvz1r39Fnz59ur6wVhjgHdjq1asBQJrLOjk5GceOHYOXlxceffRROUsjchj//Oc/cfDgQdxzzz0oKyuzeMmGu7s7xo8fL2N1RI5j6dKl0Gq1GDZsGHQ6HfLz85GUlIQrV65g5cqVcpdH5BA8PT1t/t7YtGkTlEqlw/xO4ZtYHVh0dLTN9l69euHgwYNdXA2RY5o9ezaOHj1qcxnPFaJm27dvR3JyMrKyslBRUQFPT08MHToUjz/+OG699Va5yyNyaLNnz3aoN7EywBMRERERORHOQkNERERE5EQY4ImIiIiInAgDPBERERGRE2GAJyIiIiJyIgzwREREREROhAGeiIiIiMiJMMATERERETkRBngiInJ4s2fPxtixY+Uug4jIIajkLoCIiOTx008/ITExsc3lSqUSaWlpXVgRERHZgwGeiKiHmzRpEu666y6rdoWCD2mJiBwRAzwRUQ8XGxuLyZMny10GERHZibdXiIjomnJzcxEdHY23334bu3btwgMPPID4+HiMGTMGb7/9Nkwmk9U2GRkZWLRoEUaNGoX4+HhMnDgR69atQ319vdW6RUVFePnllzFu3DjExcUhISEBc+fOxeHDh63WLSgowNNPP42RI0diyJAh+MMf/oCcnJxOOW4iIkfFO/BERD2cXq9HaWmpVbtGo4GHh4f0/cGDB3Hp0iU88sgjCAgIwMGDB/HOO+8gLy8Pr776qrTeqVOnMHv2bKhUKmndr7/+GitWrEBGRgbefPNNad3c3Fw89NBDKCkpweTJkxEXFwe9Xo+TJ0/iyJEjGD16tLRuTU0NHn30UQwZMgTLli1Dbm4uNm/ejIULF2LXrl1QKpWd9BMiInIsDPBERD3c22+/jbffftuqfcyYMVizZo30fUZGBrZv345BgwYBAB599FEsXrwYSUlJmDVrFoYOHQoA+Mc//gGDwYBPPvkEMTEx0rpLly7Frl27MGPGDCQkJAAA/v73v6OwsBDr16/HnXfeafH5ZrPZ4vurV6/iD3/4A+bPny+1+fn54Y033sCRI0estici6q4Y4ImIerhZs2ZhwoQJVu1+fn4W399+++1SeAcAQRAwb948fPXVV9i/fz+GDh2KkpISnDhxAvfee68U3pvWfeqpp7Bnzx7s378fCQkJKCsrw3fffYc777zTZvhuPYhWoVBYzZpz2223AQAuXLjAAE9EPQYDPBFRDxcREYHbb7/9uutFRUVZtfXr1w8AcOnSJQANXWJatrfUt29fKBQKad2LFy9CFEXExsbaVWdgYCC0Wq1Fm4+PDwCgrKzMrn0QEXUHHMRKRERO4Vp93EVR7MJKiIjkxQBPRER2yc7OtmrLysoCAISFhQEAevfubdHe0rlz52A2m6V1w8PDIQgC0tPTO6tkIqJuiQGeiIjscuTIEZw+fVr6XhRFrF+/HgAwfvx4AIC/vz+GDRuGr7/+GmfOnLFYd+3atQCAe++9F0BD95e77roLhw4dwpEjR6w+j3fViYhsYx94IqIeLi0tDcnJyTaXNQVzAIiJicFjjz2GRx55BDqdDgcOHMCRI0cwefJkDBs2TFrvueeew+zZs/HII4/g4Ycfhk6nw9dff43vv/8ekyZNkmagAYC//e1vSEtLw/z58zFlyhQMGjQIdXV1OHnyJHr16oU//elPnXfgREROigGeiKiH27VrF3bt2mVz2b59+6S+52PHjkVkZCTWrFmDnJwc+Pv7Y+HChVi4cKHFNvHx8fjkk0/wr3/9C//+979RU1ODsLAwPPPMM3j88cct1g0LC8Nnn32Gd999F4cOHUJycjK8vLwQExODWbNmdc4BExE5OUHkM0oiIrqG3NxcjBs3DosXL8Yf//hHucshIurx2AeeiIiIiMiJMMATERERETkRBngiIiIiIifCPvBERERERE6Ed+CJiIiIiJwIAzwRERERkRNhgCciIiIiciIM8EREREREToQBnoiIiIjIiTDAExERERE5kf8HT8qOwfOCWiEAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Create test loader" + ], + "metadata": { + "id": "kn87qhtR9MP4" + } + }, + { + "cell_type": "code", + "source": [ + "prediction_dataloader = DataLoader(\n", + " test_dataset,\n", + " sampler = SequentialSampler(test_dataset),\n", + " batch_size = batch_size\n", + " )" + ], + "metadata": { + "id": "ENqiBZio9a7a" + }, + "execution_count": 34, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Evaluate on test dataset" + ], + "metadata": { + "id": "dAF9Iqol-kAP" + } + }, + { + "cell_type": "code", + "source": [ + "print('Predicting labels for {:,} test sentences...'.format(len(test_dataset)))\n", + "\n", + "model.eval()\n", + "predictions , true_labels = [], []\n", + "\n", + "for batch in prediction_dataloader:\n", + " batch = tuple(t.to(device) for t in batch)\n", + " \n", + " b_input_ids, b_input_mask, b_labels = batch\n", + " \n", + " with torch.no_grad():\n", + " outputs = model(b_input_ids, token_type_ids=None, \n", + " attention_mask=b_input_mask)\n", + "\n", + " logits = outputs['logits']\n", + "\n", + " logits = logits.detach().cpu().numpy()\n", + " label_ids = b_labels.to('cpu').numpy()\n", + " \n", + " predictions.append(logits)\n", + " true_labels.append(label_ids)\n", + "\n", + "print(' DONE.')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XXCWIk8c9Oun", + "outputId": "6f187c3f-7a21-4cb8-b2c1-b738fdcf9cf9" + }, + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Predicting labels for 1,000 test sentences...\n", + " DONE.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "results_ok = 0\n", + "results_false = 0\n", + "for idx, true_labels_batch in enumerate(true_labels):\n", + " predictions_i = np.argmax(predictions[idx], axis=1).flatten()\n", + " for bidx, true_label in enumerate(true_labels_batch):\n", + " if true_label == predictions_i[bidx]:\n", + " results_ok += 1\n", + " else:\n", + " results_false += 1\n", + "\n", + "print(\"Correct predictions: {}, incorrect results: {}, accuracy: {}\".format(results_ok, results_false, float(results_ok) / (results_ok + results_false)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TVIFBFmFEwNv", + "outputId": "6e8909c3-9337-4de4-f268-c1fa957d3e81" + }, + "execution_count": 36, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Correct predictions: 995, incorrect results: 5, accuracy: 0.995\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# MCC Score" + ], + "metadata": { + "id": "6gTgKchs_OXY" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics import matthews_corrcoef\n", + "\n", + "matthews_set = []\n", + "print('Calculating Matthews Corr. Coef. for each batch...')\n", + "\n", + "for i in range(len(true_labels)):\n", + " pred_labels_i = np.argmax(predictions[i], axis=1).flatten()\n", + "\n", + " matthews = matthews_corrcoef(true_labels[i], pred_labels_i) \n", + " matthews_set.append(matthews)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hOelDEdn_QDE", + "outputId": "a56f6011-7da3-43e0-98bb-d3193036d5e0" + }, + "execution_count": 37, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Calculating Matthews Corr. Coef. for each batch...\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "ax = sns.barplot(x=list(range(len(matthews_set))), y=matthews_set, ci=None)\n", + "\n", + "plt.title('MCC Score per Batch')\n", + "plt.ylabel('MCC Score (-1 to +1)')\n", + "plt.xlabel('Batch #')\n", + "\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 427 + }, + "id": "cF34A88N_UgQ", + "outputId": "8922ba13-2295-481d-9e14-2b75fed302da" + }, + "execution_count": 38, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAAGaCAYAAACopj13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXyNZ/7/8ffJLgkSaaKKoIjYYi2lVKkl9i2UIpYWVTqtfnXCt792ZjqdUhQdtJa2SihFEinGUtrpYi8qVChqCZlyLAlJREjO7w9fmcZJjpPkxE3yej4eHpXrvq/P/Tk5SfrO7TrXMVksFosAAAAAGMbJ6AYAAACAko5QDgAAABiMUA4AAAAYjFAOAAAAGIxQDgAAABiMUA4AAAAYjFAOAMADYsiQIWrXrp3RbQAwgIvRDQBAYe3atUvh4eGSpEGDBuntt9+2OufSpUtq06aNbt68qWbNmikyMtLqnIMHD2rZsmXas2ePzGaznJycVKlSJbVo0UIDBgxQ9erVc5x//fp1ffnll9q8ebOOHz+u1NRUlS1bVnXr1lXnzp3Vo0cPubjY/jF77do1RUZGatOmTTp37pwyMzPl6+ur4OBgtW3bVv369SvEZwZ3a9eunc6dO5f9sclkkp+fn6pVq6aBAweqa9euBa69ZcsWxcfH65VXXnFEqwBKGEI5gGLD3d1d69at08SJE+Xm5pbjWGxsrCwWS54hec6cOZozZ458fX3VrVs31ahRQ1lZWTp+/Lg2bNigZcuWaffu3fL29pYknT59WqNGjdKpU6fUsmVLjRo1Sr6+vrp06ZJ27NihSZMm6fjx4/rzn/+cZ78pKSkKCwtTQkKCOnXqpL59+8rV1VUJCQnat2+flixZQigvAo8++qhef/11SVJWVpbOnz+vmJgYvf766zKbzRo2bFiB6m7ZskUxMTGEcgAFQigHUGx06NBB69at05YtW9SlS5ccx6Kjo/X0009r586dVvNWr16t2bNnq3nz5po7d65Kly6d4/gbb7yhOXPmZH+cnp6u0aNH6+zZs5o9e7Y6duyY4/xRo0YpLi5OBw8etNnvypUrderUKf3v//6vhg4danXcbDbf8zEXhZSUlOxfPh4mFotFaWlp8vLysnle6dKl1bNnzxxjzz33nFq3bq3o6OgCh3IAKAzWlAMoNurUqaNatWopOjo6x3hcXJyOHTumvn37Ws3JyMjQrFmz5OnpqVmzZlkFckny8PDQhAkTsoPqqlWrdPLkSQ0fPtwqkN8REhKiQYMG2ez31KlTkqQWLVrketzf399q7PTp05o0aZKefvpp1atXT61atdKYMWN06NChHOdt2bJFAwYMUMOGDdWoUSMNGDBAW7ZssarXrl07DRkyRIcPH9YLL7ygJk2aqEePHjl6fOONN9SqVSvVq1dP7dq10/vvv6+0tDSbj+3u+r/88ovCw8PVqFEjNWvWTBEREbp06ZLV+RkZGZo3b566du2q+vXrq2nTpnrppZd0+PDhHOft2rUr+7letmyZunTpovr16+uzzz6zq6+7lS1bVm5ubnJ1dc0xHhcXp4kTJ6pTp05q0KBB9ufy66+/znHekCFDFBMTI0mqVatW9p8/fi2azWa9++67evbZZ1WvXj21aNFCw4cP17Zt26z6OX/+vF5//XU98cQTatCggV544QWdPHmyQI8NwMOBO+UAipW+fftqypQpOn/+vMqXLy/p9p1wPz8/PfPMM1bn79u3T2azWT179lS5cuXsusamTZsk3b67WhiBgYGSbt/FnzBhwj3Xnx88eFDDhg3TrVu3FBYWppo1ayo5OVm7d+/W/v37Va9ePUnSsmXL9M477+jxxx/Xyy+/LEmKiYnR2LFj9c4771j1nZiYqKFDhyo0NFQdO3bMDtyHDh3S0KFDVaZMGT333HMqX768jhw5osjISO3fv1+RkZFWITY3v//+u4YNG6aOHTuqU6dOOnz4sKKionTo0CGtXr1apUqVkiTdvHlTL7zwgvbv36+ePXtq0KBBSklJ0cqVKzVw4EAtXbpU9evXz1F78eLFSkpKUr9+/eTv769HH330nv1kZmbq8uXLkm4vXzGbzVqyZIlSU1M1YMCAHOd+/fXX+u233xQaGqqKFSsqKSlJMTExGjdunKZPn67u3btLkl566SVlZWXpp59+0tSpU7PnN27cWJJ09uxZDRw4UJcuXVLPnj1Vr149Xb9+XQcOHND27dv11FNPZc9JS0vT4MGD1aBBA40fP15nz57VkiVL9PLLL2vdunVydna+52ME8BCyAMBDbufOnZagoCDLJ598Yrl8+bKlbt26lo8//thisVgs169ftzRp0sQyZcoUi8VisTRs2NAyePDg7LlLliyxBAUFWT777DO7r9esWTNL48aNC913UlKSpU2bNpagoCBLixYtLK+88opl/vz5lj179lgyMzNznJuVlWXp2rWrpV69epb4+HirWnfOT0pKsjRs2NDSvn17y7Vr17KPX7t2zfLss89aGjZsaElOTs4eb9u2rSUoKMiycuVKq5rdu3e3dOrUKUcdi8Vi2bx5syUoKMgSFRV1z8d4p/6iRYtyjC9atMgSFBRkmT9/vtXY999/n+Pca9euWdq0aZPjebvznD/xxBOWixcv3rOPu/u5+0/9+vUtK1assDo/NTXVaiwtLc3SsWNHS+fOnXOMR0REWIKCgnK97osvvpjrY7NYLDme68GDB1uCgoIsCxYsyHHOwoUL85wPoHhg+QqAYsXX11ft2rXLXkqwefNmXbt2LdelK9Lt9dOS8rWGOiUl5Z7rlu1RtmxZRUdHa+TIkSpdurQ2bdqkDz74QIMGDVL79u31448/Zp8bHx+vY8eOqU+fPgoODraq5eR0+8f5tm3blJaWpiFDhuR4TN7e3hoyZIjS0tK0ffv2HHN9fHzUp0+fHGNHjx7V0aNH1a1bN2VkZOjy5cvZf5o0aSJPT89cl13kxtvbW88//3yOseeff17e3t45loF89dVXevzxx1W3bt0c18vIyFDLli21d+9epaen56jTs2dP+fn52dXHHRUrVtSiRYu0aNEiffbZZ5oyZYoaNGigv/71r4qKispxrqenZ/bfr1+/ritXruj69et68skndeLEieyvH1uSkpL0ww8/qHXr1mrdurXV8TvP3R8/vrOb0B1PPvmkpNvLlwAUTyxfAVDs9O3bV6NGjdJPP/2kqKgohYSEqEaNGrmeeye4pqam2l3f29s7X+fbUq5cOU2YMEETJkzQlStX9PPPP2vDhg366quvNG7cOMXGxqpKlSrZ68/r1Kljs97Zs2clSTVr1rQ6dmcsISEhx3jlypWtlkScOHFCkjR79mzNnj0712tdvHjx3g/w/+rfvRuOm5ubKleunKOXEydOKD09Pc819pJ05coVVahQIfvjqlWr2tXDH3l6eqply5Y5xrp3767evXvr3XffVbt27eTr6yvp9laas2bN0tatW3NdA3/16tV7/kJ35swZWSyWez53dwQEBMjd3T3HmI+Pj6TbAR9A8UQoB1DstGrVSuXLl9fcuXO1a9cu/fWvf83z3DtB9e4XEtpSs2ZN7dmzRwkJCapcuXJh283m6+urtm3bqm3btqpQoYLmzZun9evXZ68LLyp31nTnZsSIEbne3ZWkMmXKOLQPi8WioKAgTZo0Kc9z7l73b6v3/HBxcdGTTz6pJUuWKC4uTm3atJHFYtGIESN04sQJhYeHq169eipdurScnZ0VFRWldevWKSsryyHX/yNba8YtFovDrwfgwUAoB1DsODs7q1evXpo/f748PDzUrVu3PM9t3Lix/P39tWXLFl25ciX7DqktHTt21J49e7Rq1ars/a4drUGDBpJu78IhSdWqVZN0exmLLXd+STh27JjVHefjx4/nOMeWKlWqSLq9lOLuu8r5lZCQoIyMjBx3yzMyMpSQkKDHH388xzWvXLmiJ5980mpJx/1w69YtSf/9V5OjR4/qyJEjGjt2rP70pz/lOHfVqlVW800mU651AwMDZTKZ7vncASjZWFMOoFgaMGCAxo0bp7/97W82lxe4ubnptddeU2pqqsaPH5/rGuEbN25oxowZ2cf69eunatWq6bPPPst1m0Hp9s4ly5Yts9nj/v37dfXq1VyP3al7Z9lNcHCwatasqaioKB07dszq/Dt3UJ966il5enpq6dKlOR5LSkqKli5dKk9Pzxw7feSlTp06CgoK0ooVK6yWu0i3A6y9SylSUlL0xRdf5Bj74osvlJKSovbt22eP9erVS2azWYsWLcq1jr3LZQrixo0b+uGHHyT9d4nQnV8M7r47/euvv1ptiSj9d/353Z8XHx8fPf300/r++++t1vPnVh9AycSdcgDF0mOPPWb3OyuGhYXp999/15w5c9SxY8cc7+h54sQJbdy4UZcvX9aoUaMk3V4yMX/+fI0aNUpjx45Vq1at1LJlS/n4+Ojy5cvatWuXfvzxR7344os2r7t27VpFR0erTZs2CgkJkY+Pj5KSkvTdd99p165dqlGjRvYLVE0mk9577z0NGzZM/fr1y94S8erVq9qzZ49at26tIUOGqEyZMpowYYLeeecd9e/fX71795Z0e0vE06dP65133sl1L/a7mUwmTZ06VUOHDlWPHj3Ut29f1ahRQ+np6Tp9+rS+/vprvf7661YvEM1NYGCg5s6dq2PHjqlu3br65ZdfFBUVpccff1xDhgzJPi88PFzbt2/X1KlTtXPnTj355JPy9vZWYmKidu7cKTc3N0VGRt7zevdy7do1xcbGSrodiC9cuKC1a9cqISFB/fv3z16nXr16ddWsWVOffPKJ0tPTVa1aNZ08eVJffvmlgoKC9Msvv+So26BBAy1dulR/+9vf1KZNG7m6uiokJESVK1fWW2+9pcOHD2vkyJHq1auX6tatqxs3bujAgQOqWLGi3njjjUI/LgAPN0I5AEgaN26c2rRpo6VLl2rLli1avny5nJycFBgYqC5dumjgwIE57rhXqVJFa9as0ZdffqlNmzZp3rx5SktLU9myZVWvXj1NmTIlew/rvAwYMEClS5fWrl27tGjRIiUlJcnV1VVVqlTRuHHjNHz48By7f4SEhGj16tX66KOPtGHDBq1YsUI+Pj4KCQnJ3g9bkgYNGqSAgAB9+umnmjt3rqTbd9rnzp2b4870vdSuXVsxMTGaP3++vvnmG61YsUJeXl6qWLGievfubfMFmX/06KOPatasWXr//fe1fv16ubq6qnv37oqIiMjx+FxdXTV//nx98cUXio2NzX6BaUBAgOrXr5/9C0Zh/f777/rzn/+c/XGpUqVUvXp1/eUvf8mxT7mzs7Pmz5+v999/XzExMbp+/bpq1qyp999/X0eOHLEK5d26dVN8fLzWr1+vjRs3KisrS5MnT1blypVVuXJlRUVFae7cufr+++8VGxurMmXKKDg4uND73QMoHkwW/t0MAFBE2rVrp4oVKzrkDjcAFGesKQcAAAAMRigHAAAADEYoBwAAAAzGmnIAAADAYNwpBwAAAAxGKAcAAAAMxj7l/+fKlVRlZbGSBwAAAEXDyckkX1+vXI8Ryv9PVpaFUA4AAABDsHwFAAAAMBihHAAAADAYoRwAAAAwGKEcAAAAMBihHAAAADAYoRwAAAAwGKEcAAAAMJihofzChQuaPn26hgwZokaNGqlWrVratWuX3fNPnDihF154QY0aNVKzZs0UERGhy5cvF2HHAAAAgOMZGspPnjyphQsX6vz586pVq1a+5v7+++8aNGiQEhISNH78eI0YMULffvutXnjhBd28ebOIOgYAAAAcz9B39Kxbt6527twpX19fbdmyRWPHjrV77rx583Tjxg1FRkaqfPnykqSQkBANHz5csbGxCgsLK6q2AQAAAIcy9E65t7e3fH19CzR38+bNateuXXYgl6SWLVuqatWq2rBhg6NaBAAAAIrcQ/lCz/Pnz+vSpUuqV6+e1bGQkBDFx8cb0BUAAABQMA9lKL9w4YIkyd/f3+qYv7+/Ll26pMzMzPvdFgAAAFAghq4pL6gbN25Iktzc3KyOubu7S5LS09Pl5eVld00/P29ZbmXK5OJcqN7urmG5dUsml8J9mu+uYbl1UyYX10LWzFkj61aGnFysP5/5cXeNwtbMbX7mrQw5F6JmbvMfhpq3MjPk4ly45+fuGkVR82ZmhlwLWfPuGhmZGXIrZM27a2Rk3pSbc+G+h+6ukZF5S27Ohfted0SN+3GNu2tkZGbKzblwPzvvrlEUNYtCRmaW3JwLfn+rsPPv1zXurnEr0yIXZ1Ohat5dIzPTIudC1ry7RlHUzMq0yKmQNe+ukXXLIieXQta8q4bllkWmQta8u4blVpZMLoX7WnJEjXtfoyjyXOFq2jP/oQzld4J3RkaG1bE7gd3DwyNfNS9dSpGfn7fMHy8tVG/+YwbLbL7234/9S+vCvNmFqhnw0itWNf/zUUShalZ4+X2rmsfn9CxUzRrjYq1q7pnfvcD1nhi9Nke9OzW/+aRrgWu2e3F9rjVjP+tc4Jo9R2zIteayzzsVuOagYZusPpfzIwteT5JGD7GuOW154Wq+MdC6ZsTq0ELVfD9so1XNHrGFq/lVT+uaXdb8T6Fq/qvXB9Y1YyYXrmbvSVZfS47m719aXaM+LVSN9X1fsHrs3VYvK1TNdWGDrGp2Xx1VqJprw/rel89n76jvCjw/pm+b+9LjwOhThaqxvE9Vq+fn/Zj/FKpmRO8KVjWXRpsLVXNwH3+rmhu+vFiomp2fe8Sq5vbFheuz5VDrPn+Zd75QNeu+VN6q5rlphXuOKr5h/Rz9/sGRQtV89H+C78vX/IXZ3xaqRsArba3z3Ny1Ba83trvM5mtycjLJz88713MeyuUrAQEBkiSz2fqbwmw2y8/PT85FfHcEAAAAcJSHMpSXL19e5cqV06FDh6yOxcXFqXbt2gZ0BQAAABTMQxHKz5w5ozNnzuQY69ixo7755hudP//ff+7ZsWOHTp06pdDQwv1TNwAAAHA/Gb6m/KOPPpIknThxQpIUGxurvXv3qkyZMho8eLAkadiwYZKkb775JnveSy+9pI0bNyo8PFyDBw9WWlqaPv30UwUHB6tnz8KtjQYAAADuJ8ND+Ycffpjj46io2y/sqVixYnYoz02FChW0dOlSTZkyRR988IFcXV31zDPPaNKkSbnuygIAAAA8qAwP5UePHr3nOX+8Q/5HNWvW1KefFm4XAQAAAMBoD8WacgAAAKA4I5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABnMxugEAAPBfpX085eHqXOD56TczdS0pzYEdAUWnXFlPObsV/OtdkjIzMnU5+eH/mieUAwDwAPFwdVZY1L4Cz1/dt7GuObAfoCg5uznr/Kw9hapR/rUnHNSNsVi+AgAAABiMUA4AAAAYjFAOAAAAGIxQDgAAABiMUA4AAAAYjFAOAAAAGIxQDgAAABiMUA4AAAAYjFAOAAAAGIxQDgAAABiMUA4AAAAYjFAOAAAAGIxQDgAAABiMUA4AAAAYjFAOAAAAGMzF6AYAALkr7eMhD1fXQtVIv3lT15LSHdQRAKCoEMoB4AHl4eqqrtGzC1VjfZ9XdE2Eckkq7VNKHq4F/99e+s1bupZ03YEdAcB/EcoBACWCh6uLeq7eUOD5sWGddc2B/QDAH7GmHAAAADAYoRwAAAAwGKEcAAAAMBihHAAAADAYoRwAAAAwGKEcAAAAMJjdWyKePHlSu3fv1rFjx3T58mWZTCb5+voqKChITzzxhKpVq1aUfQIAAADFls1QfuPGDUVFRenLL7/Ur7/+KovFkut5JpNJQUFBGjBggPr06SN3d/ciaRYAAAAojvIM5WvWrNGsWbN0/vx5NW3aVOPHj1ejRo0UGBgoHx8fWSwWJScn6/Tp0/r555/1/fff65133tH8+fM1fvx49ezZ854Xz8jI0IcffqjY2FhdvXpVwcHBGj9+vFq0aHHPudu3b9fHH3+sX3/9VVlZWXr88cc1dOhQdenSJX+fAQAAAMBgeYbyv/71rxowYICGDBmiihUr5nqOh4eHypcvr2bNmmnUqFE6d+6cFi9erL/85S92hfKJEydq8+bNCg8PV5UqVRQTE6ORI0cqMjJSjRo1ynPet99+qzFjxqhRo0Z65ZVXJEnr16/X+PHjlZqaqn79+t3z2gAAAMCDIs9QvmXLFj3yyCP5KlaxYkX97//+r0aOHHnPc+Pi4rR+/XpNmjRJw4YNkyT16tVL3bp10/Tp07Vs2bI85y5btkz+/v5avHix3NzcJEn9+/fXs88+q9jYWEI5AAAAHip57r6S30D+R/7+/vc8Z+PGjXJ1dc0RoN3d3RUWFqa9e/fqwoULec5NSUlR2bJlswO5JLm5uals2bKsZwcAAMBDx7AtEePj41WtWjV5eXnlGA8JCZHFYlF8fHyec5s1a6Zjx45p1qxZOnPmjM6cOaNZs2bp1KlTGjFiRFG3DgAAADiU3Vsi3su3336rzZs3a/LkyXadbzabVb58eavxO3fZbd0pf+mll3TmzBnNmzdPH3/8sSTJ09NTH330kZ566qkCdA8AAAAYx2Gh/MiRI1qzZo3doTw9PV2urq5W43eWn9y4cSPPuW5ubqpatapCQ0PVoUMHZWZmauXKlXrttdf0+eefKyQkJN/9+/l553tOXvz9SzusVkmv+TD0SE1qUrPk1HwYeqQmNan5YNa8Vz2HhfL88vDw0M2bN63G74RxW2vD//73v+vgwYNavXq1nJxur8Dp3LmzunXrpvfee08rVqzIdz+XLqU4LJibzdey/+6oJ7Sk1vxjvZJc80F9fqhJzZJWk58f1KQmNQtTz8nJlGfetBnKw8PD7b5QYmJivhrz9/fPdYmK2WyWJAUEBOQ6LyMjQ6tXr9bo0aOzA7kkubq6qnXr1lq+fLlu3bolFxfDft8AAAAA8sVmct29e7dcXFxyXWZyt1u3buXrwsHBwYqMjFRqamqOF3seOHAg+3hukpKSdOvWLWVmZubaw61bt/J851EAAADgQWRz95Xy5curVatW2r9//z3/jBkzJl8XDg0N1c2bN7Vq1arssYyMDEVHR6tx48bZLwJNTEzUiRMnss/x8/NTmTJl9PXXX+dY/pKamqpvv/1WQUFBdv0SAQAAADwobN4pr1Onjg4ePGhXIZPJlK8LN2jQQKGhoZo+fbrMZrMCAwMVExOjxMTEHC8WjYiI0O7du3X06FFJkrOzs0aMGKFZs2bpueeeU48ePZSVlaXVq1fr999/V0RERL76AAAAAIxmM5TXrVtX3377rc6fP5/r9oV/VLp0aVWoUCFfF586dapmzZql2NhYJScnq1atWlqwYIGaNGlic96YMWNUqVIlLVmyRHPnzlVGRoZq1aqlOXPmqEOHDvnqAQAAADCazVA+YsQI9e7dW76+vvcsNHjwYA0ePDhfF3d3d1dERITNu9uRkZG5jnfv3l3du3fP1/UAAACAB5HNUO7p6SlPT8/71QsAAABQItl8oScAAACAokcoBwAAAAxWoFB+5coV1a5dWzt27HB0PwAAAECJU+A75bxBDwAAAOAYLF8BAAAADEYoBwAAAAxmc0vEOxITE3N8nJycLEm6fPmy1bHHHnvMQa0BAAAAJYNdobxdu3YymUxW4xMmTLAai4+PL3xXAAAAQAliVyh/7733coTy1NRUvfvuuxoxYoRq1KhRZM0BAAAAJYFdobxPnz45Pr5y5YreffddtWrVSi1atCiSxgAAAICSghd6AgAAAAYjlAMAAAAGI5QDAAAABrNrTfndSpcurSVLlqh27dqO7gcAAAAocQoUyl1cXNSsWTNH9wIAAACUSCxfAQAAAAxGKAcAAAAMRigHAAAADEYoBwAAAAxGKAcAAAAMRigHAAAADFbgUH758mVdvnzZkb0AAAAAJVK+9ik/f/68ZsyYoa1btyo1NVWS5O3trWeffVbjx49X+fLli6RJAAAAoDizO5QnJiaqf//+unjxomrXrq0aNWpIkk6cOKE1a9Zo27ZtWrlypSpUqFBkzQIAAADFkd2h/MMPP9TVq1c1f/58tWnTJsex7777Tq+88oo+/PBDTZkyxeFNAgAAAMWZ3WvKt23bpueff94qkEtSmzZtNHDgQP3www8ObQ4AAAAoCewO5cnJyapSpUqex6tUqaKrV686pCkAAACgJLE7lD/66KPavXt3nsd/+uknPfroow5pCgAAAChJ7A7loaGh2rhxoz744ANdu3YtezwlJUUzZszQhg0b1KVLlyJpEgAAACjO7H6h58svv6yffvpJCxcu1GeffaaAgABJ0oULF5SZmanGjRtrzJgxRdYoAAAAUFzZHcpLlSqlyMhIRUdHa8uWLTp79qwkqVWrVmrfvr169+4tF5d8bXsOAAAAQPl88yAXFxf1799f/fv3L6p+AAAAgBLH7jXl4eHh2rFjR57Hd+7cqfDwcIc0BQAAAJQkdofy3bt36+LFi3kev3z5svbs2eOQpgAAAICSxO5Qfi9Xr16Vm5ubo8oBAAAAJYbNNeVHjhzRkSNHsj/+6aeflJmZaXVeUlKSli9frurVqzu+QwAAAKCYsxnKt2zZojlz5kiSTCaTvvzyS3355Ze5nuvl5aU333zT8R0CAAAAxZzNUN67d281a9ZMFotFQ4cO1ejRo/XUU0/lOMdkMsnT01M1atSQu7t7kTYLAAAAFEc2Q3nFihVVsWJFSdLkyZP1xBNPqFKlSvelMQAAAKCksHuf8t69exdlHwAAAECJ5bDdVwAAAAAUDKEcAAAAMBihHAAAADAYoRwAAAAwGKEcAAAAMBihHAAAADCYw0J5bGyswsPDHVUOAAAAKDEcFsoTExO1Z8+efM3JyMjQtGnT1KpVK4WEhKh///7asWOH3fPXrl2rsLAwNWzYUM2aNdPgwYMVFxeX39YBAAAAQ9n95kFFYeLEidq8ebPCw8NVpUoVxaS23UQAACAASURBVMTEaOTIkYqMjFSjRo1szp05c6Y++eQT9ejRQ88995zS0tJ05MgRmc3m+9Q9AAAA4Bg2Q/mzzz5rd6GUlJR8XTguLk7r16/XpEmTNGzYMElSr1691K1bN02fPl3Lli3Lc+6+ffs0f/58zZ49Wx06dMjXdQEAAIAHjc3lK+fOnVNKSoo8PT3v+cfFJX833Tdu3ChXV1f169cve8zd3V1hYWHau3evLly4kOfcJUuWqH79+urQoYOysrKUmpqar2sDAAAADxKbSbpSpUqqUqWKPv3003sW+uijjzR79my7LxwfH69q1arJy8srx3hISIgsFovi4+MVEBCQ69wdO3aoa9eumjFjhiIjI5WWlqaKFSvqtddeU48ePezuAQAAAHgQ2AzldevW1a5du+wqZDKZ8nVhs9ms8uXLW437+/tLUp53ypOTk5WUlKT169fL2dlZEyZMkI+Pj5YtW6Y33nhDpUqVYkkLAAAAHio2Q3mdOnW0adMmnT17VpUqVbJZ6LHHHlPTpk3tvnB6erpcXV2txt3d3SVJN27cyHVeWlqaJCkpKUkrV65UgwYNJEkdOnRQhw4dNHfu3AKFcj8/73zPyYu/f2mH1SrpNR+GHqlJTWqWnJoPQ4/UpCY1H8ya96pnM5SPHj1ao0ePtutCPXv2VM+ePe1uzMPDQzdv3rQavxPG74Tzu90Zr1SpUnYglyQ3Nzd16tRJS5YsUWpqqtWymHu5dCnFYcHcbL6W/XdHPaElteYf65Xkmg/q80NNapa0mvz8oCY1qVmYek5OpjzzpmHv6Onv75/rEpU7WxrmtZ7cx8dHbm5ueuSRR6yOPfLII7JYLPneCQYAAAAwUoFDeVZWlhITE5WRkVGg+cHBwTp58qTVzikHDhzIPp4bJycn1a5dW+fPn7c69vvvv8vZ2Vlly5YtUE8AAACAEQocyi9fvqxnn31We/fuLdD80NBQ3bx5U6tWrcoey8jIUHR0tBo3bpz9ItDExESdOHHCau5//vMfbdu2LXssJSVFGzZsUKNGjeTh4VGgngAAAAAjFOodPS0WS4HnNmjQQKGhoZo+fbrMZrMCAwMVExOjxMRETZ48Ofu8iIgI7d69W0ePHs0eGzhwoFatWqVXXnlFw4YNU5kyZRQVFaVr167p9ddfL8xDAgAAAO67QoXywpo6dapmzZql2NhYJScnq1atWlqwYIGaNGlic16pUqW0ZMkSTZ06VUuXLlV6errq1q2rRYsW3XMuAAAA8KAxNJS7u7srIiJCEREReZ4TGRmZ67i/v7+mTZtWVK0BAAAA902B15R7eHiod+/eee6SAgAAAMA+Bb5T7u3tnWPtNwAAAICCMWyfcgAAAAC35RnKn3/+ee3ZsyffBXfs2KGBAwcWqikAAACgJMlz+UpAQICGDBmiOnXqqFevXnr66adVtWrVXM89fvy4vvvuO8XGxurYsWPq0qVLUfULAAAAFDt5hvJZs2Zp7969+uijjzR58mRNnjxZZcqUUcWKFeXj4yOLxaLk5GSdOXNGqampMplMatWqld555x01bNjwfj4GAAAA4KFm84WeTZo00aeffqozZ85o48aN2rNnj06cOKHffvtNJpNJvr6+atq0qZo1a6aOHTuqUqVK96tvAAAAoNiwa/eVwMBAjRo1SqNGjSrqfgAAAIASh91XAAAAAIMRygEAAACDEcoBAAAAgxHKAQAAAIMRygEAAACDEcoBAAAAgxHKAQAAAIPlK5RnZmZqzZo1mjBhgoYPH67Dhw9LkpKTk7VmzRqdP3++SJoEAAAAijO73jxIkq5fv64RI0Zo//79KlWqlNLT05WcnCxJ8vb21vTp09W3b1+NHz++yJoFAAAAiiO775TPnj1bhw4d0pw5c7R161ZZLJbsY87OzurYsaN+/PHHImkSAAAAKM7sDuUbN27Uc889p/bt28tkMlkdDwwM1Llz5xzaHAAAAFAS2B3KL1y4oFq1auV5vFSpUkpNTXVIUwAAAEBJYnco9/HxsflCzmPHjikgIMAhTQEAAAAlid2hvEWLFoqOjtb169etjiUkJCgqKkqtW7d2aHMAAABASWB3KB83bpyuXr2qsLAwLV++XCaTST/88IM++OAD9enTR25ubho9enRR9goAAAAUS3aH8ipVqujzzz+Xs7Oz/vnPf8piseizzz7TwoUL9eijj2rx4sWqUKFCUfYKAAAAFEt271MuSfXq1dNXX32lX3/9VSdOnJDFYlHVqlVVp06douoPAAAAKPbsCuWpqanq2bOnBg8erGHDhikoKEhBQUFF3RsAAABQIti1fMXLy0tJSUny8vIq6n4AAACAEsfuNeUNGjTQwYMHi7IXAAAAoESyO5RPmDBBGzduVFRUlCwWS1H2BAAAAJQodr/Qc/LkySpTpoz+3//7f5o2bZoCAwPl4eGR4xyTyaTFixc7vEkAAACgOLM7lJ89e1aSsrc9vHjxYtF0BAAAAJQwdofyb775pij7AAAAAEosu9eUAwAAACga+XrzIElKSUnR9u3blZCQIEmqXLmyWrZsKW9vb4c3BwAAAJQE+Qrlq1at0pQpU5SWlpa9A4vJZJKnp6cmTpyofv36FUmTAAAAQHFmdyjfunWr3nrrLVWuXFmvvvqqatasKUk6duyYli5dqrffflt+fn5q165dkTULAAAAFEd2h/JPPvlE1atX18qVK3O8s2eLFi3Up08fPffcc1q4cCGhHAAAAMgnu1/oeeTIEfXu3TtHIL/D29tbvXr10pEjRxzaHAAAAFASOGz3FZPJ5KhSAAAAQIlidyivVauWYmJilJaWZnUsNTVVMTExCg4OdmhzAAAAQElg95ryF198UePGjVPv3r0VHh6u6tWrS5KOHz+uyMhInTlzRrNnzy6yRgEAAIDiyu5Q3r59e7311luaPn26/v73v2cvV7FYLCpVqpTeeusttW/fvsgaBQAAAIqrfO1TPmjQIHXv3l3btm3T2bNnJd1+86CnnnpKpUuXLpIGAQAAgOIu3+/oWaZMGXXu3LkoegEAAABKJLtf6Hn48GEtW7Ysz+PLli1TfHy8Q5oCAAAAShK7Q/mcOXP073//O8/j33//vebOneuIngAAAIASxe5QfvDgQT3xxBN5Hn/iiScUFxfnkKYAAACAksTuUH7lyhX5+PjkebxMmTK6cuWKQ5oCAAAAShK7Q7mfn5+OHTuW5/Fff/1VZcuWzdfFMzIyNG3aNLVq1UohISHq37+/duzYka8akjRy5EjVqlVL//jHP/I9FwAAADCa3aG8ZcuWWr16da7B/Pjx44qKilLLli3zdfGJEydq8eLF6tGjh9588005OTlp5MiR2r9/v901/v3vf+unn37K13UBAACAB4ndWyKOGTNGmzdvVlhYmPr27avatWtLkuLj4xUVFSVXV1e9/PLLdl84Li5O69ev16RJkzRs2DBJUq9evdStWzdNnz7d5k4vd2RkZGjy5Ml64YUXeDdRAAAAPLTsDuWBgYH6/PPPNWnSJH3xxRc5jtWsWVPvvfeeqlataveFN27cKFdXV/Xr1y97zN3dXWFhYZo5c6YuXLiggIAAmzWWLFmi9PR0QjkAAAAeavl686D69etr3bp1io+P16lTpyRJ1apVU3BwcL4vHB8fr2rVqsnLyyvHeEhIiCwWi+Lj422GcrPZrI8++khvv/22SpUqle/rAwAAAA+KfL+jpyTVrl07e/lKQZnNZpUvX95q3N/fX5J04cIFm/NnzJihatWqqWfPnoXqAwAAADBagUK5JCUkJGj9+vU6f/68atSoob59+8rDw8Pu+enp6XJ1dbUad3d3lyTduHEjz7lxcXFas2aNIiMjZTKZ8t98Lvz8vB1SR5L8/Us7rFZJr/kw9EhNalKz5NR8GHqkJjWp+WDWvFc9m6F81apVioyM1KJFi+Tn55c9vm3bNo0bN07p6emyWCwymUxasWKFVqxYYbUcJS8eHh66efOm1fidMH4nnN/NYrHoH//4hzp27KimTZvadS17XLqU4rBgbjZfy/67o57Qklrzj/VKcs0H9fmhJjVLWk1+flCTmtQsTD0nJ1OeedPmloj//ve/5eXllSOQWywWvf3220pPT9eoUaP08ccfq3fv3jp27Jg+//xzuxvz9/fPdYmK2WyWpDzXk3/99deKi4vTwIEDdfbs2ew/kpSSkqKzZ88qPT3d7j4AAAAAo9m8U37kyBF17tw5x9i+fft07tw59erVS+PHj5cktW3bVufOndPWrVs1duxYuy4cHBysyMhIpaam5ri7fuDAgezjuUlMTFRWVpaGDh1qdSw6OlrR0dFauHChnn76abv6AAAAAIxmM5RfvnxZlStXzjG2b98+mUwmq7Depk0bzZ071+4Lh4aG6rPPPtOqVauy9ynPyMhQdHS0GjdunP0i0MTERF2/fl3Vq1eXJLVr106VKlWyqjd27Fi1bdtWYWFhqlu3rt19AAAAAEazGcpdXFys1n0fPHhQktSwYcMc4z4+PsrIyLD7wg0aNFBoaKimT58us9mswMBAxcTEKDExUZMnT84+LyIiQrt379bRo0cl3d4vPTAwMNealStXVvv27e3uAQAAAHgQ2FxTXrFixRxveZ+Zmam9e/eqSpUqKlu2bI5zk5KS5Ovrm6+LT506VUOGDFFsbKzeffdd3bp1SwsWLFCTJk3yVQcAAAB4mNm8U96xY0d99NFHatSokZ588klFRUXp8uXL6tu3r9W5cXFxuS4rscXd3V0RERGKiIjI85zIyEi7at25kw4AAAA8bGyG8vDwcMXGxuof//iHpNs7r1SoUEHDhw/Pcd61a9f03XffZa8NBwAAAGA/m6Hc29tbUVFRWrlypU6fPq3AwED169dPZcqUyXHeiRMn1KdPH3Xt2rVImwUAAACKo3u+o6e3t7dGjBhh85yGDRtavfATAAAAgH1svtATAAAAQNEjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABrMZyjMzMzV9+nQtX77cZpEvvvhCM2bMkMVicWhzAAAAQElgM5R/9dVX+vTTT1W/fn2bRUJCQrRw4UKtW7fOoc0BAAAAJYHNUL5hwwa1bNlS9erVs1mkXr16atWqldavX+/Q5gAAAICSwGYo/+WXX9SiRQu7CjVv3lyHDh1ySFMAAABASWIzlCcnJ8vPz8+uQuXKlVNSUpJDmgIAAABKEpuh3MvLS1euXLGrUFJSkry8vBzSFAAAAFCS2AzlNWrU0LZt2+wqtG3bNtWoUcMhTQEAAAAlic1Q3qFDB23fvl1btmyxWWTr1q3avn27Onbs6NDmAAAAgJLAZigfMGCAAgMD9dprr2nmzJk6e/ZsjuNnz57VzJkz9dprr6lq1aoaMGBAkTYLAAAAFEcutg56eHhowYIFGj16tObPn68FCxbI29tbXl5eSk1NVUpKiiwWi6pVq6b58+fL3d39fvUNAAAAFBs2Q7kkValSRbGxsVq5cqU2bdqkY8eO6eLFi/Ly8lLTpk3VsWNH9evXTx4eHvejXwAAAKDYuWcolyR3d3cNGTJEQ4YMKep+AAAAgBLH5ppySUpLS1NqaqrNc1JTU5WWluawpgAAAICSxGYo/+2339SsWTPNnz/fZpEFCxaoWbNmOnPmjEObAwAAAEoCm6F8xYoV8vX11bhx42wWefnll1WuXDktX77coc0BAAAAJYHNUL5jxw516tRJbm5uNou4u7srNDTU7jcaAgAAAPBfNkP52bNnVbNmTbsKVa9eXQkJCQ5pCgAAAChJbIbyrKwsOTnd87Wgtws5OSkrK8shTQEAAAAlic3E7e/vr+PHj9tV6Pjx4/L393dIUwAAAEBJYjOUN23aVOvWrbNrS8R169bpiSeecGhzAAAAQElgM5QPGjRIly9f1rhx45SUlJTrOcnJyRo3bpyuXLmiwYMHF0mTAAAAQHFm8x0969evr7Fjx2rOnDl69tln1bFjR9WqVUve3t5KTU1VfHy8tmzZopSUFL3yyiuqW7fu/eobAAAAKDZshnJJGjdunB599FHNmjVLMTExkiSTySSLxSJJeuSRRzRp0iT17du3aDsFAAAAiql7hnJJCgsLU8+ePbVv3z4dO3ZMKSkp8vb2Vs2aNdW4cWO5uroWdZ8AAABAsWVXKJckV1dXNW/eXM2bNy/KfgAAAIASx75NyAEAAAAUGZt3ysPDw/NVzGQyafHixYVqCAAAAChpbIby3bt3y8XFxe414yaTySFNAQAAACWJzVDu4nL7cMuWLdWnTx+1bdtWTk6seAEAAAAcyWbC/v777/X666/rzJkzGjdunJ5++mlNmzZNv/322/3qDwAAACj2bIbycuXKacSIEVq7dq2+/PJLtWvXTitXrlTXrl313HPPadWqVUpNTb1fvQIAAADFkt1rUUJCQvTOO+/oxx9/1Pvvv69SpUrp7bffVqtWrRQbG1uUPQIAAADFmt37lN/h7u6uHj16qGLFinJyctL27duVkJBQFL0BAAAAJUK+QvmFCxe0Zs0aRUdH6/Tp0woICNDo0aPVt2/fouoPAAAAKPbuGcpv3ryprVu3Kjo6Wtu2bZOTk5PatWunSZMmqXXr1uzGAgAAABSSzVD+7rvvau3atbp69aqCgoIUERGhHj16yMfH5371BwAAABR7NkP50qVL5eHhoa5du6pu3brKzMxUTExMnuebTCYNGzbM0T0CAAAAxdo9l6+kp6dr3bp1Wrdu3T2LEcoBAACA/LMZypcsWXK/+gAAAABKLJuhvFmzZkV68YyMDH344YeKjY3V1atXFRwcrPHjx6tFixY2523evFn/+te/FBcXp0uXLqlChQpq27atXn75ZZUuXbpIewYAAAAcLd/7lDvSxIkTtXnzZoWHh6tKlSqKiYnRyJEjFRkZqUaNGuU576233lJAQIB69uypxx57TEePHlVkZKR++OEHRUVFyd3d/T4+CgAAAKBwDAvlcXFxWr9+vSZNmpS9Dr1Xr17q1q2bpk+frmXLluU595///KeaN2+eY6xevXqKiIjQ+vXr1adPn6JsHQAAAHAowzYZ37hxo1xdXdWvX7/sMXd3d4WFhWnv3r26cOFCnnPvDuSS1L59e0nSiRMnHN8sAAAAUIQMC+Xx8fGqVq2avLy8coyHhITIYrEoPj4+X/UuXrwoSfL19XVYjwAAAMD9YFgoN5vNCggIsBr39/eXJJt3ynOzcOFCOTs7q2PHjg7pDwAAALhfDFtTnp6eLldXV6vxOy/SvHHjht211q5dq9WrV2v06NEKDAwsUD9+ft4Fmpcbf3/H7wBTUms+DD1Sk5rULDk1H4YeqUlNaj6YNe9Vz7BQ7uHhoZs3b1qN3wnj9u6g8tNPP+nNN9/UM888o1dffbXA/Vy6lOKwYG42X8v+u6Oe0JJa84/1SnLNB/X5oSY1S1pNfn5Qk5rULEw9JydTnnnTsOUr/v7+uS5RMZvNkpTr0pa7HTlyRGPGjFGtWrU0c+ZMOTs7O7xPAAAAoKgZFsqDg4N18uRJpaam5hg/cOBA9nFbzpw5oxdffFHlypXT/Pnz5enpWWS9AgAAAEXJsFAeGhqqmzdvatWqVdljGRkZio6OVuPGjVW+fHlJUmJiotU2h2azWSNGjJDJZNKnn36qcuXK3dfeAQAAAEcybE15gwYNFBoaqunTp8tsNiswMFAxMTFKTEzU5MmTs8+LiIjQ7t27dfTo0eyxF198UQkJCXrxxRe1d+9e7d27N/tYYGCgzXcDBQAAAB40hoVySZo6dapmzZql2NhYJScnq1atWlqwYIGaNGlic96RI0ckSZ988onVsd69exPKAQAA8FAxNJS7u7srIiJCEREReZ4TGRlpNfbHu+YAAADAw86wNeUAAAAAbiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGI5QDAAAABiOUAwAAAAYjlAMAAAAGMzSUZ2RkaNq0aWrVqpVCQkLUv39/7dixw66558+f16uvvqqmTZuqcePGevnll5WQkFDEHQMAAACOZ2gonzhxohYvXqwePXrozTfflJOTk0aOHKn9+/fbnJeamqrw8HDt3btXL730kv70pz/p8OHDCg8PV3Jy8n3qHgAAAHAMF6MuHBcXp/Xr12vSpEkaNmyYJKlXr17q1q2bpk+frmXLluU594svvtDp06cVHR2tOnXqSJJat26t7t276/PPP9err756Px4CAAAA4BCG3SnfuHGjXF1d1a9fv+wxd3d3hYWFae/evbpw4UKeczdt2qSGDRtmB3JJql69ulq0aKENGzYUad8AAACAoxkWyuPj41WtWjV5eXnlGA8JCZHFYlF8fHyu87KysnT06FHVq1fP6lj9+vV16tQpXb9+vUh6BgAAAIqCYctXzGazypcvbzXu7+8vSXneKU9KSlJGRkb2eXfPtVgsMpvNCgwMzFc/Tk6m2/8t7XWPM+2vlf1x6dIOr+lc2tfhNV1KBzi8ppt34WreXU+SPIqgZqkiqOnlbf31XZia3l6Fq5dbzTJFUNPX0/E1A0oVQU1Px38PBXiWLYKajv/5EeDpXQQ1Hf+zM8DTswhqlnJoPUny93QvgppuDq35iGfh/3dv9fPD09nhNb08C3+v8O6apYqgpruX42u6lnZ8Tecyjn+OnMu4OrymU5nCfb3nWrO0RxHULPzPj9y+3+8wWSwWS6GuUEDt27dXjRo1NG/evBzjCQkJat++vd566y0NHjzYat5//vMfPfPMM5o4caKGDx+e49jq1av15ptvau3atQoKCirS/gEAAABHMWz5ioeHh27evGk1fuPGDUm315fn5s54RkZGnnM9PAr/2xEAAABwvxgWyv39/XNdomI2myVJAQG5Lyfw8fGRm5tb9nl3zzWZTLkubQEAAAAeVIaF8uDgYJ08eVKpqak5xg8cOJB9PDdOTk4KCgrSoUOHrI7FxcWpSpUqKlWqcGt+AAAAgPvJsFAeGhqqmzdvatWqVdljGRkZio6OVuPGjbNfBJqYmKgTJ07kmNupUyf9/PPPOnz4cPbYb7/9pp07dyo0NPT+PAAAAADAQQx7oackvfrqq9q6dauGDh2qwMBAxcTE6NChQ1q8eLGaNGkiSRoyZIh2796to0ePZs9LSUlR7969df36dQ0fPlzOzs76/PPPZbFYtGbNGvn6Fn5XBQAAAOB+MTSU37hxQ7NmzdLatWuVnJysWrVq6fXXX1fLli2zz8ktlEvS77//rvfee0/btm1TVlaWmjdvrjfffFOVK1e+3w8DAAAAKBRDQzkAAAAAA9eUAwAAALiNUA4AAAAYjFAOAAAAGMzF6AYedBkZGfrwww8VGxurq1evKjg4WOPHj1eLFi0KXPPChQtasmSJDhw4oEOHDiktLU1LlixR8+bNC1QvLi5OMTEx2rVrlxITE+Xj46NGjRrptddeU5UqVQpU8+DBg5o3b54OHz6sS5cuqXTp0goODtbYsWPVuHHjAtXMzcKFCzV9+nQFBwcrNjY23/N37dql8PDwXI/961//UvXq1QvcW1xcnObMmaP9+/fr1q1bqly5soYNG6Y+ffrku9bEiRMVExOT5/Hvv/8+exvQ/Dh16pRmzZqlffv26erVq3rsscfUq1cvDRs2TG5ubvmuJ0k///yzZs6cqbi4ODk5Oal58+aaOHGiAgMD7zk3P1/bW7du1Zw5c3T8+HH5+fkpLCxML730klxcXApUc/ny5dq5c6fi4uKUmJio3r17a8qUKQXu88qVK4qKitI333yj3377Tbdu3VL16tU1bNgwde7cuUA1LRaL/vKXv2j//v36z3/+o8zMTFWuXFlhYWEaOHCgXF1dC/z5vOPcuXPq0qWL0tPTtWbNGtWuXbtANdu1a6dz585Z1R85cqQmTJhQ4D6vXbumuXPnatOmTTKbzfLz81OTJk00Y8aMfNWz9b0vSa+99prGjBmT7x5v3LihRYsWKTY2NvvnadOmTTVu3DhVq1atQI/72rVrmjFjhr7++mslJyerWrVqGjlypLp3727Vd35+nu/bt0/Tpk3T4cOH5e3trc6dO+t//ud/rN6rw96a//rXv/TNN9/o4MGDOnXqlJo1a6bIyMhcP7/21Lx+/bqio6O1ZcsWHTt2TKmpqapatar69++v/v37y9nZOd89zpw5Uz/++KPOnj2r69evq2LFiuratatGjBghT0/PAn8u70hJSVGnTp108eJFzZ07V+3bty9QzTubVNytS5cumjlzZoH7zPj/7Z17WE3Z/8ffqeRSSiODUnI5UVFkosvwpdAglzHCUeQWxjTuI4bhkduMGHShb2hcch/RScZQBkUGqZQUxq2hu65HnTpn//7oOefXcU61zz75Nub5vJ7H8zirvd/ns/fZn7U+e63PWkskQlhYGKKiovD333/DwMAANjY22LJlC/T19VXSzM7OhouLi9L7AACTJ0/Gpk2bVLZTIpHg5MmTOH78OF69eoW2bdvC2toaixYtQt++fTldu0gkQnBwMAQCAfLy8mBsbIzp06fDy8sLGhoacpqqxC9sfYitpio+pAwKyhvBz88Pv//+O2bMmAEzMzNECixWgwAAIABJREFURkZi3rx5OHLkCPr3789J89mzZwgLC4OZmRksLCxw//59tWzcv38/kpKS4ObmBgsLC+Tn5yMiIgITJkzAmTNnOAWmr169glgsxuTJk2FkZISysjIIBAJ4enoiLCwMTk5OatkM1O7AunfvXoWKlAszZ86ElZWVXBmXIFfKtWvXsGjRItjb22Px4sXQ0tLC8+fP8ebNG056U6ZMUXiRYxgGGzZsgLGxMSdbc3NzMXnyZOjp6cHT0xP6+vq4e/cuduzYgcePH2P79u0qa6ampsLT0xPGxsbw9fWFRCLBsWPHwOfzce7cOXTo0KHB89k+29L7O3jwYKxbtw5ZWVkIDg7G27dvsW7dOk6aYWFhKC8vR9++fZXu+KuqZnJyMnbt2oUhQ4Zg4cKF0NLSwqVLl7BkyRL89ddfWLRokcqaEokE6enpcHZ2homJCTQ1NZGcnIwtW7YgLS0NP/30E6drr8uPP/6IFi3qHwRVRdPKygozZ86UK+PxeJw1S0tLMX36dJSWlmLy5Mno1KkT8vPzcefOHZX1evTooXC/ACAqKgrx8fEKdRRbG1euXInY2Fh4eHjA0tISOTk5iIiIQHx8PGJiYvDJJ5+opFlTU4NZs2bh0aNH8PT0hKmpKeLj47FixQqIxWJMmDBB7ni29XlGRga8vb3Rs2dP+Pn5IScnBwcPHkR2djb27dvHSfP48eNIS0uDtbU1iouLld4fVTRfvXoFf39/ODg4wNvbG7q6uoiPj8eGDRvw4MEDbNmyRWUb09LSYGtri/Hjx6NVq1Z49OgRQkNDcfv2bRw+fFguQOPSNgYHB0MoFKp13VK6dOmCJUuWyJ1vbGzMWVMkEmHu3LnIzMyEh4cHzMzM8PbtWyQlJaGyslIuKGejaWhoqNSHbty4AYFAoOBDbO3cvn07Dh48iHHjxmH69OkoKSnBiRMnwOfzcfbsWfTq1UtlzaVLlyIuLg5fffUVLC0tkZKSgs2bN6O0tBTffPONnJ1s4xdVfIitpio+pBSGqJeUlBSGx+Mx4eHhsrLKykrG1dWV4fP5nHXLysqYoqIihmEY5vLlywyPx2MSExM56927d4+pqqqSK3v27BljbW3NrFq1irPu+wiFQsbR0ZHx8fFpEr1Vq1YxXl5ejKenJzNu3DhOGomJiQyPx2MuX77cJDYxDMOUlpYyDg4OjL+/f5NpKuPOnTsMj8dj9u7dy+n80NBQhsfjMVlZWXLlvr6+jKWlJSMSiVTWnDNnDmNvb88UFxfLynJzcxlbW1tm06ZNjZ7P9tkePXo0M3HiRKampkZWtnPnTqZ3797Ms2fPOGlmZ2czEomEYRiGsbOza/DZZ6P58uVLJjs7W65MIpEwM2bMYPr168e8e/eOk53K8Pf3ZywsLJjCwkK1NBMTExkrKytm586dDI/HYx4+fMjp2hmGYYYNG8YsXLiQlf1sNdetW8cMHz5cdqy6esoYMWIEM3LkSE6a+fn5DI/HY7Zt2yZXHhcXx/B4PObMmTMqa164cIHh8XhMZGSkXLmvry/j4OCgUHezrc/nzp3LfP7550x5ebms7NSpUwyPx2Nu3rzJSfP169cynxw3bhzj6enJ1AcbzcLCQoX6iWEYxs/Pj+HxeMzLly9VtlEZBw8eZHg8HpOamqqyjXX566+/GCsrKyYwMLDedoWtpirtGlvNffv2MQMHDpS7b+pqKmPmzJnMgAEDmMrKSpU1xWIxY2try/j6+sodl5mZyfB4PGb37t0qayYnJzM8Ho8JDAyUO27btm2MtbU1k5eX1+D1MIzy+EUVH2KrqYoPKYNyyhvgt99+g7a2NiZPniwr09HRwVdffYV79+4hLy+Pk66urm6TbnA0YMAAhVSFbt26oVevXgq7oapD69atYWhoiNLSUrW1UlNTERUVhdWrVzeBZbWUl5ejpqZGbR2BQIDS0lIsXrxYpst8gJVDo6OjoaGhgbFjx3I6v6KiAgDkeu4AoEOHDtDS0pIbGmZLUlISnJ2d5XpcOnbsCHt7e1y8eLHR89k820+ePMGTJ08wZcoUORv5fD4kEgl+//13lTWB2h6o94cx1bGza9euCr1aGhoacHV1RWVlpUJqhzp+3aVLFzAMg7KyMs6aYrEYmzdvhqenZ4Npa6raKRKJ8O7duwaPYaNZWlqKyMhIzJkzB+3bt0dVVRVEIlGT2CglNTUVL168UJoWwkazvLwcABRGhKSfW7VqpbJmUlISNDQ0FFKeRo8ejcLCQty+fVuunE19Xl5ejps3b2LChAlo27at7Ljx48ejTZs2Cr7Kto3o3Lkz63qDjaahoaFcr6iUESNGAKjdiVtVG5XRpUsXAFDwH1U1t27dimHDhuGzzz6r97tU1aypqZHV1epoSiQSHDlyBB4eHujatStEIhGqqqqazE4peXl5uH37NkaOHAkdHR2VNWtqavDu3TvWPsRGMykpCQAwZswYueNGjx4NkUiE2NjYeq9Hyvvxi6o+xEYTUM2HlEFBeQNkZGTA3Nxc7gcDgH79+oFhGGRkZDSTZY3DMAwKCgrUDv7Ly8tRVFSEv/76Czt37kRWVpZa+fRS2/z9/TFhwgSFfFeurFy5EnZ2drCxscHs2bMVNptShVu3bqF79+64du0ahg4dCjs7O9jb2yMgIABisbhJ7K2ursbFixfRv39/mJiYcNKQNhzff/89Hj16hDdv3iAqKkqWYtVQCkN9iEQihYoYqK1I8/PzOb+I1uXhw4cAAGtra7nyTz/9FJ06dZL9/Z9KQUEBAKjlW9XV1SgqKsKbN29w+fJlHDx4EF27duX8LADAiRMnkJubi6+//pqzxvskJCTA1tYWtra2cHV1xcmTJzlr3b17FyKRCB06dIC3tzdsbGxga2uL2bNn4+XLl01ib1RUFAAoDcrZYGJigs6dOyM8PBxxcXHIyclBcnIyNm/ejB49ejSYf1sfIpEIWlpaCvMFpDmrbJ739+vzzMxM1NTUKPhQy5Yt0adPH1ZtU1O1EVw02fpQfXpisRhFRUXIzc1FfHw8du3aBT09PYX7oYrmtWvXcPPmTaxcubJRDbaaT58+ha2tLQYMGABnZ2fs27cPEomEk+bjx4+Rn58PMzMzfPvtt7C1tUW/fv3g4eGBtLQ0teysS0xMDCQSCWsfel+zZcuWsLW1RWRkJKKiovDmzRs8evQI33//PYyMjBTStdhoSl/e3w/oG/OhhuIXrj70IWKiulBOeQPk5+crzfU1MjICgCYJUD4UUVFRyM3NxdKlS9XSWbNmDS5dugQA0NbWxtSpU7FgwQK1NM+dO4cnT54gODhYLR2pTaNGjcKQIUPQvn17ZGZm4uDBg+Dz+Thz5ozCxCw2vHjxAjk5OfDz88PcuXNhaWmJq1evIiwsDFVVVfj+++/Vtjs+Ph7FxcWcgwcAcHZ2xuLFixEaGoq4uDhZ+bfffquQ78wWc3NzJCcnQyKRyIJ6kUiE1NRUALXPfMeOHTnbDECW7y31o7oYGRn9o/2quLgYp0+fhr29PQwNDTnrxMfHy/mRtbU1tm7dyrmHpbi4GHv27IGvry/atWvH2a668Hg8DBw4EN26dcPbt29x6tQp/PDDDygpKYGPj4/KetLAe926dbC2tsbOnTuRl5eHoKAgzJw5EwKBALq6upztFYvFuHjxIvr168d5gruWlhb27NmD5cuXy00StbW1xdGjRxWCAjaYm5ujuroaqampsLW1lZXfvXsXALt25P36vDEfSk5OVlmzKWCjKRKJcOjQIZiamjYaRNen9/TpU7m609zcHCEhIayefWWa1dXV2LJlC7y8vGBqaqry3CFlml27dsWgQYNgYWGB8vJyREdH4+eff8br16+xceNGlTWl/rNjxw507doV27Ztw7t37xAcHIyZM2ciKipKab56Y3YqO8bIyAiDBw9mc+lKNX/88UcsXbpU7gWnW7duOH78OKv2431NaTuelJQk11vemA81FL9w9aEPERPVhYLyBqisrFTo3QAg60lsaOioOXn69Ck2btwIOzs7jB8/Xi2tRYsWYcqUKcjJycH58+chEolQXV3NeWWP8vJy7NixAz4+PmoHd0Dt0Ffdmc8uLi4YPnw4Jk2ahKCgIOzYsUNlTaFQiJKSEixfvlwWfIwcORJCoRDHjx/HwoUL1QrIgNrUFW1tbaWreKiCiYkJ7O3tMWLECBgYGOCPP/5AYGAgDA0NMW3aNJX1+Hw+NmzYgLVr12L27NmQSCTYu3evrAKrrKxUy966GsqeIR0dnUZTJZoLiUSCFStWoKysDGvXrlVLy8bGBuHh4SgrK0NiYiIyMjIanFzWGHv27IGhoSGmTp2qll11eX+i05dffgk+n4+QkBBMmzYNenp6KulJh/CNjIwQFhYme+kzNzeHj48Pfv31V4VJpapw69YtFBQUYP78+Zw1AKBdu3bo06cPvvjiC/Tr1w8vX75EaGgoFi9ejAMHDqhc940dOxbBwcHw8/PDDz/8AFNTUyQkJODYsWMAGvcpZfV5Yz7ERVNd2Gr6+/vj6dOncs+AqnomJiYIDw+HUChESkoKEhISGk0RaUjz8OHDKCkpkXsRY0t9mnUnsQLAxIkTsXjxYpw6dQre3t7o3r27SprS69PQ0MChQ4dkI/j9+/fHuHHjcOjQIaxZs0ZlO+vy7NkzpKenw9vbm9VIa32aurq66NWrFwYMGIBBgwYhPz8fYWFhWLBgASIiImBgYKCS5tChQ2FsbIytW7dCR0cHffr0QUpKCn7++WdoaWnV+7w3FL9w9aGmjoneh9JXGqBVq1aorq5WKJcG48qG+Zub/Px8zJ8/H/r6+ti9ezenFIa6WFhYwMnJCZMmTcKBAweQnp6uVh743r17oa2tjVmzZqllV0P07t0bDg4OSExM5HS+tDfs/Vxvd3d3VFdX48GDB2rZV1FRgdjYWDg7O6s1dHzhwgWsX78emzZtgoeHB0aOHIktW7Zg4sSJ+Omnn1BSUqKy5rRp07BgwQJERUVhzJgxcHd3x8uXLzFnzhwAUEjl4oL0/irLJ66qquLUG/m/wN/fH/Hx8di6dSssLCzU0jI0NISjoyNGjRqF9evXw8XFBbNmzWp01RhlZGVl4cSJE/Dz81NYTrIp0dTUxMyZM/Hu3TtOK0ZJf1c3Nze5emno0KHQ19eX5Y1yRSAQQFNTE6NHj+asUVZWhunTp8POzg7Lli2Dq6srZs+ejcDAQPz55584d+6cyppGRkbYu3cvqqqqMGvWLLi4uOCnn36SrTLU0OpT9dXn6vhQU7cRqmju378fp06dwrJly/D5559z1mvTpg0cHR3h6uqK5cuXY+7cufj666/x6NEjlTULCgoQEhLCaZRJ1Xs5e/ZsMAyjMI+Ajab0Nx02bJhcPczj8dC7d+8G/YetnQKBAAC79K/6NGtqauDt7Q19fX2sXbsWI0aMAJ/PR3h4OF68eIHw8HCVNXV0dBAaGgp9fX0sWrQIw4cPx6pVq7Bo0SLo6+vX60MNxS9cfaipY6L3oaC8AeobSpc2nE3R09uUlJWVYd68eSgrK8P+/fuVDsuog7a2NlxcXPD7779z6jHNy8vDoUOHwOfzUVBQgOzsbGRnZ6OqqgrV1dXIzs7mFEgqo3Pnzpy1pPetvokq6tp45coVvHv3Tq3UFQA4duwYrKysFFKshg8fDqFQ2GAD1RBLly5FQkICIiIiEBUVhV9//RUMw0BDQwNdu3ZVy2bg/++vsgA0Pz//H+dXABAUFIRjx45h5cqVnCfmNoSbmxuEQiGrCUvvs3PnTlhaWqJHjx4yn3r79i2AWp/juoynMjp16gSAmw/U51cA1J5AXllZicuXL8PBwaHRZTsb4tKlSygoKMDw4cPlyu3t7aGrq8v5xeGzzz7DlStXcO7cORw7dgzXr1+HjY0NgNphfWU0VJ9z9aEP0Uaw1Tx79iwCAgIwffr0BtOfuNjo6uqKFi1a4MKFCypr7tu3D3p6enB2dpb5jzTnvbCwENnZ2Uon+nOxszH/YfObK3u+P/nkk3r9RxU7o6OjYW5u3mhaUUOad+7cQVZWloIPdevWDd27d6/Xhxqzs1evXoiOjkZ0dDQiIiJw48YNeHh44O3bt6zS1d6PX5qiHVI3JlIGpa80QO/evXHkyBFUVFTIvZmmpKTI/v5PoaqqCgsWLMDz58/xyy+/NDg0pg6VlZVgGAYVFRUq92gWFhaiuroaAQEBCAgIUPi7i4uL0o1JuPDq1SvOvdBWVla4efMmcnNz5YLQnJwcAFA7dUUgEKBNmzYKlZaqFBQUKLVFOrqjzqRUfX19DBw4UPb55s2b6Nevn1o5v1Kkk3vT0tLk1pbPzc1FTk5Ok03+bSoiIiIQGBgIb29v2YhBUyOt0N9fPYIN0olUyiYh+vj4oEOHDkhISFDbRqDWrwBuPiD9rXNzc+XKJRIJ8vPzFfYZUIW4uDhUVFSo/aJbWFgos6kuDMNAIpGotbqTpqam3LN98+ZNAFCau9tYfc7j8aClpYW0tDSMHDlSVi4SiZCRkaH0PnyINoKt5pUrV7B27VqMHDmywdQvrjZWV1dDLBYr9Z/GNF+/fo03b97I3UcpP/zwA4DaVX3qjoxztbMh/2lM08LCAtra2gr+A9T6FBfNuqSkpODFixf49ttvG7yGxjTr8yGgthddmQ+xtVNDQ0NuNZ9r165BIpGwnmhZN37h4kONaTbFKC8F5Q3g5uaGgwcP4vTp0/D29gZQ+4OdPXsWAwYMUGtzmqZELBZjyZIlSE5ORkhIiNxkIq4UFRUpOHl5eTkuXbqEzp07KyzDxwYTExOlkzt37doFoVCINWvW1NtrpIqdd+/exe3bt1nN8laGm5sbwsLCcObMGdlEE4ZhcPr0abRp00at+1tUVIRbt25hzJgxCjuGqYq5uTkSEhLw8uVLud02L1y4AE1NTbVTLKTExMTgwYMHcjsuqkOvXr3QvXt3nDx5El999ZVscuPx48fRokULpY1jcxETE4NNmzbB3d0dfn5+ausVFxdDT09PYULn6dOnASiuSMOG1atXy5byk5KYmIgjR45g9erVnIKv4uJitGvXTm6Yu6qqCgcOHEDbtm05+UCPHj3A4/EgEAiwYMECWZATExOD8vJytVYwEAgEaN26tWypPa5I658LFy7IrWITGxsLoVAIS0tLtfSlFBUVYf/+/XB2dlbYwIZNfa6npwcHBwecP38e8+fPl3UanT9/HkKhEG5ubiprqgpbzTt37mDZsmUYOHAgAgIC6k2dYKNXXl6Oli1bKuTvnjlzBgzDKLzYsdGcP3++wi7NWVlZ2L17N3x8fGBjYyM3t4yrnWKxGKGhoWjRooXCs85GU1dXF87OzoiNjZVr9+7fv4/Hjx8rrLqk6m/OJnWFjWZdH3J0dJSVp6en49mzZ+Dz+WrZKaWyshK7d+9Gz549FTY5Yhu/qOJDHyImUgYF5Q1gY2MDNzc3BAQEID8/H6ampoiMjMTr16+xdetWtbRDQkIAQLYO5/nz53Hv3j20a9cOnp6eKmlt27YNcXFxGDZsGIqLi+W2q2/btq3CNsFsWLJkCXR0dNC/f38YGRnhzZs3OHv2LHJycjgHZ3p6ekptOXToEDQ1NTnb2bp1a/Tv3x/t27fH48ePcfLkSbRv3x6+vr6c7LS2tsaECRMQGhqKwsJCWFpa4tq1a4iPj8fKlSvV6i2OiYlBTU2N2j16ADBnzhxcv34d06ZNw/Tp06Gvr48//vgD169fx9SpUzlVErdu3UJoaCicnJxgYGCA5ORkREZGwt3dXWGN2Ppg82x/9913WLhwIebMmYPRo0cjKysLERERmDJlitIVc9hoxsXFyVJ2RCIRMjMzZeeNHz9eYWWCxjRTU1Px3XffwcDAAA4ODrLl9qQ4OTkpDCU3phkXF4e9e/dixIgRMDU1xbt37xAfH4/4+Hj85z//URqYNqaprKdVOpQ9aNAgpSMPbOzct28fRo0aBWNjYxQXFyMyMhLPnz/Hhg0blM4tYPMb+fn5Yd68eeDz+Rg/fjzy8/Nx6NAhWFpaYty4cSrrAbUvEDdu3MDIkSMbnfPQmOawYcPQq1cvBAYGIjs7GzY2Nnj+/DkiIiLw6aefKgRvbO2cNm0a7OzsYGZmhvz8fJw8eRISiUTpKhxs6/OlS5di6tSp8PLywuTJk5GTk4Pw8HAMGTJELhhSRfPOnTuy3VULCwtRVlYmu77hw4fLjQ6z0fz777+xcOFCaGhoYNSoUUrXT5eORrLRS09Px/Lly/HFF1+gW7duEIvFuHfvHi5dugQrKyuFCYxsNKVpRHWRTmK2sbFRaJdUsXPs2LEwNTWFUCjExYsXkZaWhnnz5imkAbL9fZYtWwYPDw9MmzYNU6dOhVAoxKFDh9C5c2eFSdKqxAXSlYtsbW3lOnjeh42mtbU1nJyccObMGZSVlcHBwQH5+fk4evQoWrdujRkzZnCy09fXF506dULPnj1RVlYmi0eOHDmi0MnBNn5RxYfYaqriQ8rQYD7Erij/IqqqqrBr1y4IBAKUlJTAwsICy5YtU/jBVKW+XkxjY2O55e3Y4OXlhT///LPJ9IDanofz58/jyZMnKC0thZ6enmxNYXt7e5X1GsLLywulpaVyzsiWw4cPQyAQ4OXLlygvL4ehoSGcnZ3h6+sr21CCCyKRCCEhITh37hwKCgpgYmICb29vtVe3mDJlCl69eoUbN26otcGAlNTUVAQGBiIjIwPFxcUwNjbGpEmTMGfOHE76z58/x8aNG/Hw4UNUVFSgW7dumDx5Mjw9PVlPCGP7bF+5cgVBQUF4+vQpDA0NMWnSJHz99ddKJyuy0fTz80NkZKTS4w4fPoxBgwappHn27NkGJ/Bw0czKykJoaCju37+PgoICtGjRAubm5nB3d4eXl5fS1Z641BVS28+dO6c0KG9MMy0tDUFBQXj48CGKiorQsmVLWFlZYfbs2Rg2bJjSc9naef36dQQGBiIzMxNt2rSBi4sLVqxYoZBuxlbvxIkTWL9+Pfbu3dtoShgbzZKSEoSEhOCPP/7A69ev0bZtWzg5OWHZsmVKl5xjo7lp0yZcvXoVubm50NfXx9ChQ7F48WKlo62q1Od3795FQEAAHj58CF1dXYwePRrLli1TmPjGVjMwMBBBQUFKj9u6davcSwkbzdu3bysEYfVpstHLycnBnj17cPfuXeTl5UEsFsPU1BQjRozAvHnzFF7KuLaNUruDg4MVgnI2mq9evcL27duRlpYm8/NevXqBz+dj4sSJCuepYmdqaiq2b9+OBw8eQFNTE05OTli1apXCs6mK5o0bNzB37lysXbsWXl5eSs9RRbOyshIHDhxATEwMsrOz0bJlS9jZ2WHJkiUKQSlbzdDQUFmnaOvWrTF48GAsXrxY6UigKvELWx9iq6mKDymDgnKCIAiCIAiCaGZo9RWCIAiCIAiCaGYoKCcIgiAIgiCIZoaCcoIgCIIgCIJoZigoJwiCIAiCIIhmhoJygiAIgiAIgmhmKCgnCIIgCIIgiGaGgnKCIAiCIAiCaGYoKCcIgiCajOzsbFhYWCAwMLC5TSEIgviooKCcIAjiI+L27duwsLCQ+9e3b1+4uLhg9erVsu3euRIYGIgrV640kbVNx+XLl2FhYYHc3FwAQExMDHr37o3S0tJmtowgCKJpUNzPmiAIgvjHM3bsWAwZMgQAUFVVhczMTJw+fRqXLl2CQCBQuiU8G4KCgjBx4kSF7cWbm6SkJJiYmMi2pr937x569uyJdu3aNbNlBEEQTQMF5QRBEB8hlpaWGD9+vFyZmZkZNm/ejMuXL8Pb27t5DPtA3L9/HwMGDJB9vnfvHvr379+MFhEEQTQtFJQTBEH8S+jYsSMAQFtbW648IiICsbGxePz4Md6+fQsDAwMMHjwYS5YsgYmJCYDaXHAXFxcAQGRkJCIjI2XnZ2Zmyv6fmJiIgwcPIiUlBUKhEB07dsSgQYOwYsUKGBoayn3v1atXERQUhKysLOjr68Pd3R3Lly+HllbjTU91dTXKysoAAGKxGOnp6XBxcUFRUREqKyuRlZWFL7/8EkVFRQAAAwMDtGhBGZkEQXy8aDAMwzS3EQRBEAQ7bt++jRkzZsDX1xd8Ph9AbfpKVlYWtmzZgpKSEggEAhgZGcnOcXFxga2tLSwsLGBgYICsrCycOXMGurq6EAgEaN++PYRCIS5fvozvvvsOAwcOhIeHh+x8aY/8iRMnsGHDBnz66aeYMGECjI2N8fr1a1y9ehXbtm1Dnz59ZMF937598ffff2Pq1KkwMjJCbGws4uPjsXTpUixYsID1dbIlNjZW9oJBEATxMUJBOUEQxEdEQ8Fqz549sWfPHvTo0UOuXCgUok2bNnJlt27dgre3N1asWIF58+bJyi0sLDBx4kRs27ZN7vicnBy4urrC1NQUJ06cUMjllkgkaNGihSwob926NaKjo2WBMsMwcHd3R3FxMeLj4xu9zpKSEqSnpwMATp06hT///BMBAQEAgGPHjiE9PR2bN2+WHW9nZwcdHZ1GdQmCIP6pUPoKQRDER8iUKVPg5uYGoLan/MmTJwgPD4ePjw8OHz4sN9FTGpBLJBJUVFSguroaFhYW0NPTQ2pqKqvv++2331BdXY1vvvlG6eTK91NHXFxc5HquNTQ0MGjQIBw9ehQVFRVo27Ztg9+nr68PR0dHAMDu3bvh6Ogo+7x9+3Y4OzvLPhMEQfwboKCcIAjiI8TMzEwuKB02bBjs7e3h4eGBgIAA/Pzzz7K/3bp1CyEhIUhJSUFVVZWcTklJCavve/78OQCgT58+rI7v2rWrQpmBgQEAoLi4uMGgvG4+eUVFBR48eAB3d3cUFRWhrKwMGRkZ4PP5snzy93PZCYIgPkYoKCcIgviXYGNjAz09PSQmJsrKUlNTMWfOHJiammL58uUwMTFBq1atoKGhgaVLl+JDZTBqamrW+7fGvjMpKUkhRceToRSbAAACc0lEQVTf3x/+/v6yz2vXrsXatWsByE9EJQiC+FihoJwgCOJfhFgshkgkkn2Ojo6GWCxGWFiYXO+1UChUaeOdbt26AQAyMjJgbm7eZPYqo3fv3ggPDwcAHD16FFlZWdi4cSMA4MCBA3j9+jXWrVv3QW0gCIL4X0PrRxEEQfxLSEhIgFAohJWVlaysvh7r0NBQSCQShfI2bdqguLhYodzNzQ3a2toIDg5GeXm5wt+bssddmk/u6OiIvLw8DB48WPY5JydH9v+6eeYEQRAfO9RTThAE8RHy8OFDnD9/HgAgEonw5MkTnDp1Ctra2liyZInsOFdXV/zyyy+YN28epkyZAm1tbSQkJCAzMxPt27dX0LW1tcWtW7fw3//+F126dIGGhgbGjBmDTp06Yc2aNdi4cSPc3d0xfvx4GBsbIzc3F7GxsdiyZQvrfHO2lJeX4+HDh/D09AQAFBUV4enTp/jmm2+a9HsIgiD+CVBQThAE8RESHR2N6OhoALUrnxgYGMDJyQk+Pj7o16+f7Dg7OzsEBgYiJCQEu3fvho6ODhwdHXH06FFZsFuX9evXY+PGjdi3bx8qKioAAGPGjAEA8Pl8mJqa4sCBAzhy5AhEIhE6duwIBwcHdOrUqcmvMSkpCWKxGJ999hmA2l08GYaRfSYIgvg3QeuUEwRBEARBEEQzQznlBEEQBEEQBNHMUFBOEARBEARBEM0MBeUEQRAEQRAE0cxQUE4QBEEQBEEQzQwF5QRBEARBEATRzFBQThAEQRAEQRDNDAXlBEEQBEEQBNHMUFBOEARBEARBEM0MBeUEQRAEQRAE0cxQUE4QBEEQBEEQzcz/AQ3Dcf/0MBgFAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "flat_predictions = np.concatenate(predictions, axis=0)\n", + "\n", + "flat_predictions = np.argmax(flat_predictions, axis=1).flatten()\n", + "flat_true_labels = np.concatenate(true_labels, axis=0)\n", + "\n", + "mcc = matthews_corrcoef(flat_true_labels, flat_predictions)\n", + "\n", + "print('Total MCC: %.3f' % mcc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vx_SM19o_XqD", + "outputId": "692cc582-19fc-468e-8098-f2287a45b1d2" + }, + "execution_count": 39, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Total MCC: 0.981\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Save model" + ], + "metadata": { + "id": "ZE7xxmFJ-oBM" + } + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "\n", + "drive.mount('/content/gdrive/', force_remount=True)\n", + "\n", + "output_dir = '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model'\n", + "print(\"Saving model to %s\" % output_dir)\n", + "\n", + "model_to_save = model.module if hasattr(model, 'module') else model\n", + "model_to_save.save_pretrained(output_dir)\n", + "tokenizer.save_pretrained(output_dir)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fJAqcU8F-p2Z", + "outputId": "802ac1fd-b8de-4cec-b146-f3044a836c3f" + }, + "execution_count": 40, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Mounted at /content/gdrive/\n", + "Saving model to /content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model/tokenizer_config.json',\n", + " '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model/special_tokens_map.json',\n", + " '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model/vocab.txt',\n", + " '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/BERT_custom_model/added_tokens.json')" + ] + }, + "metadata": {}, + "execution_count": 40 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Bibliografia\n", + "https://mccormickml.com/2019/07/22/BERT-fine-tuning/#a1-saving--loading-fine-tuned-model" + ], + "metadata": { + "id": "6pFz8n_aHca9" + } + } + ] +} \ No newline at end of file diff --git a/projekt/Ver1_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_1_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver1_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_1_FLAN-T5_sms_spam.ipynb diff --git a/projekt/Ver_2_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_2_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver_2_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_2_FLAN-T5_sms_spam.ipynb diff --git a/projekt/Ver3_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_3_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver3_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_3_FLAN-T5_sms_spam.ipynb diff --git a/projekt/Ver_4_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_4_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver_4_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_4_FLAN-T5_sms_spam.ipynb diff --git a/projekt/Ver_5_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_5_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver_5_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_5_FLAN-T5_sms_spam.ipynb diff --git a/projekt/Ver_6_FLAN-T5_sms_spam.ipynb b/projekt/FLAN-T5_experiments/Ver_6_FLAN-T5_sms_spam.ipynb similarity index 100% rename from projekt/Ver_6_FLAN-T5_sms_spam.ipynb rename to projekt/FLAN-T5_experiments/Ver_6_FLAN-T5_sms_spam.ipynb diff --git a/projekt/README.md b/projekt/README.md index 9bcbd9b..ebbe8cf 100644 --- a/projekt/README.md +++ b/projekt/README.md @@ -3,11 +3,13 @@ Wykrywanie czy podany SMS to spam - klasyfikacja. ## Zbiór danych -Wykorzystaliśmy zbiór danych [sms spam](https://huggingface.co/datasets/sms_spam). Dataset posiada tylko zbiór treningowy dlatego w trakcie uczenia modeli podzielilśmy go losowo na 3 podzbiory (wyjątek few-shot learning): +Wykorzystaliśmy zbiór danych [sms spam](https://huggingface.co/datasets/sms_spam). Dataset posiada tylko zbiór treningowy dlatego w trakcie uczenia modeli podzielilśmy go na 3 podzbiory (wyjątek few-shot learning): - zbiór testowy 1 000 przykładów - zbiór treningowy 4 116 przykładów - zbiór walidacyjny 458 przykładów +W każdym podzbiorze ocenialiśmy zrównoważenie klas. + ## Ewaluacja Ewaluacja modeli występuje po etapie trenowania na zbiorze testowym. Metryki: @@ -32,6 +34,20 @@ Najważniejsze cechy: - Accuracy: 99% - MCC: 0.973 +### Transformer Encoder - BERT - modyfikacja +Najważniejsze cechy: +- wytrenowany model: bert-base-uncased +- typ modelu zmodyfikowany transformers.BertForSequenceClassification - dodatkowa warstwa liniowa +- input modelu - treść smsa +- output modelu - klasa 1 lub 2 +- finetuning na zbiorze treningowym + - adamW optimizer + - learning rade 2e-5 + - 32 batch size + - 4 epoch +- Accuracy: 99.5% +- MCC: 0.981 + ### Transformer Decoder - GPT2 Najważniejsze cechy: - wytrenowany model gpt2 @@ -101,16 +117,20 @@ FLAN-T5 to zoptymalizowany model T5. Został dodatkowo finetunowany na większym ### FLAN-T5 - testy |Wersja|Rozmiar|Prefiks|Acc| |---|---|---|---| -|1|base|SMS - Content of the text message:
Result - Answer if this text message is spam or not|0.503593244699964| -|2|large|SMS - Content of the text message:
Result - Answer if this text message is spam or not|0.46119295724038806| -|3|base|SMS - The text message contains the following content:
Result - Is it true that the content of a text message is spam:|0.2551203736974488| -|4|large|SMS - The text message contains the following content:
Result - Is it true that the content of a text message is spam:|0.1433704635285663| -|5|base|SMS - The text message:
Result - Is this sms spam? Ans:|0.28404599353215954| -|6|large|SMS - The text message:
Result - Is this sms spam? Ans:|0.20786920589292132| +|1|base|Content of the text message: [sms_content]
Answer if this text message is spam or not [True,False]|0.503593244699964| +|2|large|Content of the text message: [sms_content]
Answer if this text message is spam or not [True,False]|0.46119295724038806| +|3|base|The text message contains the following content: [sms_content]
Is it true that the content of a text message is spam: [True,False]|0.2551203736974488| +|4|large|The text message contains the following content: [sms_content]
Is it true that the content of a text message is spam: [True,False]|0.1433704635285663| +|5|base|The text message: [sms_content]
Is this sms spam? Ans: [True,False]|0.28404599353215954| +|6|large|The text message: [sms_content]
Is this sms spam? Ans: [True,False]|0.20786920589292132| -### Modele FLAN_T5 +## Modele +### Bazowe rozwiązania +https://drive.google.com/drive/folders/1wpoxkwzDtiQhygXCRT4M-Gbrenz-QOLH?usp=sharing + +### Modele FLAN_T5 - testy 1. https://drive.google.com/drive/folders/1XO2TEMIKKFXCwpeW1X51hpC89LShCZ6c?usp=share_link 2. https://drive.google.com/drive/folders/1-3DEVCcxhRGSmEVx3jK4SUVVIUixNKqS?usp=share_link 3. https://drive.google.com/drive/folders/1-0Ct4JFzRhyo3bGuOc9ttZhaV4ghQRFx?usp=share_link