{"cells": [{"cell_type": "markdown", "id": "b7415772", "metadata": {}, "source": "# H&M Personalized Fashion Recommendations - Tutorial Notebook\n\nThis notebook explains recommendation systems from scratch using the H&M competition dataset.\n\nLearning goals:\n- understand dataset structure,\n- build intuitive candidate generators,\n- learn MAP@12,\n- design a ranking strategy,\n- generate a valid submission file.\n"}, {"cell_type": "code", "execution_count": 1, "id": "c82c62a7", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:01.143172Z", "iopub.status.busy": "2026-06-12T13:43:01.143066Z", "iopub.status.idle": "2026-06-12T13:43:02.283811Z", "shell.execute_reply": "2026-06-12T13:43:02.282778Z"}}, "outputs": [], "source": "import math\nimport random\nfrom collections import defaultdict\nfrom pathlib import Path\n\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom tqdm.auto import tqdm\n\nrandom.seed(42)\nnp.random.seed(42)\nsns.set_theme(style='whitegrid')\n\npd.set_option('display.max_columns', 120)\n"}, {"cell_type": "markdown", "id": "9253dff0", "metadata": {}, "source": "## 1. Resolve paths and load data\n\nWe verify every required competition file before doing any modeling.\n"}, {"cell_type": "code", "execution_count": 2, "id": "27fe1c80", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:02.285341Z", "iopub.status.busy": "2026-06-12T13:43:02.285173Z", "iopub.status.idle": "2026-06-12T13:43:29.950662Z", "shell.execute_reply": "2026-06-12T13:43:29.950089Z"}}, "outputs": [], "source": "CANDIDATE_ROOTS = [\n    Path('/kaggle/input/competitions/h-and-m-personalized-fashion-recommendations'),\n    Path('/kaggle/input/h-and-m-personalized-fashion-recommendations'),\n    Path.cwd() / 'data' / 'raw',\n]\nDATA_ROOT = next((p for p in CANDIDATE_ROOTS if p.exists()), None)\nassert DATA_ROOT is not None, 'H&M dataset root not found.'\n\nARTICLES_PATH = DATA_ROOT / 'articles.csv'\nCUSTOMERS_PATH = DATA_ROOT / 'customers.csv'\nTRANSACTIONS_PATH = DATA_ROOT / 'transactions_train.csv'\nSAMPLE_SUB_PATH = DATA_ROOT / 'sample_submission.csv'\n\nfor p in [ARTICLES_PATH, CUSTOMERS_PATH, TRANSACTIONS_PATH, SAMPLE_SUB_PATH]:\n    assert p.exists(), f'Missing required path: {p}'\n\nWORK_DIR = Path('/kaggle/working') if Path('/kaggle/working').exists() else Path.cwd()\nWORK_DIR.mkdir(parents=True, exist_ok=True)\n\narticles = pd.read_csv(ARTICLES_PATH)\ncustomers = pd.read_csv(CUSTOMERS_PATH, dtype={'customer_id': 'string'})\ntransactions = pd.read_csv(\n    TRANSACTIONS_PATH,\n    parse_dates=['t_dat'],\n    dtype={'customer_id': 'string', 'article_id': 'int32', 'price': 'float32', 'sales_channel_id': 'int8'},\n)\nsample_submission = pd.read_csv(SAMPLE_SUB_PATH, dtype={'customer_id': 'string'})\n\nprint('articles:', articles.shape)\nprint('customers:', customers.shape)\nprint('transactions:', transactions.shape)\nprint('sample_submission:', sample_submission.shape)\n"}, {"cell_type": "markdown", "id": "500d0424", "metadata": {}, "source": "## 2. EDA\n\nWe inspect customer ages, transaction timeline, and article popularity patterns.\n"}, {"cell_type": "code", "execution_count": 3, "id": "1629dfa1", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:29.952055Z", "iopub.status.busy": "2026-06-12T13:43:29.951952Z", "iopub.status.idle": "2026-06-12T13:43:42.412430Z", "shell.execute_reply": "2026-06-12T13:43:42.411983Z"}}, "outputs": [], "source": "customers['age'] = pd.to_numeric(customers.get('age'), errors='coerce')\n\nfig, axes = plt.subplots(1, 2, figsize=(14, 4))\ncustomers['age'].dropna().plot(kind='hist', bins=40, ax=axes[0], title='Customer age distribution')\naxes[0].set_xlabel('Age')\n\ntx_month = transactions.assign(month=transactions['t_dat'].dt.to_period('M').astype(str)).groupby('month').size()\ntx_month.plot(ax=axes[1], title='Transactions over time')\naxes[1].set_xlabel('Month')\naxes[1].set_ylabel('Transactions')\nplt.tight_layout()\nplt.show()\n"}, {"cell_type": "code", "execution_count": 4, "id": "a4888689", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:42.413739Z", "iopub.status.busy": "2026-06-12T13:43:42.413634Z", "iopub.status.idle": "2026-06-12T13:43:42.945023Z", "shell.execute_reply": "2026-06-12T13:43:42.944451Z"}}, "outputs": [], "source": "top_articles = transactions['article_id'].value_counts().head(15)\nplt.figure(figsize=(12, 4))\nsns.barplot(x=top_articles.index.astype(str), y=top_articles.values, color='#1f77b4')\nplt.title('Top 15 most purchased articles')\nplt.xticks(rotation=45)\nplt.xlabel('Article ID')\nplt.ylabel('Purchase count')\nplt.show()\n"}, {"cell_type": "markdown", "id": "66d8faaf", "metadata": {}, "source": "## 3. MAP@12 intuition\n\nKaggle scores how well the top-12 recommended articles match future purchases.\n"}, {"cell_type": "code", "execution_count": 5, "id": "268e54a6", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:42.946292Z", "iopub.status.busy": "2026-06-12T13:43:42.946145Z", "iopub.status.idle": "2026-06-12T13:43:42.949934Z", "shell.execute_reply": "2026-06-12T13:43:42.949515Z"}}, "outputs": [], "source": "def apk(actual, predicted, k=12):\n    if not actual:\n        return 0.0\n    pred = predicted[:k]\n    score = 0.0\n    hits = 0.0\n    used = set()\n    actual_set = set(actual)\n    for i, p in enumerate(pred, start=1):\n        if p in actual_set and p not in used:\n            hits += 1.0\n            used.add(p)\n            score += hits / i\n    return score / min(len(actual_set), k)\n\ndef mapk(actual_dict, pred_dict, k=12):\n    return float(np.mean([apk(a, pred_dict.get(c, []), k=k) for c, a in actual_dict.items()]))\n\n# Toy example\ntoy_actual = {'u1': [1, 2], 'u2': [3]}\ntoy_pred = {'u1': [2, 5, 1], 'u2': [4, 3]}\nprint('Toy MAP@12:', mapk(toy_actual, toy_pred, k=12))\n"}, {"cell_type": "markdown", "id": "f2bd0db0", "metadata": {}, "source": "## 4. Candidate generation + ranking strategy\n\nWe combine three candidate sources:\n- personal recency history,\n- age-segment popularity,\n- global popularity.\n\nFinal rank score is a weighted sum with a price-affinity penalty.\nWe tune weights using offline MAP@12.\n"}, {"cell_type": "code", "execution_count": 6, "id": "11aadc83", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:42.951225Z", "iopub.status.busy": "2026-06-12T13:43:42.951109Z", "iopub.status.idle": "2026-06-12T13:43:45.744462Z", "shell.execute_reply": "2026-06-12T13:43:45.743870Z"}}, "outputs": [], "source": "# Local dry-run mode keeps runtime practical outside Kaggle.\nIS_KAGGLE = Path('/kaggle').exists()\nif not IS_KAGGLE:\n    transactions = transactions.sort_values('t_dat').tail(3_000_000).copy()\n\ncustomers['age_bin'] = (customers['age'] // 5 * 5).astype('float32')\ncustomer_age_bin = customers.set_index('customer_id')['age_bin'].to_dict()\n\ndef build_actual_dict(df: pd.DataFrame) -> dict[str, list[int]]:\n    grouped = (\n        df.sort_values(['customer_id', 't_dat'], ascending=[True, False])\n        .groupby('customer_id')['article_id']\n        .apply(lambda x: list(dict.fromkeys(x.tolist())))\n    )\n    return grouped.to_dict()\n\ndef build_lookups(history_tx: pd.DataFrame, cutoff_date: pd.Timestamp):\n    recent_personal = history_tx[history_tx['t_dat'] >= cutoff_date - pd.Timedelta(days=120)].copy()\n    recent_personal['days_since'] = (cutoff_date - recent_personal['t_dat']).dt.days.clip(lower=0)\n    recent_personal['personal_score'] = np.exp(-recent_personal['days_since'] / 30.0)\n\n    personal = (\n        recent_personal.groupby(['customer_id', 'article_id'], as_index=False)['personal_score']\n        .sum()\n        .sort_values(['customer_id', 'personal_score'], ascending=[True, False])\n    )\n    personal['rnk'] = personal.groupby('customer_id').cumcount() + 1\n    personal = personal[personal['rnk'] <= 30]\n\n    personal_lookup = defaultdict(list)\n    for row in personal.itertuples(index=False):\n        personal_lookup[row.customer_id].append((int(row.article_id), float(row.personal_score)))\n\n    recent_30 = history_tx[history_tx['t_dat'] >= cutoff_date - pd.Timedelta(days=30)][['customer_id', 'article_id']].copy()\n    recent_30['age_bin'] = recent_30['customer_id'].map(customer_age_bin)\n    age_pop = (\n        recent_30.dropna(subset=['age_bin'])\n        .groupby(['age_bin', 'article_id'], as_index=False)\n        .size()\n        .rename(columns={'size': 'age_count'})\n        .sort_values(['age_bin', 'age_count'], ascending=[True, False])\n    )\n    age_pop['rnk'] = age_pop.groupby('age_bin').cumcount() + 1\n    age_pop = age_pop[age_pop['rnk'] <= 20]\n    age_pop['age_score'] = np.log1p(age_pop['age_count'])\n\n    age_lookup = defaultdict(list)\n    for row in age_pop.itertuples(index=False):\n        age_lookup[row.age_bin].append((int(row.article_id), float(row.age_score)))\n\n    global_pop = (\n        recent_30.groupby('article_id', as_index=False)\n        .size()\n        .rename(columns={'size': 'global_count'})\n        .sort_values('global_count', ascending=False)\n        .head(20)\n    )\n    global_pop['global_score'] = np.log1p(global_pop['global_count'])\n    global_list = [(int(r.article_id), float(r.global_score)) for r in global_pop.itertuples(index=False)]\n\n    article_mean_price = history_tx.groupby('article_id', as_index=True)['price'].mean().to_dict()\n    customer_mean_price = history_tx.groupby('customer_id', as_index=True)['price'].mean().to_dict()\n\n    return personal_lookup, age_lookup, global_list, article_mean_price, customer_mean_price\n\ndef recommend_one_customer(customer_id, weights, personal_lookup, age_lookup, global_list, article_mean_price, customer_mean_price, k=12):\n    scores = defaultdict(lambda: [0.0, 0.0, 0.0])\n\n    for aid, s in personal_lookup.get(customer_id, []):\n        scores[aid][0] = max(scores[aid][0], s)\n\n    age_bin = customer_age_bin.get(customer_id)\n    if age_bin is not None:\n        for aid, s in age_lookup.get(age_bin, []):\n            scores[aid][1] = max(scores[aid][1], s)\n\n    for aid, s in global_list:\n        scores[aid][2] = max(scores[aid][2], s)\n\n    c_price = customer_mean_price.get(customer_id)\n    ranked = []\n    for aid, vals in scores.items():\n        a_price = article_mean_price.get(aid)\n        if c_price is None or a_price is None:\n            gap = 0.0\n        else:\n            gap = abs(math.log1p(float(c_price)) - math.log1p(float(a_price)))\n\n        score = (\n            weights['personal'] * vals[0]\n            + weights['age'] * vals[1]\n            + weights['global'] * vals[2]\n            - weights['price_gap'] * gap\n        )\n        ranked.append((aid, score))\n\n    ranked.sort(key=lambda x: x[1], reverse=True)\n    return [aid for aid, _ in ranked[:k]]\n\ndef recommend_many(customer_ids, weights, personal_lookup, age_lookup, global_list, article_mean_price, customer_mean_price, k=12):\n    out = {}\n    for cid in tqdm(customer_ids, total=len(customer_ids)):\n        out[cid] = recommend_one_customer(\n            cid,\n            weights,\n            personal_lookup,\n            age_lookup,\n            global_list,\n            article_mean_price,\n            customer_mean_price,\n            k=k,\n        )\n    return out\n"}, {"cell_type": "code", "execution_count": 7, "id": "3d3d2107", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:43:45.746522Z", "iopub.status.busy": "2026-06-12T13:43:45.746382Z", "iopub.status.idle": "2026-06-12T13:44:01.062791Z", "shell.execute_reply": "2026-06-12T13:44:01.062231Z"}}, "outputs": [], "source": "max_date = transactions['t_dat'].max()\nval_start = max_date - pd.Timedelta(days=7)\n\nhistory = transactions[transactions['t_dat'] < val_start].copy()\nval_week = transactions[transactions['t_dat'] >= val_start].copy()\n\nval_customers = val_week['customer_id'].drop_duplicates().tolist()\nval_actual = build_actual_dict(val_week)\n\nlookups = build_lookups(history, val_start)\npersonal_lookup, age_lookup, global_list, article_mean_price, customer_mean_price = lookups\n\nweight_grid = [\n    {'personal': 1.8, 'age': 0.8, 'global': 0.35, 'price_gap': 0.00},\n    {'personal': 2.0, 'age': 0.9, 'global': 0.40, 'price_gap': 0.05},\n    {'personal': 2.2, 'age': 1.0, 'global': 0.45, 'price_gap': 0.08},\n    {'personal': 2.4, 'age': 0.9, 'global': 0.50, 'price_gap': 0.10},\n]\n\ntuning = []\nfor w in weight_grid:\n    pred = recommend_many(\n        val_customers,\n        w,\n        personal_lookup,\n        age_lookup,\n        global_list,\n        article_mean_price,\n        customer_mean_price,\n        k=12,\n    )\n    score = mapk(val_actual, pred, k=12)\n    tuning.append((w, score))\n    print(w, 'MAP@12=', score)\n\nbest_weights, best_score = sorted(tuning, key=lambda x: x[1], reverse=True)[0]\nprint('Best weights:', best_weights)\nprint('Best offline MAP@12:', best_score)\n"}, {"cell_type": "markdown", "id": "cfaf597c", "metadata": {}, "source": "## 5. Final submission generation\n"}, {"cell_type": "code", "execution_count": 8, "id": "13a614c7", "metadata": {"execution": {"iopub.execute_input": "2026-06-12T13:44:01.064050Z", "iopub.status.busy": "2026-06-12T13:44:01.063947Z", "iopub.status.idle": "2026-06-12T13:44:09.971801Z", "shell.execute_reply": "2026-06-12T13:44:09.971117Z"}}, "outputs": [], "source": "full_cutoff = max_date + pd.Timedelta(days=1)\nfull_lookups = build_lookups(transactions, full_cutoff)\nf_personal, f_age, f_global, f_article_price, f_customer_price = full_lookups\n\nsub_customers = sample_submission['customer_id'].tolist()\nif not IS_KAGGLE:\n    sub_customers = sub_customers[:50000]\n\npred = recommend_many(\n    sub_customers,\n    best_weights,\n    f_personal,\n    f_age,\n    f_global,\n    f_article_price,\n    f_customer_price,\n    k=12,\n)\n\nout = sample_submission.copy()\nif not IS_KAGGLE:\n    out = out.iloc[:len(sub_customers)].copy()\n\nout['prediction'] = out['customer_id'].map(\n    lambda cid: ' '.join(f'{int(a):010d}' for a in pred.get(cid, []))\n)\n\nassert out['prediction'].str.len().gt(0).all(), 'Found empty predictions.'\n\nout_path = WORK_DIR / ('tutorial_submission.csv' if not IS_KAGGLE else 'submission.csv')\nout.to_csv(out_path, index=False)\n\nprint('Saved submission file:', out_path)\ndisplay(out.head())\n"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.10"}, "widgets": {"application/vnd.jupyter.widget-state+json": {"state": {"013ab0942fde45909bb92099a1fbafa0": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_0a696cf7c00c4a768a71efe05b99dd81", "placeholder": "\u200b", "style": "IPY_MODEL_c33d34acda0b43dbad1fb24358d90f01", "tabbable": null, "tooltip": null, "value": "100%"}}, "0293040cb79f4fff8c058733f9311124": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "0708ce14e37d4659b8f10309f0ac7660": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "09a3110aca73409597ed4b83e448ed27": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "09ffe295c6d948839849766d1e91cb2e": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "0a696cf7c00c4a768a71efe05b99dd81": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "13745c9986594103811bcfc46e20ef21": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "1479912dbd2f4b51b9dafdc537b1163f": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "1b8d5cda00cd420388e1e15191021a27": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_98f83f1028de4f20968e591df735bedd", "IPY_MODEL_c49656ba64694f1a9f77ebc2dc0c3afa", "IPY_MODEL_c629efbf9ba04d45b622d37982e980af"], "layout": "IPY_MODEL_13745c9986594103811bcfc46e20ef21", "tabbable": null, "tooltip": null}}, "242060cad5f9455f898983bf949f7925": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "2890632ecb1c471885dd667a93010f29": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "2ad3285b7fe845e0bd66f043100af3a8": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "2f7362ec1f2e46fe95dbaa9899b41542": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "38ff4eb3cc3a4798a6ea172a7ae695e3": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "420a979d2c464cd7b308aacbe9203410": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "46b54c46f1364a799f8539a813be3811": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "486cce676fbe4e2d95e12bf84714e02b": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "4bda7c755ff0445bb5a27903eece6391": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_0708ce14e37d4659b8f10309f0ac7660", "placeholder": "\u200b", "style": "IPY_MODEL_ca687bbba5d248ffa66ea945719cbd33", "tabbable": null, "tooltip": null, "value": "\u200775481/75481\u2007[00:01&lt;00:00,\u200747584.35it/s]"}}, "5736c032e6804e10a4faea46e791c049": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "5ba571f4a6a446878f0220ce81c7000b": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_a5d21fe6073e4b488878940e3cea1ba2", "placeholder": "\u200b", "style": "IPY_MODEL_f3a42913e1c24879bbedb336bb32e1bb", "tabbable": null, "tooltip": null, "value": "\u200775481/75481\u2007[00:01&lt;00:00,\u200746480.66it/s]"}}, "63834a64428b4c2ea77717c59f93b38a": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "644ea54619d140fe81361868feb289ab": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "6652a7fbe0d245e0a1cce2bf713e9972": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_38ff4eb3cc3a4798a6ea172a7ae695e3", "placeholder": "\u200b", "style": "IPY_MODEL_f2dfc00ad32746bbbe5c88be755f71e7", "tabbable": null, "tooltip": null, "value": "100%"}}, "674c0648cf23448799725ad9e6e5b166": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_6652a7fbe0d245e0a1cce2bf713e9972", "IPY_MODEL_dffb5a129a224ac5aad9c9b3c54d162d", "IPY_MODEL_5ba571f4a6a446878f0220ce81c7000b"], "layout": "IPY_MODEL_2f7362ec1f2e46fe95dbaa9899b41542", "tabbable": null, "tooltip": null}}, "6765328a53d04061a2358fd93539a758": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_09a3110aca73409597ed4b83e448ed27", "placeholder": "\u200b", "style": "IPY_MODEL_e513273d86ca4be5b8b2c47c5d7c9b65", "tabbable": null, "tooltip": null, "value": "\u200775481/75481\u2007[00:01&lt;00:00,\u200740854.83it/s]"}}, "76ae0e0d4e2d408a9fe8d5ef0e204875": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_09ffe295c6d948839849766d1e91cb2e", "max": 75481.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_644ea54619d140fe81361868feb289ab", "tabbable": null, "tooltip": null, "value": 75481.0}}, "89203ceaffd14a76acb47fa55b488236": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "94ccc360a3f24eb08a2bc4137c48f3db": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_013ab0942fde45909bb92099a1fbafa0", "IPY_MODEL_76ae0e0d4e2d408a9fe8d5ef0e204875", "IPY_MODEL_6765328a53d04061a2358fd93539a758"], "layout": "IPY_MODEL_a03e329eeafe44b28684db45e11590a3", "tabbable": null, "tooltip": null}}, "98f83f1028de4f20968e591df735bedd": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_e89fb4c37d884ec2830d220960e349bc", "placeholder": "\u200b", "style": "IPY_MODEL_a9e836c5868e4002bd88352f299564d6", "tabbable": null, "tooltip": null, "value": "100%"}}, "a03e329eeafe44b28684db45e11590a3": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "a5d21fe6073e4b488878940e3cea1ba2": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "a9e836c5868e4002bd88352f299564d6": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "b4a09a7963fa4b2fae1b5d000fed6230": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "ba81b16411d14b8e96aeba3c9987cb8b": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "be24b942f8474ce598b33fd96c6b9359": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_5736c032e6804e10a4faea46e791c049", "placeholder": "\u200b", "style": "IPY_MODEL_e7d7a58a20264edaab1705d70fa5b853", "tabbable": null, "tooltip": null, "value": "100%"}}, "c019b75ff5774ac8bbc8f46355130753": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_c800aa9af1d648caa7654832ddbb3c1d", "IPY_MODEL_fe7842813896420d9825ba207821ca60", "IPY_MODEL_4bda7c755ff0445bb5a27903eece6391"], "layout": "IPY_MODEL_46b54c46f1364a799f8539a813be3811", "tabbable": null, "tooltip": null}}, "c272d087573841c2b1af7f0454b47287": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c33d34acda0b43dbad1fb24358d90f01": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "c49656ba64694f1a9f77ebc2dc0c3afa": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_63834a64428b4c2ea77717c59f93b38a", "max": 50000.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_d4b8eb36d08c46a6b48ddca6e7e74cad", "tabbable": null, "tooltip": null, "value": 50000.0}}, "c629efbf9ba04d45b622d37982e980af": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_b4a09a7963fa4b2fae1b5d000fed6230", "placeholder": "\u200b", "style": "IPY_MODEL_0293040cb79f4fff8c058733f9311124", "tabbable": null, "tooltip": null, "value": "\u200750000/50000\u2007[00:00&lt;00:00,\u200755460.79it/s]"}}, "c800aa9af1d648caa7654832ddbb3c1d": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_420a979d2c464cd7b308aacbe9203410", "placeholder": "\u200b", "style": "IPY_MODEL_ba81b16411d14b8e96aeba3c9987cb8b", "tabbable": null, "tooltip": null, "value": "100%"}}, "c900beb289ff4ebc84334e869599ac34": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "ca687bbba5d248ffa66ea945719cbd33": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "ce3d7d9822ae4842820abac322fb3e35": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_89203ceaffd14a76acb47fa55b488236", "placeholder": "\u200b", "style": "IPY_MODEL_2890632ecb1c471885dd667a93010f29", "tabbable": null, "tooltip": null, "value": "\u200775481/75481\u2007[00:01&lt;00:00,\u200747273.19it/s]"}}, "d40af3d4684c4040931e5050595f0466": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_c272d087573841c2b1af7f0454b47287", "max": 75481.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_c900beb289ff4ebc84334e869599ac34", "tabbable": null, "tooltip": null, "value": 75481.0}}, "d4b8eb36d08c46a6b48ddca6e7e74cad": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "dffb5a129a224ac5aad9c9b3c54d162d": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_1479912dbd2f4b51b9dafdc537b1163f", "max": 75481.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_486cce676fbe4e2d95e12bf84714e02b", "tabbable": null, "tooltip": null, "value": 75481.0}}, "e513273d86ca4be5b8b2c47c5d7c9b65": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "e7d7a58a20264edaab1705d70fa5b853": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "e89fb4c37d884ec2830d220960e349bc": {"model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {"_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": 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, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "f0498756c75c4dc3b211c86c3354d84b": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "f2dfc00ad32746bbbe5c88be755f71e7": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "f3a42913e1c24879bbedb336bb32e1bb": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": {"_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "fa3bbb8e653447f9b344ab045e407d64": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_be24b942f8474ce598b33fd96c6b9359", "IPY_MODEL_d40af3d4684c4040931e5050595f0466", "IPY_MODEL_ce3d7d9822ae4842820abac322fb3e35"], "layout": "IPY_MODEL_242060cad5f9455f898983bf949f7925", "tabbable": null, "tooltip": null}}, "fe7842813896420d9825ba207821ca60": {"model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_2ad3285b7fe845e0bd66f043100af3a8", "max": 75481.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_f0498756c75c4dc3b211c86c3354d84b", "tabbable": null, "tooltip": null, "value": 75481.0}}}, "version_major": 2, "version_minor": 0}}}, "nbformat": 4, "nbformat_minor": 5}