{ "cells": [ { "cell_type": "markdown", "id": "5e038026-eeac-4647-b877-fd07cef5ab94", "metadata": {}, "source": [ "
\n", " \n", " " ] }, { "cell_type": "markdown", "id": "f5662507-f32c-4537-b0d8-b9234768b2c2", "metadata": {}, "source": [ "# HOOPS AI: Use the Dataset Explorer to navigate the dataset\n", "\n", "\n", "The `dataset` module provides a comprehensive framework for exploring, navigating, and loading CAD model datasets for machine learning applications. It consists of two primary components that work together to simplify data handling:\n", "\n", "1. **DatasetExplorer** - For exploring and querying dataset contents\n", "2. **DatasetLoader** - For loading and preparing datasets for machine learning training\n", "\n", "These components are designed to work with the processed data from the `cadaccess` and `cadencoder` modules, as well as the outputs from the flow pipeline system. They provide high-level abstractions that allow users to focus on machine learning tasks rather than data handling complexities.\n", "\n", "## DatasetExplorer\n", "\n", "The `DatasetExplorer` class (`dataset_explorer.py`) provides methods for exploring and querying datasets stored in Zarr format (.dataset) with accompanying metadata (.infoset) in Parquet files. This class focuses on data discovery, filtering, and statistical analysis.\n", "\n", "### Key Methods\n", "\n", "#### Data Discovery and Metadata\n", "\n", "- `available_groups() -> set`: Returns the set of available dataset groups (faces, edges, file, etc.)\n", "- `get_descriptions(table_name: str, key_id: Optional[int] = None, use_wildchar: Optional[bool] = False) -> pd.DataFrame`: Retrieves metadata descriptions (labels, face types, edge types, etc.)\n", "- `get_parquet_info_by_code(file_id_code: int)`: Returns rows from the Parquet file for a specific file ID code\n", "- `get_file_info_all() -> pd.DataFrame`: Returns all file info from the Parquet metadata\n", "\n", "#### Data Distribution Analysis\n", "\n", "- `create_distribution(key: str, bins: int = 10, group: str = \"faces\") -> Dict[str, Any]`: Computes histograms of data distributions using Dask for parallel processing\n", "\n", "#### Data Filtering and Selection\n", "\n", "- `get_file_list(group: str, where: Callable[[xr.Dataset], xr.DataArray]) -> List[str]`: Returns file IDs matching a boolean filter condition\n", "- `file_dataset(file_id_code: int, group: str) -> xr.Dataset`: Returns a subset of the dataset for a specific file\n", "- `build_membership_matrix(group: str, key: str, bins_or_categories: Union[int, List, np.ndarray], as_counts: bool = False) -> tuple[np.ndarray, np.ndarray, np.ndarray]`: Builds a file-by-bin membership matrix for stratified splitting\n", "- `decode_file_id_code(code: int) -> str`: Converts an integer file ID code to the original string identifier" ] }, { "cell_type": "code", "execution_count": 1, "id": "021c4256-d764-4983-aae8-4a87498b483e", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ℹ️ Using TEST LICENSE (expires February 8th, 2026 - 9 days remaining)\n", " For production use, obtain your own license from Tech Soft 3D\n", "HOOPS AI version : 1.0.0-b2dev12 \n", "\n", "======================================================================\n", "✓ HOOPS AI License: Valid (TEST LICENSE)\n", "======================================================================\n" ] } ], "source": [ "import hoops_ai\n", "import os\n", "\n", "hoops_ai.set_license(hoops_ai.use_test_license())" ] }, { "cell_type": "code", "execution_count": 2, "id": "381fd5db-d080-4004-a103-fd5d358ee504", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Users\\LuisSalazar\\Documents\\MAIN\\MLProject\\repo\\HOOPS-AI-tutorials\\packages\\flows\\cadsynth_aag\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\LuisSalazar\\miniconda3\\envs\\hoops_ai_gpu_dev\\lib\\contextlib.py:126: UserWarning: Creating scratch directories is taking a surprisingly long time. (1.02s) This is often due to running workers on a network file system. Consider specifying a local-directory to point workers to write scratch data to a local disk.\n", " next(self.gen)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[DatasetExplorer] Default local cluster started: \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1f9a8dd8b6c142029f7b0a411dc8071d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing file info: 0%| | 0/162412 [00:00 id name description table_name\n", "0 0 Plane not set face_types\n", "1 1 Cylinder not set face_types\n", "2 2 Cone not set face_types\n", "3 14 Extrusion not set face_types\n", "4 3 Sphere not set face_types\n", "5 4 Torus not set face_types\n", "6 5 Nurbs not set face_types\n", "7 13 Revolution not set face_types\n" ] } ], "source": [ "face_type_description = explorer.get_descriptions(\"face_types\")\n", "print(type(face_type_description), face_type_description)" ] }, { "cell_type": "code", "execution_count": null, "id": "00094125-0518-4ce3-a73e-230dfd3983a7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 5, "id": "1fd33405-d646-487a-9b81-f2bd9d0510a3", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Get and print meta data information\n", "file_id = 25\n", "df_info = explorer.get_parquet_info_by_code(file_id)\n", "#print(type(df_info), df_info)" ] }, { "cell_type": "code", "execution_count": 6, "id": "af3a683e-c6f1-408e-9c0c-3e7ad9446feb", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Datasets (Table of Content) for file ID '25':\n", " [edges] DATA: edge_convexities, Shape: (128,), Dims: ('edge',), Size: 128\n", " [edges] DATA: edge_dihedral_angles, Shape: (128,), Dims: ('edge',), Size: 128\n", " [edges] DATA: edge_indices, Shape: (128,), Dims: ('edge',), Size: 128\n", " [edges] DATA: edge_lengths, Shape: (128,), Dims: ('edge',), Size: 128\n", " [edges] DATA: edge_types, Shape: (128,), Dims: ('edge',), Size: 128\n", " [edges] DATA: edge_u_grids, Shape: (128, 5, 6), Dims: ('edge', 'dim_x', 'component'), Size: 3840\n", " [edges] DATA: file_id_code_edges, Shape: (128,), Dims: ('edge',), Size: 128\n", " [file] DATA: duration_dglconvert, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] DATA: file_id_code_file, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] DATA: size_cadfile, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] DATA: size_dglfile, Shape: (1,), Dims: ('file',), Size: 1\n", " [faces] DATA: face_areas, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_indices, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_labels, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_loops, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_neighborscount, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_types, Shape: (45,), Dims: ('face',), Size: 45\n", " [faces] DATA: face_uv_grids, Shape: (45, 5, 5, 7), Dims: ('face', 'uv_x', 'uv_y', 'component'), Size: 7875\n", " [faces] DATA: file_id_code_faces, Shape: (45,), Dims: ('face',), Size: 45\n", " [graph] DATA: destination, Shape: (128,), Dims: ('edge',), Size: 128\n", " [graph] DATA: file_id_code_graph, Shape: (128,), Dims: ('edge',), Size: 128\n", " [graph] DATA: num_nodes, Shape: (128,), Dims: ('edge',), Size: 128\n", " [graph] DATA: source, Shape: (128,), Dims: ('edge',), Size: 128\n", " [faceface] DATA: a3_distance, Shape: (2025, 64), Dims: ('faceface_flat', 'bins_d'), Size: 129600\n", " [faceface] DATA: d2_distance, Shape: (2025, 64), Dims: ('faceface_flat', 'bins_a'), Size: 129600\n", " [faceface] DATA: extended_adjacency, Shape: (2025,), Dims: ('faceface_flat',), Size: 2025\n", " [faceface] DATA: face_pair_edges_path, Shape: (2025, 32), Dims: ('faceface_flat', 'dim_path'), Size: 64800\n", " [faceface] DATA: face_x, Shape: (2025,), Dims: ('faceface_flat',), Size: 2025\n", " [faceface] DATA: face_y, Shape: (2025,), Dims: ('faceface_flat',), Size: 2025\n", " [faceface] DATA: file_id_code_faceface, Shape: (2025,), Dims: ('faceface_flat',), Size: 2025\n", "\n", "type of file_data_arrays \n", "type of array_areas \n", "brep surfaces (45,)\n" ] } ], "source": [ "# Access various dataset groups\n", "file_datasetGroup = {grp: explorer.file_dataset(file_id_code=file_id, group=grp) for grp in groups}\n", "\n", "print(f\"Datasets (Table of Content) for file ID '{file_id}':\")\n", "for grp, ds in file_datasetGroup.items():\n", " for name, da in ds.data_vars.items():\n", " print(f\" [{grp}] DATA: {name}, Shape: {da.shape}, Dims: {da.dims}, Size: {da.size}\")\n", "print()\n", "\n", "file_dataset = file_datasetGroup[\"faces\"]\n", "print(\"type of file_data_arrays\", type(file_dataset))\n", "\n", "#print the areas of each face\n", "array_areas = file_dataset[\"face_areas\"].data.compute()\n", "print(\"type of array_areas\", type(array_areas))\n", "print(\"brep surfaces\", array_areas.shape)" ] }, { "cell_type": "code", "execution_count": null, "id": "a4cf9a79-a76d-4b36-b526-59a3c3b5da04", "metadata": { "tags": [] }, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "b6ed3a30-beef-4f26-a17a-46538c5f4fc2", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "numpy array shape (45, 5, 5, 7)\n" ] } ], "source": [ "# this requires to be a bit familiar with pandas and dask.\n", "uv_grid_data = file_dataset[\"face_uv_grids\"].data.compute()\n", "\n", "\n", "print(\"numpy array shape\", uv_grid_data.shape)" ] }, { "cell_type": "code", "execution_count": 8, "id": "66844184-060d-433e-855a-4e94fcc27e2d", "metadata": { "scrolled": true, "tags": [] }, "outputs": [], "source": [ "#print(uv_grid_data)" ] }, { "cell_type": "code", "execution_count": 9, "id": "d13f4ae0-82e8-4369-93b7-99c163d64b7c", "metadata": { "tags": [] }, "outputs": [ { "data": { "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", " \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", "
namedescriptionsubsetidtable_name
000001d44b8eb37fe4bb6ec4e89746ea3C:\\Temp\\Cadsynth_aag\\step\\00021388.stptrain0file_info
1000093c3b74c8076fbba20bf8613e2a2C:\\Temp\\Cadsynth_aag\\step\\20221121_154647_2127...validation1file_info
200012dc0e22bd178d7c6a12436734130C:\\Temp\\Cadsynth_aag\\step\\00067737.stpvalidation2file_info
300013001df401fe06d5213ef6fc9e581C:\\Temp\\Cadsynth_aag\\step\\00058353.stpvalidation3file_info
400015d0e0e285c5089a485360b34db1aC:\\Temp\\Cadsynth_aag\\step\\00048571.stptrain4file_info
..................
162407fffe278b406958997fff4c1f76b72ee0C:\\Temp\\Cadsynth_aag\\step\\20221123_142528_2390...test162407file_info
162408fffe3fba779b5fa5543c4a82c3cfbabbC:\\Temp\\Cadsynth_aag\\step\\00091954.stptrain162408file_info
162409fffee3edd46107ca808a958811dcb9a8C:\\Temp\\Cadsynth_aag\\step\\20221124_154714_1362...validation162409file_info
162410ffff1ac0abc28d3ede6b7bfb6434cdf4C:\\Temp\\Cadsynth_aag\\step\\00065860.stptrain162410file_info
162411ffffdc1d0cb629065026fa55a97ca314C:\\Temp\\Cadsynth_aag\\step\\00016373.stptrain162411file_info
\n", "

162412 rows × 5 columns

\n", "
" ], "text/plain": [ " name \\\n", "0 00001d44b8eb37fe4bb6ec4e89746ea3 \n", "1 000093c3b74c8076fbba20bf8613e2a2 \n", "2 00012dc0e22bd178d7c6a12436734130 \n", "3 00013001df401fe06d5213ef6fc9e581 \n", "4 00015d0e0e285c5089a485360b34db1a \n", "... ... \n", "162407 fffe278b406958997fff4c1f76b72ee0 \n", "162408 fffe3fba779b5fa5543c4a82c3cfbabb \n", "162409 fffee3edd46107ca808a958811dcb9a8 \n", "162410 ffff1ac0abc28d3ede6b7bfb6434cdf4 \n", "162411 ffffdc1d0cb629065026fa55a97ca314 \n", "\n", " description subset id \\\n", "0 C:\\Temp\\Cadsynth_aag\\step\\00021388.stp train 0 \n", "1 C:\\Temp\\Cadsynth_aag\\step\\20221121_154647_2127... validation 1 \n", "2 C:\\Temp\\Cadsynth_aag\\step\\00067737.stp validation 2 \n", "3 C:\\Temp\\Cadsynth_aag\\step\\00058353.stp validation 3 \n", "4 C:\\Temp\\Cadsynth_aag\\step\\00048571.stp train 4 \n", "... ... ... ... \n", "162407 C:\\Temp\\Cadsynth_aag\\step\\20221123_142528_2390... test 162407 \n", "162408 C:\\Temp\\Cadsynth_aag\\step\\00091954.stp train 162408 \n", "162409 C:\\Temp\\Cadsynth_aag\\step\\20221124_154714_1362... validation 162409 \n", "162410 C:\\Temp\\Cadsynth_aag\\step\\00065860.stp train 162410 \n", "162411 C:\\Temp\\Cadsynth_aag\\step\\00016373.stp train 162411 \n", "\n", " table_name \n", "0 file_info \n", "1 file_info \n", "2 file_info \n", "3 file_info \n", "4 file_info \n", "... ... \n", "162407 file_info \n", "162408 file_info \n", "162409 file_info \n", "162410 file_info \n", "162411 file_info \n", "\n", "[162412 rows x 5 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "explorer.get_file_info_all()" ] }, { "cell_type": "code", "execution_count": 10, "id": "9b977880-8df0-4eda-a43d-57fe16a625e1", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Visualization libraries\n", "import matplotlib.pyplot as plt\n", "\n", "def print_distribution_info(dist, title=\"Distribution\"):\n", " \"\"\"Helper function to print and visualize distribution data.\"\"\"\n", " list_filecount = list()\n", " for i, bin_files in enumerate(dist['file_id_codes_in_bins']):\n", " list_filecount.append(bin_files.size)\n", "\n", " dist['file_count'] =list_filecount\n", " # Visualization with matplotlib\n", " fig, ax = plt.subplots(figsize=(12, 4))\n", " \n", " bin_centers = 0.5 * (dist['bin_edges'][1:] + dist['bin_edges'][:-1])\n", " ax.bar(bin_centers, dist['file_count'], width=(dist['bin_edges'][1] - dist['bin_edges'][0]), \n", " alpha=0.7, color='steelblue', edgecolor='black', linewidth=1)\n", " \n", " # Add file count annotations\n", " for i, count in enumerate(dist['file_count']):\n", " if count > 0: # Only annotate non-empty bins\n", " ax.text(bin_centers[i], count + 0.5, f\"{count}\", \n", " ha='center', va='bottom', fontsize=8)\n", " \n", " ax.set_xlabel('Value')\n", " ax.set_ylabel('Count')\n", " ax.set_title(f'{title} Histogram')\n", " ax.grid(True, linestyle='--', alpha=0.7)\n", " \n", " plt.tight_layout()\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "id": "477d5cad-0bcb-4575-9079-55f16327ac67", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Face labels distribution created in 3.28 seconds\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAACbyElEQVR4nO3dB5hU1fnH8Xe20aR3BRWIChZAsceuEaNRscUaG5FobNgbIrYYNSpiI8QgMQFbov6NGkvUqAlGxQJqRKWoIEiRDgvb5v/8znJm78ydrexO2+/neYZh79yZuWfufW957ymRaDQaNQAAAAAAACCF8lL5ZQAAAAAAAICQlAIAAAAAAEDKkZQCAAAAAABAypGUAgAAAAAAQMqRlAIAAAAAAEDKkZQCAAAAAABAypGUAgAAAAAAQMqRlAIAAAAAAEDKkZQCAAAAAABAypGUAgAASPD1119bJBKx3/3ud432mf/617/cZ+o5XeWZNGlSyr8bAACgOiSlAABATlDCRYmXadOmWa4788wzbbPNNqv2df0OF1xwwSZ/z4MPPkgiCwAANJmCpvtoAAAAZIKtttrKiouLrbCwsN5JqS5durgkGAAAQGOjphQAAECOU82pli1bWn5+vmWTdevWpXsRAABAEyIpBQAAmo2SkhIbPXq0DRkyxNq3b29t2rSxfffd1954441q33PPPfe4mkatWrWy/fff3z799NPQPDNnzrTjjz/eOnXq5JI/u+66qz333HO1Ls9XX31lxx13nPXo0cO9r1evXnbSSSfZypUrran7lPr+++/trLPOct/ZokUL69mzpx199NFuXtl6663ts88+szfffNO9V48DDjgg9v45c+bYCSec4MrcunVr23PPPe2FF14Iffc333xjRx11lPutu3XrZpdccom9/PLLof619Nk77rijffDBB7bffvu5z7z22mvda//3f/9nRxxxhG2++eZuWfv162c333yzlZeXx32X/4wZM2a4daXP+NGPfmR//etf3esqyx577OHW5XbbbWf//Oc/G/V3BgAA9UPzPQAA0GysWrXKHn74YTv55JPtnHPOsdWrV9sf//hHGzp0qL333ns2ePDguPkfffRRN8/5559v69evt3vvvdcOOugg++STT6x79+5uHiVufvzjH9sWW2xhV199tUu+PPnkkzZs2DD729/+Zsccc0y1CTJ974YNG+zCCy90ianvvvvOnn/+eVuxYoVLmtVm6dKlDf4tlAzTsuu7lYBavHixvfrqq/btt9+6v8eOHeteU99V1113nXuPL/OiRYts7733djWZLrroIuvcubP96U9/csknJYB8mdeuXet+r4ULF9rFF1/syjhlypRqk4A//PCD/fSnP3WJudNOOy32fUqmaTkuvfRS9/z666+75KLW55133hn3GcuXL7ef/exn7jOUNHvooYfc/ydPnmwjR460c88910455RT3PiUS582bZ23btm3w7wgAADZBFAAAIAc88sgjUZ3avP/++9XOU1ZWFt2wYUPctOXLl0e7d+8ePfvss2PT5s6d6z6rVatW0fnz58emv/vuu276JZdcEpt28MEHR3faaafo+vXrY9MqKiqie++9d3SbbbaJTXvjjTfce/UsH330kfv7qaeeqndZzzjjDPfemh7nn39+qDz6jXyZ9fedd95Z4/fssMMO0f333z80feTIke79b7/9dmza6tWro3369IluvfXW0fLycjftrrvucvM9++yzsfmKi4uj/fv3j/stRN+jaePHjw9937p160LTfvWrX0Vbt24d97v7z5gyZUps2syZM920vLy86H//+9/Y9JdffjnuNwEAAKlH8z0AANBsqE+loqIi9/+KigpbtmyZlZWVueZ2H374YWh+1XZSDShv9913d82/XnzxRfe33q9aOz//+c9djSrVXNJDNX5UC0rN81T7KRlfE0pN2RrSd5Ka+6lmU7JHbdR8Tb+Dms+pZlF9qfz6LfbZZ5/YNNVgGjFihGv+97///c9Ne+mll9zvpxpUweVWLbVk1DRPTQqTLa/nf2c1u9TvpqaTQVoO1Yzy1EyvQ4cONmDAALfuPP9/NUMEAADpQfM9AADQrKiZ2V133eWSGaWlpbHpffr0Cc27zTbbhKZtu+22rnmezJo1S7XO7frrr3ePZNQsLpjYCn6fmqPdfffdrmmZkixK3qjZWl2a7inBdsghh1hDKPlz++2322WXXeaayKk/KDV5O/30010Tu9qon6hggsdT4se/rr6d9Kz+n9R/VJD6eUpGv5NPGgapmeGoUaNcAlBN9oIS+99SH1mJ36ffs3fv3qFp0pCkHAAAaBzUlAIAAM3GX/7yFzvzzDNdokR9Sakmj2oWqd8j1ZyqL/+eyy+/vNpaS9UlYETJMXXKrQ69i4uLXf9MO+ywg82fP9+amvpX+vLLL+22225ztZeUVFNS6aOPPrJ0CdaI8tS/ljotnz59ut10003297//3f2uSqpJ4nqrboTB6qYrqQgAANKDmlIAAKDZUCfcffv2taeffjquNs0NN9yQdH41v0ukRI46Ahd9lhQWFja41tJOO+3kHqoJNHXqVNdp+vjx4+2WW26xpqbknGpL6aGyqqN3JcqUvJPEGkeeRiP84osvQtN9Uzq97p/VlE+Jn+BnqYZZXamJoZpDap1pVD5v7ty59SgpAADIRNSUAgAAzYavLROsHfPuu+/aO++8k3T+Z599Nq5PKI3Qp/k1Qpx069bNDjjgAPv973/vRphLtGTJkmqXRc3Q1J9VkJJTeXl5bkS+pqS+mDSaYGKCSqPQBb9bIwmqplKiww8/3P0Wwd9NI+1NmDDBJey23357N039aun3e+6552Lz6Xv/8Ic/bNI608iFDz74YJ0/AwAAZCZqSgEAgJwyceJE1ywv0cUXX+z6TVKNm2OOOcaOOOIIV9tGtZKURFmzZk3oPWp6p868zzvvPJesGTt2rHXu3NmuvPLK2DwPPPCAm0cJJXXgrdpTixYtcgkbNcNTs7Nk1D/SBRdcYCeccILrp0oJqj//+c8uCXPcccdZU1Jtr4MPPth10K6yFxQU2DPPPOOWO9hJ+JAhQ+yhhx5ytbb0WygJp6aOV199tT322GMuOacmh506dXJ9den3/Nvf/uYSa/KrX/3K7r//fjv55JPd79+zZ0/Xf5aaC9ZUEyto7733to4dO9oZZ5zhvkvv0e9EszsAALIfSSkAAJBTlERJRn1J6fH999+7mk0a9U4JGTVVe+qpp1wzsUTq+FsJFiWj1GG5RpxTkkXJFU+fMW3aNLvxxhtt0qRJrqmZkjc777yzjR49utrlHDRokKtJpD6SVJuodevWbto//vEP1/F4U1Kn30oUvfbaay7Bo6RU//79XQfuwYSYll+dld9xxx1u1Dv17aSklDpHV1PDq666yu677z5X+2ngwIGuLEr2BUfCU/LtwgsvtHvvvdf9rd9UiSZ9j09O1URJwOeff941MVQTRyWo1Bm8kmr6/QAAQPaKRLnNBAAAgBRSku+SSy5xNcmSjUwIAACaB5JSAAAAaDIaVTA4qp5qVakWWXl5uWtGCAAAmi+a7wEAAKDJHHvssbblllu6kf1WrlzpmktqlD71LQUAAJo3klIAAABoMur36eGHH3ZJKNWOUh9cjz/+uJ144onpXjQAAJBmNN8DAAAAAABAylWO1wsAAAAAAACkEEkpAAAAAAAApBx9SqVQRUWFLViwwNq2bWuRSCTdiwMAAAAAANDo1FPU6tWrbfPNN7e8vOrrQ5GUSiElpHr37p3uxQAAAAAAAGhy8+bNs169elX7OkmpFFINKb9S2rVrl+7FyQhlZWU2ffp0GzRokBUUsDkCQlwAYcQFEEZcAGHEBZAZMbFq1SpXKcfnQapDlKaQb7KnhBRJqaoAadWqlfs9OGgAlYgLIIy4AMKICyCMuAAyKyZq67qIjs4BAAAAAACQciSlAAAAAAAAkHIkpVBvF110kW299dauGt7HH38cm75hwwa74IILbJtttrGddtrJTjvtNDd9/fr1NmzYMNt2221dO9af/OQnNmvWLPdafn6+DRw40D2//vrr7nns2LGxz5w4caL7LFUzDE6v7TUgmwXjAkAl4gIIIy6AMOICyK6YICmFejv++OPt3//+t2211VZx06+++mqXqPryyy/tk08+sd/97nex10aMGGFffPGF62Dt6KOPtl/+8pex14qKimzlypXu/YcffnjcZw4ZMsSefPJJO+WUU0LLUdNrQLZTXACIR1wAYcQFEEZcANkTEySlUG/77bdfaEjHtWvX2h//+Ee79dZbYx2Z9ejRwz23bNnSJZv89D333NO+/vpr9//y8nKbNm2anX/++TZq1Cjr3Llz3OeqZtWAAQMsLy+8qdb0GpDNfFzoGUAl4gIIIy6AMOICyK6Y4GoejWL27NnWqVMn+81vfmO77rqr7bvvvvbaa68lnffee+91taU8NdtTYumoo45K4RIDAAAAAIB0YoxMNNowk998841tv/329tvf/tY++ugj13fUZ599Zt27d4/Np6SV+pPyCavvv//eJk2aZFOnTk3j0gMAAAAAgFQjKYVGseWWW7raTqeeeqr7e+edd7Y+ffq4vqV8Ukp9TD399NP2z3/+01q3bu2mffjhh7Z06VJXu0r0/+eee86WLFnimgICAAAAAIDcRFIKjaJLly528MEH28svv+z6j5o7d657qM8nufvuu+2xxx5zCakOHTrE3nfkkUfa4sWL3UgA6nPqzDPPtMGDB9vIkSPTWBogvRQPStRm6ggZQDoQF0AYcQGE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TmzMj0SO06h7i8vaMPoekNAZYd++fTN2hAwgHYgLIIy4AMKICyC7YqJBNaWq884771jLli0b8yOR8yK2uoJtBgjSAaNbt27pXgwgoxAXQBhxAYQRF0B2xUSDklLHHnts3N/qMGvhwoU2bdo0u/766xtr2dAMaNS9XoUrbX5pe2pLARtpZAz10bfjjjtafn5+uhcHyAjEBRBGXABhxAWQXTHRoKRU+/btQ5m37bbbzm666SY79NBDG2vZ0CxErSiioSkZfQ8IJvqLi4szdoQMIB2ICyCMuADCiAsgu2KiQUmpRx55pPGXBAAAAAAAAM3GJvV09cEHH9hf/vIX9/joo4+sKaqZqTlgnz59rFWrVtavXz+7+eab4zJ8+v/o0aOtZ8+ebp5DDjnEvvrqq7jPWbZsmZ166qnWrl0769Chgw0fPjw0SuCMGTNs3333dX1i9e7d2+64447Q8jz11FPWv39/N89OO+1kL774YqOXGQAAAAAAoDloUFJq8eLFdtBBB9luu+1mF110kXsMGTLEDj74YFuyZEmjLdztt99uDz30kN1///32+eefu7+VLLrvvvti8+jvcePG2fjx4+3dd9+1Nm3a2NChQ239+vWxeZSQ+uyzz+zVV1+1559/3t566y0bMWJE7PVVq1a5ZodbbbWVS7TdeeedNmbMGJswYUJsnqlTp9rJJ5/sElpKwA0bNsw91DYTDad+pBaUtqU/KSBAbb2VAM/ENt9AuhAXQBhxAYQRF0B2xUSDklIXXnihrV692iV6VAtJDyVnlNxRgqqxKBF09NFH2xFHHGFbb721HX/88S559N5778VqSY0dO9ZGjRrl5hs4cKA9+uijtmDBAnv22WfdPEpmvfTSS/bwww/bHnvsYfvss49Laj3++ONuPpk8ebKVlJTYxIkTbYcddrCTTjrJlePuu++OLcu9995rhx12mF1xxRU2YMAAV2Nrl112cQkzbIqIFUeL6E8KCIhEIq5Wp54BVCIugDDiAggjLoDsiokGJaWU5HnwwQddcsbbfvvt7YEHHrB//OMfjbZwe++9t7322mv25Zdfur+nT59u//73v+2nP/2p+3vu3Ln2/fffuyZ7wU7YlXx655133N961grYddddY/NofnXOrppVfp799tvPioqUHKmk2lZffPGFLV++PDZP8Hv8PP570DARq7A+hcvcM4BKZWVl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r776qj3//PP21ltv2YgRI2Kvr1q1yg499FDbaqut7IMPPrA777zTxowZYxMmTIjNM3XqVDv55JNdQuujjz6yYcOGucenn36awl8kN0ffW1K+mXsGUEkHjH79+mXsgQNIB+ICCCMugDDiAsiumMjMpdro9ttvd7WWHnnkEdt9992tT58+LnmkH9TXkho7dqyNGjXKjj76aBs4cKA9+uijtmDBAnv22WfdPJ9//rm99NJL9vDDD9see+xh++yzj9133332+OOPu/lk8uTJVlJSYhMnTrQddtjBTjrpJLvooovs7rvvji3Lvffea4cddphdccUVbjjFm2++2XbZZRe7//770/Tr5AZ1cN41fw0dnQMB6oRw9uzZGdsZIZAOxAUQRlwAYcQFkF0xkdFJqeeee8523XVXO+GEE6xbt26288472x/+8IfY63PnzrXvv//eNdnz2rdv75JP77zzjvtbz2qyp8/xNL+yhKpZ5efZb7/9rKioKDaPalt98cUXrraWnyf4PX4e/z1oqKi1y9/gngFU0gFjyZIlGXvgANKBuADCiAsgjLgAsismCiyDzZkzxx566CG79NJL7dprr7X333/f1WBS8uiMM85wCSnp3r173Pv0t39Nz0poBRUUFFinTp3i5lEtrMTP8K+puaCea/qeZDZs2OAewWaCUlZW5h6i5Jge2kCCG4mfXl5e7mqE1TY9Pz/fIpFI7HOD00Xz12W6fht9bnC6Plfz+2XUPHmRylpOlc3u9G8wqaS/IhunVU2vnDd+enX/j58/Pnh8U7/E2lV+upZPy+l/i7qUqbbp2bieKFP2lskvj55zpUy5uJ4oU2rLJLlWplxcT5QptWXyr/tHLpSptmWnTJSprmXy35FLZaptOmWiTJEkyx78/lSWKbF8WZmU0o+iGk6/+c1v3N+qKaU+nNR/lJJSme62226zG2+8MTRdfVKp7ytRh2NqjqhaX8peer169XKPL7/80lauXBmb3rdvX5dk0+9QXFwcm64O2FUjTJ8d3CjVpFFJvGDn8KLfVU0W1cF7cEPabbfd3PfNnDkzNl0dyA8aNMiWLl1q8+bNs2FHDLX2XSNWWrDaFpa1s475xdYpv2pZ1HG5+onqkr92Yy2oSsvKW9ny8tbWo2C1tc4rddOURsrfmFzqVbjSiiJVy76gtK0VR4ts68IVlhep2uC/LW1vZdE8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2pgxY6xr166xzz311FNTWlbUT3OOCyDbYiKrklK//e1vLRKJ2MiRI2PTdNF6/vnnW+fOnW2zzTaz4447zhYtWhT3vm+//daOOOIIa926tXXr1s2uuOIKKysri5vnX//6l+2yyy7WokUL+9GPfmSTJk0Kff8DDzxgW2+9tbVs2dL22GMPe++995qwtM1D1PJsbmkn94zM8+STT7r2xx9//LFdeumlduaZZ7pY09/+MWLECPvpT39qnTp1cu855phj7H//+59Nnz7drrnmGjvhhBNin6fY++STT9z7XnjhBffepUuXutf+7//+zyZPnmz//e9/3Tz//Oc/rbCw0JojnTzvtttu7hlAJeICCGvucdGQ8xRZuXKlXX311Xb44YfHfZ7ef+KJJ7pzGF0bXHnllfbdd9/FXlciyn+uzlmQmZp7XADZFhNZkwlQbYvf//737m5I0CWXXGJ///vf7amnnrI333zTFixYYMcee2zsdXXmpYSUepufOnWq/elPf3IJp9GjR8fmmTt3rpvnwAMPdAcZJb1++ctf2ssvvxybR3dKdLC74YYb7MMPP3R3UIYOHWqLFy9O0S+Qq6LWKqKRAOjoPBN16NAh7gROSeFEf/zjH2348OGxv4866qjYDm/PPfd0J3M+CRz8vDVr1lg0GrWKisrRF++8804XX+3bt3d/625kbRn9ZHdIZcOGDXbBBRfYNtts42pdnXbaaXF3Qffee29351Q7588++yz22ksvveSGS9Vnatl1UuodcMAB1qdPn9gd0nvuuadRl00J9mHDhsVqmWl/pGUN7gNV80yv6TN1hzdYJs2v6f3797fLLrss9rsCuUL7ixUrVrhnAJWae1w05DxFdBweNWqUS2AF6bjvE1U6D9ExN1hbCtmhuccFkG0xkRVJKV286s7EH/7wB+vYsWPcwUcHmrvvvtsOOuggGzJkiD3yyCMu+aTaFvLKK6+4Wht/+ctf3AWb7pTcfPPNrtaTHxZx/Pjx7mLzrrvuck2HdKA6/vjj4y469R3nnHOOa5q0/fbbu/eo5tXEiRPT8IvkDo26t3nhakbfy2Cnn3669e7d266//nr785//HPeaYm358uX2s5/9LOl77733XndyF8zKjxs3zrbbbjtXM3HChAmu9qIoTqdNm+YSL0oMab6G3CEV3f3UiemXX37pal397ne/i73nV7/6lbtr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vf/7v/9z/W76fqI0+EWrVq3cs7o+0PWG4qRdu3ZuhG8lpBh5D801LmbPnu1eP/zww61z586uT6lLLrnEjcynpt/pEokqnQakyf3332933nmnCxgNTTlu3LhYFUKgOfYL8tZbb7k73BrGeJ999rFbb701be27gXRQPzgHHnhgaLpuYmggAJ22KGE7YcIE1yxDcfLggw+6pq5Ac4uJhx56yCVkP/roIxcPStAeeuihdvPNN4cGBABySSQSSTr9kUcesTPPPNP9f/369XbZZZfZY489Zhs2bHCJWh0vaL6H5hoX8+bNs9NOO831NaXKIL1797ZjjjnGRo0a5RK36UJSCgAAAAAAAClHn1IAAAAAAABIOZJSAAAAAAAASDmSUgAAAAAAAEg5klIAAAAAAABIOZJSAAAAAAAASDmSUgAAAAAAAEg5klIAAAAAAABIOZJSAAAAAAAASDmSUgAAADnqgAMOsJEjR6Z7MQAAAJIiKQUAAJCBjjzySDvssMOSvvb2229bJBKxGTNmpHy5AAAAGgtJKQAAgAw0fPhwe/XVV23+/Pmh1x555BHbddddbeDAgWlZNgAAgMZAUgoAACAD/exnP7OuXbvapEmT4qavWbPGnnrqKRs2bJidfPLJtsUWW1jr1q1tp512sscee6zGz1TtqmeffTZuWocOHeK+Y968efbzn//cTe/UqZMdffTR9vXXXzdy6QAAAEhKAQAAZKSCggI7/fTTXcIoGo3GpishVV5ebqeddpoNGTLEXnjhBfv0009txIgR9otf/MLee++9Bn9naWmpDR061Nq2beuaCP7nP/+xzTbbzDUjLCkpaaSSAQAAVCIpBQAAkKHOPvtsmz17tr355ptxTfeOO+4422qrrezyyy+3wYMHW9++fe3CCy90yaMnn3yywd/3xBNPWEVFhT388MOu5tWAAQPc93377bf2r3/9q5FKBQAAUImkFAAAQIbq37+/7b333jZx4kT396xZs1wNJvU3pdpSN998s0seqZmdajS9/PLLLoHUUNOnT3ffoZpS+jw99Nnr1693yTEAAIDGVNConwYAAIBGpQSUakE98MADrtZSv379bP/997fbb7/d7r33Xhs7dqxLTLVp08ZGjhxZYzM79SkVbArom+wF+6tSk8DJkyeH3qv+rQAAABoTSSkAAIAMpk7HL774YpsyZYo9+uijdt5557nkkvp7Uifk6ltK1Ozuyy+/tO23377az1JiaeHChbG/v/rqK1u3bl3s71122cU14evWrZu1a9euiUsGAACaO5rvAQAAZDA1oTvxxBPtmmuucQmlM888003fZptt7NVXX7WpU6fa559/br/61a9s0aJFNX7WQQcdZPfff7999NFHNm3aNDv33HOtsLAw9vqpp55qXbp0cckuNROcO3eu60vqoosusvnz5zd5WQEAQPNCUgoAACALmvAtX77cjYy3+eabu2mjRo1yNZs07YADDrAePXrYsGHDavycu+66y3r37m377ruvnXLKKa6j9NatW8de1//feust23LLLe3YY491HZ3ru9WnFDWnAABAY4tEEzsWAAAAAAAAAJoYNaUAAAAAAACQciSlAAAAAAAAkHIkpQAAAAAAAJByJKUAAAAAAACQciSlAAAAAAAAkHIkpQAAAAAAAJByJKUAAAAAAACQciSlAAAAAAAAkHIkpQAAAAAAAJByJKUAAAAAAACQciSlAAAAAAAAkHIkpQAAAAAAAGCp9v9q/A2bTsIHmwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import time\n", "start_time = time.time()\n", "face_dist = explorer.create_distribution(key=\"face_labels\", bins=None, group=\"faces\")\n", "print(f\"Face labels distribution created in {(time.time() - start_time):.2f} seconds\\n\")\n", "print_distribution_info(face_dist, title=\"Labels\")\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "42e37fde-a9db-40c7-baf0-ae183bda4abe", "metadata": { "scrolled": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " id name description table_name\n", "14 0 no-label not set face_labels\n", "15 7 2sides_through_step not set face_labels\n", "16 11 rectangular_blind_slot not set face_labels\n", "17 18 circular blind step not set face_labels\n", "18 5 6sides_passage not set face_labels\n", "19 9 rectangular_blind_step not set face_labels\n", "20 12 rectangular_pocket not set face_labels\n", "21 13 triangular_pocket not set face_labels\n", "22 14 6sides_pocket not set face_labels\n", "23 21 circular end pocket not set face_labels\n", "24 23 blind hole not set face_labels\n", "25 2 triangular_through_slot not set face_labels\n", "26 17 through hole not set face_labels\n", "27 3 rectangular_passage not set face_labels\n", "28 16 circular through slot not set face_labels\n", "29 4 triangular_passage not set face_labels\n", "30 6 rectangular_through_step not set face_labels\n", "31 10 triangular_blind_step not set face_labels\n", "32 24 fillet not set face_labels\n", "33 1 rectangular_through_slot not set face_labels\n", "34 15 chamfer not set face_labels\n", "35 19 horizontal circular end blind slot not set face_labels\n", "36 22 o-ring not set face_labels\n", "37 8 slanted_through_step not set face_labels\n", "38 20 vertical circular end blind slot not set face_labels\n" ] } ], "source": [ "print(explorer.get_descriptions(\"face_labels\"))" ] }, { "cell_type": "code", "execution_count": 13, "id": "cf864c67-0f5f-4b7d-8037-b2803e180fa8", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Face labels distribution created in 4.67 seconds\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+3klEQVR4nO3dB3xTVfvA8SddUGYpUPYqgqDs4UJRFOFVURkuXMgQ9S8qoKK+ooILJ4ICDqb7BQeCqCiC4JYpCAiC7CG7zEJX/p/n4A3pghZuTtL09/18Qtqb25tzkjzJzcM5z/F4vV6vAAAAAAAAABZF2LwzAAAAAAAAQJGUAgAAAAAAgHUkpQAAAAAAAGAdSSkAAAAAAABYR1IKAAAAAAAA1pGUAgAAAAAAgHUkpQAAAAAAAGAdSSkAAAAAAABYR1IKAAAAAAAA1pGUAgAAPtOnT5cmTZpI0aJFxePxSFJSUrCbVGjNnj3bPAd6HWiDBg0y9+VPf+/Tp4/YMGHCBHN/69atk1BXkNoKAECoIykFAECAv7z6XxISEqRNmzby1VdfSajZtWuXXHfddRIbGysjR46Ud999V4oXLx7sZoWsZ599Vj777LM87asJDP/XQXR0tJQrV07OO+88+e9//ysbNmwISrtsC8W21axZUzp06HDcxODHH398Svdx6NAhk/izkWAEAKAgISkFAECAPfnkkybB884778iAAQNkx44dcvnll8u0adMklMybN0/2798vTz31lPTs2VNuvvlmkzyBewmWrl27mtfC2LFj5bHHHpPExEQZNmyY1K9fX/73v/9l2rd169aSnJxsrgPdroEDB5r7CrTc2nbLLbeY+69Ro4aEupNpqyalBg8eTFIKAIAsorJuAAAA7rrsssukRYsWvt814VOhQgX58MMPcx2hodLS0iQjI0NiYmKstHP79u3mOi4uzsr9FUbNmjUzyT5/69evl3bt2km3bt1Mcqpx48Zme0REhJlGGUgHDx40o+GioqLMJVgiIyPNpSAoSG116PtISkpKwF9PAADkFyOlAACwTJM+OkXOPwngTO966aWXzMiZ2rVrS5EiRWT58uXm9hUrVsg111wj8fHx5oulJrmmTp2a43TB77//Xu644w4pW7aslCpVSm699VbZs2fPcdt00UUXmaSIatmypTnObbfdZn7/4Ycf5Nprr5Xq1aubNlWrVk369euX48gabadOASxfvrzp4+mnny6PPvpopn02b94sPXr0MIk5Pd6ZZ54p48aNy3asw4cPmylPdevWNX2uVKmSdO7cWf7+++9MSZX777/ftEmPpfenj6HX68322Orjk5Vu1/vIWltp9erVpv/6XJUuXVq6d+9uRrv4/53e99tvv+2bkuc8XvmlI260bZo0eOGFF45bU2rVqlXSpUsXqVixonlMqlatKjfccIPs3bv3hO1y+qavqRtvvFHKlCkj559/fqbbcvL++++bx1Xvr3nz5ub15U+Pr1Pgssp6zOO1Lbc6TaNGjTKvD31uK1euLHfffXe2Omf62m3QoIHpl06NLVasmFSpUiXTY+mmnNo6f/58ad++vZmSqa/7WrVqmde40v00HpSOlnL67v+6mzVrllxwwQUmQaivuauvvlr+/PPPbPetrwWNfX0u9D3izTffPG49MH3unMdP68UpjQ+dNqrvD9pWfU5zmp7oHOOjjz6SM844w+x77rnnyh9//GFu1/s+7bTTTFv0OaDGFgDgZDBSCgCAANOEwc6dO02iREcjvfbaa3LgwIFsI2bU+PHjTTKmd+/e5oukJqGWLVsmrVq1Ml+0H374YfPFddKkSdKxY0f55JNPpFOnTpmOoV8k9YutfllduXKlvP7662Y0jpPkyIkmjjTx8NZbb5nphvqlWr/0Kv1SqgmZu+66y3yRnTt3runDpk2bzG2OJUuWmC/WOuVP26+JCk0gff755/LMM8+YfbZt2ybnnHOO7wuvflnX+lo6emzfvn3St29fs196eroZRTZz5kyTdLnvvvvM1MIZM2bI0qVLTdv08bzqqqvku+++M3+vBdq//vprefDBB03i65VXXjnp50wTa/oYDBkyRBYuXChjxowx9cCef/55c7tOwevVq5ecddZZpq/KebxOhn7Z17/X/uVGk1aa+Dhy5Ijcc889JjGl/dRpoJqo0eRZXtqlCcY6deqYqXT+ybuczJkzRyZOnCj33nuveT1qkug///mPeQ1oIig/8vuY6etXkzht27Y1rz3ntazTTH/66adMU0s16art0qSlPneaZHnooYekYcOGZqTiiaSmppoYzcpJ9h2PxrSOdNPXssanxp4maD799FNzu27XdmsfNFa1japRo0bm+ttvvzVt1Kmc2mdN9mp8aczra89J+C1atMj0UZOz+rhojGis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NWu8PXr08NauXds8tvr3bdq08X777beZ/i63duXWN//b/Onv+jy999575nEtUqSIt2nTpr72+Pvmm2+8DRo08MbExJjnXP8mp2Pm1racHl81YsQIb7169cxzW6FCBe9dd93l3bNnT6Z9LrzwQu+ZZ56ZrU167Bo1anhPRPe54oorcrzNeQ4++ugj37asbV24cKG3a9eu3urVq5vHKCEhwcTm/PnzMx3r559/9jZv3tw8Rllfd/octmrVyjwupUqV8l555ZUm7rKaOXOmeQ70GPo6GDNmjPf+++83r4ecnrucjB071vd86mOr/Tne8+8vt/epnB4nAADywqP/uJvmAgAAwTBhwgTp3r27GX3jv9ofgPClK/0tW7Ysx/pfAACEOmpKAQAAAAWATu3zp4moL7/80tSdAwCgIKKmFAAAAFAAaD05LYqv11ogX2t3aUH4AQMGBLtpAACcFJJSAAAAQAGgBco//PBD+eeff0zheS2O/uyzz0qdOnWC3TQAAE4KNaUAAAAAAABgHTWlAAAAAAAAYB1JKQAAAAAAAFhHTSmXZGRkyJYtW6RkyZLi8XiC3RwAAAAAAICg0EpR+/fvl8qVK0tERO7joUhKuUQTUtWqVQt2MwAAAAAAAELCxo0bpWrVqrneTlLKJTpCynnAS5UqdVLHSEtLk8WLF0vjxo0lKoqnBggUYg2wg1gD7CHeADuINSBv9u3bZwbuOLmS3BBFLnGm7GlC6lSSUrGxsebveYMDAodYA+wg1gB7iDfADmINyJ8TlTei0DkAAAAAAACsIykFAAAAAAAA60hKhZDIyEhp1KiRuQYQOMSaHTVr1pTTTz9dmjRpYi4TJ04029u1a2cef912wQUXyKJFi8z2w4cPS8eOHaVu3bqmTsOll14qq1ev9h3v2WefNcfT1Ts+++yzTPc1b948adWqlfk7Pe6sWbMs9xY5IdYAe4g3wA5iDXAXk2BDTExMTLCbABQKxJodmojSJJG/SZMmSVxcnPl58uTJctttt5mCoap3795y2WWXmbnnI0aMkF69esns2bPNbW3btpUbbrhBevTokW252U6dOsmECRPMPn/99Ze5Xrlypan5gOAi1gB7iDfADmINcA8jpUJIenq6zJ8/31wDCBxiLbichJTau3evr/hh0aJF5fLLL/f9fs4558i6det8+5511lmSmJiY7Xi7du2S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qVOn+n7++uuvTYbYoUmqmTNnSs2aNd1tYSGixfK2bNkilStXlogIZlYCgeOVMpHJsic9ltFSQADxuQbYQ7wBdhBrgLvyFUUdO3Y0Fx2q2K1bN9/vernhhhtkxowZ8vLLL+f5eK+//ro0atRISpUqZS7nnnuufPXVV77bDx8+LHfffbeULVtWSpQoIV26dJFt27ZlOsaGDRvkiiuukGLFiklCQoI8+OCDkpaWlmmf2bNnS7NmzaRIkSJy2mmnyYQJE7K1ZeTIkSahVrRoUTn77LNl7ty5Eow3uE2bNrGSAxBguupefGQyq+8BAcbnGmAP8QbYQawBQUxKaeDppXr16rJ9+3bf73rRqXsrV66UDh065Pl4VatWleeee04WLFgg8+fPl4svvliuvvpqWbZsmbm9X79+8vnnn8tHH30kc+bMMRnpzp07ZxqdpQmplJQU+fnnn+Xtt982CafHH3/ct8/atWvNPm3atJHff/9d+vbtK7169TIjvRwTJ06U/v37yxNPPCELFy6Uxo0bS/v27U0fAQAAAAAA4L6TGm+oiZ5y5cqd8p1feeWVcvnll0udOnWkbt268swzz5gRUb/++qvs3btXxo4dK0OHDjXJqubNm8v48eNN8klvV998840sX75c3nvvPWnSpIlcdtll8tRTT5lRT5qoUm+88YbUqlXLjODSub99+vSRa665Rl555RVfO/Q+br/9dunevbucccYZ5m905NW4ceNOuY8AAAAAAABwqdC50vpRenFGTPk7mWSOjnrSEVEHDx400/h09FRqaqq0bdvWt0+9evXMKK1ffvlFzjnnHHPdsGFDqVChgm8fHeF01113mdFWTZs2Nfv4H8PZR0dMKU1e6X098sgjvtt1brD+jf5tbnRkmF4c+/btM9c6ddCZPqjH0Yszmsz/+HrRPnu9macPlS9f3mzzn4KoxfR0ymTWaYm63Xns8rI9KirKHNt/ux5X98/axty257dPuW2nT/QpP33Sa2fO/tEpd95MRct1a36370+P+beaVIbfduf4x+S+PeLfW/23e/7dP3/b3eqT59++HK/tkRHHamhl379g9un42wPXJ+eR1Nenf4yEejzZfI/QY+sUfOcxCoc+hePzRJ/Co09OvOmxw6VP4fg80aeC3yf9Xb+zKf/jF+Q+hePzRJ8k6H3Kur+rSanBgwfLk08+KS1atJBKlSqd0nKYf/zxh0lCaf0oHSU1efJkM1pJp9rFxMRIXFxcpv01AfXPP/+Yn/XaPyHl3O7cdrx9NImUnJwse/bsMQ9iTvusWLEi13YPGTLEPA5ZLVq0SIoXL25+1jer2rVrm5FlO3bsyDRtUS9//fWXGRHmSExMNPsvXrzYtM0/GaePgx7b/wnXelz6GOnUR3/6vGiybcmSJZleGC1btjT359+v2NhYM11x586dsmbNGt92LWKvI8t0yqTOmXacTJ+01tfSpUvpE3066T4dOnRImjZuYH4uF3lQSkUeSwjvTo+VPenFpGLUfikWkerbvj2tuOzPKCpVo/dKjOdY27eklpRkb4wUj0iVkpF7fNs3pJaWNG+EJMYc26bWpJSRKE+GVI8+9nhleD2yNjVeYj2pUjl6v297ijdSNqbGScmII5IQddC3/VBGtFntT4uray0rx770IrIjvYRrfaoZnSQRHu9x+1QxsYxMj46W2ChPpu0FuU/Bep6ij77VmxjbtWtXgYknm+8ROiVeOY9POPQpHJ8n+hRefdIvFElJSWHVp3B8nuhTwe+TDs4Itz6F4/NEn2oHrU+6f154vFmH6uSBJqJeeOEFueWWW+RUaWO1WLk+GB9//LGMGTPG1I/SpJROp/MfjaTOOussUx/q+eefl969e8v69esz1YfSL6+aFPryyy/NdD6dFqjH8R8JpbdpnSndV5NSVapUMdMCNTnmGDBggGnHb7/9lueRUtWqVTMn3lq0/WRHSml/dDSYf6KPbCt9Kux90jfS23r3kaYd75SyFaqc8ggcvaV85AHZmV7cd0sojcAJ5Kii9X8ukqmjn5dO9zwtVWudFhZ9Ov72wPVp97YtMv/TUfLOmFFmmnhBiSeb7xE64lk/12rUqGH+Phz6FI7PE30Kjz7pfWu86RcQPU449Ckcnyf6VPD7pL/r91f9bPNXkPsUjs8TfZKg90lzLTqCV3M9To7EtZFSmkg677zzxA2aWdMV8ZTWjZo3b54MHz5crr/+enM/+j89/qOldPW9ihUrmp/1Ousqec7qfP77ZF2xT3/XB0UzjfqA6SWnfZxj5ERX8tNLVvri0Ys/58nNynmyHPokawZT3+CyHsM5dk7ys11fTDltz62N+d2etU8n2k6f6FNe2u68mfonK7LK3/YMKRmZIjtMUioix+RGzsfJ1itXtrvTJycBc/y2p2d4T7B/wevTibcHpk/OI6mvz5xe26EaTzbfI/TY+p81mrTz36cg9ykcnyf6FB590vNI/3gLhz6F4/Pkjz4VzD6d6DtbQezTybadPtGnk9nuSqFzXb3ugw8+kEDQL546AkkTVNHR0aZulUNX99OstDOiSa91+p//KnkzZswwCSedAujs438MZx/nGJoU0/vy30fboL/7j5wCAAAAAACAe05qpJTWf3rrrbfk22+/NfMINXnkT1ezywudUqdT7HS62v79+02ia/bs2WY6ns6L7Nmzp/Tv31/i4+NNoumee+4xiSItcq7atWtnkk86jVCnE2r9qIEDB8rdd9/tG8V05513yogRI8x0vB49esisWbNk0qRJ8sUXX/jaoffRrVs3M/dRpwcOGzbMFFzXaX8AAAAAAAAIkaSUFuFq0qSJ+VmLYPnLT9FzHeF06623ytatW00SShNcmpC69NJLze2vvPKKGWbWpUsXM3pKV80bNWpUpmFl06ZNM6vtabJKa0lpckmLsDt0CLMmoPr162emBWpBL61bpcdy6FRBHYL5+OOPm8SW9m369OnZip8HmvZV25fT0DoA7tFpWFp4O7cpYADcwecaYA/xBthBrAHuOqlC58hOC51rYu1ERbwA5N/ff/8tN/e4U5p3/j+Jr1A12M0p0NYumy9fjH3BFDqvUqtusJtToO3etkkWfDpK3hv3hiksDAAAACB/ORLSuyFEq9b/+eef2arXA3CXlrGuFLUv20ptANzF5xpgD/EG2EGsASEwfa9NmzbHnaandZuQfzpoTbOIDF4DAs0rxSJS/10/jSl8QKDwuQbYQ7wBdhBrQAgkpZx6Uo7U1FT5/fffTX0prekEAAAAAAAAuJ6U0gLkORk0aJAcOHDgZA4JAAAAAACAQsTVmlI333yzjBs3zs1DFiq6gkNiYiIrOQABpqvubU8rzup7QIDxuQbYQ7wBdhBrQAiMlMrNL7/8IkWLFnXzkIWKvrElJCQEuxlAIeCR/Rm8VwGBxucaYA/xBthBrAEhkJTq3Llzpt+1yNvWrVtl/vz58thjj7nVtkJHV3DQulwNGjSQyMjIYDcHCFu66l7V6L2yKbU0o6WAAOJzDbCHeAPsINaAEEhKlS5dOlu2+PTTT5cnn3xS2rVr51bbCh1N7iUnJ7OSAxBwXonx6DK+rL4HBBKfa4A9xBtgB7EGhEBSavz48S43AwAAAAAAAIXJKVVnW7Bggbz33nvmsmjRIvdaBQAAjMOHD0vHjh2lbt260rhxY7n00ktl9erV5raLLrpIatWqJU2aNDEX/9Vxu3fv7vubVq1aybx583y3/fe//5V69eqZ21q0aCFff/2177Zt27aZafqNGjWS+vXry7Bhwyz3GAAAAIXFSY2U2r59u9xwww0ye/ZsiYuLM9uSkpKkTZs28r///U/Kly/vdjsLBZ2TrF8SmJsMBJbWkdqSWpJ6UigwevfuLZdddpl4PB4ZMWKE9OrVy3wGK01EadIqq06dOsno0aMlKipKpk2bJtdee62sW7fO3HbBBReYGpCxsbGyePFiad26tWzZskWKFy8u/fv3lzPOOEM+/fRTOXjwoElo6aVly5b5bjefa4A9xBtgB7EGhMBIqXvuuUf2798vy5Ytk927d5uLFnvbt2+f3HvvvS43sfDQLxua5NNrAIHkkWRvDPWkUCDoqraXX36577PhnHPO8SWXjueqq64yCSnnbzZv3ixpaWnmd01waUJKNWzY0NTF2LFjh/ldk1R6f0qTVJqwevfdd0+q7XyuAfYQb4AdxBoQAkmp6dOny6hRo8ywfof+r+rIkSPlq6++crN9hYp+WdDpFc6XBgCB4ZEMqRW921wDBc3w4cPl6quv9v3+8MMPm8TS9ddfL2vWrMn1bzTR5CSpstaJTExMlBo1apjfmzdvLh988IFkZGSYRJVO7ctLEiwnfK4B9hBvgB3EGhAC0/f0RDU6Ojrbdt2mt+HUlhgFEHgRHlZMQcHz7LPPmnpSM2fONL/rCKZq1aqZkU76H0MdOnSQ5cuXZ/obrfs4adIk+f7777MdT48zePBgmTFjhu9/fF9++WV54IEHpGnTppKQkGDqVjmjqE4Gn2uAPcQbYAexBgR5pNTFF18s9913n6k/4dBpAf369ZNLLrnExeYBAAD10ksvmTpPOiK5WLFiZpsmpJQmlPr06WNGSu3atcv3NxMnTvQlnSpUqJDpeHPmzDHF0D///HM5/fTTfdvLlSsnEyZMMNP4nGTVmWeeaa2fAAAAKDxOKimlRVa1flTNmjWldu3a5qKr/+i21157zf1WAgBQiA0dOlQ+/PBDkyRyFhjRaQO6Up7jk08+MYmnsmXLmt91dNTAgQPl22+/lerVq2c6no6auuWWW2TKlClmBT5/mtRKTU01P+vKup999pn83//9n4VeAgAAoLA5qel7+j+zCxcuNCe6K1asMNu0vlTbtm3dbl+hois46BLcrOQABJauurchtTSr76FA2LRpk9x///2m7pOucquKFCkis2bNkiuuuEKOHDkiERERZoTT1KlTfX930003ScWKFTPVn9Lpepq06tmzp/k7HSnl0KmAWptq7ty5ZtESrT9VsmRJk9yqVKnSSbWdzzXAHuINsINYA4KYlNITYJ0e8Ouvv0qpUqXk0ksvNRe1d+9eM7z/jTfeMEtN4+TExOiKYAACLc17UgNFAeuqVq1qakblZP78+bn+nTPaKSerVq3K9TZdme94t+cXn2uAPcQbYAexBgQpKTVs2DC5/fbbTUIqq9KlS8sdd9xhphiQlDr5gnn6BaNFixY5rpAEwB0e8UpizB5Zk1KG0VI4JakpKbJ+/fpgNyNk6eInGzduNCOsdTTX8ei5Rfny5a21DQg3nEcCdhBrgLvyFUVa9PT555/P9fZ27dqZQqwAAIS75AN7Ze3aNfLgo4MkJqZIsJsTkvRkveMV7eWJZ1484dLZcSWLyTvjx5CYAgAAKETylZTSgqrR0dG5Hywq6pSWjQYAoKBIOZws3ogoqX1+Z0moWiPYzQlJER6R0uU90vTq3pKR8wxEY9+ubbJqzidmwRSSUgAAAIVHvpJSVapUkaVLl8ppp52W4+1Lliw56WKoAAAURCXjy0t8harBbkZI8kiGRMfskTIJOlWWOm4AAADILF9niJdffrk89thjcvjw4Wy3JScnyxNPPCEdOnTIzyHhR1dw0LnJrOQABJbWkaKeFBB4xBpgD+eRgB3EGhDEkVIDBw6UTz/9VOrWrWtW4Tv99NPN9hUrVsjIkSNN0bdHH33U5SYWLikpKRIbGxvsZgBhL8qTIaleTiaAQCPWAHs4jwTsINaAII2UqlChgvz888/SoEEDeeSRR6RTp07m8t///tds+/HHH80+ODma1NMpkHoNILCr71WP3muuAQQOsQbYw3kkYAexBrgr32tY1qhRQ7788kvZs2ePrF69Wrxer9SpU0fKlCnjctMAAAAAAAAQrvKdlHJoEqply5butgYAAAAAAACFAkvhhBgK5gF2ZHgpvAzYQKwB9nAeCdhBrAEhMFIK7ouKimL0GWCBLk2/NjU+2M0Awh6xBtjDeSRgB7EGuIuRUiFE63MlJSWZawCB5JVYT4q5BhBIxBpgC+eRgB3EGuAuklIhRFdwWLFiBSs5AAGmK4FVjt7PimBAgBFrgD2cRwJ2EGuAu0hKAQAAAAAAwDqSUgAAAAAAALCOpFQI8Xg8Ehsba64BBJJHUry6agqxBgQWsQbYwnkkYAexBriL1fdCbGnRxo0bB7sZQNjzikc2psYFuxlA2CPWAHs4jwTsINYAdzFSKoRkZGTI9u3bzTWAQPJKyYjDrAgGBByxBtjCeSRgB7EGuIukVAjRN7Y1a9bwBgcEmK4ElhB1kBXBgAAj1gB7OI8E7CDWAHeRlAIAAAAAAIB1JKUAAAAAAABgHUmpEKIrOJQuXZqVHICA88ihjGhWBAMCjlgDbOE8ErCDWAPcxep7IbaSQ/369YPdDKBQrAi2Na1UsJsBhD1iDbCH80jADmINcBcjpUKIFsvbtGkTRfOAgPNKmchDrAgGBByxBtjCeSRgB7EGuIukVAjhDQ6wQ1cCi49MZkUwIMCINcAeziMBO4g1IIySUkOGDJGWLVtKyZIlJSEhQTp27CgrV67MtM/hw4fl7rvvlrJly0qJEiWkS5cusm3btkz7bNiwQa644gopVqyYOc6DDz4oaWlpmfaZPXu2NGvWTIoUKSKnnXaaTJgwIVt7Ro4cKTVr1pSiRYvK2WefLXPnzg1QzwEAAAAAAAq3oCal5syZYxJOv/76q8yYMUNSU1OlXbt2cvDgQd8+/fr1k88//1w++ugjs/+WLVukc+fOvtvT09NNQiolJUV+/vlnefvtt03C6fHHH/fts3btWrNPmzZt5Pfff5e+fftKr1695Ouvv/btM3HiROnfv7888cQTsnDhQmncuLG0b99etm/fbvERAfLv3nvvNclULbaor2/Hl19+aRKxTZo0kQYNGpjYcGjC9ZxzzpGmTZuaOfEvvPCC77ZDhw5J165dTfK2bt268vHHH2e6v1GjRpm/adiwoYkTTRwDAAAAAFCgCp1Pnz490++aTNKRTgsWLJDWrVvL3r17ZezYsfLBBx/IxRdfbPYZP368+UKsiSz9Uv3NN9/I8uXL5dtvv5UKFSqYL+BPPfWUPPTQQzJo0CCJiYmRN954Q2rVqiUvv/yyOYb+/Y8//iivvPKKSTypoUOHyu233y7du3c3v+vffPHFFzJu3Dh5+OGHrTweERERUr58eXMN5NU111wjAwYMkPPPP9+3zev1ys0332xGCDZq1EjWrVsn9erVMwldHZnYu3dvefLJJ+Wqq66S3bt3m9s6dOggZ5xxhrz00ktmROHq1atNQldHDWpCV0crTpkyRd5//30Tf7rqyI4dOyQ6WlfWKmg8si+9CCuCAQFHrAG2cB4J2EGsAe4KqUjSJJSKj48315qc0tFTbdu29e2jX56rV68uv/zyi/ldr3XEhiakHJpo2rdvnyxbtsy3j/8xnH2cY+goK70v/330TUZ/d/axQe+zdu3avMEhXzSBW7Vq1WzbdeRUUlKS+VnjQZNKmmzKepuOTNTkrRN3OmrwzjvvND9rMveiiy6SyZMnm99ffPFFM5pQE1JKP5B1BZKCuCLYjvQS5hpA4BBrgD2cRwJ2EGtAGI2U8qeF4nRaXatWrcxUI/XPP/+YL8txcXGZ9tUElN7m7OOfkHJud2473j76RT05OVn27NljpgHmtM+KFStybO+RI0fMxaHHUlrLyqlnpW9UetG++RfCc7brfeqIFn/r1683STdNGjj0S7/+nrVOlpMM0OPkZXtUVJS5P//telzdP2sbc9ue3z7ltp0+ud8n/9eftk+TSzoyqnjx4uY1rlNg9dhqzJgx5raBAwea0U6vv/66VKxY0dyn1mirUqWKOY4eW6cG6kgr/V1HJerUv8GDB5vX/0033ST33HNPwJ8nvXY++I8WTD72uB/9suvJ13a9pXzkAdmZXtx3i/OlOWtB5ty3R/x7q/92z7/752+7G306uj3jhG2PjDj23pJ9/4LZp+NvD1yfnLdpfUj921mQ++T28xQhXikXedAXa7n16ejj6TGx7ryHFtb3cvpEn062T3rfeh6pX5b1OOHQp3B8nuhTwe+T/q7nyzVq1Mi0b0HuUzg+T/RJgt6nrPuHfFJKa0stXbrUTKsrCLRIu34xz2rRokUmCeCMItETA50CpV/8HTqqRS9//fWXb3SY0jc23U8TXP4JLx0dpok5Pbb/E67TsjRpN3/+/ExtaNGihRn9tWTJkkwvDC0qr/fnn2iLjY01dYF27twpa9as8W3XkTA6zVFreOnqEo789ikxMdFMydTnVhOA9ClwfdLXjCaNNPjLlCkjTz/9tLz22mtmtJNu1wTSrFmzTHsee+wx6dGjhxkxuHnzZlOX6qyzzjIjE/UNa/HixWa79slJ7Gr79T7mzZtnpt7qCKvzzjvP9NWZOhio50nrXDVtfDRZrV9wS0Uei4/d6bGyJ72YVIzaL8UiUn3bt6cVl/0ZRaVq9F6J8Rx7PraklpTD3iipEKXHSfF9Nd6QWlrSvBGSGLMn0/O0JqWMRHkypHr0sddAhtcja1PjJdaTKpWj9/u2p3gjZWNqnJSMOCIJUcdq4x3KiJataaWkTGSyWYnModOadBSJG31K9sZIzegkifAc+wDJqU8VE8vI9OhoiY3yZNpekPsUrOcptUysua5TLkYq+LWnIPcpEM+THseJtdz6tEtEEsqXk40bN8quXbsK9Xs5faJPJ9sn/QKh96Of+wcOHAiLPoXj80SfCn6fdOaBnhPrIluaCA6HPoXj80SfJOh90v3zwuPNOlQnCPr06WNq1Xz//ffmg9ShX6AvueQSM8rDf7SUJm90VJUWQdeC5lOnTs1U4FkfdH1AtWC5FnLW6U1a8HnYsGG+fbQ2lR5DnwR9wPRNRQs66wqAjm7dupkpTtq2vIyUqlatmjmZLlWq1EllJnUfp83+U6LIttKnvPRJX/P6Gta6avo60ppS+ibm7K812J555hlp3ry5GQnlv6DADTfcYBJUmqjSN5c333zT7K/Hvv76600c9uzZ0xxba7E5U10feOAB88Gs9akC+TxpTN/Wu4807XinlK1QxYWRUl5JjNkta1PK+EZuhPNoFf/7XP/nIpk6+nnpdM/TUrXWaWHRp+NvD1yf1i5fKNPGvCBd7n1aKtc8LSz65P5IqQypFbPHF2u59WnXti2ycPLr8vbokb7zgML6Xk6f6NPJ9kmv9fNfv8jobeHQp3B8nuhTwe+T/qxftvX7pd53OPQpHJ8n+iRB75PmcbSEjOZcnBxJyI2U0o7q1B+tV6MFmf0TUkq/PGsR5ZkzZ0qXLl3MtpUrV5rhkueee675Xa/1i7aukqdZPaUr+WmntWizs4+uROZP93GOodk9vS+9HycppU+a/q4Js5zoF3GnPk/WF48zRSrrk5uVf+JJOU+ybs96DOfYOcnPdn0x5bQ9tzbmd3vWPp1oO31yr0/OsfSiidutW7eaeNGsuRYt12y6/qyjqHQ0nyaBdQEBzbTrlLz777/f9Onaa6810/t09JMmgzQ2dcU9Pe6NN95oYufSSy812XM9hhZZz9pWt58n583U/0twVvnbrm+yR78gH/2Cn3X/7HLe7nFluzt9cpIVx297eob3BPsXvD6deHtg+uR8VutDmlM7C2KfTn778fqUPdZybIvXa2I9r5+h4fpeTp/o06n0ySn/EE59ctAn+hSKfXKjr6HWp3B8nuhTRMj0Kcf9JMhT9nRlPR2JpCuCOTWgdPiZDk3Tax2d0b9/f1OEWRNNmsTSZJKO4lDt2rUzyadbbrnFLGuvx9A6OXpsJ2mkRZtHjBhhvjzrSBAdgTVp0iSzup5D70NHRulQM53GpKOqdCSJsxqfDfpC0WF0Ob1ggNzccccd5rWsr30d7aSxpEmot956S6677jpfQkdjQOuVKX39P/jggyYRqlP2dNSgk6TV7RonOtRT35D078qVK+eLE70/jTl9k9RksSaxChr9QqzTlHJLAgBwB7EG2MN5JGAHsQa4K6hJKS2urHR1L386te62224zP+tUIQ14/fKr0+X0S7eO2nDol+Zp06bJXXfdZb5U6wgQTS4504mUjsDSL+063W/48OHmTURHguixHDpFSedZ6nRA/XKv05S0bk7W4uc23uCA/NCpdjnp2rWrueREp9/pipM50RjSIuk5KVq0qLz99ttS8HlM3RwAgUasAbZwHgnYQawB7gr69L0T0S/BI0eONJfc6FSlrNPzstLE14kKbelUvdym69mgczG12FjdunVzHTKHgsUpXI9To0Uk09LztnpDXuhEIi3k/E9aSUZwAAFErAH2cB4J2EGsAe4KmdX3cGzVlBCoPQ+XElK3du8lSfsPBbspBd7h5EOyeetWaZZybDWwU+P9d2Wxo7WlAAQKsQbYwnkkYAexBriLpBQQIDpCShNSdS7sIqXK2psGGo42r1oq6z8dJ2lpbiWlAAAAAADBRlIKCDBNSMVXYN75qdi78+giCAAAAACA8MGSASFWNC8xMZGVHIAA09o229OKU+MGCDBiDbCH80jADmINcBcjpUKIvrElJCQEuxlAIeCR/RlFg90IoBAg1gBbOI8E7CDWAHeR3g2xlRwWL15srgEEdkWwatFJ5hpA4BBrgD2cRwJ2EGuAu0hKhRBdwSE5OZmVHICA80qMR08kiDUgsIg1wBbOIwE7iDXAXSSlAAAAAAAAYB1JKQAAAAAAAFhHUiqEREZGSr169cw1gMDRlcC2pJZkRTAgwIg1wB7OIwE7iDXAXay+F0I8Ho/ExcUFuxlAIeCRZG9MsBsBFALEGmAL55GAHcQa4C5GSoWQtLQ0mTdvnrkGEDgeyZBa0bvNNYDAIdYAeziPBOwg1gB3kZQKMSwtCtgR4WHFFMAGYg2wh/NIwA5iDXAPSSkAAAAAAABYR1IKAAAAAAAA1pGUCiG6gkOjRo1YyQEIMF0JbENqaVYEAwKMWAPs4TwSsINYA9xFUirExMSwShFgQ5qXtz/ABmINsIfzSMAOYg1wD2eKIVYwb/78+RTOAwLMI15JjNljrgEEDrEG2MN5JGAHsQa4i6QUAAAAAAAArCMpBQAAAAAAAOtISgEAAAAAAMA6klIhRFdwaNGiBSs5AAGmK4GtSSnDimBAgBFrgD2cRwJ2EGuAu0hKhZiUlJRgNwEoFKI8GcFuAlAoEGuAPZxHAnYQa4B7SEqFEF3BYcmSJazkAASYrgRWPXovK4IBAUasAfZwHgnYQawB7iIpBQAAAAAAAOtISgEAAAAAAMA6klIhhoJ5gB0ZXgovAzYQa4A9nEcCdhBrgHuiXDwWTlFUVJS0bNky2M0Awp5XImRtanywmwGEPWINsIfzSMAOYg1wFyOlQojX65WkpCRzDSCQvBLr0VVTiDUgsIg1wBbOIwE7iDXAXSSlQoiu4LBixQpWcgACTFcCqxy9nxXBgAAj1gB7OI8E7CDWAHeRlAIAAAAAAIB1JKUAAAAAAABgHUmpEOLxeCQ2NtZcAwgkj6R4ddUUYg0ILGINsIXzSMAOYg1wF6vvhdjSoo0bNw52M4Cw5xWPbEyNC3YzgLBHrAH2cB4J2EGsAe5ipFQIycjIkO3bt5trAIHklZIRh1kRDCiEsXbvvfdKzZo1zf9w//77777tq1atkvPOO0/q1q1rlvpetmyZ2b5r1y5p0qSJ76K363Lgu3fvNrfPmzdPWrVqZb6g6O2zZs3yHXPcuHHSsGFDs/+wYcOC0FsUJpxHAnYQa4C7SEqFEH1jW7NmDW9wQIDpSmAJUQdZEQwohLF2zTXXyI8//ig1atTItP2OO+6Q3r17y19//SUPPfSQ3HbbbWZ72bJlTfLKueg+l112mcTHx5vlwDt16iSDBw+WxYsXy6RJk8zfJScnm79t3ry52XbjjTcGpa8oXDiPBOwg1gB3kZQCAACFRuvWraVq1aqZtun/eM+fP19uvvlm83uXLl1k48aNsnr16mx/P3bsWOnZs6dvFNWOHTukbdu25ncdRRUXFydfffWV+V1HT9WvX18iIjjdAgAAyAlnSQAAoFDTBFSlSpXMNDulU/uqV68uGzZsyLTfzz//LHv27JEOHTqY38uVK2f+TkdDOVP5Vq5cKevWrQtCLwAAAAoeklIhRE+CS5cuzUoOQMB55FBGNCuCAQEXXrGmo6RuvfVWX/JKTZkyxdSOatq0qQwfPlzOP//8TLcDtnAeCdhBrAHu4qwpxFZy0GH+AAK/ItjWtFLBbgYQ9gpKrFWrVk22bt0qaWlpJqGktaJ0lJSOlnIcOHDAjIjS0VD+dIre9OnTfb/r5/iZZ55ptf2A4jwSsINYA9zFSKkQosXyNm3aRNE8IOC8UibyUEitCAaEp4IRawkJCdKsWTN57733zO+ffPKJqTt12mmn+faZOHGiSUDVq1cv099qMssxevRoKV68uFx88cUWWw8cxXkkYAexBriLpFQI4Q0OsENXAouPTA6pFcGAcBSKsaar7GnCST9v27dv70s8vfnmm+aixcqfe+45GT9+fK4Fzv299dZb5m/q1Kkjn3/+uUyePNk3pWPChAnmvj766CMZNGiQ+XnRokWWeorChvNIwA5iDXAX0/cAAEChoYmnnJx++unyyy+/5Pp3WuQ8J0888YS55OS2224zFwAAAOSMpBQAAAi61JQUWb9+fbCbETZKlSol5cuXD3YzAAAAQjcp9f3338uLL74oCxYsMDUZdMh7x44dfbdroVH930et0ZCUlCStWrWS119/3QyRd+zevVvuueceM2Q+IiJCunTpYla/KVGihG+fJUuWyN13322Kk+oJmu4/YMCATG3RofWPPfaYWcZZj//888/L5ZdfLjZp+7V9eg0gkDyyL71I2KwIBhT0WEs+sFfWrl0jDz46SGJidH+cqriSxeSd8WNITBUinEcCdhBrQBglpQ4ePGiKhvbo0UM6d+6c7fYXXnhBXn31VXn77belVq1aJmmk9R+WL18uRYsWNfvcdNNNJqE1Y8YMSU1Nle7du0vv3r3lgw8+MLfv27dP2rVrJ23btpU33nhD/vjjD3N/cXFxZj9nSH7Xrl1lyJAh0qFDB/O3mhxbuHChNGjQwNrjoW9stWvXtnZ/QGFeEWxH+rHENYDgxlrK4WTxRkRJ7fM7S0LVGlbaFs727domq+Z8Ys6BSEoVHpxHAnYQa0AYJaUuu+wyc8mJjpIaNmyYDBw4UK6++mqz7Z133pEKFSrIZ599JjfccIP8+eefZhlmHQHVokULs89rr71mRji99NJLUrlyZXn//fclJSVFxo0bJzExMWaZ5t9//12GDh3qS0rpyKr//Oc/8uCDD5rfn3rqKZPkGjFihElk2aLF8tauXWsScGTegcDRosvlIg/KzvTi5kszgNCItZLx5SW+QlUrbQPCDeeRgB3EGlBIakppoP/zzz9mhJOjdOnScvbZZ5tCpJqU0msd8eQkpJTur28Ov/32m3Tq1Mns07p1a5OQcuhoK52et2fPHilTpozZp3///pnuX/fR5Fdujhw5Yi4O/d9IlZaWZi5K26EXfePyX53B2Z6enm6Sbw7dZ8eOHWZ1nsjISN92/VlX8nGO679d6XHysj0qKsrcn/92Pa7un7WNuW3Pb59y214Y+qTH0vYd5c22+pTzBS379ogc9vf8u3/+th/ddmz70X1PZntGHtsemD5FRhx97o4d+1T75JVSkYdlV3qsb1qR7T4F63nSx/LYvWeERZ+Ovz1wffp3gTXRh9S/nQW5T+4/TxmZYi23Ph19PD0SmemxDNU+hf7zpK9J/fzRzyH9TCoMn7n06ej19u3bpUaNGuY44dCncHye6FPB75P+rN/ZqlWrlikpVZD7FI7PE32SoPcp6/4FLimlCSmlI6P86e/ObXqdkJCQ7cmLj4/PtI9msbMew7lNk1J6fbz7yYlO9Rs8eHC27brUc/Hixc3POmReh3Zqgk3fuByadNLLX3/9JXv37vVt15MIpdMT/RNe9erVM8k3Pbb/E96oUSOTbJs/f36mNmiSTkeHaS0t/xdGy5Ytzf2tWLHCtz02NtZMody5c6esWbMmUwKwfv36smXLFrPkqSO/fUpMTDTP0dKlSyU5OblQ9enQoUPS8Yr2sjXy6NeKxJg9mfq0JqWMRHkypHr0sWNneD2yNjVeYj2pUjl6v297ijdSNqbGScmII5IQddC3/VBGtGxNKyVlIpPNsusOreGiU2Z0hEKpyGOvpd3psbInvZhUjNovxSJSfdu3pxWX/RlFpWr0XonxHHs+tqSWlGRvjNSMTpIIz7E3pg2ppSXNG2GtTxUTy8ih1q3Mz2706bA3Sop50iQxJsn3dc52n4L1POljOT06WmKjPJm2F+Q+Bet5Si2jiRaROuVipIJfewpyn9x/npKkWMSxWMutT/pOXb1qFWletagU/fdxCN0+hf7zVLeMR2pc0V42btwou3btKhSfufTp6CwD537CpU/h+DzRp4LfpyJFjtY+1PdX/wU6CnKfwvF5ok8S9D7p/nnh8fqnwIJIM2/+hc61zpMWNtcHtlKlSr79rrvuOrPvxIkT5dlnnzX1plauXJnpWPpAasLorrvuMvWkNCnlvwS0Jn10Gp9e65OnD6QeR+tKOUaNGmWOsW3btjyPlNJsub456Yo3JztSSutYNW3alJFSYdAnDf4ed94rja/qLfEVqhSI/10P1RED6/9cJF+Me0mu+r/BUrVWnVPu09Ek4W5Zm1LG1+aCNAriVJ4nfSynjn5eOt3ztFStdVpY9On42wPXp7XLF8q0MS9Il3uflso1TwuLPrn9PEVIhtSK2eOLtdz6tGbZQvly3IvS5Z6npJLvsQzNPhWE5ylp+yZZNOUtGffGq+YcqDB85tKno9d6HqlfZPS2cOhTOD5P9Kng90l/1i/bzZo1Y6QUfaJPknufdGZa2bJlTeLLyZEUqJFSFStWNNeaFPJPSunvTZo08e2jw5T96QOlK/I5f6/XWRNLzu8n2se5PSeaIXey5FlfPMembGV+crPyTzwpfaFoxjI6OjrH/bMe92S264spp+25tTG/27P26UTbw7lPeqxjgXvsy1hWOW/3uLLd+YJy6ttzni9vq0/pGcfekN3ok77F7k4vJhmmX1lvC+/nSR/L4+9f8Pp04u2B6ZPzWa0PaU7tLIh9OvntOfdJYyynWMuxLXrileNjGVp9KgjPk74m9fNHP4f8Px/D+TP3VLaHS5/0vp3pROHSJ3/0iT6FSp+0XfqdTbeFS59Otu30iT6dzPasQrYym/7PniaFZs6cmWk0ktaKOvfcc83vep2UlCQLFizw7TNr1iyT3NHaU84+33//vVmZz6FFzE8//XQzdc/Zx/9+nH2c+7HFeYPL6QUDwE0eM/Ulpy9zANxErAG2cB4J2EGsAe4KaiQdOHDArISnF2e6k/68YcMGkxXs27evPP300zJ16lT5448/5NZbbzUr6jlT/HTqna6ad/vtt8vcuXPlp59+kj59+pgi6LqfuvHGG830vJ49e8qyZcvMtD9dbc+/sPl9991nVvF7+eWXzZzNQYMGmXmReiybdCSIriiYdfgbAHfpWIRKUftyLLYMwD3EGmAP55GAHcQa4K6gTt/TxE+bNm18vzuJom7dusmECRNkwIABcvDgQendu7cZEXX++eeb5FHRokV9f/P++++b5NEll1xistVdunSRV199NVPRr2+++Ubuvvtuad68uZQrV04ef/xxc0zHeeedJx988IEMHDhQ/vvf/0qdOnXMynsNGjQQm5wClSFS5gsIY95/iwNrrDGCAwgcYg2whfNIwA5iDQijpNRFF1103GDW0VJPPvmkueRGV9rThNLxaFX4H3744bj7XHvtteYCAAAAAACAwGMiLAAAAAAAAKwjKRVCdPphYmIiRfOAANMVq7anFc91FS0A7iDWAHs4jwTsINaAMJq+h8z0jS0hISHYzQAKAY/szzhWmw5AoBBrgC2cRwJ2EGuAu0jvhhBdwWHx4sWs5AAEmK4EVi06iRXBgAAj1gB7OI8E7CDWAHeRlAohWvQ9OTmZlRyAgPNKjEdPJIg1ILCINcAWziMBO4g1wF0kpQAAAAAAAGAdSSkAAAAAAABYR1IqhERGRkq9evXMNYDA0ZXAtqSWZEUwIMCINcAeziMBO4g1wF2svhdCPB6PxMXFBbsZQCHgkWRvTLAbARQCxBpgC+eRgB3EGuAuRkqFkLS0NJk3b565BhA4HsmQWtG7zTWAwCHWAHs4jwTsINYAd5GUCjEsLQrYEeFhxRTABmINsIfzSMAOYg1wD0kpAAAAAAAAWEdSCgAAAAAAANaRlAohuoJDo0aNWMkBCDBdCWxDamlWBAMCjFgD7OE8ErCDWAPcRVIqxMTEFO5VisaPH29WtPjss8/M7927d5e6detK48aNpVWrVqaooL9Ro0ZJ/fr1pWHDhmafw4cPm+2dOnWSJk2a+C4REREyderUoPQJoSnNy9sfYAOxBthT2M8jAVuINcA9nCmGWMG8+fPnF9rCeevWrZPRo0fLOeec49umyaXly5fL4sWL5ZFHHpFrr73Wd9uUKVPk/fffl19//VX++OMP+fbbbyU6OtrcNnnyZPn999/NZcyYMRIfHy//+c9/gtIvhB6PeCUxZo+5BhA4xBpgT2E/jwRsIdYAd5GUQkjIyMiQXr16yWuvvSZFihTxbb/qqqskKirK/KzJqs2bN/uWX33xxRfliSeekNKlS5vfy5cvn+Mw2rFjx8rNN9/M/2gAAAAAABBCSEohJAwdOtRMz2vevHmu+wwfPlwuv/xyX5JKR1Dp/1Lo37Vo0UJeffXVbH+TnJwsH374ofTs2TOg7QcAAAAAAPlz9Ns9EERLly6VTz75RL7//vtc93nvvfdk0qRJmfbREVNr16412/bs2SMXXnihJCYmSocOHXz7fPzxx6YmldacAgAAAAAAoYORUiFEp57piJ/CtpLDDz/8YOpJ1alTR2rWrGlqRPXu3Vtef/11c/vEiRNl8ODBMmPGDKlQoYLv76pXry5du3Y1j1e5cuXMKCr926xT9xglhax0JbA1KWVYEQwIMGINsKewnkcCthFrgLtISoWYlJQUKWzuuusu2bp1q0lM6UVrR7311ltmu46OGjhwoClirkkofzfeeKNMnz7dN01v9uzZZgU+x+rVq830Pk1cAVlFeTKC3QSgUCDWAHsK43kkEAzEGuAeklIhRFdwWLJkCSs5+Lnpppvk8OHDcvXVV0uTJk3MZdeuXea2/v37y7Zt2+SMM84w/1tx2WWXZVqdb9y4cdKlSxcpVapUEHuAUKQrgVWP3suKYECAEWuAPZxHAnYQa4C7qCmFkKMjnhypqam57le0aFF5++23c7392Wefdb1tAAAAAADAHSSlkM2OHTtk3759wW5Ggbd+/XpJS08LdjMAAAg4HdV8ww03mJVxY2NjJSEhwdSGPO2008Tr9ZrakB988IEUKVLE1IH87rvvzN/NnTtX7r33Xjly5Ig5Rvfu3WXAgAHmtkcffVSmTp3qq9vy8MMPm/sAAADhg6RUiAl2wTxNSN3avZck7T8U1HaEg8PJh2Tz1q3SLCX30V4IngwvhZcBG4i1wkMXKdGp9B6PR0aMGCG9evUyo59fffVVM9VFV9uNiYmRf/75J9PfPPnkk3LVVVfJ7t27pV69emYVXZ2a/+CDD8ozzzxj9tu8ebPUr19f2rZta5JaCM3zSKCwINYA95CUCiFRUVHSsmXLoLZBR0hpQqrOhV2kVNljK90h/zavWirrPx0naWkkpUKNVyJkbWp8sJsBhD1irfDQKfW6Cq5DFy156aWXzM8vvviizJo1yySkVMWKFX37aQIrKSnJ/Hzw4EGzT3z80ddMXFycb78DBw6YEVcZGRTOD+XzSKAwINYAd5GUCiF6srV3714pXbq0OUkLJk1IxVeoGtQ2FHR7dx77n2CEGq/EelIl2RttSjEDCBRirbAaPny4WaRE/7NLFyWZMmWKfPzxx76FSq6//nrz8/jx481+utKujtZ+8803MyWtdJTVyJEjZdOmTTJmzBgzLRChfx4JhDNiDXAXq++FEF3BYcWKFazkAASYrgRWOXo/K4IBAUasFU660Mjq1atlyJAhkpaWZi7Jycny22+/ycSJE6Vfv36yePFis+9zzz1n9tuwYYMsW7bM1JHSulQOrTe1cuVK+fnnn81xnRV4kR3nkYAdxBrgLpJSAAAAcIVO2fv000/lq6++kmLFipmpeCVKlJCbb77Z3F6zZk1p1aqVzJs3T3bu3CmTJ0+WG2+80dyWmJhopv399NNP2Y7buHFjqVKlSqYVegEAQMFHUgoAAACnbOjQofLhhx/KjBkzMtWD6tq1q0yfPt38rMXMdcW9Ro0aSZkyZaR48eKm3pTSJJWOpmrQoIH53X/E1N9//y2LFi0yBdABAED4oKZUCNE5ybqMMnOTgUDzSIpXV00h1oDAItYKC635dP/995vRTm3atDHbihQpYpJMOj2ve/fuMmrUKLP9oYcekrPOOsv8PGnSJLPKnk7xS01Nlb59+8q5555rbhswYICsXbtWoqOjTWFhXdFPV+BDzjiPBOwg1gB3kZQKsaVFdXg6gMDyikc2ph77X3wAgUGsFR5Vq1Y1xX9zUrZsWZk6dWqOt7Vt21YWLFiQ423Tpk1ztY3hjvNIwA5iDXAXSakQossc69D1cuXKSUQEMyuBwPFKyYgjsj+jCCM4gIAi1oIlNSVF1q9fH+xmhIVSpUpJ+fLlJdRxHgnYQawB7iIpFWJvcGvWrDFFQXmDAwJHVwJLiDooB1JizEgOAIFBrAVH8oG9snbtGnnw0UESE6MJQZyKuJLF5J3xY0I+McV5JGAHsQa4i6QUAABAGEk5nCzeiCipfX5nSahaI9jNKdD27domq+Z8Ivv27Qv5pBQAAAURSSkAAIAwVDK+vMRXqBrsZsAl48ePlx49esjkyZOlY8eOcvbZZ8uRI0fMbVooftmyZfLuu+9KixYtZNWqVdK7d2/Zs2ePHD58WK644gp58cUXGdUBAAg5fDKFEF3BoXTp0qzkAAScRw5lRFPjBgg4Yg1ww7p162T06NFyzjnn+Lbpyoa///67uQwaNEgaNGggzZs3N+eRuqJhp06dfLd/8803Mn369KD2AQgXfGcD3EVSKsRWctCljvUaQOBobZutaaWocQMEGLEGuFO/plevXvLaa69JkSI51wgbO3as9OzZ03ceqV+W9+7da25LTk6W1NRUqVSpkuWWh74vv/xSmjVrJk2aNDFJvbfffttsv+iii6RWrVpmu15eeeWVYDcVIYTvbIC7SEqF2EnHpk2bzDWAQPJKmchD5hpAIBFrwKkaOnSotGrVyoyCysnGjRtlzpw5cuONN/rOI4cNGyYfffSRVK5c2VxuvfVWadq0qfW2hzKv1ys333yzTJgwwYwmmzZtmtxxxx2yf/9+c7smopyRZv369Qt2c0PevffeKzVr1jQJUX3MHDpCT6eUNmrUyIz0W7x4sRR0Nr+z5fa4Iv90KrNOfa5bt640btxYLr30Ulm9enWwmwWSUqGFpBRgb0Ww+Mhkcw0gcIg14NQsXbpUPvnkExk4cGCu+2hSpUOHDmYlMOc8ctSoUdK1a1fZsmWLrF+/Xt5//32ZMWOG1bYXBPpFPykpyfysxezLli2b62g0HN8111wjP/74o9SocWxxBa1pdtNNN5kRaEuWLDF1zfT3gs7md7acHlecPK21t3LlSpMcvfrqq80oVAQfSSkAAAAgBP3www+mnlSdOnXMaIlff/3VfKl6/fXXfaN9tAC6Tt3zN3LkSOnWrZv5OSEhQS6//HKZPXt2UPoQygmpiRMnSufOnc0X/vPPP98kT2JiYsztDz/8sDRs2FCuv/56WbNmTbCbG/Jat24tVatmXljh77//Nom+M8880/x+wQUXyIYNG2ThwoVBamV4PK44OUWLFjXvhU4tMB25p++vCD6SUgAAAEAIuuuuu2Tr1q3mi5Ne9EvUW2+9ZbarWbNmmZX3dBqKv8TERF9h84MHD8p3331naibhGH3cnn76afn000/NaLKZM2fKLbfcIjt37jSrGK5YscKM7tFEio5EQ/5pMnXXrl3y888/m9+nTp1qpkeSCEAoGD58uBktheAjKRVCdJne8uXLs1wvEHAe2Zeuw/MpvgwEFrEGBJIWOO/evbs5d/Q/j9QRP3qb1k3Rej6XXHKJ3HDDDcFubkjR+jw6vVFHoqiWLVuaESmLFi2SatWqmW06oqJPnz5mpJQmV5A/ukLdxx9/LI888oipiaarQJ5xxhkSFRUlBRnf2Qq+Z5991tSTGjJkSLCbAhEp2O8IAaDDnXW+8z///GM+yHWlk7POOsvKfesbW+3ata3cF1CY6UpgO9JLBLsZQNgj1gB3ZZ2C98EHH+R4HqlFzX/66Sfr7StINPGko9D+/PNPs5KafkHV6Wann366bNu2TSpUqGD205pe+rNOQ0P+tWnTxlzUkSNHpGLFiiYxVZDxna1ge+mll8wIyW+//VaKFSsW7OaApFRmOq+8f//+8sYbb8jZZ59tVi5p3769KYam8/EDTYvlrV271ixBS+YdCBwtulwu8qDsTC/OUvVAABFrCAepKSlmeleo0/NILSxdpkyZkD2PLFWqlBlhEgo00aRTIa+77jrzeOnjN2LECJN8uvDCC00CRbeXK1fOTDvDydHEX6VKlczPTz31lFx88cVy2mmnSUHGd7aCvZrphx9+aBJScXFxwW4O/kVSKsuL9PbbbzfDoJUmp7744gsZN26cKXZo4w1ux44dptgib3BAIHmlVOQR2Zmu/zvCF2UgcIg1FGzJB/bK2rVr5MFHB0lMTGivyqZTojpe0V4+++JrUy8pFMWVLCbvjB8TMokpXaFQL1nNnz8/KO0pyO644w7zvUlnm+h/6pcsWdKMPnv88cdNwX59TZ577rlmWmlBZ/M7W26PK/JPV0y8//77Tc09Z/Serrb522+/BbtphR5JqX+lpKTIggULzJxnh77JtG3bVn755Zegtg0AAAD2pRxOFm9ElNQ+v7MkVA3tJdkjPCKly3uk6dW9JcMrIWffrm2yfMaH8scff7C8fZiNOlNvvvlmjttHjx5tvS3hJLfHFfmnNeN0xVKEHpJS/9KVNtLT033zxx36u66+kZUO6dWLY+/eveZ69+7dvv+dcopOajZdLw5nu96ff2DoPrpCig69joyM9G3Xn7XQYtb/9XL20ePkZbv+D5ren/92Pa7u77Rx3759R/uxdZ2kHD5k/l/731UzDW2utji37XpC5C+37c7JUiC3Z21jbtsD1ad9OzZLVGSE7N66USIjwqNPgdielz7pY6mvVX0soyJOvU+6rVxZj2zftcvsE4w+Bet50sfSm5FhHsvoyPDo08luP9U+JW3fZB7LpH82ZXosC3Kf3H6eIrPEWm7779m2ydzJ3m2ZH8tQ7FNBeJ6czx/n8QyHPgXreXIey4zUI5J25FBI90mvkg95JOWw1/dZF0rP06GknbJxw3oZ8Ogg8UQcDfSsBa+dc92ctjvnrMfu8+g5bW7bnfNtX1v+PdfNbbtzvu1wztNz256ftgeiT8ViIuXRRwZIfHx8jl+09RhubM8Pt+4z0NvzI6djOCOldHVG/9eGjbbzPOUsHPtUpkwZczned/cTbc9vPiK37Sebj9C8hjrRY+Hxki40dPWNKlWqmCVLdWipY8CAATJnzpxsw/oGDRokgwcPDkJLAQAAAAAAQt/GjRvNSLXcMFLqX1rEUDN6utqGP/1dV4nISqf5aVF0h2YedZSUFkfMmjHPKx2lpCuB6JOmQ3IBBAaxBthBrAH2EG+AHcQakDc6/mn//v1SuXLl4+5HUupfMTEx0rx5c5k5c6Z07NjRl2jS3/v06ZNtfy2Kphd/blXw1zc33uCAwCPWADuINcAe4g2wg1gDTqx06dIn3IeklB8d+dStWzdp0aKFnHXWWTJs2DBT48lZjQ8AAAAAAADuICnl5/rrrzdF63TpUl12s0mTJjJ9+vRsxc8BAAAAAABwakhKZaFT9XKarmeDTgd84oknsk0LBOAuYg2wg1gD7CHeADuINcBdrL4HAAAAAAAA6yLs3yUAAAAAAAAKO5JSAAAAAAAAsI6kFAAAAAAAAKwjKRVCRo4cKTVr1pSiRYvK2WefLXPnzg12k4ACbciQIdKyZUspWbKkJCQkSMeOHWXlypWZ9jl8+LDcfffdUrZsWSlRooR06dJFtm3bFrQ2AwXdc889Jx6PR/r27evbRpwB7tm8ebPcfPPNJp5iY2OlYcOGMn/+fN/tWi5WV5KuVKmSub1t27ayatWqoLYZKGjS09Plsccek1q1apk4ql27tjz11FMmvhzEGuAOklIhYuLEidK/f3+zksPChQulcePG0r59e9m+fXuwmwYUWHPmzDFfhH/99VeZMWOGpKamSrt27eTgwYO+ffr16yeff/65fPTRR2b/LVu2SOfOnYPabqCgmjdvnrz55pvSqFGjTNuJM8Ade/bskVatWkl0dLR89dVXsnz5cnn55ZelTJkyvn1eeOEFefXVV+WNN96Q3377TYoXL27OKTU5DCBvnn/+eXn99ddlxIgR8ueff5rfNbZee+013z7EGuAOVt8LEToySkd06BufysjIkGrVqsk999wjDz/8cLCbB4SFHTt2mBFT+qW4devWsnfvXilfvrx88MEHcs0115h9VqxYIfXr15dffvlFzjnnnGA3GSgwDhw4IM2aNZNRo0bJ008/LU2aNJFhw4YRZ4CL9Jzwp59+kh9++CHH2/W0vnLlynL//ffLAw88YLZpDFaoUEEmTJggN9xwg+UWAwVThw4dTNyMHTvWt01H+eqIqPfee49YA1zESKkQkJKSIgsWLDBDPh0RERHmdz1hB+AOPVlQ8fHx5lrjTkdP+cdevXr1pHr16sQekE86KvGKK67IFE+KOAPcM3XqVGnRooVce+215j9ZmjZtKqNHj/bdvnbtWvnnn38yxVvp0qXNf34Sb0DenXfeeTJz5kz566+/zO+LFy+WH3/8US677DLzO7EGuCfKxWPhJO3cudPMW9bMuj/9Xf83GcCp09GHWuNGpz00aNDAbNOTiZiYGImLi8sWe3obgLz53//+Z6ae6/S9rIgzwD1r1qwxU4q05MN///tfE3P33nuvibFu3br5Yiqnc0riDcjfqMR9+/aZ/0SJjIw039WeeeYZuemmm8ztxBrgHpJSAArNKI6lS5ea/+UC4J6NGzfKfffdZ+q26UIdAAL7Hyw6UurZZ581v+tIKf1s05o2mpQC4I5JkybJ+++/b6aen3nmmfL777+b/9zUKXvEGuAupu+FgHLlypkMfNaViPT3ihUrBq1dQLjo06ePTJs2Tb777jupWrWqb7vGl06fTUpKyrQ/sQfknU7P00U5tJ5UVFSUuWjdNi3+qj/r/xoTZ4A7dJWvM844I9M2rc+2YcMG87MTU5xTAqfmwQcfNKOltDaUrnB5yy23mEU7dGVnRawB7iEpFQJ0yHXz5s3NvGX//wnT388999ygtg0oyLQIpSakJk+eLLNmzTLL+vrTuNMVjPxjb+XKlebkntgD8uaSSy6RP/74w/wvsnPRkRw6xcH5mTgD3KFT0DV+/GnNmxo1apif9XNOvxD7x5tOQdKVwYg3IO8OHTpkavz600EE+h1NEWuAe5i+FyK0NoAOBdWT97POOsusWKTL1nfv3j3YTQMK9JQ9HXY9ZcoUKVmypG+Ovxai1NVT9Lpnz54m/rT4ealSpcyKl3oywYpgQN5obDl12hy6LHbZsmV924kzwB06UkMLMOv0veuuu07mzp0rb731lrkoj8djphjpCph16tQxX5wfe+wxM+WoY8eOwW4+UGBceeWVpoaULsqh0/cWLVokQ4cOlR49epjbiTXAPSSlQsT1119vlqt//PHHzRdnXUp7+vTp2YrnAcg7LQarLrrookzbx48fL7fddpv5+ZVXXjH/E6bL/B45ckTat29vlrQH4B7iDHBHy5YtzejfRx55RJ588knzRVj/I9MpvqwGDBhg/mOzd+/eZtrs+eefb84pqfkG5N1rr71mkkz/93//Z6aoa7LpjjvuMN/VHMQa4A6PV+e3AAAAAAAAABZRUwoAAAAAAADWkZQCAAAAAACAdSSlAAAAAAAAYB1JKQAAAAAAAFhHUgoAAAAAAADWkZQCAAAAAACAdSSlAAAAAAAAYB1JKQAAAAAAAFhHUgoAACBMXHTRRdK3b99gNwMAACBPSEoBAACEgCuvvFL+85//5HjbDz/8IB6PR5YsWWK9XQAAAIFCUgoAACAE9OzZU2bMmCGbNm3Kdtv48eOlRYsW0qhRo6C0DQAAIBBISgEAAISADh06SPny5WXChAmZth84cEA++ugj6dixo3Tt2lWqVKkixYoVk4YNG8qHH3543GPq6KrPPvss07a4uLhM97Fx40a57rrrzPb4+Hi5+uqrZd26dS73DgAAIDuSUgAAACEgKipKbr31VpMw8nq9vu2akEpPT5ebb75ZmjdvLl988YUsXbpUevfuLbfccovMnTv3pO8zNTVV2rdvLyVLljRTBH/66ScpUaKEmUaYkpLiUs8AAAByRlIKAAAgRPTo0UP+/vtvmTNnTqape126dJEaNWrIAw88IE2aNJHExES55557TPJo0qRJJ31/EydOlIyMDBkzZowZeVW/fn1zfxs2bJDZs2e71CsAAICckZQCAAAIEfXq1ZPzzjtPxo0bZ35fvXq1GcGk9aZ0tNRTTz1lkkc6zU5HNH399dcmgXSyFi9ebO5DR0rp8fSixz58+LBJjgEAAARSVECPDgAAgHzRBJSOgho5cqQZtVS7dm258MIL5fnnn5fhw4fLsGHDTGKqePHi0rdv3+NOs9OaUv5TAZ0pe/71qnRK4Pvvv5/tb7W+FQAAQCCRlAIAAAghWnT8vvvukw8++EDeeecdueuuu0xySes9aRFyrS2ldNrdX3/9JWeccUaux9LE0tatW32/r1q1Sg4dOuT7vVmzZmYKX0JCgpQqVSrAPQMAAMiM6XsAAAAhRKfQXX/99fLII4+YhNJtt91mttepU0dmzJghP//8s/z5559yxx13yLZt2457rIsvvlhGjBghixYtkvnz58udd94p0dHRvttvuukmKVeunEl26TTBtWvXmlpS9957r2zatCngfQUAAIUbSSkAAIAQnMK3Z88eszJe5cqVzbaBAweakU267aKLLpKKFStKx44dj3ucl19+WapVqyYXXHCB3HjjjaZQerFixXy368/ff/+9VK9eXTp37mwKnet9a00pRk4BAIBA83izFhoAAAAAAAAAAoyRUgAAAAAAALCOpBQAAAAAAACsIykFAAAAAAAA60hKAQAAAAAAwDqSUgAAAAAAALCOpBQAAAAAAACsIykFAAAAAAAA60hKAQAAAAAAwDqSUgAAAAAAALCOpBQAAAAAAACsIykFAAAAAAAA60hKAQAAAAAAQGz7f3i5OUS7P0B1AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "start_time = time.time()\n", "dist = explorer.create_distribution(key=\"num_nodes\", bins=12, group=\"graph\")\n", "print(f\"Face labels distribution created in {(time.time() - start_time):.2f} seconds\\n\")\n", "print_distribution_info(dist, title=\"Brep facecount Distribution\")" ] }, { "cell_type": "markdown", "id": "83793d5b-93c9-423a-be2e-0d543e33d15f", "metadata": { "tags": [] }, "source": [ "# Gather files that fulfilled a given condition. Filter" ] }, { "cell_type": "code", "execution_count": null, "id": "91b917b9-e5e8-4689-8b4d-c055becd7fc5", "metadata": { "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 14, "id": "39715be3-a1ed-43db-a950-6def2d0a64bf", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Filtering completed in 0.31 seconds\n", "Found 32234 files with face_labels == 15 (chamfer)\n", "\n", "[ 10 12 15 ... 162392 162398 162401]\n" ] } ], "source": [ "start_time = time.time()\n", "\n", "# condition\n", "label_is_pipefittings = lambda ds: ds['face_labels'] == 15\n", "\n", "filelist = explorer.get_file_list(group=\"faces\", where=label_is_pipefittings)\n", "print(f\"Filtering completed in {(time.time() - start_time):.2f} seconds\")\n", "print(f\"Found {len(filelist)} files with face_labels == 15 (chamfer)\\n\")\n", "print(filelist)" ] }, { "cell_type": "markdown", "id": "30cfce7a-515a-4ebe-87bd-2286235a823b", "metadata": {}, "source": [ "# Query data for single file" ] }, { "cell_type": "code", "execution_count": 15, "id": "83350a38-9bde-47a3-84a5-2bd47724a5e0", "metadata": { "tags": [] }, "outputs": [], "source": [ "def demo_query_single_file(explorer, file_id):\n", " \"\"\"Show how to access and query dataset details for a single file.\"\"\"\n", " print(\"=== Single File Dataset Access ===\")\n", " import time\n", " # Get and print parquet info\n", " df_info = explorer.get_parquet_info_by_code(file_id)\n", " print(\"Files info:\")\n", " for column in df_info.columns:\n", " print(f\"Column: {column}\")\n", " for value in df_info[column]:\n", " print(f\" {value}\")\n", " print()\n", "\n", " # Access various dataset groups\n", " groups = [\"faces\", \"file\", \"edges\", \"graph\"]\n", " datasets = {grp: explorer.file_dataset(file_id_code=file_id, group=grp) for grp in groups}\n", "\n", " print(f\"Datasets for file ID '{file_id}':\")\n", " for grp, ds in datasets.items():\n", " for name, da in ds.data_vars.items():\n", " print(f\" [{grp}] VARIABLE: {name}, Shape: {da.shape}, Dims: {da.dims}, Size: {da.size}\")\n", " print()\n", "\n", " # Query uv grids data for a specific face\n", " start_time = time.time()\n", " uv_grid_data = datasets[\"faces\"][\"face_uv_grids\"].isel(face=2)\n", " print(\"uv_grids data for face index 2:\")\n", " np_uvgrid = uv_grid_data.data.compute()\n", " print(f\"Query took {(time.time() - start_time):.2f} seconds\\n\")" ] }, { "cell_type": "code", "execution_count": 16, "id": "4dd615c0-6659-4407-b3a8-951770560272", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "=== Single File Dataset Access ===\n", "Files info:\n", "Column: name\n", " 07207dfd094fe0ebe9368ded4c271b23\n", "Column: description\n", " C:\\Temp\\Cadsynth_aag\\step\\20221124_154714_17096.step\n", "Column: subset\n", " test\n", "Column: id\n", " 4500\n", "Column: table_name\n", " file_info\n", "\n", "Datasets for file ID '4500':\n", " [faces] VARIABLE: face_areas, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_indices, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_labels, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_loops, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_neighborscount, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_types, Shape: (38,), Dims: ('face',), Size: 38\n", " [faces] VARIABLE: face_uv_grids, Shape: (38, 5, 5, 7), Dims: ('face', 'uv_x', 'uv_y', 'component'), Size: 6650\n", " [faces] VARIABLE: file_id_code_faces, Shape: (38,), Dims: ('face',), Size: 38\n", " [file] VARIABLE: duration_dglconvert, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] VARIABLE: file_id_code_file, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] VARIABLE: size_cadfile, Shape: (1,), Dims: ('file',), Size: 1\n", " [file] VARIABLE: size_dglfile, Shape: (1,), Dims: ('file',), Size: 1\n", " [edges] VARIABLE: edge_convexities, Shape: (96,), Dims: ('edge',), Size: 96\n", " [edges] VARIABLE: edge_dihedral_angles, Shape: (96,), Dims: ('edge',), Size: 96\n", " [edges] VARIABLE: edge_indices, Shape: (96,), Dims: ('edge',), Size: 96\n", " [edges] VARIABLE: edge_lengths, Shape: (96,), Dims: ('edge',), Size: 96\n", " [edges] VARIABLE: edge_types, Shape: (96,), Dims: ('edge',), Size: 96\n", " [edges] VARIABLE: edge_u_grids, Shape: (96, 5, 6), Dims: ('edge', 'dim_x', 'component'), Size: 2880\n", " [edges] VARIABLE: file_id_code_edges, Shape: (96,), Dims: ('edge',), Size: 96\n", " [graph] VARIABLE: destination, Shape: (96,), Dims: ('edge',), Size: 96\n", " [graph] VARIABLE: file_id_code_graph, Shape: (96,), Dims: ('edge',), Size: 96\n", " [graph] VARIABLE: num_nodes, Shape: (96,), Dims: ('edge',), Size: 96\n", " [graph] VARIABLE: source, Shape: (96,), Dims: ('edge',), Size: 96\n", "\n", "uv_grids data for face index 2:\n", "Query took 1.17 seconds\n", "\n" ] } ], "source": [ "demo_query_single_file(explorer,file_id=4500)" ] }, { "cell_type": "code", "execution_count": null, "id": "3a05836f-9e8a-4c34-ad57-378bd9e5a8d5", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "HOOPS AI (GPU)", "language": "python", "name": "hoops_ai_gpu_dev" }, "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.9.21" } }, "nbformat": 4, "nbformat_minor": 5 }