Repository: Yzmblog/SurfD Branch: main Commit: 50826b077c11 Files: 112 Total size: 2.0 MB Directory structure: gitextract_su3bycqo/ ├── AutoEncoder/ │ ├── cfg/ │ │ ├── deepfashion3d/ │ │ │ └── deepfashion3d.yaml │ │ ├── pix3d/ │ │ │ └── pix3d.yaml │ │ └── shapenet/ │ │ └── text2shape.yaml │ ├── data/ │ │ ├── __init__.py │ │ └── dataset.py │ ├── dataset_info_files/ │ │ ├── Deepfashion3d/ │ │ │ ├── deepfashion3d_test.txt │ │ │ └── deepfashion3d_train.txt │ │ ├── Pix3d/ │ │ │ ├── test.txt │ │ │ └── train.txt │ │ ├── ShapeNet_filelists/ │ │ │ ├── 02691156_test.lst │ │ │ ├── 02691156_train.lst │ │ │ ├── 02828884_test.lst │ │ │ ├── 02828884_train.lst │ │ │ ├── 02933112_test.lst │ │ │ ├── 02933112_train.lst │ │ │ ├── 02958343_test.lst │ │ │ ├── 02958343_train.lst │ │ │ ├── 03001627_test.lst │ │ │ ├── 03001627_train.lst │ │ │ ├── 03211117_test.lst │ │ │ ├── 03211117_train.lst │ │ │ ├── 03636649_test.lst │ │ │ ├── 03636649_train.lst │ │ │ ├── 03691459_test.lst │ │ │ ├── 03691459_train.lst │ │ │ ├── 04090263_test.lst │ │ │ ├── 04090263_train.lst │ │ │ ├── 04256520_test.lst │ │ │ ├── 04256520_train.lst │ │ │ ├── 04379243_test.lst │ │ │ ├── 04379243_train.lst │ │ │ ├── 04401088_test.lst │ │ │ ├── 04401088_train.lst │ │ │ ├── 04530566_test.lst │ │ │ └── 04530566_train.lst │ │ ├── info-pix3d.json │ │ └── info-shapenet.json │ ├── encdec/ │ │ ├── DynamicSampler.py │ │ ├── __init__.py │ │ ├── export_meshes.py │ │ ├── normalized_obj.py │ │ ├── preprocess_udfs.py │ │ └── train_encdec.py │ ├── models/ │ │ ├── __init__.py │ │ ├── cbndec.py │ │ ├── coordsenc.py │ │ └── dgcnn.py │ ├── trainers/ │ │ ├── __init__.py │ │ ├── encdec.py │ │ └── test.py │ └── utils.py ├── CLIP/ │ ├── .gitignore │ ├── LICENSE │ ├── MANIFEST.in │ ├── README.md │ ├── __init__.py │ ├── clip/ │ │ ├── __init__.py │ │ ├── clip.py │ │ ├── model.py │ │ └── simple_tokenizer.py │ ├── clip.py │ ├── data/ │ │ ├── country211.md │ │ ├── prompts.md │ │ ├── rendered-sst2.md │ │ └── yfcc100m.md │ ├── hubconf.py │ ├── model-card.md │ ├── model.py │ ├── requirements.txt │ ├── setup.py │ ├── simple_tokenizer.py │ └── tests/ │ └── test_consistency.py ├── README.md ├── data_loaders/ │ └── dataset.py ├── diffusion/ │ ├── fp16_util.py │ ├── gaussian_diffusion.py │ ├── logger.py │ ├── losses.py │ ├── nn.py │ ├── resample.py │ └── respace.py ├── environment.yaml ├── meshudf/ │ ├── _marching_cubes_lewiner.py │ ├── _marching_cubes_lewiner_cy.pyx │ ├── _marching_cubes_lewiner_luts.py │ ├── meshudf.py │ ├── setup.py │ └── setup.sh ├── models/ │ ├── cfg_sampler.py │ ├── mdm.py │ ├── models.py │ └── openaimodel.py ├── modules/ │ └── attention.py ├── sample/ │ ├── generate_cat.py │ ├── generate_image.py │ ├── generate_sketch.py │ ├── generate_text.py │ └── generate_uncond.py ├── train_diffcloth.py ├── training_loop_single.py └── utils/ ├── PYTORCH3D_LICENSE ├── __init__.py ├── comm.py ├── dist_util.py ├── fixseed.py ├── ldm_utils.py ├── logger.py ├── misc.py ├── miscellaneous.py ├── model_util.py ├── parser_util.py └── utils.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: AutoEncoder/cfg/deepfashion3d/deepfashion3d.yaml ================================================ dset: train_ids_file: none test_ids_file: none root: ./dataset/Deepfashion3D/udfs split: "train" name: "deepfashion3d" exp_name: "deepfashion3d" num_points_pcd: 10_000 udf_max_dist: 0.1 latent_size: 32 num_points_forward: 20_000 decoder: hidden_dim: 512 num_hidden_layers: 5 train_bs: 8 val_bs: 8 lr: 1e-4 num_epochs: 6_000 watertight: False resolution: 512 log_dir: ./output/deepfashion3d ================================================ FILE: AutoEncoder/cfg/pix3d/pix3d.yaml ================================================ dset: train_ids_file: none test_ids_file: none root: ./Dataset/pix3d/udfs split: "train" name: "pix3d" exp_name: "pix3d" num_points_pcd: 10_000 udf_max_dist: 0.1 latent_size: 64 num_points_forward: 20_000 decoder: hidden_dim: 512 num_hidden_layers: 5 train_bs: 2 val_bs: 8 lr: 1e-4 num_epochs: 20000 watertight: False resolution: 512 log_dir: ./outputs/pix3d ================================================ FILE: AutoEncoder/cfg/shapenet/text2shape.yaml ================================================ dset: train_ids_file: none test_ids_file: none root: ./dataset/ShapeNet/udfs name: text2shape split: train exp_name: text2shape num_points_pcd: 10_000 udf_max_dist: 0.1 latent_size: 64 num_points_forward: 20_000 decoder: hidden_dim: 512 num_hidden_layers: 5 train_bs: 6 val_bs: 8 lr: 1e-4 num_epochs: 10000 watertight: True resolution: 512 log_dir: ./outputs/shapenet ================================================ FILE: AutoEncoder/data/__init__.py ================================================ ================================================ FILE: AutoEncoder/data/dataset.py ================================================ import pickle from pathlib import Path from typing import Tuple import numpy as np import torch from torch import Tensor from torch.utils.data import Dataset import os T_ITEM = Tuple[int, str, Tensor, Tensor, Tensor, Tensor] class UdfsDataset(Dataset): def __init__(self, name: str, root: Path, split: str) -> None: super().__init__() self.root = str(root) self.ids = [] self.npz_list = [] self.id2category = {} self.training_idxes = [] self.name = name if name in ['shapenet', 'deepfashion3d']: self.data_root = os.path.join(self.root, 'train') ids = os.listdir(self.data_root) print(split, len(ids)) for id in ids: #print(id) assert id.endswith(".npz") self.ids.append(id[:-4]) self.npz_list.append(os.path.join(self.data_root, id)) elif 'text2shape' in name: data_root_chair = os.path.join(self.root, '03001627', 'train') ids_chair = os.listdir(data_root_chair) data_root_table = os.path.join(self.root, '04379243', 'train') ids_table = os.listdir(data_root_table) for id in ids_chair: self.ids.append(id[:-4]) self.npz_list.append(os.path.join(data_root_chair, id)) for id in ids_table: self.ids.append(id[:-4]) self.npz_list.append(os.path.join(data_root_table, id)) self.ids = sorted(self.ids) self.npz_list = sorted(self.npz_list) elif name == 'pix3d': cats = os.listdir(os.path.join(self.root, split)) for cat in cats: ids = os.listdir(os.path.join(self.root, split, cat)) for id in ids: self.ids.append(id[:-4]) self.npz_list.append(os.path.join(self.root, split, cat, id)) def __len__(self) -> int: return len(self.ids) def get_training_idxes(self): return self.training_idxes def update_training_idxes(self, new_idxes): self.training_idxes = self.training_idxes + new_idxes with open('./training_idxes.txt', 'w') as f: for info in self.training_idxes: f.write(f'{info}\n') def val_del_idxes(self): self.ids self.npz_list def __getitem__(self, index: int) -> T_ITEM: item_id = self.npz_list[index].split('/')[-1][:-4] npz = np.load(self.npz_list[index]) pcd = torch.from_numpy(npz["pcd"]) coords = torch.from_numpy(npz["coords"]) labels = torch.from_numpy(npz["labels"]) gradients = torch.from_numpy(npz["gradients"]) return index, item_id, pcd, coords, labels, gradients def get_mesh(self, index: int) -> Tuple[Tensor, Tensor]: npz = np.load(self.root / f"{self.ids[index]}.npz") v = torch.from_numpy(npz["vertices"]) t = torch.from_numpy(npz["triangles"]) return v, t ================================================ FILE: AutoEncoder/dataset_info_files/Deepfashion3d/deepfashion3d_test.txt ================================================ 234 396 221 21 569 377-4 518 76 20 79 112 329 3 324 224 64 48 71 37-2 146 19 187 36 253 333 40 568 334 596 150 322 390 60 213-2 29 182 90 93 563-2 203 328 196 195 117 216 97 294 94 278 546 495 552 543 448 415 553 423 581 308 457 579 178 418 160 436 276 268 443 430 142 529 425 548 490 460 174 379 467 483 162 400 177 ================================================ FILE: AutoEncoder/dataset_info_files/Deepfashion3d/deepfashion3d_train.txt ================================================ 10 15-19 83 223 297 364 47 115 346 247-5 231 505 2 110 68 521 129 4-18 516 58 51 354 374 522 6-15 30-2 513 519-4 438 157 242 13 194 251 520 357 14 23 33 207 358 109 349-4 230 193 368 86 225 360 67 62 102 18 1 78 114 389 45 373 375 53 66 43 49 136 376 184 55 235 507 46 523-5 597 170 81 147 246 332 121 292-5 369 305 500 85 70-2 348 25 301 337-2 502 561-2 123 34 256-2 290 220 343 291 39 499 249-6 84 186 42 387 105 137 504 395-2 138 228 152 103 141 594 498-2 148 38 503 592 155 171 145 218 144-2 394 149 238-2 595 288 35 287 134 61 392 213-2 183 509 393 120 122 26 345 363 119 118 212 28-5 232 299 133 351 298 289 113 340 304 24 303 222 302 168 198 140 63 353 169 355 172 567 321 197 92 565 314 89 100 564 202 571 99 27 107 215 326 128 254 108 338 320 335 342 127 116 319 217 166 91 341 88 17 156 80 327 527 538 539 535 257 537 515 514 547 453 413 419 549 411 432 417 452 550 530-2 261 442 454 449 406 262 551 450 444 435 416 456 540 408 494 403 414 578 577 421 459 468 179 175 462 380 584 458 590 473 266 165 434 472 476 465 585 440 599 463 164 398 589 447 480 307 159 583 422 576 433 386 426 176 455 559 429 464 575 316 487 586 378 161 477 296 591 382 427 280 282 285 424 582 402 479 469 485 281 277 347 405 412 573 587 441 420 542 295 317 471 491 481 558 437 486 318 404 330 312 272 475 284 310 283 167 401 163 484 135 399 311 275 352 428 489 388 574 488 588 431 350 ================================================ FILE: AutoEncoder/dataset_info_files/Pix3d/test.txt ================================================ img/bed/0255.jpg img/bed/0256.jpg img/bed/0257.jpg img/bed/0258.jpg img/bed/0259.jpg img/bed/0260.jpg img/bed/0261.jpg img/bed/0262.jpg img/bed/0263.jpg img/bed/0264.jpg img/bed/0265.jpg img/bed/0266.jpg img/bed/0267.jpg img/bed/0268.jpg img/bed/0269.jpg img/bed/0270.jpg img/bed/0271.jpg img/bed/0272.jpg img/bed/0273.jpg img/bed/0274.png img/bed/0275.jpg img/bed/0276.jpg img/bed/0277.jpg img/bed/0278.jpg img/bed/0279.jpg img/bed/0280.jpg img/bed/0281.jpg img/bed/0282.jpg img/bed/0283.jpg img/bed/0284.jpg img/bed/0285.jpg img/bed/0286.jpg img/bed/0287.jpg img/bed/0288.jpg img/bed/0289.jpg img/bed/0290.jpg img/bed/0291.jpg img/bed/0292.jpg img/bed/0293.jpg img/bed/0294.jpg img/bed/0295.jpg img/bed/0296.jpg img/bed/0297.jpg img/bed/0298.jpg img/bed/0299.jpg img/bed/0300.jpg img/bed/0301.jpg img/bed/0302.jpg img/bed/0303.jpg img/bed/0304.jpg img/bed/0305.jpg img/bed/0306.jpg img/bed/0008.png img/bed/0397.jpg img/bed/0398.jpg img/bed/0399.jpg img/bed/0400.jpg img/bed/0401.jpg img/bed/0402.jpg img/bed/0403.jpg img/bed/0404.jpg img/bed/0405.jpg img/bed/0406.jpg img/bed/0407.jpg img/bed/0408.jpg img/bed/0409.jpg img/bed/0410.jpg img/bed/0411.jpg img/bed/0412.jpg img/bed/0413.jpg img/bed/0414.jpg img/bed/0415.jpg img/bed/0416.jpg img/bed/0417.jpg img/bed/0418.jpg img/bed/0419.jpg img/bed/0420.jpg img/bed/0421.jpg img/bed/0422.jpg img/bed/0423.jpg img/bed/0424.jpg img/bed/0425.jpg img/bed/0426.jpg img/bed/0427.jpg img/bed/0428.jpg img/bed/0429.jpg img/bed/0430.jpg img/bed/0431.jpg img/bed/0432.jpg img/bed/0433.jpg img/bed/0434.jpg img/bed/0435.jpg img/bed/0436.jpg img/bed/0437.jpg img/bed/0438.jpg img/bed/0439.jpg img/bed/0440.jpg img/bed/0441.jpg img/bed/0442.jpg img/bed/0443.jpg img/bed/0444.jpg img/bed/0445.jpg img/bed/0446.jpg img/bed/0447.jpg img/bed/0448.jpg img/bed/0449.jpg img/bed/0450.jpg img/bed/0451.jpg img/bed/0452.jpg img/bed/0453.jpg img/bed/0454.jpg img/bed/0455.jpg img/bed/0456.jpg img/bed/0457.jpg img/bed/0458.jpg img/bed/0459.jpg img/bed/0460.jpg img/bed/0461.jpg img/bed/0462.jpg img/bed/0463.jpg img/bed/0464.jpg img/bed/0465.jpg img/bed/0466.jpg img/bed/0467.jpg img/bed/0468.jpg img/bed/0469.jpg img/bed/0470.png img/bed/0471.jpg img/bed/0472.jpg img/bed/0473.jpg img/bed/0474.jpg img/bed/0475.jpg img/bed/0476.jpg img/bed/0477.jpg img/bed/0478.jpg img/bed/0479.jpg img/bed/0480.jpg img/bed/0481.jpg img/bed/0482.jpg img/bed/0483.jpg img/bed/0015.png img/bed/0741.jpg img/bed/0749.jpg img/bed/0863.jpg img/bed/0864.jpg img/bed/0865.jpg img/bed/0866.jpg img/bed/0867.jpg img/bed/0868.jpeg img/bed/0869.jpg img/bed/0870.jpg img/bed/0871.jpg img/bed/0872.jpg img/bed/0873.jpg img/bed/0874.jpg img/bed/0875.jpg img/bed/0876.jpg img/bed/0877.jpg img/bed/0878.jpg img/bed/0879.jpg img/bed/0880.jpg img/bed/0881.jpg img/bed/0882.jpg img/bed/0883.jpg img/bed/0884.jpg img/bed/0885.jpg img/bed/0886.jpg img/bed/0887.jpg img/bed/0888.jpg img/bed/0889.jpeg img/bed/0890.jpg img/bed/0891.jpg img/bed/0892.jpg img/bed/0893.jpg img/bed/0894.jpg img/bed/0895.jpg img/bed/0896.jpg img/bed/0897.jpg img/bed/0898.jpg img/bed/0899.jpeg img/bed/0900.jpg img/bed/0901.jpg img/bed/0902.jpg img/bed/0903.jpg img/bed/0904.jpg img/bed/0905.jpg img/bed/0906.jpg img/bed/0907.jpg img/bed/0908.jpg img/bed/0909.jpg img/bed/0910.jpg img/bed/0911.jpg img/bed/0912.jpeg img/bed/0913.jpg img/bed/0914.jpg img/bed/0915.jpg img/bookcase/0002.jpg img/bookcase/0003.jpg img/bookcase/0004.jpg img/bookcase/0005.jpg img/bookcase/0006.jpg img/bookcase/0007.jpg img/bookcase/0008.jpg img/bookcase/0009.jpg img/bookcase/0010.jpg img/bookcase/0011.jpg img/bookcase/0012.jpg img/bookcase/0013.jpg img/bookcase/0014.jpg img/bookcase/0015.jpg img/bookcase/0016.jpg img/bookcase/0017.jpg img/bookcase/0018.jpg img/bookcase/0325.jpg img/bookcase/0327.jpg img/bookcase/0328.jpg img/bookcase/0329.jpg img/bookcase/0330.jpg img/bookcase/0332.jpg img/bookcase/0335.jpg img/bookcase/0340.jpg img/bookcase/0341.jpg img/bookcase/0344.jpg img/bookcase/0345.jpg img/bookcase/0354.jpg img/bookcase/0356.jpg img/bookcase/0034.jpg img/bookcase/0035.jpg img/bookcase/0036.jpg img/bookcase/0037.jpg img/bookcase/0038.jpg img/bookcase/0346.jpg img/bookcase/0357.jpg img/bookcase/0045.jpg img/bookcase/0046.jpg img/bookcase/0047.jpg img/bookcase/0048.jpg img/bookcase/0049.jpg img/bookcase/0050.jpg img/bookcase/0051.jpg img/bookcase/0052.jpg img/bookcase/0053.jpg img/bookcase/0054.jpg img/bookcase/0055.jpg img/bookcase/0056.jpg img/bookcase/0057.jpg img/bookcase/0058.jpg img/bookcase/0059.jpg img/bookcase/0060.jpg img/bookcase/0061.jpg img/bookcase/0062.jpg img/bookcase/0063.jpg img/bookcase/0064.jpg img/bookcase/0065.jpg img/bookcase/0066.jpg img/bookcase/0067.jpg img/bookcase/0068.jpg img/bookcase/0069.jpg img/bookcase/0070.jpg img/bookcase/0071.jpg img/bookcase/0072.jpg img/bookcase/0073.jpg img/bookcase/0074.jpg img/bookcase/0075.jpg img/bookcase/0076.jpg img/bookcase/0077.jpg img/bookcase/0078.jpg img/bookcase/0079.jpg img/bookcase/0080.jpg img/bookcase/0081.jpg img/bookcase/0082.jpg img/bookcase/0083.jpg img/bookcase/0084.jpg img/bookcase/0085.jpg img/bookcase/0086.jpg img/bookcase/0087.jpg img/bookcase/0088.jpg img/bookcase/0089.jpg img/bookcase/0090.jpg img/bookcase/0091.jpg img/bookcase/0092.jpg img/bookcase/0093.jpg img/bookcase/0094.png img/bookcase/0095.jpg img/bookcase/0096.jpg img/bookcase/0097.png img/bookcase/0261.jpg img/bookcase/0262.jpg img/bookcase/0265.jpg img/bookcase/0270.jpg img/bookcase/0274.jpg img/bookcase/0281.jpg img/bookcase/0284.jpg img/bookcase/0290.png img/bookcase/0296.jpg img/bookcase/0298.png img/bookcase/0301.jpg img/bookcase/0306.jpg img/bookcase/0310.jpg img/bookcase/0314.jpg img/bookcase/0318.jpg img/chair/1548.jpg img/chair/1549.jpg img/chair/1551.jpg img/chair/1553.jpg img/chair/1555.jpg img/chair/1556.jpg img/chair/1557.jpg img/chair/1559.jpg img/chair/1560.jpg img/chair/1561.jpg img/chair/1562.jpg img/chair/1563.jpg img/chair/1564.jpg img/chair/1565.jpg img/chair/1567.jpg img/chair/1570.jpg img/chair/1571.jpg img/chair/1572.jpg img/chair/1574.jpg img/chair/1575.jpg img/chair/1576.jpg img/chair/1579.jpg img/chair/1580.jpg img/chair/1581.jpg img/chair/1582.jpg img/chair/1583.jpg img/chair/1585.jpg img/chair/1589.jpg img/chair/1590.jpg img/chair/1593.jpg img/chair/1594.jpg img/chair/1595.jpg img/chair/1596.jpg img/chair/1597.jpg img/chair/1598.jpg img/chair/1601.jpg img/chair/1602.jpg img/chair/1603.jpg img/chair/1604.jpg img/chair/1605.jpg img/chair/1607.jpg img/chair/1609.jpg img/chair/1611.jpg img/chair/1612.jpg img/chair/1617.jpg img/chair/1618.jpg img/chair/1619.jpg img/chair/1620.jpg img/chair/1621.jpg img/chair/1622.jpg img/chair/1623.jpg img/chair/1624.jpg img/chair/1625.jpg img/chair/1627.jpg img/chair/1628.jpg img/chair/1629.jpg img/chair/1630.jpg img/chair/1631.jpg img/chair/1632.jpg img/chair/1635.jpg img/chair/1636.jpg img/chair/1637.jpg img/chair/1638.jpg img/chair/1641.jpg img/chair/1642.jpg img/chair/1646.jpg img/chair/1647.jpg img/chair/1651.jpg img/chair/1653.jpg img/chair/1654.jpg img/chair/1655.jpeg img/chair/1658.jpg img/chair/1659.jpg img/chair/1661.jpg img/chair/1662.jpg img/chair/1663.jpg img/chair/1664.jpg img/chair/1666.jpeg img/chair/1667.jpg img/chair/1669.jpg img/chair/1671.jpg img/chair/1673.jpg img/chair/1674.jpg img/chair/1675.jpg img/chair/1676.jpg img/chair/1677.jpeg img/chair/1678.jpg img/chair/1679.jpg img/chair/1680.jpg img/chair/1682.jpg img/chair/1683.jpg img/chair/1686.jpg img/chair/1687.jpg img/chair/1689.jpg img/chair/1690.jpg img/chair/1691.jpg img/chair/1695.jpg img/chair/1697.jpg img/chair/1698.jpg img/chair/1699.jpg img/chair/1700.jpg img/chair/1701.jpeg img/chair/1704.jpg img/chair/1705.jpg img/chair/1706.png img/chair/1708.jpg img/chair/1711.jpg img/chair/1713.jpg img/chair/1714.jpg img/chair/1715.jpg img/chair/1716.jpg img/chair/1717.jpg img/chair/1718.jpg img/chair/1720.jpg img/chair/1724.jpg img/chair/1728.jpg img/chair/1729.jpg img/chair/1730.jpg img/chair/1732.jpg img/chair/1734.jpg img/chair/1736.jpg img/chair/1737.jpg img/chair/1740.jpg img/chair/1741.jpg img/chair/1743.jpg img/chair/1745.png img/chair/1746.jpg img/chair/1747.jpg img/chair/1748.jpg img/chair/1749.jpeg img/chair/1751.jpg img/chair/1753.jpg img/chair/1754.jpg img/chair/1755.png img/chair/1756.jpg img/chair/1757.jpg img/chair/1759.jpg img/chair/1762.jpg img/chair/1763.jpg img/chair/1766.jpg img/chair/1771.jpg img/chair/1772.jpg img/chair/1773.jpg img/chair/1774.jpeg img/chair/1781.jpg img/chair/1782.jpg img/chair/1784.jpg img/chair/1785.jpg img/chair/1786.jpg img/chair/1791.jpg img/chair/1794.jpg img/chair/1795.jpg img/chair/1800.jpg img/chair/1801.jpg img/chair/1802.jpg img/chair/1807.jpg img/chair/1808.jpg img/chair/1809.jpg img/chair/1810.jpg img/chair/1811.jpg img/chair/1813.jpg img/chair/1814.jpg img/chair/1815.jpg img/chair/1817.jpg img/chair/1818.jpg img/chair/1819.jpg img/chair/1822.jpg img/chair/1823.jpg img/chair/1827.jpg img/chair/1828.jpg img/chair/1829.jpg img/chair/1830.jpg img/chair/1831.jpg img/chair/1833.jpg img/chair/1834.jpg img/chair/1840.jpg img/chair/1841.jpg img/chair/1842.jpg img/chair/1844.jpg img/chair/1848.jpg img/chair/1850.jpg img/chair/1851.jpg img/chair/1854.jpg img/chair/1855.jpg img/chair/1856.jpg img/chair/1858.jpg img/chair/1859.jpg img/chair/1860.jpg img/chair/1862.jpg img/chair/1863.jpg img/chair/1865.jpg img/chair/1866.jpg img/chair/1869.jpg img/chair/1870.jpg img/chair/1871.jpg img/chair/1872.jpg img/chair/1875.jpg img/chair/1876.jpg img/chair/1879.jpg img/chair/1881.jpg img/chair/1884.jpg img/chair/1885.jpg img/chair/1886.jpg img/chair/1887.jpg img/chair/1888.jpg img/chair/1889.jpg img/chair/1890.jpg img/chair/1891.jpg img/chair/1892.jpg img/chair/1893.jpg img/chair/1894.jpg img/chair/1895.jpg img/chair/1896.jpg img/chair/1897.jpg img/chair/1898.jpg img/chair/1899.jpg img/chair/1900.jpg img/chair/1901.jpg img/chair/1903.png img/chair/1904.jpg img/chair/1905.jpg img/chair/1906.jpeg img/chair/1907.jpg img/chair/1909.png img/chair/1910.png img/chair/1911.jpg img/chair/1912.jpg img/chair/1914.jpg img/chair/1915.jpg img/chair/1916.jpg img/chair/1918.jpg img/chair/1919.jpg img/chair/1920.jpg img/chair/1921.jpg img/chair/1922.jpg img/chair/1923.jpg img/chair/1924.jpg img/chair/1925.jpg img/chair/1926.jpg img/chair/1927.jpg img/chair/1928.jpg img/chair/1929.jpg img/chair/1930.jpg img/chair/1931.jpg img/chair/1932.jpg img/chair/1933.jpg img/chair/1934.jpg img/chair/1937.jpg img/chair/1938.jpg img/chair/1941.jpg img/chair/1942.jpg img/chair/1943.jpg img/chair/1944.jpg img/chair/1945.jpg img/chair/1949.jpg img/chair/1952.jpg img/chair/1954.jpg img/chair/1956.jpg img/chair/1960.jpg img/chair/1961.jpg img/chair/1963.jpg img/chair/1965.jpg img/chair/1966.jpg img/chair/1968.jpg img/chair/1972.jpg img/chair/1973.jpg img/chair/1975.jpg img/chair/1976.jpg img/chair/1977.jpg img/chair/1978.jpg img/chair/1980.jpg img/chair/1981.jpg img/chair/1982.jpg img/chair/1983.jpeg img/chair/1986.jpg img/chair/1987.jpg img/chair/1988.jpg img/chair/1989.jpg img/chair/1992.jpg img/chair/1993.jpg img/chair/1994.jpg img/chair/1996.jpg img/chair/1998.jpg img/chair/1999.jpg img/chair/2000.jpg img/chair/2001.jpg img/chair/2002.jpg img/chair/2007.jpg img/chair/2009.jpg img/chair/2011.jpg img/chair/2014.jpg img/chair/2015.jpg img/chair/2019.jpg img/chair/2020.jpeg img/chair/2021.jpg img/chair/2022.jpg img/chair/2023.jpg img/chair/2024.jpg img/chair/2025.jpg img/chair/2026.jpg img/chair/2027.jpg img/chair/2029.jpg img/chair/2030.jpg img/chair/2031.jpg img/chair/2032.jpg img/chair/2033.jpg img/chair/2038.jpg img/chair/2040.jpg img/chair/2041.jpg img/chair/2043.jpg img/chair/2046.jpg img/chair/2047.jpg img/chair/2048.jpg img/chair/2049.jpg img/chair/2050.jpg img/chair/2051.jpg img/chair/2055.jpg img/chair/2056.jpg img/chair/2057.jpg img/chair/2060.jpg img/chair/2061.png img/chair/2063.jpg img/chair/2066.jpg img/chair/2068.jpg img/chair/2069.jpg img/chair/2073.jpg img/chair/2074.jpg img/chair/2076.jpg img/chair/2077.jpg img/chair/2079.jpg img/chair/2080.jpg img/chair/2081.jpg img/chair/2083.jpg img/chair/2084.jpg img/chair/2087.jpg img/chair/2088.jpg img/chair/2089.png img/chair/2090.jpg img/chair/2091.jpg img/chair/2092.jpg img/chair/2094.jpg img/chair/2096.jpg img/chair/2100.png img/chair/2102.jpg img/chair/2104.png img/chair/2105.png img/chair/2106.jpg img/chair/2113.jpg img/chair/2114.jpg img/chair/2115.jpg img/chair/2116.jpg img/chair/2117.jpg img/chair/2118.jpg img/chair/2119.jpg img/chair/2120.jpg img/chair/2123.jpg img/chair/2124.jpg img/chair/2125.jpg img/chair/2126.jpg img/chair/2127.jpg img/chair/2129.jpg img/chair/2130.jpg img/chair/2131.jpg img/chair/2132.jpg img/chair/2134.jpg img/chair/2135.jpg img/chair/2136.jpg img/chair/2137.jpg img/chair/2143.jpg img/chair/2145.jpg img/chair/2149.jpg img/chair/2152.jpg img/chair/2157.jpg img/chair/2159.jpg img/chair/2160.jpg img/chair/2161.jpg img/chair/2163.jpg img/chair/2164.jpg img/chair/2165.jpg img/chair/2167.jpg img/chair/2170.png img/chair/2172.jpg img/chair/2174.jpg img/chair/2175.jpg img/chair/2181.jpg img/chair/2192.jpg img/chair/2195.jpg img/chair/2196.jpg img/chair/2197.png img/chair/2202.jpg img/chair/2203.jpg img/chair/2204.jpg img/chair/2206.jpg img/chair/2217.jpg img/chair/2220.jpg img/chair/0011.png img/chair/2323.jpg img/chair/2324.jpg img/chair/2326.jpg img/chair/2327.jpg img/chair/2328.jpg img/chair/2329.jpg img/chair/2330.jpg img/chair/2331.jpg img/chair/2332.jpg img/chair/2333.jpg img/chair/2334.jpg img/chair/2335.jpg img/chair/2336.jpg img/chair/2337.jpg img/chair/2338.jpg img/chair/2339.jpg img/chair/2340.jpg img/chair/2341.jpg img/chair/2343.jpg img/chair/2344.jpg img/chair/2346.jpg img/chair/2347.png img/chair/2348.jpg img/chair/2349.png img/chair/2350.jpg img/chair/2351.jpg img/chair/2353.jpg img/chair/2354.jpg img/chair/2355.jpg img/chair/2356.jpg img/chair/2357.jpg img/chair/2358.jpg img/chair/2359.jpg img/chair/2361.jpg img/chair/2363.jpg img/chair/2366.jpg img/chair/2367.jpg img/chair/2369.jpg img/chair/2371.jpg img/chair/2374.jpg img/chair/2376.jpg img/chair/2378.jpg img/chair/2379.jpg img/chair/2381.jpg img/chair/2382.jpg img/chair/2383.jpg img/chair/2385.jpg img/chair/2386.jpg img/chair/2389.jpg img/chair/2392.jpg img/chair/2393.jpg img/chair/2394.jpg img/chair/2395.jpg img/chair/2396.jpg img/chair/2397.jpg img/chair/2398.jpg img/chair/2399.jpg img/chair/2400.jpg img/chair/2401.jpg img/chair/2404.jpg img/chair/2407.jpg img/chair/2408.jpg img/chair/2409.jpg img/chair/2411.png img/chair/2415.jpg img/chair/2416.jpg img/chair/2417.jpg img/chair/2418.jpg img/chair/2421.jpg img/chair/2422.jpg img/chair/2423.jpg img/chair/2426.jpg img/chair/2427.jpg img/chair/2428.jpg img/chair/2429.jpg img/chair/2430.jpg img/chair/2431.jpg img/chair/2433.jpg img/chair/2434.jpg img/chair/2435.jpg img/chair/2436.jpg img/chair/2439.jpg img/chair/2440.jpg img/chair/2441.jpg img/chair/2442.jpg img/chair/2443.jpg img/chair/2449.jpg img/chair/2450.jpg img/chair/2451.jpg img/chair/2452.jpg img/chair/2453.jpg img/chair/2454.jpg img/chair/2455.jpg img/chair/2456.jpg img/chair/2458.jpg img/chair/2459.jpg img/chair/2460.jpg img/chair/2461.jpg img/chair/2462.jpg img/chair/2463.jpg img/chair/2464.jpg img/chair/2467.jpg img/chair/2468.jpg img/chair/2469.jpg img/chair/2470.jpg img/chair/2471.jpg img/chair/2472.jpg img/chair/2473.jpg img/chair/2474.jpg img/chair/2475.jpg img/chair/2476.jpg img/chair/2477.jpg img/chair/2478.jpg img/chair/2479.png img/chair/2480.jpg img/chair/2481.jpg img/chair/2482.jpg img/chair/2483.jpg img/chair/2485.jpg img/chair/2486.jpg img/chair/2487.jpg img/chair/2489.jpeg img/chair/2490.jpg img/chair/2491.jpg img/chair/2494.jpg img/chair/2495.jpg img/chair/2496.jpg img/chair/2497.jpg img/chair/2500.jpg img/chair/2501.jpg img/chair/2502.jpg img/chair/2504.jpg img/chair/2505.jpg img/chair/2507.jpg img/chair/2508.jpg img/chair/2509.jpg img/chair/2510.jpg img/chair/2511.jpg img/chair/2513.jpg img/chair/2514.jpg img/chair/2515.jpg img/chair/2517.jpg img/chair/2518.jpg img/chair/2519.jpg img/chair/2523.jpg img/chair/2524.jpg img/chair/2525.jpg img/chair/2526.jpg img/chair/2527.jpg img/chair/2528.jpg img/chair/2530.jpg img/chair/2532.jpg img/chair/2534.jpg img/chair/2535.jpg img/chair/2536.jpg img/chair/2539.jpg img/chair/2540.jpg img/chair/2541.jpg img/chair/2542.jpg img/chair/2543.jpg img/chair/2545.jpg img/chair/2546.jpg img/chair/2547.jpg img/chair/2551.jpg img/chair/2553.jpg img/chair/2555.jpg img/chair/2556.jpg img/chair/2557.jpg img/chair/2558.jpg img/chair/2560.jpg img/chair/2561.jpg img/chair/2562.jpg img/chair/2563.jpg img/chair/2564.jpg img/chair/2565.png img/chair/2566.jpg img/chair/2567.jpeg img/chair/2568.jpg img/chair/2569.jpg img/chair/2571.jpg img/chair/2574.jpg img/chair/2575.jpg img/chair/2577.jpg img/chair/2578.jpg img/chair/2579.jpg img/chair/2581.jpg img/chair/2582.jpeg img/chair/2583.jpg img/chair/2584.jpg img/chair/2585.jpg img/chair/2587.jpg img/chair/2588.jpg img/chair/2590.png img/chair/2591.jpg img/chair/2592.jpg img/chair/2593.jpg img/chair/2701.png img/chair/2703.jpg img/chair/2704.jpg img/chair/2705.jpg img/chair/2706.jpg img/chair/2708.jpg img/chair/2709.jpg img/chair/2710.jpg img/chair/2711.jpg img/chair/2712.jpg img/chair/2714.jpg img/chair/2715.jpg img/chair/2716.jpg img/chair/2718.jpg img/chair/2719.jpg img/chair/2721.jpg img/chair/2722.jpeg img/chair/2723.jpg img/chair/2726.jpg img/chair/2727.jpg img/chair/2728.jpg img/chair/2731.jpg img/chair/2732.jpg img/chair/2733.png img/chair/2734.jpg img/chair/2736.jpg img/chair/2738.jpg img/chair/2739.jpg img/chair/2740.jpg img/chair/2741.jpg img/chair/2742.jpg img/chair/2743.jpg img/chair/2744.jpg img/chair/2745.jpg img/chair/2746.jpg img/chair/2747.jpg img/chair/2748.jpg img/chair/2751.jpg img/chair/2752.png img/chair/0019.png img/chair/0040.png img/chair/0053.png img/chair/0055.png img/chair/0058.png img/chair/0067.png img/chair/0073.png img/chair/2795.jpg img/chair/2796.jpg img/chair/2797.jpg img/chair/2798.jpg img/chair/2800.jpg img/chair/2801.jpg img/chair/2803.jpg img/chair/2804.jpg img/chair/2806.jpg img/chair/2807.jpg img/chair/2808.jpg img/chair/2811.jpg img/chair/2815.jpg img/chair/2816.jpg img/chair/2818.jpg img/chair/2820.jpg img/chair/2821.jpg img/chair/2823.jpg img/chair/2824.jpg img/chair/2826.jpg img/chair/2827.jpg img/chair/2828.jpg img/chair/2829.jpg img/chair/2830.jpg img/chair/2831.jpg img/chair/0041.png img/chair/0046.png img/chair/0066.png img/chair/0071.png img/chair/0072.png img/chair/0077.png img/chair/0080.png img/chair/0082.png img/chair/0085.png img/chair/0091.png img/chair/0092.png img/chair/0105.png img/chair/0107.png img/chair/0108.png img/chair/0110.png img/chair/0114.png img/chair/0115.png img/chair/2833.jpg img/chair/2834.jpg img/chair/2836.jpg img/chair/2837.jpg img/chair/2838.jpg img/chair/2839.jpg img/chair/2840.jpg img/chair/2841.jpg img/chair/2842.jpg img/chair/2843.jpg img/chair/2844.jpg img/chair/2845.jpg img/chair/2846.jpg img/chair/2847.jpg img/chair/2848.jpg img/chair/2852.jpg img/chair/2853.jpg img/chair/2854.jpg img/chair/2855.jpg img/chair/2856.jpg img/chair/2857.jpg img/chair/2859.jpg img/chair/2860.jpg img/chair/2861.jpg img/chair/2862.jpg img/chair/2863.jpg img/chair/2864.jpg img/chair/2865.jpg img/chair/2866.jpg img/chair/2867.jpg img/chair/2869.jpg img/chair/2871.jpg img/chair/2872.jpg img/chair/2873.jpg img/chair/2874.jpg img/chair/2875.jpg img/chair/2877.jpg img/chair/2879.jpg img/chair/2880.jpg img/chair/2881.jpg img/chair/2882.jpg img/chair/2884.jpg img/chair/2885.jpg img/chair/2886.jpg img/chair/2890.jpg img/chair/2892.jpg img/chair/2894.jpg img/chair/2895.jpg img/chair/2897.jpg img/chair/2899.jpg img/chair/2900.jpg img/chair/2901.jpg img/chair/2902.jpg img/chair/2903.jpg img/chair/2904.jpg img/chair/2905.png img/chair/2907.jpg img/chair/2908.jpg img/chair/2909.jpg img/chair/2911.jpg img/chair/2912.jpg img/chair/2916.jpg img/chair/2918.jpg img/chair/2920.jpg img/chair/2921.jpg img/chair/2922.jpg img/chair/2923.jpg img/chair/2928.jpg img/chair/2929.jpg img/chair/2930.jpg img/chair/2931.jpg img/chair/2932.jpg img/chair/2933.jpg img/chair/2935.jpg img/chair/2937.jpg img/chair/2939.jpg img/chair/2942.jpg img/chair/2943.jpg img/chair/2944.jpg img/chair/2945.png img/chair/2946.jpg img/chair/2949.jpg img/chair/2950.jpg img/chair/2951.jpg img/chair/2952.jpg img/chair/2955.jpg img/chair/2956.jpg img/chair/2957.jpg img/chair/2958.jpg img/chair/2960.jpg img/chair/2961.jpg img/chair/2962.jpg img/chair/2966.jpg img/chair/2967.jpg img/chair/2968.jpg img/chair/2969.jpg img/chair/2972.jpg img/chair/2973.jpg img/chair/2974.jpg img/chair/2975.png img/chair/2978.jpg img/chair/2979.jpg img/chair/2980.jpg img/chair/2982.jpg img/chair/2983.jpg img/chair/2984.jpg img/chair/2989.jpg img/chair/2991.jpg img/chair/2992.jpg img/chair/2993.jpg img/chair/2994.jpg img/chair/2995.jpg img/chair/2996.jpg img/chair/2998.jpg img/chair/2999.jpg img/chair/3003.jpg img/chair/3004.jpg img/chair/3006.jpg img/chair/3007.jpg img/chair/3008.jpg img/chair/3009.jpg img/chair/3010.jpg img/chair/3011.jpg img/chair/3012.jpg img/chair/3013.jpg img/chair/3014.jpg img/chair/3015.jpg img/chair/3016.jpg img/chair/3017.jpg img/chair/3020.jpg img/chair/3021.jpg img/chair/3023.jpg img/chair/3025.jpg img/chair/3026.jpg img/chair/3027.jpg img/chair/3029.jpg img/chair/3031.jpg img/chair/3032.jpg img/chair/3033.jpg img/chair/3034.jpg img/chair/3035.jpg img/chair/3036.jpg img/chair/3037.jpg img/chair/3038.jpg img/chair/3040.jpg img/chair/3041.jpg img/chair/3043.jpg img/chair/3044.jpg img/chair/3046.jpg img/chair/3047.jpg img/chair/3048.jpg img/chair/3050.jpg img/chair/3051.jpg img/chair/3052.jpg img/chair/3053.jpg img/chair/3054.jpg img/chair/3055.jpg img/chair/3056.jpg img/chair/3057.jpg img/chair/3058.jpg img/chair/3059.jpg img/chair/3060.jpg img/chair/3062.jpg img/chair/3063.jpg img/chair/3064.jpg img/chair/3065.jpg img/chair/3066.jpg img/chair/3068.jpg img/chair/3069.jpg img/chair/3074.jpg img/chair/3075.jpg img/chair/3076.jpg img/chair/3077.jpg img/chair/3079.jpg img/chair/3081.jpg img/chair/3083.jpg img/chair/3086.jpg img/chair/3087.jpg img/chair/3088.jpg img/chair/3091.jpg img/chair/3092.jpg img/chair/3094.jpg img/chair/3095.jpg img/chair/3097.jpg img/chair/3098.jpg img/chair/3099.jpg img/chair/3100.jpg img/chair/3101.jpg img/chair/3102.jpg img/chair/3103.jpg img/chair/3104.jpg img/chair/3105.jpg img/chair/3106.jpg img/chair/3107.jpg img/chair/3108.jpg img/chair/3109.jpg img/chair/3110.jpg img/chair/3111.jpg img/chair/3112.jpeg img/chair/3113.jpg img/chair/3114.jpg img/chair/3115.jpg img/chair/3116.jpg img/chair/3119.jpg img/chair/3120.jpg img/chair/3121.jpg img/chair/3123.jpg img/chair/3124.jpg img/chair/3126.jpg img/chair/3128.jpg img/chair/3129.jpg img/chair/3133.jpg img/chair/3134.png img/chair/3135.jpg img/chair/3136.jpg img/chair/3137.jpg img/chair/3140.jpg img/chair/3142.jpg img/chair/3143.jpg img/chair/3144.jpg img/chair/3145.jpg img/chair/3146.jpg img/chair/3149.jpg img/chair/3150.jpg img/chair/3152.jpg img/chair/3153.jpg img/chair/3154.jpg img/chair/3155.jpg img/chair/3157.jpg img/chair/3158.jpg img/chair/3161.jpg img/chair/3162.jpg img/chair/3164.jpg img/chair/3165.jpg img/chair/3166.jpg img/chair/3168.jpg img/chair/3169.jpg img/chair/3170.jpg img/chair/3171.jpg img/chair/3172.jpg img/chair/3173.jpg img/chair/3174.jpg img/chair/3175.jpg img/chair/3177.jpg img/chair/3180.jpg img/chair/3181.jpg img/chair/3182.jpg img/chair/3184.jpg img/chair/3185.jpg img/chair/3186.jpg img/chair/3187.jpg img/chair/3188.jpg img/chair/3189.jpg img/chair/3191.jpg img/chair/3192.jpg img/chair/3193.jpg img/chair/3194.jpg img/chair/3197.jpg img/chair/3198.jpg img/chair/3199.jpg img/chair/3200.jpg img/chair/3201.jpg img/chair/3202.jpg img/chair/3203.jpg img/chair/3204.jpg img/chair/3206.jpg img/chair/3207.jpg img/chair/3209.jpg img/chair/3211.jpg img/chair/3212.jpg img/chair/3213.jpg img/chair/3216.jpg img/chair/3314.jpg img/chair/3315.jpg img/chair/3316.jpg img/chair/3317.jpg img/chair/3318.jpg img/chair/3319.jpg img/chair/3320.jpg img/chair/3321.jpg img/chair/3322.jpg img/chair/3324.jpg img/chair/3325.jpg img/chair/3326.jpg img/chair/3328.jpg img/chair/3330.jpg img/chair/3331.jpg img/chair/3333.jpg img/chair/3335.jpg img/chair/3337.jpeg img/chair/3338.jpg img/chair/3340.jpg img/chair/3342.jpg img/chair/3343.jpg img/chair/0111.png img/chair/3344.jpg img/chair/3345.jpg img/chair/3346.jpg img/chair/3347.jpg img/chair/3348.jpg img/chair/3349.jpg img/chair/3350.jpg img/chair/3351.jpg img/chair/3352.jpg img/chair/3354.jpg img/chair/3355.jpg img/chair/3356.jpg img/chair/3357.jpg img/chair/3358.jpg img/chair/3359.jpg img/chair/3360.jpg img/chair/3361.jpg img/chair/3362.jpg img/chair/3363.jpg img/chair/3364.jpg img/chair/3367.jpg img/chair/3370.jpg img/chair/3371.jpg img/chair/3372.jpg img/chair/3373.jpg img/chair/3374.jpg img/chair/3375.jpg img/chair/3376.jpg img/chair/3377.jpg img/chair/3379.jpg img/chair/0027.png img/chair/3382.jpg img/chair/3384.jpg img/chair/3385.jpg img/chair/3389.jpg img/chair/3394.jpg img/chair/3396.jpg img/chair/3398.jpg img/chair/3399.jpg img/chair/3401.jpg img/chair/3403.jpg img/chair/3404.jpg img/chair/3405.jpg img/chair/3408.jpg img/chair/3409.jpg img/chair/3410.jpg img/chair/3411.jpg img/chair/3412.jpg img/chair/3413.jpeg img/chair/3414.jpg img/chair/3415.jpg img/chair/3416.jpg img/chair/3417.jpg img/chair/3420.jpg img/chair/3422.jpg img/chair/3423.jpg img/chair/3424.jpg img/chair/3425.jpg img/chair/3426.jpg img/chair/3427.jpg img/chair/3429.jpg img/chair/3430.jpg img/chair/3431.jpg img/chair/3435.jpg img/chair/3437.jpg img/chair/3439.jpg img/chair/3440.jpg img/chair/3441.png img/chair/3446.jpg img/chair/3447.jpg img/chair/3450.jpg img/chair/3452.jpg img/chair/3453.jpg img/chair/3454.jpg img/chair/3457.jpg img/chair/3460.jpg img/chair/3461.jpg img/chair/3463.jpg img/chair/3466.jpg img/chair/3468.jpg img/chair/3469.png img/chair/3472.png img/chair/3475.jpg img/chair/3476.jpg img/chair/3477.jpg img/chair/3478.jpg img/chair/3479.jpg img/chair/3480.jpg img/chair/3481.jpg img/chair/3482.jpg img/chair/3483.jpg img/chair/3484.jpg img/chair/3485.jpg img/chair/3488.jpg img/chair/3489.jpg img/chair/3490.jpg img/chair/3491.jpg img/chair/3492.jpg img/chair/0083.png img/chair/3494.jpg img/chair/3495.jpg img/chair/3496.jpg img/chair/3498.jpg img/chair/3499.jpg img/chair/3501.jpg img/chair/3504.jpg img/chair/3506.jpg img/chair/3508.jpg img/chair/3511.jpg img/chair/3514.jpg img/chair/3515.jpg img/chair/3517.jpg img/chair/3518.jpg img/chair/3524.jpg img/chair/3525.jpg img/chair/3527.jpg img/chair/3529.jpg img/chair/3530.jpg img/chair/3532.jpg img/chair/3536.jpg img/chair/3537.jpg img/chair/3539.jpg img/chair/3540.jpg img/chair/3542.jpg img/chair/3543.jpg img/chair/3544.jpg img/chair/3545.jpg img/chair/3546.jpg img/chair/3547.jpg img/chair/3549.jpg img/chair/3550.jpg img/chair/3552.jpg img/chair/3557.jpg img/chair/3560.jpg img/chair/3561.jpg img/chair/3562.jpg img/chair/3564.jpg img/chair/3567.jpg img/chair/3572.jpg img/chair/3573.jpg img/chair/3574.jpg img/chair/3577.jpg img/chair/3579.jpg img/chair/3580.jpg img/chair/3581.jpg img/chair/3583.jpg img/chair/3584.jpg img/chair/3585.jpeg img/chair/3588.jpg img/chair/3592.png img/chair/3593.jpg img/chair/3594.jpg img/chair/3598.jpg img/chair/3599.jpg img/chair/3601.jpg img/chair/3602.jpg img/chair/3603.jpeg img/chair/3605.jpg img/chair/3606.jpeg img/chair/3607.jpg img/chair/3610.jpg img/chair/3612.jpg img/chair/3615.jpg img/chair/3617.tiff img/chair/3618.jpg img/chair/3619.jpg img/chair/3621.jpg img/chair/3625.jpg img/chair/3627.jpg img/chair/3630.jpg img/chair/3634.jpg img/chair/3635.jpg img/chair/3637.jpg img/chair/3638.jpg img/chair/3639.jpg img/chair/3641.jpg img/chair/3642.jpg img/chair/3644.jpg img/chair/3646.jpg img/chair/3647.jpg img/chair/3648.jpg img/chair/3651.jpg img/chair/3657.jpg img/chair/3660.jpg img/chair/3662.jpg img/chair/3663.jpg img/chair/3665.jpg img/chair/3666.jpg img/chair/3667.jpg img/chair/3668.jpg img/chair/3670.jpg img/chair/3671.jpg img/chair/3676.png img/chair/0016.png img/chair/0033.png img/chair/0044.png img/chair/0045.png img/chair/0093.png img/chair/3679.jpg img/chair/3681.jpg img/chair/3682.jpg img/chair/3683.jpg img/chair/3684.jpg img/chair/3687.jpg img/chair/3688.jpg img/chair/3689.jpg img/chair/3690.jpg img/chair/3694.jpeg img/chair/3695.jpg img/chair/3696.jpg img/chair/3697.jpg img/chair/3698.jpg img/chair/3699.jpg img/chair/3700.jpg img/chair/3701.jpg img/chair/3702.jpg img/chair/3703.jpg img/chair/3704.jpg img/chair/3705.jpg img/chair/3707.jpg img/chair/3709.jpg img/chair/3710.jpg img/chair/3711.jpg img/chair/3712.jpg img/chair/3713.jpg img/chair/3718.jpg img/chair/3719.jpg img/chair/3720.jpg img/chair/3721.jpg img/chair/3722.jpg img/chair/3723.jpg img/chair/3725.jpg img/chair/3728.jpg img/chair/3729.jpg img/chair/3730.jpg img/chair/3731.jpg img/chair/3732.jpg img/chair/3733.jpg img/chair/3734.jpg img/chair/3736.jpeg img/chair/3737.jpg img/chair/3738.jpg img/chair/3739.jpg img/chair/3740.jpg img/chair/3742.jpg img/chair/3745.jpg img/chair/3746.jpg img/chair/3747.jpg img/chair/3748.jpg img/chair/3749.jpg img/chair/3750.jpg img/chair/3752.jpg img/chair/3754.jpg img/chair/3755.jpg img/chair/3756.jpg img/chair/3757.jpg img/chair/3758.jpg img/chair/3759.jpg img/chair/3760.jpg img/chair/3763.jpg img/chair/3766.jpg img/chair/3767.jpg img/chair/3768.jpg img/chair/3770.jpg img/chair/3771.jpg img/chair/3772.jpg img/chair/3773.jpg img/chair/3774.jpg img/chair/3775.jpg img/chair/3776.jpg img/chair/3777.jpg img/chair/3779.jpg img/chair/3780.jpg img/chair/3781.jpg img/chair/3782.jpg img/chair/3783.jpg img/chair/3784.jpg img/chair/3786.jpg img/chair/3787.jpg img/chair/3788.jpg img/chair/3791.jpg img/chair/3792.jpg img/chair/3793.jpg img/chair/3794.jpg img/chair/3795.jpg img/chair/3797.jpg img/chair/3799.jpg img/chair/3800.jpg img/chair/3802.jpg img/chair/3803.jpg img/chair/3804.jpg img/chair/3805.jpeg img/chair/3806.jpg img/chair/3807.jpg img/chair/3808.jpg img/chair/3809.jpg img/chair/3810.jpg img/chair/3811.jpg img/chair/3812.jpg img/chair/3813.jpg img/chair/3814.jpg img/chair/3815.jpg img/chair/3816.jpg img/chair/3819.jpg img/chair/3821.jpg img/chair/3822.jpg img/chair/3823.jpg img/chair/3824.jpg img/chair/3825.jpg img/chair/3826.jpg img/chair/3827.jpg img/chair/3828.jpg img/chair/3829.jpg img/chair/3830.jpg img/chair/3832.jpg img/chair/3833.jpg img/chair/3834.jpg img/chair/3838.jpg img/chair/3839.jpg img/chair/0118.jpg img/chair/0119.jpg img/chair/0120.jpg img/chair/0121.jpg img/chair/0122.jpg img/chair/0124.jpg img/chair/0126.jpg img/chair/0127.jpg img/chair/0129.jpg img/chair/0130.jpg img/chair/0132.jpg img/chair/0133.jpg img/chair/0134.jpg img/chair/0135.jpg img/chair/0136.jpg img/chair/0137.jpg img/chair/0138.jpg img/chair/0141.jpg img/chair/0142.jpg img/chair/0143.jpg img/chair/0144.jpg img/chair/0145.jpg img/chair/0146.jpg img/chair/0147.jpg img/chair/0148.jpg img/chair/0150.jpg img/chair/0151.jpg img/chair/0152.jpg img/chair/0153.jpg img/chair/0154.jpg img/chair/0155.jpg img/chair/0156.jpg img/chair/0157.jpg img/chair/0158.jpg img/chair/0159.jpg img/chair/0160.jpg img/chair/0161.jpg img/chair/0162.jpg img/chair/0163.jpg img/chair/0164.jpg img/chair/0165.jpg img/chair/0166.jpg img/chair/0167.jpg img/chair/0168.jpg img/chair/0169.jpg img/chair/0170.jpg img/chair/0171.jpg img/chair/0172.jpg img/chair/0173.jpg img/chair/0174.jpg img/chair/0175.jpg img/chair/0176.jpg img/chair/0177.jpg img/chair/0178.jpg img/chair/0179.jpg img/chair/0180.jpg img/chair/0181.jpg img/chair/0182.jpg img/chair/0183.jpg img/chair/0184.jpg img/chair/0185.jpg img/chair/0186.jpg img/chair/0187.jpg img/chair/0188.jpg img/chair/0189.jpg img/chair/0190.jpg img/chair/0191.jpg img/chair/0192.jpg img/chair/0193.jpg img/chair/0194.jpg img/chair/0195.jpg img/chair/0196.jpg img/chair/0197.jpg img/chair/0198.jpg img/chair/0199.jpg img/chair/0200.jpg img/chair/0201.jpg img/chair/0202.jpg img/chair/0203.jpg img/chair/0204.jpg img/chair/0205.jpg img/chair/0206.jpg img/chair/0207.jpg img/chair/0208.jpg img/chair/0209.jpg img/chair/0210.jpg img/chair/0211.jpg img/chair/0212.jpg img/chair/0213.jpg img/chair/0214.jpg img/chair/0215.jpg img/chair/0216.jpg img/chair/0217.jpg img/chair/0218.jpg img/chair/0219.jpg img/chair/0220.jpg img/chair/0222.jpg img/chair/0223.jpg img/chair/0224.jpg img/chair/0225.jpg img/chair/0226.jpg img/chair/0227.jpg img/chair/0228.jpg img/chair/0229.jpg img/chair/0230.jpg img/chair/0231.jpg img/chair/0232.jpg img/chair/0233.jpg img/chair/0234.jpg img/chair/0235.jpg img/chair/0236.jpg img/chair/0238.jpg img/chair/0239.jpg img/chair/0240.jpg img/chair/0241.jpg img/chair/0242.jpg img/chair/0243.jpg img/chair/0244.jpg img/chair/0245.jpg img/chair/0246.jpg img/chair/0247.jpg img/chair/0248.jpg img/chair/0249.jpg img/chair/0250.jpg img/chair/0251.jpg img/chair/0252.jpg img/chair/0253.jpg img/chair/0254.jpg img/chair/0255.jpg img/chair/0256.jpg img/chair/0257.jpg img/chair/0258.jpg img/chair/0259.jpg img/chair/0260.jpg img/chair/0261.jpg img/chair/0262.jpg img/chair/0263.jpg img/chair/0264.jpg img/chair/0265.jpg img/chair/0266.jpg img/chair/0267.jpg img/chair/0268.jpg img/chair/0269.jpg img/chair/0270.jpg img/chair/0271.jpg img/chair/0272.jpg img/chair/0273.jpg img/chair/0274.jpg img/chair/0275.jpg img/chair/0276.jpg img/chair/0277.jpg img/chair/0278.jpg img/chair/0279.jpg img/chair/0280.jpg img/chair/0281.jpg img/chair/0282.jpg img/chair/0283.jpg img/chair/0284.jpg img/chair/0285.jpg img/chair/0286.jpg img/chair/0287.jpg img/chair/0288.jpg img/chair/0289.jpg img/chair/0290.jpg img/chair/0291.jpg img/chair/0292.jpg img/chair/0293.jpg img/chair/0294.jpg img/chair/0295.jpg img/chair/0296.jpg img/chair/0297.jpg img/chair/0298.jpg img/chair/0299.jpg img/chair/0300.jpg img/chair/0301.jpg img/chair/0302.jpg img/chair/0303.jpg img/chair/0304.jpg img/chair/0305.jpg img/chair/0306.jpg img/chair/0307.jpg img/chair/0308.jpg img/chair/0309.jpg img/chair/0311.jpg img/chair/0312.jpg img/chair/0314.jpg img/chair/0315.jpg img/chair/0316.jpg img/chair/0317.jpg img/chair/0318.jpg img/chair/0319.jpg img/chair/0320.jpg img/chair/0321.jpg img/chair/0322.jpg img/chair/0323.jpg img/chair/0324.jpg img/chair/0325.jpg img/chair/0326.jpg img/chair/0327.jpg img/chair/0328.jpg img/chair/0329.jpg img/chair/0330.jpg img/chair/0331.jpg img/chair/0332.jpg img/chair/0333.jpg img/chair/0334.jpg img/chair/0335.jpg img/chair/0336.jpg img/chair/0337.jpg img/chair/0338.jpg img/chair/0339.jpg img/chair/0340.jpg img/chair/0341.jpg img/chair/0342.jpg img/chair/0343.jpg img/chair/0344.jpg img/chair/0345.jpg img/chair/0346.jpg img/chair/0347.jpg img/chair/0348.jpg img/chair/0349.jpg img/chair/0350.jpg img/chair/0351.jpg img/chair/0352.jpg img/chair/0353.jpg img/chair/0354.jpg img/chair/0355.jpg img/chair/0356.jpg img/chair/0357.jpg img/chair/0358.jpg img/chair/0359.jpg img/chair/0360.jpg img/chair/0361.jpg img/chair/0362.jpg img/chair/0363.jpg img/chair/0364.jpg img/chair/0365.jpg img/chair/0366.jpg img/chair/0367.jpg img/chair/0368.jpg img/chair/0369.jpg img/chair/0370.jpg img/chair/0371.jpg img/chair/0372.jpg img/chair/0373.jpg img/chair/0374.jpg img/chair/0375.jpg img/chair/0376.jpg img/chair/0377.jpg img/chair/0378.jpg img/chair/0379.jpg img/chair/0380.jpg img/chair/0381.jpg img/chair/0382.jpg img/chair/0383.jpg img/chair/0384.jpg img/chair/0385.jpg img/chair/0386.jpg img/chair/0387.jpg img/chair/0388.jpg img/chair/0389.jpg img/chair/0390.jpg img/chair/0391.jpg img/chair/0392.jpg img/chair/0393.jpg img/chair/0394.jpg img/chair/0395.jpg img/chair/0396.jpg img/chair/0397.jpg img/chair/0399.jpg img/chair/0400.jpg img/chair/0401.jpg img/chair/0402.jpg img/chair/0403.jpg img/chair/0404.jpg img/chair/0405.jpg img/chair/0406.jpg img/chair/0407.jpg img/chair/0408.jpg img/chair/0409.jpg img/chair/0410.jpg img/chair/0411.jpg img/chair/0412.jpg img/chair/0413.jpg img/chair/0414.jpg img/chair/0415.jpg img/chair/0416.jpg img/chair/0417.jpg img/chair/0418.jpg img/chair/0419.jpg img/chair/0420.jpg img/chair/0421.jpg img/chair/0422.jpg img/chair/0423.jpg img/chair/0424.jpg img/chair/0425.jpg img/chair/0426.jpg img/chair/0427.jpg img/chair/0428.jpg img/chair/0429.jpg img/chair/0430.jpg img/chair/0431.jpg img/chair/0432.jpg img/chair/0433.jpg img/chair/0434.jpg img/chair/0435.jpg img/chair/0436.jpg img/chair/0437.jpg img/chair/0438.jpg img/chair/0439.jpg img/chair/0440.jpg img/chair/0441.jpg img/chair/0442.jpg img/chair/0443.jpg img/chair/0444.jpg img/chair/0445.jpg img/chair/0446.jpg img/chair/0447.jpg img/chair/0448.jpg img/chair/0449.jpg img/chair/0450.jpg img/chair/0451.jpg img/chair/0452.jpg img/chair/0453.jpg img/chair/0454.jpg img/chair/0455.jpg img/chair/0456.jpg img/chair/0457.jpg img/chair/0458.jpg img/chair/0459.jpg img/chair/0460.jpg img/chair/0461.jpg img/chair/0462.jpg img/chair/0463.jpg img/chair/0464.jpg img/chair/0465.jpg img/chair/0466.jpg img/chair/0467.jpg img/chair/0468.jpg img/chair/0469.jpg img/chair/0470.jpg img/chair/0471.jpg img/chair/0472.jpg img/chair/0473.jpg img/chair/0474.jpg img/chair/0475.jpg img/chair/0476.jpg img/chair/0477.jpg img/chair/0478.jpg img/chair/0479.jpg img/chair/0480.jpg img/chair/0481.jpg img/chair/0482.jpg img/chair/0483.jpg img/chair/0484.jpg img/chair/0485.jpg img/chair/0486.jpg img/chair/0487.jpg img/chair/0488.jpg img/chair/0489.jpg img/chair/0490.jpg img/chair/0491.jpg img/chair/0492.jpg img/chair/0493.jpg img/chair/0494.jpg img/chair/0495.jpg img/chair/0496.jpg img/chair/0497.jpg img/chair/0499.jpg img/chair/0500.jpg img/chair/0501.jpg img/chair/0502.jpg img/chair/0503.jpg img/chair/0504.jpg img/chair/0506.jpg img/chair/0507.jpg img/chair/0509.jpg img/chair/0510.jpg img/chair/0511.jpg img/chair/0512.jpg img/chair/0513.jpg img/chair/0514.jpg img/chair/0515.jpg img/chair/0516.jpg img/chair/0517.jpg img/chair/0518.jpg img/chair/0519.jpg img/chair/0520.jpg img/chair/0521.jpg img/chair/0522.jpg img/chair/0523.jpg img/chair/0524.jpg img/chair/0525.jpg img/chair/0526.jpg img/chair/0527.jpg img/chair/0528.jpg img/chair/0529.jpg img/chair/0530.jpg img/chair/0531.jpg img/chair/0532.jpg img/chair/0533.jpg img/chair/0534.jpg img/chair/0535.jpg img/chair/0536.jpg img/chair/0537.jpg img/chair/0538.jpg img/chair/0539.jpg img/chair/0540.jpg img/chair/0541.jpg img/chair/0542.jpg img/chair/0543.jpg img/chair/0544.jpg img/chair/0545.jpg img/chair/0546.jpg img/chair/0547.jpg img/chair/0548.jpg img/chair/0549.jpg img/chair/0550.jpg img/chair/0551.jpg img/chair/0552.jpg img/chair/0553.jpg img/chair/0554.jpg img/chair/0556.jpg img/chair/0557.jpg img/chair/0559.jpg img/chair/0561.jpg img/chair/0563.jpg img/chair/0564.jpg img/chair/0565.jpg img/chair/0566.jpg img/chair/0568.jpg img/chair/0570.jpg img/chair/0571.jpg img/chair/0572.jpg img/chair/0573.jpg img/chair/0574.jpg img/chair/0575.jpg img/chair/0577.jpg img/chair/0578.jpg img/chair/0580.jpg img/chair/0581.jpg img/chair/0583.jpg img/chair/0584.jpg img/chair/0585.jpg img/chair/0586.jpg img/chair/0588.jpg img/chair/0589.jpg img/chair/0590.jpg img/chair/0591.jpg img/chair/0592.jpg img/chair/0593.jpg img/chair/0594.jpg img/chair/0595.jpg img/chair/0596.jpg img/chair/0599.jpg img/chair/0600.jpg img/chair/0602.jpg img/chair/0604.jpg img/chair/0605.jpg img/chair/0606.jpg img/chair/0607.jpg img/chair/0608.jpg img/chair/0609.jpg img/chair/0610.jpg img/chair/0611.jpg img/chair/0612.jpg img/chair/0613.jpg img/chair/0615.jpg img/chair/0616.jpg img/chair/0617.jpg img/chair/0618.jpg img/chair/0619.jpg img/chair/0620.jpg img/chair/0621.jpg img/chair/0622.jpg img/chair/0623.jpg img/chair/0624.jpg img/chair/0625.jpg img/chair/0626.jpg img/chair/0627.jpg img/chair/0628.jpg img/chair/0629.jpg img/chair/0630.jpg img/chair/0631.jpg img/chair/0632.jpg img/chair/0633.jpg img/chair/0634.jpg img/chair/0636.jpg img/chair/0637.jpg img/chair/0638.jpg img/chair/0639.jpg img/chair/0640.jpg img/chair/0641.jpg img/chair/0642.jpg img/chair/0643.jpg img/chair/0644.jpg img/chair/0645.jpg img/chair/0646.jpg img/chair/0647.jpg img/chair/0648.jpg img/chair/0649.jpg img/chair/0650.jpg img/chair/0651.jpg img/chair/0652.jpg img/chair/0653.jpg img/chair/0654.jpg img/chair/0655.jpg img/chair/0656.jpg img/chair/0657.jpg img/chair/0658.jpg img/chair/0659.jpg img/chair/0660.jpg img/chair/0662.jpg img/chair/0663.jpg img/chair/0664.jpg img/chair/0665.jpg img/chair/0666.jpg img/chair/0667.jpg img/chair/0668.jpg img/chair/0669.jpg img/chair/0670.jpg img/chair/0671.jpg img/chair/0672.jpg img/chair/0673.jpg img/chair/0674.jpg img/chair/0675.jpg img/chair/0676.jpg img/chair/0677.jpg img/chair/0678.jpg img/chair/0679.jpg img/chair/0680.jpg img/chair/0681.jpg img/chair/0682.jpg img/chair/0683.jpg img/chair/0684.jpg img/chair/0685.jpg img/chair/0686.jpg img/chair/0687.jpg img/chair/0688.jpg img/chair/0690.jpg img/chair/0691.jpg img/chair/0692.jpg img/chair/0693.jpg img/chair/0695.jpg img/chair/0696.jpg img/chair/0697.jpg img/chair/0698.jpg img/chair/0699.jpg img/chair/0700.jpg img/chair/0701.jpg img/chair/0702.jpg img/chair/0703.jpg img/chair/0705.jpg img/chair/0706.jpg img/chair/0707.jpg img/chair/0708.jpg img/chair/0709.jpg img/chair/0710.jpg img/chair/0711.jpg img/chair/0712.jpg img/chair/0713.jpg img/chair/0714.jpg img/chair/0715.jpg img/chair/0716.jpg img/chair/0717.jpg img/chair/0718.jpg img/chair/0719.jpg img/chair/0720.jpg img/chair/0721.jpg img/chair/0722.jpg img/chair/0723.jpg img/chair/0724.jpg img/chair/0725.jpg img/chair/0726.jpg img/chair/0727.jpg img/chair/0728.jpg img/chair/0729.jpg img/chair/0731.jpg img/chair/0732.jpg img/chair/0733.jpg img/chair/0734.jpg img/chair/0736.jpg img/chair/0737.jpg img/chair/0738.jpg img/chair/0740.jpg img/chair/0741.jpg img/chair/0742.jpg img/chair/0743.jpg img/chair/0744.jpg img/chair/0745.jpg img/chair/0746.jpg img/chair/0747.jpg img/chair/0748.jpg img/chair/0749.jpg img/chair/0750.jpg img/chair/0751.jpg img/chair/0752.jpg img/chair/0753.jpg img/chair/0754.jpg img/chair/0755.jpg img/chair/0756.jpg img/chair/0757.jpg img/chair/0760.jpg img/chair/0761.jpg img/chair/0762.jpg img/chair/0763.jpg img/chair/0764.jpg img/chair/0765.jpg img/chair/0766.jpg img/chair/0768.jpg img/chair/0769.jpg img/chair/0770.jpg img/chair/0771.jpg img/chair/0772.jpg img/chair/0773.jpg img/chair/0774.jpg img/chair/0775.jpg img/chair/0776.jpg img/chair/0777.jpg img/chair/0778.jpg img/chair/0779.jpg img/chair/0780.jpg img/chair/0781.jpg img/chair/0782.jpg img/chair/0783.jpg img/chair/0784.jpg img/chair/0786.jpg img/chair/0787.jpg img/chair/0788.jpg img/chair/0789.jpg img/chair/0791.jpg img/chair/0792.jpg img/chair/0793.jpg img/chair/0794.jpg img/chair/0795.jpg img/chair/0796.jpg img/chair/0797.jpg img/chair/0798.jpg img/chair/0799.jpg img/chair/0800.jpg img/chair/0801.jpg img/chair/0802.jpg img/chair/0803.jpg img/chair/0804.jpg img/chair/0805.jpg img/chair/0806.jpg img/chair/0807.jpg img/chair/0808.jpg img/chair/0809.jpg img/chair/0810.jpg img/chair/0812.jpg img/chair/0813.jpg img/chair/0814.jpg img/chair/0815.jpg img/chair/0816.jpg img/chair/0817.jpg img/chair/0819.jpg img/chair/0820.jpg img/chair/0821.jpg img/chair/0822.jpg img/chair/0823.jpg img/chair/0824.jpg img/chair/0826.jpg img/chair/0827.jpg img/chair/0828.jpg img/chair/0830.jpg img/chair/0831.jpg img/chair/0832.jpg img/chair/0833.jpg img/chair/0834.jpg img/chair/0835.jpg img/chair/0837.jpg img/chair/0838.jpg img/chair/0839.jpg img/chair/0840.jpg img/chair/0841.jpg img/chair/0842.jpg img/chair/0843.jpg img/chair/0844.jpg img/chair/0845.jpg img/chair/0846.jpg img/chair/0847.jpg img/chair/0848.jpg img/chair/0849.jpg img/chair/0850.jpg img/chair/0851.jpg img/chair/0852.jpg img/chair/0853.jpg img/chair/0854.jpg img/chair/0855.jpg img/chair/0856.jpg img/chair/0857.jpg img/chair/0858.jpg img/chair/0859.jpg img/chair/0860.jpg img/chair/0861.jpg img/chair/0862.jpg img/chair/0863.jpg img/chair/0864.jpg img/chair/0866.jpg img/chair/0867.jpg img/chair/0868.jpg img/chair/0873.jpg img/chair/0874.jpg img/chair/0875.jpg img/chair/0876.jpg img/chair/0877.jpg img/chair/0878.jpg img/chair/0880.jpg img/chair/0881.jpg img/chair/0882.jpg img/chair/0883.jpg img/chair/0884.jpg img/chair/0885.jpg img/chair/0886.jpg img/chair/0888.jpg img/chair/0889.jpg img/chair/0890.jpg img/chair/0892.jpg img/chair/0896.jpg img/chair/0897.jpg img/chair/0898.jpg img/chair/0899.jpg img/chair/0901.jpg img/chair/0903.jpg img/chair/0904.jpg img/chair/0905.jpg img/chair/0906.jpg img/chair/0907.jpg img/chair/0908.jpg img/chair/0909.jpg img/chair/0910.jpg img/chair/0911.jpg img/chair/0912.jpg img/chair/0913.jpg img/chair/0916.jpg img/chair/0917.jpg img/chair/0918.jpg img/chair/0919.jpg img/chair/0920.jpg img/chair/0921.jpg img/chair/0922.jpg img/chair/0923.jpg img/chair/0924.jpg img/chair/0925.jpg img/chair/0926.jpg img/chair/0927.jpg img/chair/0928.jpg img/chair/0929.jpg img/chair/0930.jpg img/chair/0931.jpg img/chair/0932.jpg img/chair/0933.jpg img/chair/0934.jpg img/chair/0935.jpg img/chair/0936.jpg img/chair/0937.jpg img/chair/0939.jpg img/chair/0940.jpg img/chair/0941.jpg img/chair/0942.jpg img/chair/0944.jpg img/chair/0945.jpg img/chair/0946.jpg img/chair/0947.jpg img/chair/0949.jpg img/chair/0950.jpg img/chair/0952.jpg img/chair/0953.jpg img/chair/0954.jpg img/chair/0955.jpg img/chair/0956.jpg img/chair/0957.jpg img/chair/0958.jpg img/chair/0959.jpg img/chair/0960.jpg img/chair/0961.jpg img/chair/0962.jpg img/chair/0963.jpg img/chair/0965.jpg img/chair/0966.jpg img/chair/0967.jpg img/chair/0968.jpg img/chair/0969.jpg img/chair/0970.jpg img/chair/0971.jpg img/chair/0972.jpg img/chair/0975.jpg img/chair/0976.jpg img/chair/0977.jpg img/chair/0978.jpg img/chair/0979.jpg img/chair/0981.jpg img/chair/0982.jpg img/chair/0983.jpg img/chair/0984.jpg img/chair/0985.jpg img/chair/0986.jpg img/chair/0987.jpg img/chair/0988.jpg img/chair/0989.jpg img/chair/0990.jpg img/chair/0993.jpg img/chair/0994.jpg img/chair/0995.jpg img/chair/0996.jpg img/chair/0997.jpg img/chair/0998.jpg img/chair/0999.jpg img/chair/1000.jpg img/chair/1001.jpg img/chair/1002.jpg img/chair/1003.jpg img/chair/1006.jpg img/chair/1007.jpg img/chair/1008.jpg img/chair/1009.jpg img/chair/1010.jpg img/chair/1011.jpg img/chair/1013.jpg img/chair/1014.jpg img/chair/1015.jpg img/chair/1016.jpg img/chair/1017.jpg img/chair/1018.jpg img/chair/1019.jpg img/chair/1022.jpg img/chair/1023.jpg img/chair/1024.jpg img/chair/1025.jpg img/chair/1026.jpg img/chair/1027.jpg img/chair/1028.jpg img/chair/1029.jpg img/chair/1031.jpg img/chair/1032.jpg img/chair/1033.jpg img/chair/1034.jpg img/chair/1035.jpg img/chair/1036.jpg img/chair/1037.jpg img/chair/1038.jpg img/chair/1039.jpg img/chair/1040.jpg img/chair/1041.jpg img/chair/1042.jpg img/chair/1043.jpg img/chair/1044.jpg img/chair/1045.jpg img/chair/1048.jpg img/chair/1049.jpg img/chair/1051.jpg img/chair/1052.jpg img/chair/1053.jpg img/chair/1054.jpg img/chair/1055.jpg img/chair/1056.jpg img/chair/1057.jpg img/chair/1058.jpg img/chair/1059.jpg img/chair/1060.jpg img/chair/1061.jpg img/chair/1062.jpg img/chair/1064.jpg img/chair/1069.jpg img/chair/1070.jpg img/chair/1071.jpg img/chair/1072.jpg img/chair/1073.jpg img/chair/1075.jpg img/chair/1076.jpg img/chair/1077.jpg img/chair/1078.jpg img/chair/1079.jpg img/chair/1080.jpg img/chair/1081.jpg img/chair/1082.jpg img/chair/1083.jpg img/chair/1084.jpg img/chair/1088.jpg img/chair/1089.jpg img/chair/1091.jpg img/chair/1092.jpg img/chair/1093.jpg img/chair/1094.jpg img/chair/1096.jpg img/chair/1097.jpg img/chair/1098.jpg img/chair/1099.jpg img/chair/1100.jpg img/chair/1101.jpg img/chair/1102.jpg img/chair/1103.jpg img/chair/1104.jpg img/chair/1105.jpg img/chair/1106.jpg img/chair/1108.jpg img/chair/1110.jpg img/chair/1111.jpg img/chair/1112.jpg img/chair/1113.jpg img/chair/1114.jpg img/chair/1115.jpg img/chair/1116.jpg img/chair/1117.jpg img/chair/1118.jpg img/chair/1119.jpg img/chair/1121.jpg img/chair/1122.jpg img/chair/1123.jpg img/chair/1124.jpg img/chair/1125.jpg img/chair/1126.jpg img/chair/1127.jpg img/chair/1128.jpg img/chair/1129.jpg img/chair/1130.jpg img/chair/1131.jpg img/chair/1132.jpg img/chair/1133.jpg img/chair/1134.jpg img/chair/1135.jpg img/chair/1136.jpg img/chair/1137.jpg img/chair/1138.jpg img/chair/1139.jpg img/chair/1140.jpg img/chair/1141.jpg img/chair/1142.jpg img/chair/1143.jpg img/chair/1144.jpg img/chair/1145.jpg img/chair/1146.jpg img/chair/1147.jpg img/chair/1148.jpg img/chair/1149.jpg img/chair/1150.jpg img/chair/1151.jpg img/chair/1152.jpg img/chair/1153.jpg img/chair/1154.jpg img/chair/1155.jpg img/chair/1156.jpg img/chair/1157.jpg img/chair/1158.jpg img/chair/1159.jpg img/chair/1160.jpg img/chair/1161.jpg img/chair/1162.jpg img/chair/1163.jpg img/chair/1164.jpg img/chair/1165.jpg img/chair/1166.jpg img/chair/1167.jpg img/chair/1168.jpg img/chair/1169.jpg img/chair/1170.jpg img/chair/1171.jpg img/chair/1172.jpg img/chair/1174.jpg img/chair/1176.jpg img/chair/1177.jpg img/chair/1178.jpg img/chair/1179.jpg img/chair/1180.jpg img/chair/1181.jpg img/chair/1182.jpg img/chair/1183.jpg img/chair/1184.jpg img/chair/1185.jpg img/chair/1186.jpg img/chair/1187.jpg img/chair/1188.jpg img/chair/1190.jpg img/chair/1191.jpg img/chair/1192.jpg img/chair/1193.jpg img/chair/1194.jpg img/chair/1195.jpg img/chair/1196.jpg img/chair/1197.jpg img/chair/1198.jpg img/chair/1199.jpg img/chair/1200.jpg img/chair/1201.jpg img/chair/1202.jpg img/chair/1203.jpg img/chair/1204.jpg img/chair/1205.jpg img/chair/1206.jpg img/chair/1207.jpg img/chair/1208.jpg img/chair/1209.jpg img/chair/1210.jpg img/chair/1211.jpg img/chair/1212.jpg img/chair/1213.jpg img/chair/1214.jpg img/chair/1215.jpg img/chair/1216.jpg img/chair/1217.jpg img/chair/1219.jpg img/chair/1220.jpg img/chair/1221.jpg img/chair/1222.jpg img/chair/1223.jpg img/chair/1224.jpg img/chair/1225.jpg img/chair/1226.jpg img/chair/1227.jpg img/chair/1229.jpg img/chair/1230.jpg img/chair/1231.jpg img/chair/1232.jpg img/chair/1233.jpg img/chair/1234.jpg img/chair/1235.jpg img/chair/1236.jpg img/chair/1237.jpg img/chair/1238.jpg img/chair/1239.jpg img/chair/1240.jpg img/chair/1241.jpg img/chair/1242.jpg img/chair/1243.jpg img/chair/1244.jpg img/chair/1246.jpg img/chair/1247.jpg img/chair/1248.jpg img/chair/1250.jpg img/chair/1251.jpg img/chair/1252.jpg img/chair/1253.jpg img/chair/1254.jpg img/chair/1255.jpg img/chair/1256.jpg img/chair/1257.jpg img/chair/1258.jpg img/chair/1259.jpg img/chair/1260.jpg img/chair/1261.jpg img/chair/1262.jpg img/chair/1263.jpg img/chair/1264.jpg img/chair/1267.jpg img/chair/1268.jpg img/chair/1269.jpg img/chair/1270.jpg img/chair/1271.jpg img/chair/1273.jpg img/chair/1274.jpg img/chair/1275.jpg img/chair/1276.jpg img/chair/1277.jpg img/chair/1278.jpg img/chair/1279.jpg img/chair/1280.jpg img/chair/1281.jpg img/chair/1282.jpg img/chair/1283.jpg img/chair/1284.jpg img/chair/1285.jpg img/chair/1286.jpg img/chair/1287.jpg img/chair/1288.jpg img/chair/1289.jpg img/chair/1290.jpg img/chair/1291.jpg img/chair/1292.jpg img/chair/1293.jpg img/chair/1294.jpg img/chair/1295.jpg img/chair/1296.jpg img/chair/1297.jpg img/chair/1298.jpg img/chair/1299.jpg img/chair/1300.jpg img/chair/1301.jpg img/chair/1302.jpg img/chair/1303.jpg img/chair/1304.jpg img/chair/1305.jpg img/chair/1306.jpg img/chair/1307.jpg img/chair/1308.jpg img/chair/1309.jpg img/chair/1311.jpg img/chair/1312.jpg img/chair/1313.jpg img/chair/1314.jpg img/chair/1315.jpg img/chair/1316.jpg img/chair/1317.jpg img/chair/1318.jpg img/chair/1319.jpg img/chair/1320.jpg img/chair/1321.jpg img/chair/1322.jpg img/chair/1323.jpg img/chair/1324.jpg img/chair/1325.jpg img/chair/1326.jpg img/chair/1327.jpg img/chair/1328.jpg img/chair/1330.jpg img/chair/1331.jpg img/chair/1332.jpg img/chair/1333.jpg img/chair/1334.jpg img/chair/1335.jpg img/chair/1336.jpg img/chair/1337.jpg img/chair/1338.jpg img/chair/1339.jpg img/chair/1340.jpg img/chair/1341.jpg img/chair/1342.jpg img/chair/1343.jpg img/chair/1344.jpg img/chair/1345.jpg img/chair/1347.jpg img/chair/1348.jpg img/chair/1349.jpg img/chair/1350.jpg img/chair/1351.jpg img/chair/1352.jpg img/chair/1354.jpg img/chair/1355.jpg img/chair/1356.jpg img/chair/1357.jpg img/chair/1358.jpg img/chair/1359.jpg img/chair/1360.jpg img/chair/1361.jpg img/chair/1362.jpg img/chair/1363.jpg img/chair/1364.jpg img/chair/1365.jpg img/chair/1366.jpg img/chair/1367.jpg img/chair/1368.jpg img/chair/1369.jpg img/chair/1370.jpg img/chair/1371.jpg img/chair/1372.jpg img/chair/1373.jpg img/chair/1374.jpg img/chair/1375.jpg img/chair/1376.jpg img/chair/1377.jpg img/chair/1378.jpg img/chair/1379.jpg img/chair/1380.jpg img/chair/1381.jpg img/chair/1382.jpg img/chair/1383.jpg img/chair/1384.jpg img/chair/1385.jpg img/chair/1386.jpg img/chair/1387.jpg img/chair/1388.jpg img/chair/1389.jpg img/chair/1390.jpg img/chair/1391.jpg img/chair/1392.jpg img/chair/1393.jpg img/chair/1394.jpg img/chair/1395.jpg img/chair/1396.jpg img/chair/1397.jpg img/chair/1398.jpg img/chair/1399.jpg img/chair/1400.jpg img/chair/1401.jpg img/chair/1402.jpg img/chair/1403.jpg img/chair/1404.jpg img/chair/1405.jpg img/chair/1406.jpg img/chair/1407.jpg img/chair/1408.jpg img/chair/1409.jpg img/chair/1410.jpg img/chair/1411.jpg img/chair/1413.jpg img/chair/1414.jpg img/chair/1415.jpg img/chair/1416.jpg img/chair/1417.jpg img/chair/1418.jpg img/chair/1419.jpg img/chair/1420.jpg img/chair/1421.jpg img/chair/1423.jpg img/chair/1424.jpg img/chair/1426.jpg img/chair/1427.jpg img/chair/1428.jpg img/chair/1429.jpg img/chair/1430.jpg img/chair/1431.jpg img/chair/1432.jpg img/chair/1433.jpg img/chair/1434.jpg img/chair/1435.jpg img/chair/1436.jpg img/chair/1437.jpg img/chair/1438.jpg img/chair/1439.jpg img/chair/1440.jpg img/chair/1441.jpg img/chair/1442.jpg img/chair/1443.jpg img/chair/1444.jpg img/chair/1445.jpg img/chair/1446.jpg img/chair/1447.jpg img/chair/1448.jpg img/chair/1449.jpg img/chair/1450.jpg img/chair/1451.jpg img/chair/1452.jpg img/chair/1453.jpg img/chair/1454.jpg img/chair/1456.jpg img/chair/1457.jpg img/chair/1458.jpg img/chair/1459.jpg img/chair/1460.jpg img/chair/1461.jpg img/chair/1462.jpg img/chair/1463.jpg img/chair/1464.jpg img/chair/1465.jpg img/chair/1466.jpg img/chair/1467.jpg img/chair/1468.jpg img/chair/1469.jpg img/chair/1470.jpg img/chair/1471.jpg img/chair/1472.jpg img/chair/1473.jpg img/chair/1474.jpg img/chair/1475.jpg img/chair/1476.jpg img/chair/1477.jpg img/chair/1478.jpg img/chair/1479.jpg img/chair/1480.jpg img/chair/1481.jpg img/chair/1482.jpg img/chair/1483.jpg img/chair/1484.jpg img/chair/1485.jpg img/chair/1486.jpg img/chair/1487.jpg img/chair/1488.jpg img/chair/1489.jpg img/chair/1490.jpg img/chair/1491.jpg img/chair/1492.jpg img/chair/1493.jpg img/chair/1494.jpg img/chair/1495.jpg img/chair/1496.jpg img/chair/1497.jpg img/chair/1498.jpg img/chair/1499.jpg img/chair/1500.jpg img/chair/1501.jpg img/chair/1502.jpg img/chair/1503.jpg img/chair/1504.jpg img/chair/1505.jpg img/chair/1506.jpg img/chair/1507.jpg img/chair/1508.jpg img/chair/1509.jpg img/chair/1510.jpg img/chair/1511.jpg img/chair/1512.jpg img/chair/1513.jpg img/chair/1514.jpg img/chair/1515.jpg img/chair/1516.jpg img/chair/1517.jpg img/chair/1518.jpg img/chair/1519.jpg img/chair/1520.jpg img/chair/1521.jpg img/chair/1522.jpg img/chair/1523.jpg img/chair/1524.jpg img/chair/1525.jpg img/chair/1526.jpg img/chair/1527.jpg img/chair/1528.jpg img/chair/1530.jpg img/chair/1531.jpg img/chair/1532.jpg img/chair/1533.jpg img/chair/1534.jpg img/chair/1535.jpg img/chair/1536.jpg img/chair/1537.jpg img/chair/1538.jpg img/chair/1539.jpg img/chair/1540.jpg img/chair/1541.jpg img/chair/1542.jpg img/chair/1543.jpg img/chair/1544.jpg img/chair/1545.jpg img/chair/1546.jpg img/chair/1547.jpg img/desk/0001.jpg img/desk/0002.jpg img/desk/0003.jpg img/desk/0004.jpg img/desk/0005.jpg img/desk/0006.jpg img/desk/0007.jpg img/desk/0008.jpg img/desk/0176.jpg img/desk/0177.jpg img/desk/0178.jpg img/desk/0179.jpg img/desk/0180.jpg img/desk/0181.jpg img/desk/0182.jpg img/desk/0183.jpg img/desk/0184.jpg img/desk/0185.jpg img/desk/0186.jpg img/desk/0203.jpg img/desk/0204.jpg img/desk/0205.jpg img/desk/0206.jpg img/desk/0207.jpg img/desk/0208.jpg img/desk/0686.jpg img/desk/0687.jpg img/desk/0321.jpg img/desk/0322.jpg img/desk/0323.jpg img/desk/0324.jpg img/desk/0325.jpg img/desk/0326.jpg img/desk/0327.jpg img/desk/0328.jpg img/desk/0329.jpg img/desk/0330.jpg img/desk/0331.jpg img/desk/0332.jpg img/desk/0333.jpg img/desk/0334.jpg img/desk/0335.jpg img/desk/0336.jpg img/desk/0337.jpg img/desk/0338.jpg img/desk/0339.jpg img/desk/0340.jpg img/desk/0341.jpg img/desk/0342.jpg img/desk/0343.jpg img/desk/0344.jpg img/desk/0345.jpg img/desk/0346.jpg img/desk/0347.jpg img/desk/0348.jpg img/desk/0349.jpg img/desk/0350.jpg img/desk/0351.jpg img/desk/0352.jpg img/desk/0353.jpg img/desk/0354.jpg img/desk/0355.jpg img/desk/0356.jpg img/desk/0357.jpg img/desk/0358.jpg img/desk/0359.jpg img/desk/0360.jpg img/desk/0361.jpg img/desk/0362.jpg img/desk/0363.jpg img/desk/0364.jpg img/desk/0365.jpg img/desk/0366.jpg img/desk/0367.jpg img/desk/0368.jpg img/desk/0369.jpg img/desk/0370.jpg img/desk/0371.png img/desk/0372.jpg img/desk/0373.png img/desk/0374.jpg img/desk/0375.jpg img/desk/0376.jpg img/desk/0377.jpg img/desk/0378.jpg img/desk/0379.jpg img/desk/0380.jpg img/desk/0381.jpg img/desk/0382.jpg img/desk/0383.png img/desk/0384.jpg img/desk/0385.jpg img/desk/0386.jpg img/desk/0387.png img/desk/0388.jpg img/desk/0389.png img/desk/0390.jpg img/desk/0391.jpg img/desk/0392.jpeg img/desk/0393.jpg img/desk/0394.jpg img/desk/0395.jpg img/desk/0396.jpg img/desk/0397.jpg img/desk/0398.jpg img/desk/0399.jpg img/desk/0400.jpg img/desk/0401.jpeg img/desk/0402.jpg img/desk/0403.jpg img/desk/0404.jpg img/desk/0405.jpg img/desk/0406.jpg img/desk/0407.jpg img/desk/0408.jpg img/desk/0409.jpg img/desk/0410.jpg img/desk/0411.jpg img/desk/0412.jpg img/desk/0413.jpg img/desk/0414.jpg img/desk/0415.jpg img/misc/0007.jpg img/misc/0008.jpg img/misc/0009.jpg img/misc/0010.jpg img/misc/0011.jpg img/misc/0012.jpg img/misc/0013.jpg img/misc/0014.jpg img/misc/0025.jpg img/misc/0030.jpg img/misc/0034.jpg img/misc/0036.jpg img/misc/0038.jpg img/misc/0043.jpg img/misc/0049.jpg img/misc/0051.jpg img/misc/0054.jpg img/sofa/0002.png img/sofa/0003.png img/sofa/0005.png img/sofa/0014.png img/sofa/0018.png img/sofa/0019.png img/sofa/0028.png img/sofa/0042.png img/sofa/0043.png img/sofa/0048.png img/sofa/0056.png img/sofa/0071.png img/sofa/0073.png img/sofa/0074.png img/sofa/0079.png img/sofa/0080.png img/sofa/0091.png img/sofa/0092.png img/sofa/0102.png img/sofa/0103.png img/sofa/0105.png img/sofa/0106.png img/sofa/0109.png img/sofa/0110.png img/sofa/0112.png img/sofa/0115.png img/sofa/0116.png img/sofa/0117.png img/sofa/0119.png img/sofa/0121.png img/sofa/0156.jpg img/sofa/0157.jpg img/sofa/0158.jpeg img/sofa/0159.jpg img/sofa/0160.jpg img/sofa/0161.jpg img/sofa/0162.jpg img/sofa/0163.jpg img/sofa/0164.jpg img/sofa/0165.jpg img/sofa/0166.jpg img/sofa/0167.jpg img/sofa/0168.jpg img/sofa/0169.jpg img/sofa/0170.jpg img/sofa/0171.jpg img/sofa/0172.png img/sofa/0173.jpg img/sofa/0174.jpg img/sofa/0175.jpg img/sofa/0176.jpg img/sofa/0177.jpg img/sofa/0178.jpg img/sofa/0179.jpg img/sofa/0180.jpg img/sofa/0181.jpg img/sofa/0182.jpg img/sofa/0183.jpg img/sofa/0184.jpg img/sofa/0185.jpg img/sofa/0186.jpg img/sofa/0187.jpg img/sofa/0188.jpg img/sofa/0189.jpg img/sofa/0190.jpg img/sofa/0191.jpg img/sofa/0192.jpg img/sofa/0193.jpg img/sofa/0194.jpg img/sofa/0195.jpg img/sofa/0196.jpg img/sofa/0197.jpg img/sofa/0198.jpg img/sofa/0199.jpg img/sofa/0200.jpg img/sofa/0201.jpg img/sofa/0202.jpg img/sofa/0203.jpg img/sofa/0204.jpg img/sofa/0205.jpg img/sofa/0206.jpg img/sofa/0207.jpg img/sofa/0208.jpg img/sofa/0209.jpg img/sofa/0210.jpg img/sofa/0211.jpg img/sofa/0212.jpg img/sofa/0213.jpg img/sofa/0214.jpg img/sofa/0215.jpg img/sofa/0216.jpg img/sofa/0217.jpg img/sofa/0218.jpg img/sofa/0219.jpg img/sofa/0220.jpg img/sofa/0221.jpg img/sofa/0222.jpg img/sofa/0223.jpg img/sofa/0224.jpg img/sofa/0225.jpg img/sofa/0226.jpg img/sofa/0227.jpg img/sofa/0228.jpg img/sofa/0229.jpg img/sofa/0230.jpg img/sofa/0231.jpg img/sofa/0232.jpg img/sofa/0233.jpg img/sofa/0234.jpg img/sofa/0235.jpg img/sofa/0236.jpg img/sofa/0237.jpg img/sofa/0238.jpg img/sofa/0239.jpg img/sofa/0240.jpg img/sofa/0241.png img/sofa/0242.jpg img/sofa/0243.jpg img/sofa/0244.jpg img/sofa/0245.jpg img/sofa/0246.jpg img/sofa/0247.jpg img/sofa/0248.jpg img/sofa/0249.jpg img/sofa/0250.jpg img/sofa/0251.jpg img/sofa/0252.jpg img/sofa/0253.jpg img/sofa/0254.jpg img/sofa/0255.jpg img/sofa/0256.jpg img/sofa/0257.png img/sofa/0258.jpg img/sofa/0259.jpg img/sofa/0260.jpg img/sofa/0261.jpg img/sofa/0262.jpg img/sofa/0263.jpg img/sofa/0264.jpg img/sofa/0265.jpg img/sofa/0266.jpg img/sofa/0267.jpg img/sofa/0268.jpg img/sofa/0269.jpg img/sofa/0270.jpg img/sofa/0271.jpg img/sofa/0272.jpg img/sofa/0273.jpg img/sofa/0274.jpg img/sofa/0275.jpg img/sofa/0276.jpg img/sofa/0277.jpg img/sofa/0278.jpg img/sofa/0279.jpg img/sofa/0280.jpg img/sofa/0281.png img/sofa/0282.jpg img/sofa/0283.jpg img/sofa/0284.jpg img/sofa/0285.jpg img/sofa/0286.jpg img/sofa/0287.jpg img/sofa/0288.jpg img/sofa/0289.jpg img/sofa/0290.jpg img/sofa/0291.jpg img/sofa/0292.jpg img/sofa/0293.jpg img/sofa/0294.jpg img/sofa/0295.jpg img/sofa/0296.jpg img/sofa/0297.jpg img/sofa/0298.jpg img/sofa/0299.jpg img/sofa/0300.jpg img/sofa/0301.jpg img/sofa/0302.jpg img/sofa/0303.jpg img/sofa/0304.jpg img/sofa/0305.jpg img/sofa/0306.jpg img/sofa/0307.jpg img/sofa/0308.jpg img/sofa/0309.jpg img/sofa/0310.jpg img/sofa/0311.jpg img/sofa/0312.jpg img/sofa/0313.jpg img/sofa/0314.jpg img/sofa/0315.jpg img/sofa/0316.jpg img/sofa/0317.jpg img/sofa/0318.jpg img/sofa/0319.jpg img/sofa/0320.jpg img/sofa/0321.jpg img/sofa/0322.jpg img/sofa/0323.jpeg img/sofa/0324.jpg img/sofa/0325.jpg img/sofa/0326.jpg img/sofa/0327.png img/sofa/0328.jpg img/sofa/0329.jpg img/sofa/0330.jpg img/sofa/0331.jpg img/sofa/0332.jpg img/sofa/0333.jpg img/sofa/0334.jpg img/sofa/0335.jpg img/sofa/0336.jpg img/sofa/0337.jpg img/sofa/0338.jpg img/sofa/0339.jpg img/sofa/0340.jpg img/sofa/0341.jpg img/sofa/0342.jpg img/sofa/0343.jpg img/sofa/0344.jpg img/sofa/0345.jpg img/sofa/0346.jpg img/sofa/0347.jpg img/sofa/0348.jpg img/sofa/0349.jpg img/sofa/0350.jpg img/sofa/0351.jpg img/sofa/0352.jpg img/sofa/0353.jpg img/sofa/0660.jpg img/sofa/0661.jpg img/sofa/0662.jpg img/sofa/0663.jpg img/sofa/0664.jpg img/sofa/0665.jpg img/sofa/0666.jpg img/sofa/0667.jpg img/sofa/0668.jpg img/sofa/0669.jpg img/sofa/0670.jpg img/sofa/0671.jpg img/sofa/0672.jpg img/sofa/0673.jpg img/sofa/0674.jpg img/sofa/0675.jpg img/sofa/0676.jpg img/sofa/0677.jpg img/sofa/0678.jpg img/sofa/0679.jpg img/sofa/0680.jpg img/sofa/1378.jpg img/sofa/1379.jpg img/sofa/1380.jpg img/sofa/1381.jpg img/sofa/1382.jpg img/sofa/1383.jpg img/sofa/1384.jpg img/sofa/1385.jpg img/sofa/1386.jpg img/sofa/1387.jpg img/sofa/1388.jpg img/sofa/1389.jpg img/sofa/1390.jpg img/sofa/1391.jpg img/sofa/1392.jpg img/sofa/1393.jpg img/sofa/1394.jpg img/sofa/1395.jpg img/sofa/1396.jpg img/sofa/1397.jpg img/sofa/1398.jpg img/sofa/1399.jpg img/sofa/1400.jpg img/sofa/1401.jpg img/sofa/1402.jpg img/sofa/1403.jpg img/sofa/1404.jpg img/sofa/1405.jpg img/sofa/1406.jpg img/sofa/1407.jpg img/sofa/1408.jpg img/sofa/1409.jpg img/sofa/1410.jpg img/sofa/1411.jpg img/sofa/1412.jpg img/sofa/1413.jpg img/sofa/1414.jpg img/sofa/1415.jpg img/sofa/1416.jpg img/sofa/1417.jpg img/sofa/1418.jpg img/sofa/1419.jpg img/sofa/1420.jpg img/sofa/1421.jpg img/sofa/1422.jpg img/sofa/1423.jpg img/sofa/1424.jpg img/sofa/1425.jpg img/sofa/1426.jpg img/sofa/1427.jpg img/sofa/1428.jpg img/sofa/1429.jpg img/sofa/1430.jpg img/sofa/1431.jpg img/sofa/1432.jpg img/sofa/1433.jpg img/sofa/1434.jpg img/sofa/1435.jpg img/sofa/1436.jpg img/sofa/1437.jpg img/sofa/1438.jpg img/sofa/1439.jpg img/sofa/1440.jpg img/sofa/1441.jpg img/sofa/1442.jpg img/sofa/1443.jpg img/sofa/1444.jpg img/sofa/1445.jpg img/sofa/1446.jpg img/sofa/1447.jpg img/sofa/1815.jpg img/sofa/1816.jpg img/sofa/1817.jpeg img/sofa/1818.jpg img/sofa/1819.jpg img/sofa/1820.jpg img/sofa/1821.jpg img/sofa/1822.jpg img/sofa/1823.jpg img/sofa/1824.jpg img/sofa/1825.jpg img/sofa/1826.jpg img/sofa/1827.jpg img/sofa/1828.jpg img/sofa/1829.jpg img/sofa/1830.jpg img/sofa/1831.jpg img/sofa/1832.jpg img/sofa/1833.jpg img/sofa/1834.jpg img/sofa/1835.jpg img/sofa/1836.jpg img/sofa/1837.jpg img/sofa/1838.jpg img/sofa/1839.jpg img/sofa/1840.jpg img/sofa/1841.jpg img/sofa/1842.jpg img/sofa/1843.jpg img/sofa/1844.jpg img/sofa/1845.jpg img/sofa/1846.jpg img/sofa/1847.jpg img/sofa/1848.jpg img/sofa/1849.jpg img/sofa/1850.jpg img/sofa/1851.jpg img/sofa/1852.jpg img/sofa/1853.jpg img/sofa/1854.jpg img/sofa/1855.jpg img/sofa/1856.jpg img/sofa/1857.jpg img/sofa/1858.jpg img/sofa/1859.jpg img/sofa/1860.jpg img/sofa/1861.jpg img/sofa/1862.jpg img/sofa/1863.jpg img/sofa/1864.jpg img/sofa/1865.jpg img/sofa/1866.jpg img/sofa/1867.png img/sofa/1868.jpg img/sofa/1869.jpg img/sofa/1870.jpg img/sofa/1871.jpg img/sofa/1872.jpg img/sofa/1873.jpg img/sofa/1874.jpg img/sofa/1875.png img/sofa/1876.jpg img/sofa/1877.jpg img/sofa/1878.jpg img/sofa/1879.jpg img/sofa/1880.jpg img/sofa/1881.png img/sofa/1882.jpg img/sofa/1883.jpeg img/sofa/1884.jpg img/sofa/1885.jpg img/sofa/1886.jpg img/sofa/1887.jpeg img/sofa/1888.jpg img/sofa/1889.jpg img/sofa/1890.jpg img/sofa/1891.jpg img/sofa/1892.jpeg img/sofa/1893.jpg img/sofa/1894.jpg img/sofa/1895.jpg img/sofa/1896.jpg img/sofa/1897.jpg img/sofa/1898.jpg img/sofa/1899.jpg img/sofa/1900.jpg img/sofa/1901.jpg img/sofa/1902.jpg img/sofa/1903.jpg img/sofa/1904.jpg img/sofa/1905.jpg img/sofa/1906.jpg img/sofa/1907.jpg img/sofa/1908.jpg img/sofa/1909.jpg img/sofa/1910.jpg img/sofa/1911.jpg img/sofa/1912.jpg img/sofa/1913.jpg img/sofa/1914.jpg img/sofa/1915.jpg img/sofa/1916.jpg img/sofa/1917.jpg img/sofa/1918.jpg img/sofa/1919.jpg img/sofa/1920.jpg img/sofa/1921.jpg img/sofa/1922.jpg img/sofa/1923.jpg img/sofa/1924.jpg img/sofa/1925.jpg img/sofa/1926.jpg img/sofa/1927.jpg img/sofa/1928.jpg img/sofa/1929.jpg img/sofa/1930.jpg img/sofa/1931.jpg img/sofa/1932.jpg img/sofa/1933.jpg img/sofa/1934.jpg img/sofa/1935.jpg img/sofa/1936.jpg img/sofa/1937.jpg img/table/0104.jpg img/table/0105.jpg img/table/0106.jpg img/table/0119.jpg img/table/0540.jpg img/table/0541.jpg img/table/0542.jpg img/table/0543.jpg img/table/0544.jpg img/table/0545.jpg img/table/0546.jpg img/table/0547.jpg img/table/0548.jpg img/table/0549.jpg img/table/0550.jpg img/table/0551.jpg img/table/0552.jpg img/table/0553.jpg img/table/0554.jpg img/table/0555.jpg img/table/0556.jpg img/table/0557.jpg img/table/0558.jpg img/table/0559.jpg img/table/0560.jpg img/table/0561.jpg img/table/0562.jpg img/table/0563.jpg img/table/0564.jpg img/table/0565.jpg img/table/0566.jpg img/table/0567.jpg img/table/0568.jpg img/table/0569.jpg img/table/0570.jpg img/table/0571.jpg img/table/0572.jpg img/table/0573.jpg img/table/0574.jpg img/table/0575.jpg img/table/0576.jpg img/table/0577.jpg img/table/0578.jpg img/table/0579.jpg img/table/0580.jpg img/table/0581.jpg img/table/0582.jpg img/table/0583.jpg img/table/0584.jpeg img/table/0585.jpg img/table/0586.jpg img/table/0587.jpg img/table/0588.jpg img/table/0589.jpg img/table/0590.jpg img/table/0591.jpg img/table/0592.jpg img/table/0593.jpg img/table/0594.jpg img/table/0595.jpg img/table/0688.jpg img/table/0689.jpg img/table/0690.jpg img/table/0691.jpg img/table/0692.jpg img/table/0693.jpg img/table/0694.jpg img/table/0695.jpg img/table/0696.jpg img/table/0697.jpg img/table/0698.jpg img/table/0699.jpg img/table/0700.jpg img/table/0701.jpg img/table/0702.jpg img/table/0703.jpg img/table/0704.jpg img/table/0705.jpg img/table/0706.jpg img/table/0707.jpg img/table/0708.jpg img/table/0709.jpg img/table/0710.jpg img/table/0711.jpg img/table/0712.jpg img/table/0713.jpg img/table/0714.jpg img/table/0715.jpg img/table/0716.jpg img/table/0717.jpg img/table/0718.jpg img/table/0719.jpg img/table/0720.jpg img/table/0721.jpg img/table/0722.jpg img/table/0723.jpg img/table/0724.jpg img/table/0725.jpg img/table/0726.jpg img/table/0727.jpg img/table/0728.jpg img/table/0729.jpg img/table/0730.jpg img/table/0731.jpg img/table/0732.jpg img/table/0733.jpg img/table/0734.jpg img/table/0735.jpg img/table/0736.jpeg img/table/0737.jpg img/table/0024.png img/table/0994.jpg img/table/0995.jpg img/table/0996.jpeg img/table/0997.jpg img/table/0068.png img/table/1082.jpg img/table/1083.jpg img/table/1084.jpg img/table/1085.jpg img/table/1086.jpg img/table/1087.jpg img/table/1088.jpg img/table/1097.jpg img/table/1098.jpg img/table/1099.jpg img/table/1100.jpg img/table/1101.jpg img/table/1102.jpg img/table/1103.jpg img/table/1104.jpg img/table/1105.jpg img/table/1106.jpg img/table/1107.jpg img/table/1108.jpg img/table/1109.jpg img/table/1110.jpg img/table/1111.jpg img/table/1112.jpg img/table/1113.jpg img/table/1114.jpg img/table/1115.png img/table/1116.jpg img/table/1117.jpg img/table/1118.jpg img/table/1119.jpg img/table/1120.jpg img/table/1121.jpg img/table/1122.jpg img/table/1123.jpg img/table/1124.jpg img/table/1125.jpg img/table/1126.jpg img/table/1127.jpg img/table/1128.png img/table/1129.jpg img/table/1130.jpg img/table/1131.jpg img/table/1132.jpg img/table/1133.jpg img/table/1134.jpg img/table/1135.jpg img/table/1136.jpg img/table/1137.png img/table/1138.jpg img/table/1139.jpg img/table/1140.jpg img/table/1141.jpg img/table/1142.jpg img/table/1143.jpg img/table/1144.jpg img/table/1145.jpg img/table/1146.jpg img/table/1147.jpg img/table/1148.jpg img/table/1149.jpg img/table/1150.jpg img/table/1151.jpg img/table/1152.jpg img/table/1153.jpg img/table/1154.jpg img/table/1155.jpg img/table/1156.jpg img/table/1157.jpg img/table/1158.jpg img/table/1159.jpg img/table/1160.jpg img/table/1161.jpg img/table/1162.jpg img/table/1163.jpg img/table/1164.jpg img/table/1165.jpg img/table/1166.jpg img/table/1167.jpg img/table/1168.jpg img/table/1169.jpg img/table/1170.jpg img/table/1171.jpg img/table/1172.jpg img/table/1173.jpg img/table/1174.jpg img/table/1175.jpg img/table/1176.jpg img/table/1177.jpg img/table/1178.jpg img/table/1179.jpg img/table/1180.jpg img/table/1181.jpg img/table/1182.jpg img/table/1183.jpg img/table/1184.jpg img/table/1185.jpg img/table/1186.jpg img/table/1187.jpg img/table/1188.jpg img/table/1189.jpg img/table/1190.jpg img/table/1191.jpg img/table/1192.jpg img/table/1193.jpg img/table/1225.jpg img/table/1226.jpg img/table/1227.jpg img/table/1228.jpg img/table/1229.jpg img/table/1230.jpg img/table/1231.jpg img/table/1232.jpg img/table/1233.jpg img/table/1234.jpg img/table/1235.jpg img/table/1236.jpg img/table/1237.jpg img/table/1238.jpg img/table/1239.jpg img/table/1240.jpg img/table/1241.jpg img/table/1242.jpg img/table/1243.jpg img/table/1244.jpg img/table/1245.jpg img/table/1246.jpg img/table/1247.jpg img/table/1248.jpg img/table/1249.jpg img/table/1250.jpg img/table/1251.jpg img/table/1252.jpg img/table/1253.jpg img/table/1254.jpg img/table/1255.jpg img/table/1256.jpg img/table/1257.jpg img/table/1258.jpg img/table/1259.jpg img/table/1260.jpg img/table/1261.jpg img/table/1262.jpg img/table/1263.jpg img/table/1264.jpg img/table/1265.jpg img/table/1266.jpg img/table/1267.jpg img/table/1324.jpg img/table/1325.jpg img/table/1326.jpg img/table/1327.jpg img/table/1328.jpg img/table/1329.jpg img/table/1330.jpg img/table/1331.jpg img/table/1332.jpg img/table/1333.jpg img/table/1334.jpg img/table/1335.jpg img/table/1336.jpg img/table/1337.jpg img/table/1338.jpg img/table/1339.jpg img/table/1340.jpg img/table/1341.jpg img/table/1342.jpg img/table/1343.jpg img/table/1344.jpg img/table/1345.jpg img/table/1346.jpg img/table/1347.jpg img/table/1348.jpg img/table/1349.jpg img/table/1350.jpg img/table/1351.jpg img/table/1352.jpg img/table/1353.jpg img/table/1354.jpg img/table/1355.jpg img/table/1356.jpg img/table/1357.jpg img/table/1358.jpg img/table/1359.jpg img/table/1360.jpg img/table/1361.jpg img/table/1362.jpg img/table/1363.jpg img/table/1364.jpg img/table/1365.jpg img/table/1366.jpg img/table/1367.jpg img/table/1368.jpg img/table/1369.jpg img/table/1370.jpg img/table/1371.jpg img/table/1372.jpg img/table/1373.jpg img/table/1374.jpg img/table/1375.jpg img/table/1376.jpg img/table/1377.jpg img/table/1378.jpg img/table/1659.jpg img/table/1660.jpg img/table/1661.jpg img/table/1662.jpg img/table/1663.jpg img/table/1664.jpg img/table/1665.jpg img/table/1666.jpg img/table/1667.jpg img/table/1668.jpg img/table/1669.jpg img/table/1670.jpg img/table/1671.jpg img/table/1672.jpeg img/table/1673.jpg img/table/1674.jpg img/table/1675.jpeg img/table/1676.jpg img/table/1677.jpg img/table/1678.jpeg img/table/1679.jpeg img/table/1680.jpg img/table/1681.jpg img/table/1682.jpg img/table/1683.jpg img/table/1684.jpg img/table/1685.jpg img/table/1686.jpg img/table/1687.jpg img/table/1688.jpg img/table/1689.jpg img/table/1690.jpg img/table/1691.jpg img/table/1692.jpg img/table/1693.jpg img/table/1694.jpg img/table/1695.jpg img/table/1712.jpg img/table/1713.jpg img/table/1714.jpg img/table/1715.png img/table/1716.jpg img/table/1717.jpg img/table/1718.jpg img/table/1719.jpg img/table/1724.jpg img/table/1731.jpg img/tool/0024.jpg img/tool/0043.jpg img/tool/0044.jpg img/tool/0045.jpg img/tool/0046.jpg img/tool/0047.jpg img/wardrobe/0106.jpg img/wardrobe/0107.jpg img/wardrobe/0108.jpg img/wardrobe/0109.jpg img/wardrobe/0110.jpg img/wardrobe/0111.jpg img/wardrobe/0112.jpg img/wardrobe/0113.jpg img/wardrobe/0114.jpg img/wardrobe/0115.jpg img/wardrobe/0116.jpg img/wardrobe/0117.jpg img/wardrobe/0118.jpg img/wardrobe/0119.jpg img/wardrobe/0120.jpg img/wardrobe/0121.jpg img/wardrobe/0122.jpg img/wardrobe/0123.jpg img/wardrobe/0124.jpg img/wardrobe/0125.jpg img/wardrobe/0126.jpg img/wardrobe/0127.jpg img/wardrobe/0128.jpg img/wardrobe/0129.jpg img/wardrobe/0130.jpg img/wardrobe/0131.jpg img/wardrobe/0132.jpg img/wardrobe/0133.jpg img/wardrobe/0134.jpg img/wardrobe/0135.jpg img/wardrobe/0136.jpg img/wardrobe/0137.jpg img/wardrobe/0138.jpg img/wardrobe/0139.jpg img/wardrobe/0140.jpg img/wardrobe/0141.jpg img/wardrobe/0142.jpg img/wardrobe/0143.jpg img/wardrobe/0144.jpg img/wardrobe/0145.jpg img/wardrobe/0146.jpg img/wardrobe/0147.jpg img/wardrobe/0148.jpg img/wardrobe/0149.jpg img/wardrobe/0150.jpg img/wardrobe/0151.jpg img/wardrobe/0152.jpg img/wardrobe/0153.jpg img/wardrobe/0154.jpg img/wardrobe/0155.jpg img/wardrobe/0156.jpg img/wardrobe/0157.jpg img/wardrobe/0158.jpg img/wardrobe/0159.jpg img/wardrobe/0160.jpg img/wardrobe/0161.jpg img/wardrobe/0162.jpg img/wardrobe/0163.jpg img/wardrobe/0164.jpg img/wardrobe/0165.jpg img/wardrobe/0166.jpg img/wardrobe/0167.jpg img/wardrobe/0168.jpg img/wardrobe/0169.jpg img/wardrobe/0170.jpg img/wardrobe/0171.jpg img/wardrobe/0172.jpg img/wardrobe/0173.jpg img/wardrobe/0174.jpg img/wardrobe/0175.jpg img/wardrobe/0176.jpg img/wardrobe/0177.jpg img/wardrobe/0178.jpg img/wardrobe/0179.jpg img/wardrobe/0180.jpg img/wardrobe/0181.jpg img/wardrobe/0182.jpg img/wardrobe/0183.jpg img/wardrobe/0184.jpg img/wardrobe/0185.png img/wardrobe/0186.jpg img/wardrobe/0187.jpg img/wardrobe/0188.jpg img/wardrobe/0189.jpg img/wardrobe/0190.jpg img/wardrobe/0191.jpg img/wardrobe/0192.jpg img/wardrobe/0193.jpg img/wardrobe/0194.jpg img/wardrobe/0195.jpg img/wardrobe/0196.jpg img/wardrobe/0197.jpg img/wardrobe/0198.jpg img/wardrobe/0199.jpg img/wardrobe/0231.jpg img/wardrobe/0232.jpg img/wardrobe/0233.jpg img/wardrobe/0234.jpg img/wardrobe/0235.jpg ================================================ FILE: AutoEncoder/dataset_info_files/Pix3d/train.txt ================================================ img/bed/0042.jpg img/bed/0043.jpg img/bed/0044.jpg img/bed/0045.jpg img/bed/0046.jpg img/bed/0047.jpg img/bed/0048.jpg img/bed/0049.jpg img/bed/0050.jpg img/bed/0051.jpg img/bed/0052.jpg img/bed/0053.jpg img/bed/0054.jpg img/bed/0055.jpg img/bed/0056.jpg img/bed/0057.jpg img/bed/0058.jpg img/bed/0059.jpg img/bed/0060.jpg img/bed/0061.jpg img/bed/0062.jpg img/bed/0063.jpg img/bed/0064.jpg img/bed/0065.jpg img/bed/0066.jpg img/bed/0067.jpg img/bed/0068.jpg img/bed/0069.jpg img/bed/0070.jpg img/bed/0071.jpg img/bed/0072.jpg img/bed/0073.jpg img/bed/0074.jpg img/bed/0075.jpg img/bed/0076.jpg img/bed/0077.jpg img/bed/0078.jpg img/bed/0079.jpg img/bed/0080.jpg img/bed/0081.jpg img/bed/0082.jpg img/bed/0083.jpg img/bed/0084.jpg img/bed/0085.jpg img/bed/0086.jpeg img/bed/0087.jpg img/bed/0088.jpg img/bed/0089.png img/bed/0090.jpg img/bed/0091.jpg img/bed/0092.jpg img/bed/0093.jpg img/bed/0094.jpg img/bed/0095.png img/bed/0096.jpg img/bed/0097.jpg img/bed/0098.jpg img/bed/0099.jpg img/bed/0100.jpg img/bed/0101.jpg img/bed/0102.jpg img/bed/0103.jpg img/bed/0104.jpg img/bed/0105.jpg img/bed/0106.jpg img/bed/0107.jpg img/bed/0108.jpg img/bed/0109.jpg img/bed/0110.jpg img/bed/0111.jpg img/bed/0112.jpg img/bed/0113.jpg img/bed/0114.jpg img/bed/0115.jpg img/bed/0116.jpg img/bed/0117.jpg img/bed/0118.jpeg img/bed/0119.jpg img/bed/0120.jpg img/bed/0121.jpg img/bed/0122.jpg img/bed/0123.jpg img/bed/0124.jpg img/bed/0125.jpg img/bed/0126.jpg img/bed/0127.jpg img/bed/0128.jpg img/bed/0129.jpg img/bed/0130.jpg img/bed/0131.jpg img/bed/0132.jpg img/bed/0133.jpg img/bed/0134.jpg img/bed/0135.jpg img/bed/0136.jpg img/bed/0137.jpg img/bed/0138.jpg img/bed/0139.jpg img/bed/0140.jpg img/bed/0141.jpg img/bed/0142.jpg img/bed/0143.jpg img/bed/0144.jpg img/bed/0145.jpg img/bed/0146.jpg img/bed/0147.jpg img/bed/0148.jpg img/bed/0149.jpg img/bed/0150.jpg img/bed/0151.jpg img/bed/0152.jpg img/bed/0153.jpg img/bed/0154.jpg img/bed/0155.jpg img/bed/0156.jpg img/bed/0157.jpg img/bed/0158.jpg img/bed/0159.jpg img/bed/0160.png img/bed/0161.jpg img/bed/0162.jpg img/bed/0163.jpg img/bed/0164.jpg img/bed/0165.jpg img/bed/0166.jpg img/bed/0167.jpg img/bed/0168.jpg img/bed/0169.jpg img/bed/0170.jpg img/bed/0171.jpg img/bed/0172.jpg img/bed/0173.jpg img/bed/0174.jpeg img/bed/0175.jpg img/bed/0176.jpg img/bed/0177.jpg img/bed/0178.jpg img/bed/0179.jpg img/bed/0180.jpg img/bed/0181.jpg img/bed/0182.jpg img/bed/0183.jpg img/bed/0184.jpg img/bed/0185.jpg img/bed/0186.jpg img/bed/0187.jpg img/bed/0188.jpg img/bed/0189.jpg img/bed/0190.jpg img/bed/0191.jpg img/bed/0192.jpg img/bed/0193.jpg img/bed/0194.jpg img/bed/0195.jpg img/bed/0196.jpg img/bed/0197.jpg img/bed/0198.jpg img/bed/0199.jpg img/bed/0200.jpg img/bed/0201.jpg img/bed/0202.jpg img/bed/0203.jpg img/bed/0204.jpg img/bed/0205.jpg img/bed/0206.jpg img/bed/0207.jpg img/bed/0208.jpg img/bed/0209.jpg img/bed/0210.jpg img/bed/0211.jpg img/bed/0212.jpg img/bed/0213.jpg img/bed/0214.jpg img/bed/0215.jpg img/bed/0216.jpg img/bed/0217.jpg img/bed/0218.jpg img/bed/0219.jpg img/bed/0220.jpg img/bed/0221.jpeg img/bed/0222.jpg img/bed/0223.jpg img/bed/0224.jpg img/bed/0225.jpg img/bed/0226.jpg img/bed/0227.jpg img/bed/0228.jpg img/bed/0229.jpg img/bed/0230.jpg img/bed/0231.jpg img/bed/0232.jpg img/bed/0233.jpg img/bed/0234.jpg img/bed/0235.jpg img/bed/0236.jpg img/bed/0237.jpg img/bed/0238.jpg img/bed/0239.jpg img/bed/0240.jpg img/bed/0241.jpg img/bed/0242.jpg img/bed/0243.jpg img/bed/0244.jpg img/bed/0245.jpg img/bed/0246.jpg img/bed/0247.jpg img/bed/0248.jpg img/bed/0249.jpg img/bed/0250.jpg img/bed/0251.jpg img/bed/0252.jpg img/bed/0253.jpg img/bed/0254.jpg img/bed/0003.png img/bed/0004.png img/bed/0006.png img/bed/0009.png img/bed/0013.png img/bed/0034.png img/bed/0040.png img/bed/0307.jpg img/bed/0308.jpg img/bed/0309.jpg img/bed/0310.jpg img/bed/0311.jpg img/bed/0312.jpg img/bed/0313.jpg img/bed/0314.jpg img/bed/0315.jpg img/bed/0316.jpg img/bed/0317.jpg img/bed/0318.jpg img/bed/0319.jpg img/bed/0320.jpg img/bed/0321.jpg img/bed/0322.jpg img/bed/0323.png img/bed/0324.jpg img/bed/0325.jpg img/bed/0326.jpg img/bed/0327.jpg img/bed/0328.jpg img/bed/0329.jpg img/bed/0330.jpg img/bed/0331.jpeg img/bed/0332.jpg img/bed/0333.jpg img/bed/0334.jpg img/bed/0335.jpg img/bed/0336.jpg img/bed/0337.jpg img/bed/0338.jpg img/bed/0339.jpg img/bed/0340.png img/bed/0341.jpg img/bed/0342.jpg img/bed/0041.png img/bed/0343.jpg img/bed/0344.jpg img/bed/0345.jpg img/bed/0346.jpg img/bed/0347.jpg img/bed/0348.jpg img/bed/0349.jpg img/bed/0350.jpg img/bed/0351.jpg img/bed/0352.jpg img/bed/0353.jpg img/bed/0354.jpg img/bed/0355.jpg img/bed/0356.jpg img/bed/0357.jpg img/bed/0358.jpg img/bed/0359.jpg img/bed/0360.jpg img/bed/0361.jpg img/bed/0362.jpeg img/bed/0363.jpg img/bed/0364.jpg img/bed/0365.jpg img/bed/0366.jpg img/bed/0367.jpg img/bed/0368.jpg img/bed/0369.jpg img/bed/0370.jpg img/bed/0371.jpg img/bed/0372.jpg img/bed/0373.jpg img/bed/0374.jpg img/bed/0375.jpg img/bed/0376.jpg img/bed/0377.jpg img/bed/0378.jpg img/bed/0379.jpg img/bed/0380.jpg img/bed/0381.jpg img/bed/0382.jpg img/bed/0383.jpg img/bed/0384.jpg img/bed/0385.jpg img/bed/0386.jpg img/bed/0387.jpg img/bed/0388.jpg img/bed/0389.jpg img/bed/0390.jpg img/bed/0391.jpg img/bed/0392.jpg img/bed/0393.jpg img/bed/0394.jpg img/bed/0395.jpg img/bed/0396.jpg img/bed/0484.jpg img/bed/0485.jpg img/bed/0486.jpg img/bed/0487.jpg img/bed/0488.jpg img/bed/0489.jpg img/bed/0490.jpg img/bed/0491.jpg img/bed/0492.jpg img/bed/0493.jpg img/bed/0494.jpg img/bed/0495.jpg img/bed/0496.jpg img/bed/0497.jpg img/bed/0498.jpg img/bed/0499.jpg img/bed/0500.jpg img/bed/0501.jpg img/bed/0502.jpg img/bed/0503.jpg img/bed/0504.jpg img/bed/0505.jpg img/bed/0506.jpg img/bed/0507.jpg img/bed/0508.jpg img/bed/0509.jpg img/bed/0510.jpg img/bed/0511.jpg img/bed/0512.jpg img/bed/0513.jpg img/bed/0514.jpg img/bed/0515.jpg img/bed/0516.jpg img/bed/0517.jpg img/bed/0518.jpg img/bed/0519.jpg img/bed/0520.jpg img/bed/0521.jpg img/bed/0522.jpg img/bed/0523.jpg img/bed/0524.jpg img/bed/0525.jpg img/bed/0526.jpg img/bed/0527.jpg img/bed/0528.jpg img/bed/0529.jpg img/bed/0530.jpg img/bed/0531.jpg img/bed/0532.jpg img/bed/0533.jpg img/bed/0534.jpg img/bed/0535.jpeg img/bed/0536.jpg img/bed/0537.jpg img/bed/0538.jpg img/bed/0539.jpg img/bed/0540.jpg img/bed/0541.jpg img/bed/0542.jpg img/bed/0543.jpg img/bed/0544.jpg img/bed/0545.jpeg img/bed/0546.jpg img/bed/0547.jpg img/bed/0548.jpg img/bed/0549.jpg img/bed/0550.jpeg img/bed/0551.jpg img/bed/0552.jpg img/bed/0553.jpg img/bed/0554.jpg img/bed/0555.jpg img/bed/0556.jpg img/bed/0557.jpg img/bed/0558.jpg img/bed/0559.jpg img/bed/0560.jpg img/bed/0561.jpg img/bed/0562.jpg img/bed/0563.jpg img/bed/0564.jpg img/bed/0565.jpg img/bed/0566.jpg img/bed/0567.jpg img/bed/0568.jpg img/bed/0569.jpg img/bed/0570.jpg img/bed/0571.jpg img/bed/0572.jpg img/bed/0573.jpg img/bed/0574.jpg img/bed/0575.jpg img/bed/0576.jpg img/bed/0577.png img/bed/0578.jpg img/bed/0579.jpg img/bed/0580.jpg img/bed/0581.jpg img/bed/0582.jpg img/bed/0583.png img/bed/0584.jpg img/bed/0585.jpg img/bed/0586.jpg img/bed/0587.jpg img/bed/0588.jpg img/bed/0589.jpg img/bed/0590.jpg img/bed/0591.jpg img/bed/0592.jpg img/bed/0593.jpg img/bed/0594.png img/bed/0595.jpg img/bed/0596.jpg img/bed/0597.jpg img/bed/0598.jpg img/bed/0599.jpg img/bed/0600.jpg img/bed/0601.jpg img/bed/0602.jpg img/bed/0603.jpg img/bed/0604.jpg img/bed/0605.jpg img/bed/0606.jpg img/bed/0607.jpg img/bed/0608.jpg img/bed/0609.jpg img/bed/0610.jpg img/bed/0611.jpg img/bed/0612.jpg img/bed/0613.jpg img/bed/0614.jpg img/bed/0615.jpg img/bed/0616.jpg img/bed/0617.jpg img/bed/0618.jpg img/bed/0619.jpg img/bed/0620.jpg img/bed/0621.jpg img/bed/0622.jpg img/bed/0623.jpg img/bed/0624.jpg img/bed/0625.jpg img/bed/0626.jpg img/bed/0627.png img/bed/0628.jpg img/bed/0629.jpg img/bed/0630.jpg img/bed/0631.jpg img/bed/0632.jpg img/bed/0633.jpg img/bed/0634.jpg img/bed/0635.jpg img/bed/0636.jpg img/bed/0637.jpg img/bed/0638.jpg img/bed/0639.jpg img/bed/0640.jpg img/bed/0641.jpg img/bed/0642.jpg img/bed/0643.jpg img/bed/0644.jpg img/bed/0645.jpg img/bed/0646.jpg img/bed/0647.jpg img/bed/0648.jpg img/bed/0649.jpg img/bed/0650.jpg img/bed/0651.jpg img/bed/0652.jpg img/bed/0653.jpg img/bed/0654.jpg img/bed/0655.jpg img/bed/0656.jpg img/bed/0657.jpg img/bed/0658.jpg img/bed/0659.jpg img/bed/0660.jpg img/bed/0661.jpg img/bed/0662.jpg img/bed/0663.jpeg img/bed/0664.jpg img/bed/0665.jpg img/bed/0666.jpg img/bed/0667.jpg img/bed/0668.jpg img/bed/0030.png img/bed/0037.png img/bed/0669.jpg img/bed/0670.jpg img/bed/0671.jpg img/bed/0672.jpg img/bed/0673.jpg img/bed/0674.jpg img/bed/0675.jpg img/bed/0676.jpg img/bed/0677.jpg img/bed/0678.jpg img/bed/0679.jpg img/bed/0680.jpg img/bed/0681.jpg img/bed/0682.jpg img/bed/0683.jpg img/bed/0684.jpg img/bed/0685.jpg img/bed/0686.jpg img/bed/0687.jpg img/bed/0688.jpg img/bed/0689.jpg img/bed/0690.jpg img/bed/0691.jpg img/bed/0692.jpg img/bed/0693.jpg img/bed/0694.jpg img/bed/0695.jpg img/bed/0696.jpg img/bed/0697.jpg img/bed/0698.jpg img/bed/0699.jpg img/bed/0700.jpg img/bed/0701.jpg img/bed/0702.jpg img/bed/0703.png img/bed/0704.jpg img/bed/0705.jpg img/bed/0706.jpg img/bed/0707.jpg img/bed/0708.jpg img/bed/0709.jpg img/bed/0710.jpg img/bed/0711.jpg img/bed/0712.jpg img/bed/0713.jpg img/bed/0714.jpg img/bed/0715.jpg img/bed/0716.jpg img/bed/0717.jpg img/bed/0718.jpg img/bed/0719.jpg img/bed/0720.jpg img/bed/0721.jpeg img/bed/0722.jpg img/bed/0723.jpg img/bed/0724.jpg img/bed/0725.jpg img/bed/0726.png img/bed/0727.jpg img/bed/0728.jpg img/bed/0729.jpg img/bed/0730.png img/bed/0731.jpg img/bed/0732.jpg img/bed/0733.jpg img/bed/0734.png img/bed/0735.jpg img/bed/0736.jpg img/bed/0016.png img/bed/0737.jpg img/bed/0738.jpg img/bed/0739.jpg img/bed/0740.jpg img/bed/0742.jpg img/bed/0743.jpg img/bed/0744.jpg img/bed/0745.jpg img/bed/0746.jpg img/bed/0747.jpg img/bed/0748.jpg img/bed/0750.png img/bed/0001.png img/bed/0002.png img/bed/0005.png img/bed/0007.png img/bed/0018.png img/bed/0019.png img/bed/0022.png img/bed/0024.png img/bed/0029.png img/bed/0032.png img/bed/0033.png img/bed/0751.jpg img/bed/0752.jpg img/bed/0753.jpg img/bed/0754.jpg img/bed/0755.jpg img/bed/0756.jpg img/bed/0757.jpg img/bed/0758.jpg img/bed/0759.jpg img/bed/0760.jpg img/bed/0761.jpg img/bed/0762.jpg img/bed/0763.jpg img/bed/0764.jpg img/bed/0765.jpg img/bed/0766.jpg img/bed/0767.jpg img/bed/0768.jpg img/bed/0769.jpg img/bed/0770.jpg img/bed/0771.jpg img/bed/0772.jpg img/bed/0773.jpg img/bed/0774.jpg img/bed/0775.jpg img/bed/0776.jpg img/bed/0777.jpg img/bed/0778.jpg img/bed/0779.jpg img/bed/0780.jpg img/bed/0781.jpg img/bed/0782.jpg img/bed/0783.jpg img/bed/0784.jpg img/bed/0785.jpg img/bed/0786.jpg img/bed/0787.jpg img/bed/0788.jpg img/bed/0789.jpg img/bed/0790.jpg img/bed/0791.jpg img/bed/0792.jpg img/bed/0010.png img/bed/0011.png img/bed/0012.png img/bed/0014.png img/bed/0017.png img/bed/0021.png img/bed/0025.png img/bed/0026.png img/bed/0035.png img/bed/0036.png img/bed/0039.png img/bed/0793.jpg img/bed/0794.jpg img/bed/0795.jpg img/bed/0796.jpg img/bed/0797.jpg img/bed/0798.jpg img/bed/0799.jpg img/bed/0800.jpg img/bed/0801.jpg img/bed/0802.jpg img/bed/0803.jpg img/bed/0804.jpg img/bed/0805.jpg img/bed/0806.jpg img/bed/0807.jpg img/bed/0808.jpg img/bed/0809.jpg img/bed/0810.jpg img/bed/0811.jpg img/bed/0812.jpg img/bed/0813.jpg img/bed/0814.jpg img/bed/0815.jpg img/bed/0816.jpg img/bed/0817.jpg img/bed/0818.jpg img/bed/0819.jpg img/bed/0027.png img/bed/0031.png img/bed/0038.png img/bed/0820.jpg img/bed/0821.jpg img/bed/0822.jpg img/bed/0823.jpg img/bed/0824.jpg img/bed/0825.jpg img/bed/0826.jpg img/bed/0827.jpg img/bed/0828.jpg img/bed/0829.jpg img/bed/0830.jpg img/bed/0831.jpg img/bed/0832.jpg img/bed/0833.jpg img/bed/0834.jpg img/bed/0835.jpg img/bed/0836.jpg img/bed/0837.jpg img/bed/0838.jpg img/bed/0839.jpg img/bed/0840.jpg img/bed/0841.jpg img/bed/0023.png img/bed/0028.png img/bed/0842.jpg img/bed/0843.jpg img/bed/0844.jpg img/bed/0845.jpg img/bed/0846.jpg img/bed/0847.jpg img/bed/0848.jpg img/bed/0849.jpg img/bed/0850.jpg img/bed/0851.jpg img/bed/0852.jpg img/bed/0853.jpg img/bed/0854.jpg img/bed/0855.jpg img/bed/0856.jpg img/bed/0857.jpg img/bed/0858.jpg img/bed/0859.jpg img/bed/0860.jpg img/bed/0861.jpg img/bed/0862.jpg img/bed/0020.png img/bed/0916.jpg img/bed/0917.jpg img/bed/0918.jpg img/bed/0919.jpg img/bed/0920.jpg img/bed/0921.jpg img/bed/0922.jpg img/bed/0923.jpg img/bed/0924.jpg img/bed/0925.jpg img/bed/0926.jpg img/bed/0927.jpg img/bed/0928.jpg img/bed/0929.jpg img/bed/0930.jpg img/bed/0931.jpg img/bed/0932.jpg img/bed/0933.jpg img/bed/0934.jpg img/bed/0935.jpg img/bed/0936.jpg img/bed/0937.jpg img/bed/0938.jpg img/bed/0939.jpg img/bed/0940.jpg img/bed/0941.jpg img/bed/0942.jpg img/bed/0943.jpg img/bed/0944.jpg img/bed/0945.png img/bed/0946.png img/bed/0947.jpg img/bed/0948.jpg img/bed/0949.jpg img/bed/0950.png img/bed/0951.jpg img/bed/0952.jpg img/bed/0953.jpg img/bed/0954.jpg img/bed/0955.jpg img/bed/0956.jpg img/bed/0957.jpg img/bed/0958.jpg img/bed/0959.png img/bed/0960.jpg img/bed/0961.jpg img/bed/0962.jpg img/bed/0963.jpg img/bed/0964.jpg img/bed/0965.jpg img/bed/0966.jpg img/bed/0967.jpg img/bed/0968.jpg img/bed/0969.jpg img/bed/0970.jpg img/bed/0971.jpg img/bed/0972.jpg img/bed/0973.jpg img/bed/0974.jpg img/bed/0975.jpg img/bed/0976.jpg img/bed/0977.jpg img/bed/0978.jpg img/bed/0979.jpg img/bed/0980.jpg img/bed/0981.jpg img/bed/0982.jpg img/bed/0983.png img/bed/0984.jpg img/bed/0985.jpg img/bed/0986.jpg img/bed/0987.jpg img/bed/0988.jpg img/bed/0989.jpg img/bed/0990.jpg img/bed/0991.jpg img/bed/0992.jpg img/bed/0993.jpg img/bed/0994.jpg img/bookcase/0001.jpg img/bookcase/0019.jpg img/bookcase/0020.jpg img/bookcase/0021.jpg img/bookcase/0022.jpg img/bookcase/0023.jpg img/bookcase/0024.jpg img/bookcase/0025.jpg img/bookcase/0026.jpg img/bookcase/0027.jpg img/bookcase/0028.jpg img/bookcase/0029.jpg img/bookcase/0030.jpg img/bookcase/0031.jpg img/bookcase/0032.jpg img/bookcase/0033.jpg img/bookcase/0334.jpg img/bookcase/0337.jpg img/bookcase/0338.jpg img/bookcase/0339.jpg img/bookcase/0343.jpg img/bookcase/0347.jpg img/bookcase/0348.jpg img/bookcase/0350.jpg img/bookcase/0358.jpg img/bookcase/0039.jpg img/bookcase/0040.jpg img/bookcase/0041.jpg img/bookcase/0042.jpg img/bookcase/0043.jpg img/bookcase/0333.jpg img/bookcase/0342.jpg img/bookcase/0361.jpg img/bookcase/0044.jpg img/bookcase/0323.jpg img/bookcase/0324.jpg img/bookcase/0331.jpg img/bookcase/0360.jpg img/bookcase/0098.jpg img/bookcase/0099.jpg img/bookcase/0100.png img/bookcase/0101.jpg img/bookcase/0102.jpg img/bookcase/0103.jpg img/bookcase/0104.jpg img/bookcase/0105.jpg img/bookcase/0106.jpg img/bookcase/0107.jpg img/bookcase/0108.jpg img/bookcase/0109.jpg img/bookcase/0110.jpg img/bookcase/0111.jpg img/bookcase/0112.jpg img/bookcase/0113.jpg img/bookcase/0114.jpg img/bookcase/0115.jpg img/bookcase/0116.jpg img/bookcase/0117.png img/bookcase/0118.jpg img/bookcase/0119.jpg img/bookcase/0120.jpg img/bookcase/0121.jpg img/bookcase/0122.jpg img/bookcase/0123.jpg img/bookcase/0124.jpeg img/bookcase/0125.jpg img/bookcase/0126.jpg img/bookcase/0127.jpg img/bookcase/0128.jpg img/bookcase/0129.jpg img/bookcase/0130.jpg img/bookcase/0131.jpg img/bookcase/0132.jpg img/bookcase/0133.jpg img/bookcase/0134.jpg img/bookcase/0135.jpg img/bookcase/0136.jpg img/bookcase/0137.jpg img/bookcase/0138.jpg img/bookcase/0139.jpg img/bookcase/0140.jpg img/bookcase/0141.jpg img/bookcase/0142.jpg img/bookcase/0143.jpg img/bookcase/0144.jpg img/bookcase/0145.jpg img/bookcase/0146.jpg img/bookcase/0147.png img/bookcase/0148.jpg img/bookcase/0149.jpg img/bookcase/0150.jpg img/bookcase/0151.jpg img/bookcase/0152.jpg img/bookcase/0153.jpg img/bookcase/0154.jpg img/bookcase/0155.jpg img/bookcase/0156.jpg img/bookcase/0157.jpg img/bookcase/0158.jpg img/bookcase/0159.jpg img/bookcase/0160.jpg img/bookcase/0161.jpg img/bookcase/0162.jpeg img/bookcase/0163.jpg img/bookcase/0164.jpg img/bookcase/0165.jpg img/bookcase/0166.jpg img/bookcase/0167.jpg img/bookcase/0168.jpg img/bookcase/0169.jpg img/bookcase/0170.jpg img/bookcase/0171.jpg img/bookcase/0172.jpg img/bookcase/0173.jpg img/bookcase/0174.jpg img/bookcase/0175.jpg img/bookcase/0176.jpg img/bookcase/0177.jpg img/bookcase/0178.jpg img/bookcase/0179.jpg img/bookcase/0180.jpg img/bookcase/0181.jpg img/bookcase/0182.jpg img/bookcase/0183.jpg img/bookcase/0184.jpg img/bookcase/0185.jpg img/bookcase/0186.jpg img/bookcase/0187.jpg img/bookcase/0188.jpg img/bookcase/0189.jpg img/bookcase/0190.jpg img/bookcase/0191.jpg img/bookcase/0192.jpg img/bookcase/0193.jpg img/bookcase/0194.jpg img/bookcase/0195.jpg img/bookcase/0196.jpg img/bookcase/0197.jpg img/bookcase/0198.jpg img/bookcase/0199.jpg img/bookcase/0200.jpg img/bookcase/0201.jpg img/bookcase/0202.jpg img/bookcase/0203.jpg img/bookcase/0204.jpg img/bookcase/0205.jpg img/bookcase/0206.jpg img/bookcase/0207.jpg img/bookcase/0208.jpg img/bookcase/0209.jpg img/bookcase/0210.jpg img/bookcase/0211.jpg img/bookcase/0212.jpg img/bookcase/0213.png img/bookcase/0214.jpg img/bookcase/0215.jpg img/bookcase/0216.jpg img/bookcase/0217.jpg img/bookcase/0218.jpg img/bookcase/0219.jpg img/bookcase/0220.png img/bookcase/0221.jpg img/bookcase/0222.jpg img/bookcase/0349.jpg img/bookcase/0355.jpg img/bookcase/0223.jpg img/bookcase/0352.jpg img/bookcase/0224.jpg img/bookcase/0225.jpg img/bookcase/0226.jpg img/bookcase/0227.jpg img/bookcase/0228.jpg img/bookcase/0229.jpg img/bookcase/0230.jpg img/bookcase/0231.jpg img/bookcase/0232.jpg img/bookcase/0233.jpg img/bookcase/0234.jpg img/bookcase/0235.png img/bookcase/0236.jpg img/bookcase/0237.png img/bookcase/0238.jpg img/bookcase/0239.jpeg img/bookcase/0326.jpg img/bookcase/0336.jpg img/bookcase/0359.jpg img/bookcase/0240.jpg img/bookcase/0241.jpg img/bookcase/0242.jpg img/bookcase/0243.jpg img/bookcase/0244.jpg img/bookcase/0245.jpg img/bookcase/0246.png img/bookcase/0247.jpg img/bookcase/0248.jpg img/bookcase/0249.jpg img/bookcase/0250.jpg img/bookcase/0251.jpg img/bookcase/0252.jpg img/bookcase/0253.jpg img/bookcase/0254.jpg img/bookcase/0255.jpg img/bookcase/0256.jpg img/bookcase/0257.jpg img/bookcase/0258.jpg img/bookcase/0259.jpg img/bookcase/0260.jpg img/bookcase/0263.jpg img/bookcase/0264.jpg img/bookcase/0266.jpg img/bookcase/0267.jpg img/bookcase/0268.jpg img/bookcase/0269.jpg img/bookcase/0271.jpg img/bookcase/0272.jpg img/bookcase/0273.jpg img/bookcase/0275.jpg img/bookcase/0276.jpg img/bookcase/0277.jpg img/bookcase/0278.jpg img/bookcase/0279.jpg img/bookcase/0280.jpg img/bookcase/0282.jpg img/bookcase/0283.jpg img/bookcase/0285.jpg img/bookcase/0286.jpg img/bookcase/0287.jpg img/bookcase/0288.jpg img/bookcase/0289.jpg img/bookcase/0291.jpg img/bookcase/0292.jpg img/bookcase/0293.jpg img/bookcase/0294.jpg img/bookcase/0295.jpg img/bookcase/0297.jpg img/bookcase/0299.jpg img/bookcase/0300.jpg img/bookcase/0302.jpg img/bookcase/0303.jpg img/bookcase/0304.jpg img/bookcase/0305.jpg img/bookcase/0307.jpg img/bookcase/0308.jpg img/bookcase/0309.jpg img/bookcase/0311.jpg img/bookcase/0312.jpg img/bookcase/0313.jpg img/bookcase/0315.jpg img/bookcase/0316.jpg img/bookcase/0317.jpg img/bookcase/0319.jpg img/bookcase/0320.jpg img/bookcase/0321.jpg img/bookcase/0322.jpg img/bookcase/0351.jpg img/bookcase/0353.jpg img/chair/1550.jpg img/chair/1552.jpg img/chair/1554.jpg img/chair/1558.jpg img/chair/1566.jpg img/chair/1568.jpg img/chair/1569.jpg img/chair/1573.jpg img/chair/1577.jpg img/chair/1578.jpg img/chair/1584.jpg img/chair/1586.jpeg img/chair/1587.jpg img/chair/1588.jpg img/chair/1591.jpg img/chair/1592.jpg img/chair/1599.jpg img/chair/1600.jpg img/chair/1606.jpg img/chair/1608.jpg img/chair/1610.jpg img/chair/1613.jpg img/chair/1614.jpg img/chair/1615.jpg img/chair/1616.jpg img/chair/1626.jpg img/chair/1633.jpg img/chair/1634.jpg img/chair/1639.jpg img/chair/1640.jpg img/chair/1643.jpg img/chair/1644.jpg img/chair/1645.jpg img/chair/1648.jpg img/chair/1649.jpg img/chair/1650.jpg img/chair/1652.jpg img/chair/1656.jpg img/chair/1657.jpg img/chair/1660.jpg img/chair/1665.jpg img/chair/1668.jpg img/chair/1670.jpg img/chair/1672.jpg img/chair/1681.jpg img/chair/1684.jpg img/chair/1685.png img/chair/1688.jpg img/chair/1692.jpg img/chair/1693.jpg img/chair/1694.jpg img/chair/1696.jpg img/chair/1702.jpg img/chair/1703.jpg img/chair/1707.jpg img/chair/1709.jpg img/chair/1710.jpg img/chair/1712.jpg img/chair/1719.jpg img/chair/1721.jpg img/chair/1722.jpg img/chair/1723.jpg img/chair/1725.jpg img/chair/1726.jpg img/chair/1727.jpg img/chair/1731.jpg img/chair/1733.jpg img/chair/1735.jpg img/chair/1738.jpg img/chair/1739.jpg img/chair/1742.jpg img/chair/1744.jpg img/chair/1750.jpg img/chair/1752.jpg img/chair/1758.jpg img/chair/1760.jpg img/chair/1761.jpg img/chair/1764.jpg img/chair/1765.jpg img/chair/1767.jpg img/chair/1768.jpg img/chair/1769.jpg img/chair/1770.jpg img/chair/1775.jpg img/chair/1776.jpg img/chair/1777.jpg img/chair/1778.jpg img/chair/1779.jpg img/chair/1780.jpg img/chair/1783.jpg img/chair/1787.jpg img/chair/1788.jpg img/chair/1789.jpg img/chair/1790.jpg img/chair/1792.jpg img/chair/1793.jpg img/chair/1796.jpg img/chair/1797.jpg img/chair/1798.jpg img/chair/1799.jpg img/chair/1803.jpg img/chair/1804.jpg img/chair/1805.jpg img/chair/1806.jpg img/chair/0012.png img/chair/0013.png img/chair/0014.png img/chair/0069.png img/chair/0070.png img/chair/0086.png img/chair/1812.jpg img/chair/1816.jpg img/chair/1820.jpg img/chair/1821.jpg img/chair/1824.jpg img/chair/1825.jpg img/chair/1826.jpg img/chair/1832.jpg img/chair/1835.jpg img/chair/1836.jpg img/chair/1837.jpg img/chair/1838.jpg img/chair/1839.jpg img/chair/1843.jpg img/chair/1845.jpg img/chair/1846.png img/chair/1847.jpg img/chair/1849.jpg img/chair/1852.jpg img/chair/1853.jpg img/chair/1857.jpg img/chair/1861.jpg img/chair/1864.jpg img/chair/1867.jpg img/chair/1868.jpg img/chair/1873.jpg img/chair/1874.jpg img/chair/1877.jpg img/chair/1878.jpg img/chair/1880.jpg img/chair/1882.jpg img/chair/1883.jpg img/chair/1902.jpg img/chair/1908.jpg img/chair/1913.jpg img/chair/0047.png img/chair/0048.png img/chair/1917.jpg img/chair/1935.jpg img/chair/1936.jpg img/chair/1939.jpg img/chair/1940.jpg img/chair/1946.jpg img/chair/1947.jpg img/chair/1948.jpg img/chair/1950.jpg img/chair/1951.jpg img/chair/1953.jpg img/chair/1955.jpg img/chair/1957.jpg img/chair/1958.jpg img/chair/1959.jpeg img/chair/1962.jpg img/chair/1964.jpeg img/chair/1967.jpg img/chair/1969.jpg img/chair/1970.jpg img/chair/1971.jpeg img/chair/1974.jpg img/chair/1979.jpg img/chair/1984.jpeg img/chair/1985.jpg img/chair/1990.jpg img/chair/1991.jpg img/chair/1995.jpg img/chair/1997.jpg img/chair/2003.jpg img/chair/2004.jpg img/chair/2005.jpg img/chair/2006.jpg img/chair/2008.jpg img/chair/2010.jpg img/chair/2012.jpg img/chair/2013.jpg img/chair/2016.jpg img/chair/2017.jpg img/chair/2018.jpg img/chair/2028.jpg img/chair/0089.png img/chair/2034.jpg img/chair/2035.jpg img/chair/2036.jpg img/chair/2037.jpg img/chair/2039.jpg img/chair/2042.jpg img/chair/2044.jpg img/chair/2045.jpg img/chair/2052.jpg img/chair/2053.jpg img/chair/2054.jpg img/chair/2058.jpg img/chair/2059.jpg img/chair/2062.jpg img/chair/2064.jpg img/chair/2065.jpg img/chair/2067.jpg img/chair/2070.jpg img/chair/2071.jpg img/chair/2072.jpg img/chair/2075.jpg img/chair/2078.jpg img/chair/2082.jpg img/chair/2085.jpg img/chair/2086.jpg img/chair/2093.jpg img/chair/2095.jpg img/chair/2097.jpg img/chair/2098.jpg img/chair/2099.jpg img/chair/2101.jpg img/chair/2103.jpg img/chair/2107.jpg img/chair/2108.jpg img/chair/2109.jpg img/chair/2110.jpg img/chair/2111.jpg img/chair/2112.jpg img/chair/2121.jpg img/chair/2122.jpg img/chair/2128.jpg img/chair/2133.jpg img/chair/2138.jpg img/chair/2139.jpg img/chair/2140.jpg img/chair/2141.jpg img/chair/2142.jpg img/chair/2144.jpg img/chair/2146.jpg img/chair/2147.jpg img/chair/2148.jpg img/chair/2150.jpg img/chair/2151.jpg img/chair/2153.jpg img/chair/2154.jpg img/chair/2155.jpg img/chair/2156.jpg img/chair/2158.jpg img/chair/2162.jpg img/chair/2166.jpg img/chair/2168.jpg img/chair/2169.jpg img/chair/2171.jpg img/chair/2173.jpg img/chair/2176.jpg img/chair/2177.jpg img/chair/2178.jpg img/chair/2179.jpg img/chair/2180.jpeg img/chair/2182.jpg img/chair/2183.jpg img/chair/2184.jpg img/chair/2185.jpg img/chair/2186.jpg img/chair/2187.jpg img/chair/2188.jpg img/chair/2189.jpg img/chair/2190.png img/chair/2191.jpg img/chair/2193.jpg img/chair/2194.jpg img/chair/2198.jpg img/chair/2199.jpg img/chair/2200.jpg img/chair/2201.jpg img/chair/2205.jpg img/chair/2207.jpeg img/chair/2208.jpg img/chair/2209.jpg img/chair/2210.jpg img/chair/2211.jpg img/chair/2212.jpg img/chair/2213.jpg img/chair/2214.jpg img/chair/2215.jpg img/chair/2216.jpg img/chair/2218.png img/chair/2219.jpg img/chair/2325.jpg img/chair/2342.jpg img/chair/2345.png img/chair/2352.jpg img/chair/0075.png img/chair/2360.jpg img/chair/2362.jpg img/chair/2364.jpg img/chair/2365.jpg img/chair/2368.jpg img/chair/2370.jpg img/chair/2372.jpg img/chair/2373.jpg img/chair/2375.jpg img/chair/2377.jpg img/chair/2380.jpg img/chair/2384.jpg img/chair/2387.jpg img/chair/2388.jpg img/chair/2390.jpg img/chair/2391.jpg img/chair/2402.jpg img/chair/2403.jpg img/chair/2405.jpg img/chair/2406.jpg img/chair/2410.jpg img/chair/2412.jpg img/chair/2413.jpg img/chair/2414.jpg img/chair/2419.jpg img/chair/2420.jpg img/chair/2424.jpg img/chair/2425.jpg img/chair/2432.jpg img/chair/2437.jpg img/chair/2438.jpg img/chair/2444.jpg img/chair/2445.jpg img/chair/2446.jpg img/chair/2447.jpg img/chair/2448.jpg img/chair/0087.png img/chair/2457.jpg img/chair/2465.jpg img/chair/2466.jpg img/chair/2484.jpg img/chair/2488.jpg img/chair/2492.jpg img/chair/2493.jpg img/chair/2498.jpg img/chair/2499.jpg img/chair/2503.jpg img/chair/2506.jpg img/chair/2512.jpg img/chair/2516.jpg img/chair/2520.jpg img/chair/2521.jpg img/chair/2522.jpg img/chair/2529.jpg img/chair/2531.jpg img/chair/2533.jpg img/chair/2537.jpg img/chair/2538.jpg img/chair/2544.jpg img/chair/2548.jpg img/chair/2549.jpg img/chair/2550.jpg img/chair/2552.jpg img/chair/2554.jpg img/chair/2559.jpg img/chair/2570.png img/chair/2572.jpg img/chair/2573.jpeg img/chair/2576.jpg img/chair/2580.jpg img/chair/2586.jpg img/chair/2589.jpg img/chair/2702.jpg img/chair/2707.jpg img/chair/2713.jpg img/chair/2717.jpg img/chair/2720.jpg img/chair/2724.jpg img/chair/2725.jpg img/chair/2729.jpg img/chair/2730.jpg img/chair/2735.jpg img/chair/2737.jpg img/chair/2749.jpg img/chair/2750.jpg img/chair/0006.png img/chair/0018.png img/chair/0023.png img/chair/0030.png img/chair/0035.png img/chair/0038.png img/chair/0043.png img/chair/0049.png img/chair/0064.png img/chair/0079.png img/chair/0088.png img/chair/0103.png img/chair/0112.png img/chair/2794.jpg img/chair/2799.jpg img/chair/2802.jpg img/chair/2805.jpg img/chair/2809.jpg img/chair/2810.jpg img/chair/2812.jpg img/chair/2813.jpg img/chair/2814.jpg img/chair/2817.jpg img/chair/2819.jpg img/chair/2822.jpg img/chair/2825.jpg img/chair/0001.png img/chair/0002.png img/chair/0003.png img/chair/0004.png img/chair/0005.png img/chair/0007.png img/chair/0010.png img/chair/0017.png img/chair/0020.png img/chair/0021.png img/chair/0022.png img/chair/0024.png img/chair/0025.png img/chair/0029.png img/chair/0034.png img/chair/0036.png img/chair/0037.png img/chair/0039.png img/chair/0042.png img/chair/0050.png img/chair/0054.png img/chair/0056.png img/chair/0057.png img/chair/0059.png img/chair/0060.png img/chair/0061.png img/chair/0062.png img/chair/0063.png img/chair/0065.png img/chair/0068.png img/chair/0074.png img/chair/0076.png img/chair/0078.png img/chair/0081.png img/chair/0084.png img/chair/0090.png img/chair/0095.png img/chair/0096.png img/chair/0097.png img/chair/0098.png img/chair/0099.png img/chair/0101.png img/chair/0102.png img/chair/0104.png img/chair/0106.png img/chair/0109.png img/chair/2832.jpg img/chair/2835.jpg img/chair/2849.jpg img/chair/2850.jpg img/chair/2851.jpg img/chair/2858.jpg img/chair/2868.jpg img/chair/2870.jpg img/chair/2876.jpg img/chair/2878.jpg img/chair/2883.jpg img/chair/2887.jpg img/chair/2888.jpg img/chair/2889.jpg img/chair/2891.jpg img/chair/2893.jpg img/chair/2896.jpg img/chair/2898.jpg img/chair/2906.jpg img/chair/2910.jpg img/chair/2913.jpg img/chair/2914.jpg img/chair/2915.jpg img/chair/2917.jpg img/chair/2919.jpg img/chair/2924.jpg img/chair/2925.jpg img/chair/2926.jpg img/chair/2927.jpg img/chair/2934.jpg img/chair/2936.jpg img/chair/2938.jpg img/chair/2940.jpg img/chair/2941.jpg img/chair/2947.jpg img/chair/2948.jpg img/chair/2953.jpg img/chair/2954.jpg img/chair/2959.jpg img/chair/2963.jpg img/chair/2964.jpg img/chair/2965.jpg img/chair/2970.jpg img/chair/2971.jpg img/chair/2976.jpg img/chair/2977.jpg img/chair/2981.jpg img/chair/2985.jpg img/chair/2986.jpg img/chair/2987.jpg img/chair/2988.jpg img/chair/2990.jpg img/chair/2997.jpg img/chair/3000.jpg img/chair/3001.jpg img/chair/3002.jpg img/chair/3005.jpg img/chair/3018.jpg img/chair/3019.jpg img/chair/3022.jpg img/chair/3024.jpg img/chair/3028.jpg img/chair/3030.jpg img/chair/3039.jpg img/chair/3042.jpg img/chair/3045.jpg img/chair/3049.jpg img/chair/3061.jpg img/chair/3067.jpg img/chair/3070.jpg img/chair/3071.jpeg img/chair/3072.jpg img/chair/3073.jpg img/chair/3078.jpg img/chair/3080.jpg img/chair/3082.jpg img/chair/3084.jpg img/chair/3085.jpg img/chair/3089.jpg img/chair/3090.jpg img/chair/3093.jpg img/chair/3096.jpg img/chair/3117.jpg img/chair/3118.jpg img/chair/3122.jpg img/chair/3125.jpg img/chair/3127.jpg img/chair/3130.jpg img/chair/3131.jpg img/chair/3132.jpg img/chair/3138.jpg img/chair/3139.jpg img/chair/3141.jpg img/chair/3147.jpg img/chair/3148.jpg img/chair/3151.jpg img/chair/3156.jpg img/chair/3159.jpg img/chair/3160.jpg img/chair/3163.jpg img/chair/3167.jpg img/chair/3176.jpg img/chair/3178.jpg img/chair/3179.jpg img/chair/3183.jpg img/chair/3190.jpg img/chair/3195.jpg img/chair/3196.jpg img/chair/3205.jpg img/chair/3208.jpg img/chair/3210.jpg img/chair/3214.jpg img/chair/3215.jpg img/chair/3217.jpg img/chair/3218.jpg img/chair/3323.jpg img/chair/3327.jpg img/chair/3329.jpg img/chair/3332.jpg img/chair/3334.jpg img/chair/3336.jpg img/chair/3339.jpg img/chair/3341.jpg img/chair/3353.jpg img/chair/3365.jpg img/chair/3366.jpg img/chair/3368.jpg img/chair/3369.jpg img/chair/3378.jpg img/chair/3380.jpg img/chair/3381.jpg img/chair/0008.png img/chair/0009.png img/chair/0026.png img/chair/0028.png img/chair/0051.png img/chair/0052.png img/chair/0113.png img/chair/3383.jpg img/chair/3386.jpg img/chair/3387.jpg img/chair/3388.jpg img/chair/3390.jpg img/chair/3391.jpg img/chair/3392.jpg img/chair/3393.jpg img/chair/3395.jpg img/chair/3397.jpg img/chair/3400.jpg img/chair/3402.jpg img/chair/3406.jpg img/chair/3407.jpg img/chair/3418.jpg img/chair/3419.png img/chair/3421.jpg img/chair/3428.jpg img/chair/3432.jpg img/chair/3433.jpg img/chair/3434.jpg img/chair/3436.jpg img/chair/3438.jpg img/chair/3442.jpg img/chair/3443.jpg img/chair/3444.jpg img/chair/3445.png img/chair/3448.png img/chair/3449.jpg img/chair/3451.jpg img/chair/3455.jpg img/chair/3456.jpg img/chair/3458.jpg img/chair/3459.jpg img/chair/3462.jpg img/chair/3464.jpg img/chair/3465.jpg img/chair/3467.jpg img/chair/3470.jpg img/chair/3471.jpeg img/chair/3473.jpg img/chair/3474.jpg img/chair/3486.jpg img/chair/3487.jpg img/chair/3493.jpg img/chair/3497.jpg img/chair/3500.jpg img/chair/3502.jpg img/chair/3503.jpg img/chair/3505.jpg img/chair/3507.jpg img/chair/3509.jpg img/chair/3510.jpg img/chair/3512.jpg img/chair/3513.jpg img/chair/3516.jpg img/chair/3519.jpg img/chair/3520.jpg img/chair/3521.jpg img/chair/3522.jpg img/chair/3523.jpg img/chair/3526.jpg img/chair/3528.jpg img/chair/3531.jpg img/chair/3533.jpg img/chair/3534.jpg img/chair/3535.jpg img/chair/3538.jpg img/chair/3541.jpg img/chair/3548.jpg img/chair/3551.jpg img/chair/3553.jpg img/chair/3554.jpg img/chair/3555.jpg img/chair/3556.png img/chair/3558.jpg img/chair/3559.jpg img/chair/3563.jpg img/chair/3565.jpg img/chair/3566.jpg img/chair/3568.jpg img/chair/3569.jpg img/chair/3570.jpg img/chair/3571.jpg img/chair/3575.jpg img/chair/3576.jpeg img/chair/3578.jpg img/chair/3582.jpg img/chair/3586.jpg img/chair/3587.jpg img/chair/3589.jpg img/chair/3590.jpg img/chair/3591.jpg img/chair/3595.jpg img/chair/3596.jpg img/chair/3597.jpg img/chair/3600.jpg img/chair/3604.jpg img/chair/3608.jpg img/chair/3609.jpg img/chair/3611.jpeg img/chair/3613.jpg img/chair/3614.jpg img/chair/3616.jpg img/chair/3620.jpg img/chair/3622.jpg img/chair/3623.jpg img/chair/3624.jpg img/chair/3626.jpg img/chair/3628.jpg img/chair/3629.jpg img/chair/3631.jpg img/chair/3632.jpg img/chair/3633.jpg img/chair/3636.jpg img/chair/3640.jpeg img/chair/3643.jpg img/chair/3645.png img/chair/3649.jpg img/chair/3650.jpg img/chair/3652.jpg img/chair/3653.jpg img/chair/3654.jpg img/chair/3655.jpeg img/chair/3656.jpg img/chair/3658.jpg img/chair/3659.jpg img/chair/3661.jpg img/chair/3664.jpg img/chair/3669.jpeg img/chair/3672.jpg img/chair/3673.jpg img/chair/3674.jpg img/chair/3675.jpg img/chair/0015.png img/chair/0031.png img/chair/0032.png img/chair/0094.png img/chair/0100.png img/chair/3677.jpg img/chair/3678.jpg img/chair/3680.jpg img/chair/3685.jpg img/chair/3686.png img/chair/3691.jpg img/chair/3692.jpg img/chair/3693.jpg img/chair/3706.jpg img/chair/3708.jpg img/chair/3714.jpg img/chair/3715.jpg img/chair/3716.jpg img/chair/3717.jpg img/chair/3724.jpg img/chair/3726.jpg img/chair/3727.jpg img/chair/3735.jpg img/chair/3741.jpg img/chair/3743.jpg img/chair/3744.jpeg img/chair/3751.jpg img/chair/3753.jpg img/chair/3761.jpg img/chair/3762.jpg img/chair/3764.jpg img/chair/3765.jpg img/chair/3769.jpg img/chair/3778.jpg img/chair/3785.jpg img/chair/3789.jpg img/chair/3790.jpg img/chair/3796.jpg img/chair/3798.jpg img/chair/3801.jpg img/chair/3817.jpg img/chair/3818.jpg img/chair/3820.jpg img/chair/3831.jpg img/chair/3835.jpg img/chair/3836.jpg img/chair/3837.jpg img/chair/0116.jpg img/chair/0117.jpg img/chair/0123.jpg img/chair/0125.jpg img/chair/0128.jpg img/chair/0131.jpg img/chair/0139.jpg img/chair/0140.jpg img/chair/0149.jpg img/chair/0221.jpg img/chair/0237.jpg img/chair/0310.jpg img/chair/0313.jpg img/chair/0398.jpg img/chair/0498.jpg img/chair/0505.jpg img/chair/0508.jpg img/chair/0555.jpg img/chair/0558.jpg img/chair/0560.jpg img/chair/0562.jpg img/chair/0567.jpg img/chair/0569.jpg img/chair/0576.jpg img/chair/0579.jpg img/chair/0582.jpg img/chair/0587.jpg img/chair/0597.jpg img/chair/0598.jpg img/chair/0601.jpg img/chair/0603.jpg img/chair/0614.jpg img/chair/0635.jpg img/chair/0661.jpg img/chair/0689.jpg img/chair/0694.jpg img/chair/0704.jpg img/chair/0730.jpg img/chair/0735.jpg img/chair/0739.jpg img/chair/0758.jpg img/chair/0759.jpg img/chair/0767.jpg img/chair/0785.jpg img/chair/0790.jpg img/chair/0811.jpg img/chair/0818.jpg img/chair/0825.jpg img/chair/0829.jpg img/chair/0836.jpg img/chair/0865.jpg img/chair/0869.jpg img/chair/0870.jpg img/chair/0871.jpg img/chair/0872.jpg img/chair/0879.jpg img/chair/0887.jpg img/chair/0891.jpg img/chair/0893.jpg img/chair/0894.jpg img/chair/0895.jpg img/chair/0900.jpg img/chair/0902.jpg img/chair/0914.jpg img/chair/0915.jpg img/chair/0938.jpg img/chair/0943.jpg img/chair/0948.jpg img/chair/0951.jpg img/chair/0964.jpg img/chair/0973.jpg img/chair/0974.jpg img/chair/0980.jpg img/chair/0991.jpg img/chair/0992.jpg img/chair/1004.jpg img/chair/1005.jpg img/chair/1012.jpg img/chair/1020.jpg img/chair/1021.jpg img/chair/1030.jpg img/chair/1046.jpg img/chair/1047.jpg img/chair/1050.jpg img/chair/1063.jpg img/chair/1065.jpg img/chair/1066.jpg img/chair/1067.jpg img/chair/1068.jpg img/chair/1074.jpg img/chair/1085.jpg img/chair/1086.jpg img/chair/1087.jpg img/chair/1090.jpg img/chair/1095.jpg img/chair/1107.jpg img/chair/1109.jpg img/chair/1120.jpg img/chair/1173.jpg img/chair/1175.jpg img/chair/1189.jpg img/chair/1218.jpg img/chair/1228.jpg img/chair/1245.jpg img/chair/1249.jpg img/chair/1265.jpg img/chair/1266.jpg img/chair/1272.jpg img/chair/1310.jpg img/chair/1329.jpg img/chair/1346.jpg img/chair/1353.jpg img/chair/1412.jpg img/chair/1422.jpg img/chair/1425.jpg img/chair/1455.jpg img/chair/1529.jpg img/desk/0009.jpg img/desk/0010.jpg img/desk/0011.jpg img/desk/0012.jpg img/desk/0013.jpg img/desk/0014.jpg img/desk/0015.jpg img/desk/0016.jpg img/desk/0017.jpg img/desk/0018.jpg img/desk/0019.jpg img/desk/0020.jpg img/desk/0021.jpg img/desk/0022.jpg img/desk/0023.jpg img/desk/0024.jpg img/desk/0025.jpg img/desk/0026.jpg img/desk/0027.jpg img/desk/0028.jpg img/desk/0029.jpg img/desk/0030.jpg img/desk/0031.jpg img/desk/0032.jpg img/desk/0033.jpg img/desk/0034.jpg img/desk/0035.jpg img/desk/0036.jpg img/desk/0037.jpg img/desk/0038.jpg img/desk/0039.jpg img/desk/0040.jpg img/desk/0041.jpg img/desk/0042.jpg img/desk/0043.jpg img/desk/0044.jpg img/desk/0045.jpeg img/desk/0046.jpg img/desk/0047.jpg img/desk/0048.jpg img/desk/0049.jpg img/desk/0050.jpg img/desk/0051.jpg img/desk/0052.jpg img/desk/0053.jpg img/desk/0054.jpg img/desk/0055.jpg img/desk/0056.jpg img/desk/0057.jpg img/desk/0058.jpg img/desk/0059.jpg img/desk/0060.jpg img/desk/0061.jpg img/desk/0062.jpg img/desk/0063.jpg img/desk/0064.jpg img/desk/0065.jpg img/desk/0066.jpg img/desk/0067.jpg img/desk/0068.jpg img/desk/0069.jpg img/desk/0070.jpg img/desk/0071.jpg img/desk/0072.jpg img/desk/0073.jpg img/desk/0074.jpg img/desk/0075.jpg img/desk/0076.jpg img/desk/0077.jpg img/desk/0078.jpg img/desk/0079.jpg img/desk/0080.jpg img/desk/0081.jpg img/desk/0082.jpg img/desk/0083.jpg img/desk/0084.jpg img/desk/0085.jpg img/desk/0086.jpg img/desk/0087.jpg img/desk/0088.jpg img/desk/0089.jpg img/desk/0090.jpg img/desk/0091.jpg img/desk/0092.jpg img/desk/0093.jpg img/desk/0094.jpg img/desk/0095.jpg img/desk/0096.jpg img/desk/0097.jpg img/desk/0684.jpg img/desk/0098.jpg img/desk/0099.jpg img/desk/0100.jpg img/desk/0101.jpg img/desk/0102.jpg img/desk/0103.jpg img/desk/0104.jpg img/desk/0105.jpg img/desk/0106.jpg img/desk/0107.jpg img/desk/0108.jpg img/desk/0109.jpg img/desk/0110.jpg img/desk/0111.jpg img/desk/0112.jpg img/desk/0113.jpg img/desk/0114.jpg img/desk/0115.jpg img/desk/0680.jpg img/desk/0681.jpg img/desk/0682.jpg img/desk/0685.jpg img/desk/0690.jpg img/desk/0691.jpg img/desk/0698.jpg img/desk/0116.jpg img/desk/0117.jpg img/desk/0118.jpg img/desk/0119.jpg img/desk/0120.jpg img/desk/0121.jpg img/desk/0683.jpg img/desk/0692.jpg img/desk/0699.jpg img/desk/0122.jpg img/desk/0123.jpg img/desk/0124.jpg img/desk/0125.jpg img/desk/0126.jpg img/desk/0127.jpg img/desk/0128.jpg img/desk/0129.jpg img/desk/0130.jpg img/desk/0131.jpg img/desk/0132.jpg img/desk/0133.jpg img/desk/0134.jpg img/desk/0135.jpg img/desk/0136.jpg img/desk/0137.jpg img/desk/0138.jpg img/desk/0139.jpg img/desk/0140.jpg img/desk/0141.jpg img/desk/0142.jpg img/desk/0143.jpg img/desk/0144.jpg img/desk/0145.jpg img/desk/0146.jpg img/desk/0147.jpg img/desk/0148.jpg img/desk/0149.jpg img/desk/0688.jpg img/desk/0150.jpg img/desk/0151.jpg img/desk/0152.jpg img/desk/0153.jpg img/desk/0154.jpg img/desk/0155.jpg img/desk/0156.jpg img/desk/0157.jpg img/desk/0158.jpeg img/desk/0159.jpg img/desk/0160.jpg img/desk/0161.jpg img/desk/0162.jpg img/desk/0163.jpg img/desk/0164.jpg img/desk/0165.jpg img/desk/0166.jpg img/desk/0167.jpg img/desk/0168.jpg img/desk/0169.jpg img/desk/0170.jpg img/desk/0693.jpg img/desk/0171.jpg img/desk/0172.jpg img/desk/0173.jpg img/desk/0174.jpg img/desk/0175.jpeg img/desk/0187.jpg img/desk/0188.jpg img/desk/0189.jpeg img/desk/0190.jpg img/desk/0191.jpg img/desk/0192.jpg img/desk/0193.jpg img/desk/0194.jpeg img/desk/0195.jpg img/desk/0196.jpg img/desk/0197.jpg img/desk/0198.jpg img/desk/0199.jpg img/desk/0200.jpg img/desk/0201.jpg img/desk/0202.jpg img/desk/0209.jpg img/desk/0210.jpg img/desk/0211.jpg img/desk/0212.jpg img/desk/0213.jpg img/desk/0214.jpg img/desk/0215.jpg img/desk/0216.jpg img/desk/0217.jpg img/desk/0218.jpg img/desk/0219.jpg img/desk/0220.jpg img/desk/0221.jpg img/desk/0222.jpg img/desk/0223.jpg img/desk/0224.jpg img/desk/0225.jpg img/desk/0226.jpg img/desk/0227.jpg img/desk/0228.jpg img/desk/0229.jpg img/desk/0230.jpg img/desk/0231.jpg img/desk/0232.jpg img/desk/0233.jpg img/desk/0234.jpg img/desk/0235.jpg img/desk/0236.jpg img/desk/0237.jpg img/desk/0238.jpg img/desk/0239.jpg img/desk/0240.jpg img/desk/0241.jpg img/desk/0242.jpg img/desk/0243.jpg img/desk/0244.jpg img/desk/0245.jpg img/desk/0246.jpg img/desk/0247.jpg img/desk/0248.jpg img/desk/0249.jpg img/desk/0250.jpg img/desk/0251.jpg img/desk/0252.jpg img/desk/0253.jpg img/desk/0254.jpg img/desk/0255.jpg img/desk/0256.jpg img/desk/0257.jpg img/desk/0258.jpg img/desk/0259.jpg img/desk/0260.jpg img/desk/0261.jpg img/desk/0262.jpg img/desk/0263.jpg img/desk/0264.jpg img/desk/0265.jpg img/desk/0266.jpg img/desk/0267.jpg img/desk/0268.jpg img/desk/0269.jpg img/desk/0270.jpg img/desk/0271.jpg img/desk/0272.jpg img/desk/0273.png img/desk/0274.jpg img/desk/0275.jpg img/desk/0276.jpg img/desk/0277.jpg img/desk/0278.jpg img/desk/0279.jpg img/desk/0280.jpg img/desk/0281.jpg img/desk/0282.jpg img/desk/0283.jpg img/desk/0284.jpg img/desk/0285.jpg img/desk/0286.jpg img/desk/0287.jpg img/desk/0288.jpg img/desk/0289.jpg img/desk/0290.jpg img/desk/0291.jpg img/desk/0292.jpg img/desk/0293.jpg img/desk/0294.jpg img/desk/0295.jpg img/desk/0296.jpg img/desk/0297.jpg img/desk/0298.jpg img/desk/0299.jpg img/desk/0300.jpg img/desk/0301.jpg img/desk/0302.jpg img/desk/0303.jpg img/desk/0304.jpg img/desk/0305.jpg img/desk/0306.jpg img/desk/0307.jpg img/desk/0308.jpg img/desk/0309.jpg img/desk/0310.jpg img/desk/0311.jpg img/desk/0312.jpg img/desk/0313.jpg img/desk/0314.jpg img/desk/0315.jpg img/desk/0316.jpg img/desk/0317.jpg img/desk/0318.jpeg img/desk/0319.jpg img/desk/0320.jpg img/desk/0416.jpg img/desk/0417.jpg img/desk/0418.jpg img/desk/0419.jpg img/desk/0420.jpg img/desk/0421.jpg img/desk/0422.jpg img/desk/0423.jpg img/desk/0424.jpg img/desk/0425.jpg img/desk/0426.jpg img/desk/0427.jpg img/desk/0428.jpg img/desk/0429.jpg img/desk/0430.jpg img/desk/0431.jpg img/desk/0432.jpg img/desk/0433.jpg img/desk/0434.jpg img/desk/0435.jpg img/desk/0436.jpg img/desk/0437.jpg img/desk/0438.jpg img/desk/0439.png img/desk/0440.jpg img/desk/0441.jpg img/desk/0442.jpg img/desk/0443.jpg img/desk/0444.jpg img/desk/0445.jpg img/desk/0446.jpg img/desk/0447.jpg img/desk/0448.jpg img/desk/0449.jpg img/desk/0450.jpg img/desk/0451.jpg img/desk/0452.jpg img/desk/0453.jpg img/desk/0454.jpg img/desk/0455.jpg img/desk/0456.jpg img/desk/0457.jpg img/desk/0458.jpg img/desk/0459.jpg img/desk/0460.jpg img/desk/0461.jpg img/desk/0462.jpg img/desk/0463.jpg img/desk/0464.jpg img/desk/0465.jpg img/desk/0466.jpg img/desk/0467.jpg img/desk/0468.jpeg img/desk/0469.jpg img/desk/0470.jpg img/desk/0471.jpg img/desk/0472.jpg img/desk/0473.jpg img/desk/0474.jpg img/desk/0475.jpg img/desk/0476.jpg img/desk/0477.jpg img/desk/0478.jpg img/desk/0479.jpg img/desk/0480.png img/desk/0481.jpg img/desk/0482.jpg img/desk/0483.jpg img/desk/0484.jpg img/desk/0485.jpg img/desk/0486.jpg img/desk/0487.jpg img/desk/0488.jpg img/desk/0489.jpg img/desk/0490.jpg img/desk/0491.jpg img/desk/0492.jpg img/desk/0493.jpg img/desk/0494.jpg img/desk/0495.jpg img/desk/0496.jpg img/desk/0497.jpg img/desk/0498.jpg img/desk/0499.jpg img/desk/0500.jpg img/desk/0501.jpg img/desk/0502.jpg img/desk/0503.jpg img/desk/0504.jpg img/desk/0505.jpg img/desk/0506.jpg img/desk/0507.jpg img/desk/0508.jpg img/desk/0509.jpg img/desk/0510.jpg img/desk/0511.jpg img/desk/0512.jpg img/desk/0513.jpg img/desk/0514.jpg img/desk/0515.jpg img/desk/0516.jpg img/desk/0517.jpg img/desk/0518.jpg img/desk/0519.jpg img/desk/0520.jpg img/desk/0521.jpg img/desk/0522.jpg img/desk/0523.jpg img/desk/0524.jpg img/desk/0525.jpg img/desk/0526.png img/desk/0689.jpg img/desk/0694.jpg img/desk/0696.jpg img/desk/0697.jpg img/desk/0700.jpg img/desk/0527.jpg img/desk/0528.jpg img/desk/0529.jpg img/desk/0530.jpg img/desk/0531.jpg img/desk/0532.jpg img/desk/0533.jpg img/desk/0534.jpg img/desk/0535.jpg img/desk/0536.jpg img/desk/0537.jpg img/desk/0538.jpg img/desk/0539.jpg img/desk/0540.jpg img/desk/0541.jpg img/desk/0542.jpg img/desk/0543.jpg img/desk/0544.jpg img/desk/0545.jpg img/desk/0546.jpg img/desk/0547.jpg img/desk/0548.jpg img/desk/0549.jpg img/desk/0550.jpg img/desk/0551.jpg img/desk/0552.jpg img/desk/0553.jpg img/desk/0554.jpg img/desk/0555.jpg img/desk/0556.jpg img/desk/0557.png img/desk/0558.jpg img/desk/0559.jpg img/desk/0560.jpg img/desk/0561.jpg img/desk/0562.jpg img/desk/0563.jpg img/desk/0564.jpg img/desk/0565.jpg img/desk/0566.jpg img/desk/0567.jpg img/desk/0568.jpg img/desk/0569.jpg img/desk/0570.jpg img/desk/0571.jpg img/desk/0572.jpg img/desk/0573.jpg img/desk/0574.jpg img/desk/0575.jpg img/desk/0576.jpg img/desk/0577.jpg img/desk/0578.jpg img/desk/0579.jpg img/desk/0580.jpg img/desk/0581.jpg img/desk/0582.jpg img/desk/0583.jpg img/desk/0584.jpg img/desk/0585.jpg img/desk/0586.jpg img/desk/0587.jpg img/desk/0588.jpg img/desk/0589.jpg img/desk/0590.jpg img/desk/0591.jpg img/desk/0592.jpg img/desk/0593.jpg img/desk/0594.jpg img/desk/0595.jpg img/desk/0695.jpg img/desk/0596.jpg img/desk/0597.jpg img/desk/0598.jpg img/desk/0599.jpg img/desk/0600.jpg img/desk/0601.jpg img/desk/0602.jpg img/desk/0603.jpg img/desk/0604.jpg img/desk/0605.jpg img/desk/0606.jpg img/desk/0607.jpg img/desk/0608.jpg img/desk/0609.jpg img/desk/0610.jpg img/desk/0611.jpg img/desk/0612.jpg img/desk/0613.jpg img/desk/0614.jpg img/desk/0615.jpg img/desk/0616.jpg img/desk/0617.jpg img/desk/0618.jpg img/desk/0619.jpg img/desk/0620.jpg img/desk/0621.jpg img/desk/0622.jpg img/desk/0623.jpg img/desk/0624.jpg img/desk/0625.jpg img/desk/0626.jpg img/desk/0627.jpg img/desk/0628.jpg img/desk/0629.jpg img/desk/0630.jpg img/desk/0631.jpg img/desk/0632.jpg img/desk/0633.jpg img/desk/0634.jpg img/desk/0635.jpg img/desk/0636.jpg img/desk/0637.jpg img/desk/0638.jpg img/desk/0639.jpg img/desk/0640.jpg img/desk/0641.jpg img/desk/0642.jpg img/desk/0643.jpg img/desk/0644.jpg img/desk/0645.jpg img/desk/0646.jpg img/desk/0647.jpg img/desk/0648.jpg img/desk/0649.jpg img/desk/0650.jpg img/desk/0651.jpg img/desk/0652.jpg img/desk/0653.jpg img/desk/0654.jpg img/desk/0655.jpg img/desk/0656.jpg img/desk/0657.jpg img/desk/0658.jpg img/desk/0659.jpg img/desk/0660.jpg img/desk/0661.jpg img/desk/0662.jpg img/desk/0663.jpg img/desk/0664.jpg img/desk/0665.jpg img/desk/0666.jpg img/desk/0667.jpg img/desk/0668.jpg img/desk/0669.jpg img/desk/0670.jpg img/desk/0671.jpg img/desk/0672.jpg img/desk/0673.jpg img/desk/0674.jpg img/desk/0675.jpg img/desk/0676.jpg img/desk/0677.jpg img/desk/0678.jpg img/desk/0679.jpeg img/misc/0001.jpg img/misc/0002.jpg img/misc/0003.jpg img/misc/0004.jpg img/misc/0005.jpg img/misc/0006.jpg img/misc/0015.jpg img/misc/0016.jpg img/misc/0017.jpg img/misc/0018.jpg img/misc/0019.jpg img/misc/0020.jpg img/misc/0021.jpg img/misc/0022.jpg img/misc/0023.jpg img/misc/0024.jpg img/misc/0026.jpg img/misc/0027.jpg img/misc/0028.jpg img/misc/0029.jpg img/misc/0031.jpg img/misc/0032.jpg img/misc/0033.jpg img/misc/0035.jpg img/misc/0037.jpg img/misc/0039.jpg img/misc/0040.jpg img/misc/0041.jpg img/misc/0042.jpg img/misc/0044.jpg img/misc/0045.jpg img/misc/0046.jpg img/misc/0047.jpg img/misc/0048.jpg img/misc/0050.jpg img/misc/0052.jpg img/misc/0053.jpg img/misc/0055.jpg img/misc/0056.jpg img/misc/0057.jpg img/misc/0058.jpg img/misc/0059.jpg img/misc/0060.jpg img/misc/0061.jpg img/misc/0062.jpg img/misc/0063.jpg img/misc/0064.jpg img/misc/0065.jpg img/misc/0066.jpg img/misc/0067.jpg img/misc/0068.jpg img/sofa/0122.jpg img/sofa/0123.jpg img/sofa/0124.jpg img/sofa/0125.jpg img/sofa/0126.jpg img/sofa/0127.jpg img/sofa/0128.jpg img/sofa/0129.jpg img/sofa/0130.jpg img/sofa/0131.jpg img/sofa/0132.jpg img/sofa/0133.jpg img/sofa/0134.jpg img/sofa/0135.jpg img/sofa/0136.jpg img/sofa/0137.jpg img/sofa/0138.jpg img/sofa/0139.jpg img/sofa/0140.jpg img/sofa/0141.jpg img/sofa/0142.jpg img/sofa/0143.jpg img/sofa/0144.jpg img/sofa/0145.jpg img/sofa/0146.jpg img/sofa/0147.jpg img/sofa/0148.jpg img/sofa/0149.jpg img/sofa/0150.jpg img/sofa/0151.jpg img/sofa/0152.jpg img/sofa/0153.jpg img/sofa/0154.jpg img/sofa/0155.jpg img/sofa/0006.png img/sofa/0009.png img/sofa/0010.png img/sofa/0047.png img/sofa/0053.png img/sofa/0067.png img/sofa/0075.png img/sofa/0076.png img/sofa/0077.png img/sofa/0082.png img/sofa/0083.png img/sofa/0093.png img/sofa/0354.jpg img/sofa/0355.jpg img/sofa/0356.jpg img/sofa/0357.jpg img/sofa/0358.jpg img/sofa/0359.jpg img/sofa/0360.jpg img/sofa/0361.jpg img/sofa/0362.jpg img/sofa/0363.jpg img/sofa/0364.jpg img/sofa/0365.jpg img/sofa/0366.jpg img/sofa/0367.jpg img/sofa/0368.jpg img/sofa/0369.jpg img/sofa/0370.jpg img/sofa/0371.jpg img/sofa/0372.jpg img/sofa/0373.jpg img/sofa/0374.jpg img/sofa/0375.jpg img/sofa/0376.jpg img/sofa/0377.jpg img/sofa/0378.jpg img/sofa/0379.jpg img/sofa/0380.jpg img/sofa/0381.jpg img/sofa/0382.jpg img/sofa/0383.jpg img/sofa/0384.jpg img/sofa/0385.jpg img/sofa/0386.jpg img/sofa/0387.jpg img/sofa/0388.jpg img/sofa/0389.jpg img/sofa/0390.jpg img/sofa/0391.jpg img/sofa/0392.jpg img/sofa/0393.jpg img/sofa/0394.jpg img/sofa/0395.jpg img/sofa/0396.jpg img/sofa/0397.jpg img/sofa/0398.jpg img/sofa/0399.png img/sofa/0400.jpg img/sofa/0401.jpg img/sofa/0402.jpg img/sofa/0403.jpg img/sofa/0404.jpg img/sofa/0405.jpg img/sofa/0406.jpg img/sofa/0407.jpg img/sofa/0408.jpg img/sofa/0409.jpg img/sofa/0016.png img/sofa/0020.png img/sofa/0021.png img/sofa/0023.png img/sofa/0024.png img/sofa/0025.png img/sofa/0029.png img/sofa/0030.png img/sofa/0031.png img/sofa/0032.png img/sofa/0033.png img/sofa/0034.png img/sofa/0035.png img/sofa/0036.png img/sofa/0038.png img/sofa/0039.png img/sofa/0040.png img/sofa/0041.png img/sofa/0045.png img/sofa/0046.png img/sofa/0049.png img/sofa/0050.png img/sofa/0051.png img/sofa/0063.png img/sofa/0064.png img/sofa/0066.png img/sofa/0068.png img/sofa/0070.png img/sofa/0086.png img/sofa/0087.png img/sofa/0088.png img/sofa/0089.png img/sofa/0090.png img/sofa/0096.png img/sofa/0097.png img/sofa/0098.png img/sofa/0410.jpg img/sofa/0411.jpg img/sofa/0412.jpg img/sofa/0413.jpg img/sofa/0414.jpg img/sofa/0415.jpg img/sofa/0416.jpg img/sofa/0417.jpg img/sofa/0418.jpg img/sofa/0419.jpg img/sofa/0420.jpg img/sofa/0421.jpg img/sofa/0422.jpg img/sofa/0423.jpg img/sofa/0424.jpg img/sofa/0425.jpg img/sofa/0426.jpg img/sofa/0427.jpg img/sofa/0428.jpg img/sofa/0429.jpg img/sofa/0430.jpg img/sofa/0431.jpg img/sofa/0432.jpg img/sofa/0433.jpg img/sofa/0434.jpg img/sofa/0435.jpg img/sofa/0436.jpg img/sofa/0437.jpg img/sofa/0438.jpg img/sofa/0439.jpg img/sofa/0440.jpg img/sofa/0441.jpg img/sofa/0442.jpg img/sofa/0443.jpg img/sofa/0444.jpg img/sofa/0445.jpg img/sofa/0446.jpg img/sofa/0447.jpg img/sofa/0448.jpg img/sofa/0449.jpg img/sofa/0450.jpg img/sofa/0451.jpg img/sofa/0452.jpg img/sofa/0453.jpg img/sofa/0454.jpeg img/sofa/0455.jpg img/sofa/0456.jpg img/sofa/0457.jpg img/sofa/0458.jpg img/sofa/0459.jpg img/sofa/0460.jpg img/sofa/0461.jpg img/sofa/0462.jpg img/sofa/0463.jpg img/sofa/0464.jpg img/sofa/0465.jpg img/sofa/0466.jpg img/sofa/0467.jpg img/sofa/0468.jpg img/sofa/0469.jpg img/sofa/0470.jpg img/sofa/0471.jpg img/sofa/0472.jpg img/sofa/0473.png img/sofa/0474.png img/sofa/0475.jpg img/sofa/0476.jpg img/sofa/0477.jpg img/sofa/0478.jpg img/sofa/0479.jpg img/sofa/0480.jpg img/sofa/0481.jpg img/sofa/0482.jpg img/sofa/0483.jpg img/sofa/0484.jpg img/sofa/0485.jpg img/sofa/0486.jpg img/sofa/0487.jpg img/sofa/0488.jpg img/sofa/0489.jpg img/sofa/0490.jpg img/sofa/0491.jpg img/sofa/0492.jpg img/sofa/0493.jpg img/sofa/0494.jpg img/sofa/0495.jpg img/sofa/0496.jpg img/sofa/0497.jpg img/sofa/0498.jpg img/sofa/0499.jpg img/sofa/0500.jpg img/sofa/0501.jpg img/sofa/0502.jpg img/sofa/0503.jpg img/sofa/0504.jpg img/sofa/0505.jpg img/sofa/0506.jpg img/sofa/0507.jpg img/sofa/0508.jpg img/sofa/0509.jpg img/sofa/0510.jpg img/sofa/0511.jpg img/sofa/0512.jpg img/sofa/0513.jpg img/sofa/0514.jpg img/sofa/0515.jpg img/sofa/0516.jpg img/sofa/0011.png img/sofa/0015.png img/sofa/0069.png img/sofa/0085.png img/sofa/0095.png img/sofa/0517.jpg img/sofa/0518.jpg img/sofa/0519.jpg img/sofa/0520.jpg img/sofa/0521.jpg img/sofa/0522.jpg img/sofa/0523.jpg img/sofa/0524.jpg img/sofa/0525.jpg img/sofa/0526.jpg img/sofa/0527.jpg img/sofa/0528.jpg img/sofa/0529.jpg img/sofa/0530.jpg img/sofa/0531.jpg img/sofa/0532.jpg img/sofa/0533.jpg img/sofa/0534.jpg img/sofa/0535.jpg img/sofa/0536.jpg img/sofa/0537.jpg img/sofa/0538.jpg img/sofa/0539.jpg img/sofa/0540.jpg img/sofa/0541.jpg img/sofa/0542.png img/sofa/0543.jpg img/sofa/0544.jpg img/sofa/0545.jpg img/sofa/0546.jpg img/sofa/0547.jpg img/sofa/0548.jpg img/sofa/0549.jpg img/sofa/0550.png img/sofa/0551.jpeg img/sofa/0552.jpg img/sofa/0553.jpg img/sofa/0554.jpg img/sofa/0555.jpg img/sofa/0556.jpg img/sofa/0557.jpg img/sofa/0558.jpg img/sofa/0559.jpg img/sofa/0560.jpg img/sofa/0561.jpg img/sofa/0562.jpg img/sofa/0563.jpg img/sofa/0564.jpg img/sofa/0565.jpg img/sofa/0566.jpg img/sofa/0567.jpg img/sofa/0568.jpg img/sofa/0569.jpg img/sofa/0570.jpg img/sofa/0571.jpg img/sofa/0572.jpg img/sofa/0573.jpg img/sofa/0574.jpg img/sofa/0575.jpg img/sofa/0576.jpg img/sofa/0577.jpg img/sofa/0578.jpg img/sofa/0579.jpg img/sofa/0580.jpg img/sofa/0581.jpg img/sofa/0582.jpg img/sofa/0583.jpg img/sofa/0584.jpg img/sofa/0585.jpg img/sofa/0586.jpg img/sofa/0587.jpg img/sofa/0588.jpg img/sofa/0589.jpg img/sofa/0590.jpg img/sofa/0591.jpg img/sofa/0592.jpg img/sofa/0593.jpg img/sofa/0594.jpeg img/sofa/0595.jpg img/sofa/0596.jpg img/sofa/0597.jpg img/sofa/0598.jpg img/sofa/0599.jpg img/sofa/0600.jpg img/sofa/0601.jpg img/sofa/0602.jpg img/sofa/0603.jpg img/sofa/0604.jpg img/sofa/0605.jpg img/sofa/0606.jpg img/sofa/0607.jpg img/sofa/0608.jpg img/sofa/0609.jpg img/sofa/0610.jpg img/sofa/0611.jpg img/sofa/0612.jpg img/sofa/0613.jpg img/sofa/0614.jpg img/sofa/0615.jpg img/sofa/0616.jpg img/sofa/0617.jpg img/sofa/0618.jpg img/sofa/0619.jpg img/sofa/0620.jpg img/sofa/0621.jpg img/sofa/0622.jpg img/sofa/0623.png img/sofa/0624.jpg img/sofa/0625.png img/sofa/0626.jpg img/sofa/0627.jpg img/sofa/0628.jpg img/sofa/0629.jpg img/sofa/0630.jpg img/sofa/0631.jpg img/sofa/0632.jpg img/sofa/0633.png img/sofa/0634.jpg img/sofa/0635.jpg img/sofa/0636.jpg img/sofa/0637.jpg img/sofa/0638.jpg img/sofa/0639.jpg img/sofa/0640.jpg img/sofa/0641.jpg img/sofa/0642.jpg img/sofa/0643.jpg img/sofa/0644.jpg img/sofa/0645.jpg img/sofa/0646.jpg img/sofa/0647.jpg img/sofa/0648.jpg img/sofa/0649.jpg img/sofa/0650.png img/sofa/0651.jpg img/sofa/0652.jpg img/sofa/0653.jpg img/sofa/0654.jpg img/sofa/0655.jpg img/sofa/0656.jpg img/sofa/0657.jpg img/sofa/0658.jpg img/sofa/0659.jpg img/sofa/0107.png img/sofa/0681.jpg img/sofa/0682.jpg img/sofa/0683.jpg img/sofa/0684.jpg img/sofa/0685.jpg img/sofa/0686.jpg img/sofa/0687.jpg img/sofa/0688.jpg img/sofa/0689.jpg img/sofa/0690.jpg img/sofa/0691.jpg img/sofa/0692.jpg img/sofa/0693.jpg img/sofa/0694.jpg img/sofa/0695.jpg img/sofa/0696.jpg img/sofa/0697.jpg img/sofa/0698.jpg img/sofa/0699.jpg img/sofa/0700.jpg img/sofa/0701.jpg img/sofa/0702.jpg img/sofa/0703.jpg img/sofa/0704.jpg img/sofa/0705.jpg img/sofa/0706.jpg img/sofa/0707.jpg img/sofa/0708.jpg img/sofa/0709.jpg img/sofa/0710.jpg img/sofa/0711.jpg img/sofa/0712.jpg img/sofa/0713.jpg img/sofa/0714.png img/sofa/0715.jpg img/sofa/0716.jpg img/sofa/0717.jpg img/sofa/0718.jpg img/sofa/0719.jpg img/sofa/0720.jpg img/sofa/0721.jpg img/sofa/0722.jpg img/sofa/0723.jpg img/sofa/0724.jpg img/sofa/0725.jpg img/sofa/0726.jpg img/sofa/0727.jpg img/sofa/0728.jpg img/sofa/0729.jpg img/sofa/0730.jpg img/sofa/0731.jpg img/sofa/0732.jpeg img/sofa/0733.jpg img/sofa/0734.jpg img/sofa/0735.jpg img/sofa/0736.jpg img/sofa/0737.jpg img/sofa/0738.jpg img/sofa/0108.png img/sofa/0120.png img/sofa/0739.jpg img/sofa/0740.jpg img/sofa/0741.jpg img/sofa/0742.jpg img/sofa/0743.jpg img/sofa/0744.jpg img/sofa/0745.jpg img/sofa/0746.jpg img/sofa/0747.jpg img/sofa/0748.jpg img/sofa/0749.jpg img/sofa/0750.jpg img/sofa/0751.jpg img/sofa/0752.jpg img/sofa/0753.jpg img/sofa/0754.jpg img/sofa/0755.jpg img/sofa/0756.jpg img/sofa/0757.jpg img/sofa/0758.jpg img/sofa/0759.jpg img/sofa/0760.jpg img/sofa/0761.jpg img/sofa/0762.jpg img/sofa/0763.jpg img/sofa/0764.jpg img/sofa/0765.jpg img/sofa/0766.jpg img/sofa/0767.jpg img/sofa/0768.jpg img/sofa/0769.jpg img/sofa/0770.jpg img/sofa/0771.jpg img/sofa/0772.jpg img/sofa/0773.jpg img/sofa/0774.jpg img/sofa/0775.jpg img/sofa/0776.jpg img/sofa/0777.jpg img/sofa/0778.jpg img/sofa/0779.jpg img/sofa/0780.png img/sofa/0781.jpg img/sofa/0782.jpg img/sofa/0783.jpg img/sofa/0784.jpg img/sofa/0785.jpg img/sofa/0786.jpg img/sofa/0787.jpg img/sofa/0788.jpg img/sofa/0789.jpg img/sofa/0790.jpg img/sofa/0791.jpg img/sofa/0792.jpg img/sofa/0793.jpg img/sofa/0794.jpg img/sofa/0795.jpg img/sofa/0796.jpg img/sofa/0797.jpg img/sofa/0798.jpg img/sofa/0799.jpg img/sofa/0800.jpg img/sofa/0801.jpg img/sofa/0802.jpg img/sofa/0803.jpg img/sofa/0804.jpg img/sofa/0805.jpg img/sofa/0806.jpg img/sofa/0807.jpg img/sofa/0808.jpg img/sofa/0809.jpg img/sofa/0810.jpg img/sofa/0811.jpg img/sofa/0812.jpg img/sofa/0813.jpg img/sofa/0814.jpg img/sofa/0815.jpg img/sofa/0816.jpg img/sofa/0817.jpg img/sofa/0818.jpg img/sofa/0819.jpg img/sofa/0820.jpg img/sofa/0821.jpg img/sofa/0822.jpg img/sofa/0823.jpg img/sofa/0824.jpg img/sofa/0825.jpg img/sofa/0826.jpg img/sofa/0827.jpg img/sofa/0828.jpg img/sofa/0829.jpg img/sofa/0830.jpg img/sofa/0831.jpg img/sofa/0832.jpg img/sofa/0833.jpg img/sofa/0834.jpg img/sofa/0835.jpg img/sofa/0836.jpg img/sofa/0837.jpg img/sofa/0838.jpg img/sofa/0839.jpg img/sofa/0840.jpg img/sofa/0841.jpg img/sofa/0842.jpg img/sofa/0843.jpg img/sofa/0844.jpg img/sofa/0845.jpg img/sofa/0846.jpg img/sofa/0847.jpg img/sofa/0848.jpg img/sofa/0849.jpg img/sofa/0850.jpg img/sofa/0851.jpg img/sofa/0852.jpg img/sofa/0853.jpg img/sofa/0854.jpg img/sofa/0855.jpg img/sofa/0856.jpg img/sofa/0857.jpg img/sofa/0858.jpg img/sofa/0859.jpg img/sofa/0860.jpg img/sofa/0861.jpg img/sofa/0862.jpg img/sofa/0863.jpg img/sofa/0864.jpg img/sofa/0865.jpg img/sofa/0866.jpg img/sofa/0867.jpg img/sofa/0868.jpg img/sofa/0869.jpg img/sofa/0870.jpg img/sofa/0871.jpg img/sofa/0872.jpg img/sofa/0873.jpg img/sofa/0874.jpg img/sofa/0875.jpg img/sofa/0876.jpg img/sofa/0877.jpg img/sofa/0878.jpg img/sofa/0879.jpg img/sofa/0880.jpg img/sofa/0881.jpg img/sofa/0882.jpg img/sofa/0883.jpg img/sofa/0884.jpg img/sofa/0885.jpg img/sofa/0886.jpg img/sofa/0887.jpg img/sofa/0888.jpg img/sofa/0889.jpg img/sofa/0890.jpg img/sofa/0891.jpg img/sofa/0892.jpg img/sofa/0893.jpg img/sofa/0894.jpeg img/sofa/0895.jpg img/sofa/0896.jpg img/sofa/0897.jpg img/sofa/0898.jpeg img/sofa/0899.jpg img/sofa/0900.jpg img/sofa/0901.jpg img/sofa/0902.jpg img/sofa/0903.jpg img/sofa/0904.jpg img/sofa/0905.jpg img/sofa/0906.jpg img/sofa/0907.jpg img/sofa/0908.jpg img/sofa/0058.png img/sofa/0099.png img/sofa/0100.png img/sofa/0101.png img/sofa/0104.png img/sofa/0111.png img/sofa/0113.png img/sofa/0114.png img/sofa/0909.jpg img/sofa/0910.jpg img/sofa/0911.jpg img/sofa/0912.jpg img/sofa/0913.jpg img/sofa/0914.jpg img/sofa/0915.jpg img/sofa/0916.jpg img/sofa/0917.jpg img/sofa/0918.jpg img/sofa/0919.jpg img/sofa/0920.jpg img/sofa/0921.jpg img/sofa/0922.jpg img/sofa/0923.jpg img/sofa/0924.jpg img/sofa/0925.jpg img/sofa/0926.jpg img/sofa/0927.jpg img/sofa/0928.jpg img/sofa/0929.jpg img/sofa/0930.jpg img/sofa/0931.jpg img/sofa/0932.jpg img/sofa/0933.jpg img/sofa/0934.jpg img/sofa/0935.jpg img/sofa/0936.jpg img/sofa/0937.jpg img/sofa/0938.jpg img/sofa/0939.jpg img/sofa/0940.jpg img/sofa/0941.jpg img/sofa/0942.jpg img/sofa/0943.jpg img/sofa/0944.jpg img/sofa/0945.jpg img/sofa/0946.jpg img/sofa/0947.jpg img/sofa/0948.jpg img/sofa/0949.jpg img/sofa/0950.jpg img/sofa/0951.jpg img/sofa/0952.jpg img/sofa/0953.jpg img/sofa/0954.jpg img/sofa/0955.jpg img/sofa/0956.jpg img/sofa/0957.jpg img/sofa/0958.jpg img/sofa/0959.jpg img/sofa/0960.jpg img/sofa/0961.jpg img/sofa/0962.jpg img/sofa/0963.jpg img/sofa/0964.jpg img/sofa/0965.jpg img/sofa/0966.jpg img/sofa/0967.jpg img/sofa/0968.jpg img/sofa/0969.jpg img/sofa/0970.jpg img/sofa/0971.jpg img/sofa/0972.jpg img/sofa/0973.jpg img/sofa/0974.jpg img/sofa/0975.jpg img/sofa/0976.jpg img/sofa/0977.jpg img/sofa/0978.jpg img/sofa/0979.jpg img/sofa/0980.jpg img/sofa/0981.jpg img/sofa/0982.jpg img/sofa/0983.jpg img/sofa/0984.jpg img/sofa/0985.jpg img/sofa/0986.jpg img/sofa/0987.jpg img/sofa/0988.jpeg img/sofa/0989.jpg img/sofa/0990.jpg img/sofa/0991.jpeg img/sofa/0992.jpg img/sofa/0993.jpg img/sofa/0994.jpg img/sofa/0995.jpg img/sofa/0996.jpg img/sofa/0997.jpg img/sofa/0998.jpg img/sofa/0999.jpg img/sofa/1000.jpg img/sofa/1001.jpg img/sofa/1002.jpg img/sofa/1003.jpg img/sofa/1004.jpg img/sofa/1005.jpg img/sofa/1006.jpg img/sofa/1007.jpg img/sofa/1008.jpg img/sofa/1009.jpg img/sofa/1010.jpg img/sofa/1011.jpg img/sofa/1012.jpg img/sofa/1013.jpg img/sofa/1014.jpg img/sofa/1015.jpg img/sofa/1016.jpg img/sofa/1017.jpg img/sofa/1018.jpg img/sofa/1019.jpg img/sofa/1020.jpg img/sofa/1021.jpg img/sofa/1022.jpg img/sofa/1023.jpg img/sofa/1024.jpg img/sofa/1025.jpg img/sofa/1026.jpg img/sofa/1027.jpg img/sofa/1028.jpg img/sofa/1029.jpg img/sofa/1030.jpg img/sofa/1031.jpg img/sofa/1032.jpg img/sofa/1033.jpg img/sofa/1034.jpg img/sofa/1035.jpg img/sofa/1036.jpg img/sofa/1037.jpg img/sofa/1038.jpg img/sofa/1039.jpg img/sofa/1040.jpg img/sofa/1041.jpg img/sofa/1042.jpg img/sofa/1043.jpg img/sofa/1044.jpg img/sofa/1045.jpg img/sofa/1046.jpg img/sofa/1047.jpg img/sofa/1048.jpg img/sofa/1049.jpg img/sofa/1050.jpg img/sofa/1051.jpg img/sofa/1052.jpg img/sofa/1053.jpg img/sofa/1054.jpg img/sofa/1055.jpg img/sofa/1056.jpg img/sofa/1057.jpg img/sofa/1058.jpg img/sofa/1059.jpg img/sofa/1060.jpg img/sofa/1061.jpg img/sofa/1062.jpg img/sofa/1063.jpg img/sofa/1064.jpg img/sofa/1065.jpg img/sofa/1066.jpg img/sofa/1067.jpg img/sofa/1068.jpg img/sofa/1069.png img/sofa/1070.jpg img/sofa/1071.jpg img/sofa/1072.jpg img/sofa/1073.jpg img/sofa/1074.jpg img/sofa/1075.jpg img/sofa/1076.jpg img/sofa/1077.jpg img/sofa/1078.jpg img/sofa/1079.png img/sofa/1080.jpg img/sofa/1081.jpg img/sofa/1082.jpg img/sofa/1083.jpg img/sofa/1084.jpg img/sofa/1085.jpg img/sofa/1086.jpg img/sofa/1087.jpg img/sofa/1088.jpg img/sofa/1089.jpg img/sofa/1090.jpg img/sofa/1091.jpg img/sofa/1092.jpg img/sofa/1093.jpg img/sofa/1094.jpg img/sofa/1095.jpg img/sofa/1096.jpg img/sofa/1097.jpg img/sofa/1098.jpg img/sofa/1099.jpg img/sofa/1100.jpg img/sofa/1101.jpg img/sofa/1102.jpg img/sofa/1103.jpg img/sofa/1104.jpg img/sofa/1105.png img/sofa/1106.jpeg img/sofa/1107.jpg img/sofa/1108.jpg img/sofa/1109.jpg img/sofa/1110.jpg img/sofa/1111.jpg img/sofa/1112.jpg img/sofa/1113.jpg img/sofa/0084.png img/sofa/1114.jpg img/sofa/1115.jpg img/sofa/1116.jpg img/sofa/1117.jpg img/sofa/1118.jpg img/sofa/1119.jpg img/sofa/1120.jpg img/sofa/1121.jpg img/sofa/1122.jpg img/sofa/1123.jpg img/sofa/1124.jpg img/sofa/1125.jpg img/sofa/1126.jpg img/sofa/1127.jpg img/sofa/1128.jpg img/sofa/1129.jpg img/sofa/1130.jpg img/sofa/1131.jpg img/sofa/1132.jpg img/sofa/1133.jpg img/sofa/1134.jpg img/sofa/1135.png img/sofa/1136.jpg img/sofa/1137.jpg img/sofa/1138.jpg img/sofa/1139.jpg img/sofa/1140.png img/sofa/1141.jpg img/sofa/1142.png img/sofa/1143.jpg img/sofa/1144.jpg img/sofa/1145.jpg img/sofa/1146.jpg img/sofa/1147.jpg img/sofa/1148.jpg img/sofa/0001.png img/sofa/0004.png img/sofa/0007.png img/sofa/0008.png img/sofa/0017.png img/sofa/0022.png img/sofa/0037.png img/sofa/0044.png img/sofa/0052.png img/sofa/0055.png img/sofa/0057.png img/sofa/0059.png img/sofa/0060.png img/sofa/0061.png img/sofa/0062.png img/sofa/0065.png img/sofa/0072.png img/sofa/0078.png img/sofa/0081.png img/sofa/0094.png img/sofa/1149.jpg img/sofa/1150.jpg img/sofa/1151.jpg img/sofa/1152.jpg img/sofa/1153.jpeg img/sofa/1154.jpg img/sofa/1155.jpg img/sofa/1156.jpg img/sofa/1157.jpg img/sofa/1158.jpg img/sofa/1159.jpg img/sofa/1160.jpg img/sofa/1161.jpg img/sofa/1162.jpg img/sofa/1163.jpg img/sofa/1164.jpg img/sofa/1165.jpg img/sofa/1166.jpg img/sofa/1167.jpg img/sofa/1168.jpg img/sofa/1169.jpg img/sofa/1170.jpg img/sofa/1171.jpg img/sofa/1172.jpg img/sofa/1173.jpg img/sofa/1174.jpg img/sofa/1175.jpg img/sofa/1176.jpg img/sofa/1177.jpg img/sofa/1178.jpg img/sofa/1179.jpg img/sofa/1180.jpeg img/sofa/1181.jpg img/sofa/1182.jpg img/sofa/1183.jpg img/sofa/1184.jpg img/sofa/1185.jpg img/sofa/1186.jpg img/sofa/1187.jpg img/sofa/1188.jpeg img/sofa/1189.jpg img/sofa/1190.jpg img/sofa/1191.jpg img/sofa/1192.jpg img/sofa/1193.jpg img/sofa/1194.jpg img/sofa/1195.jpg img/sofa/1196.jpg img/sofa/1197.jpg img/sofa/1198.jpg img/sofa/1199.jpg img/sofa/1200.jpg img/sofa/1201.jpg img/sofa/1202.jpg img/sofa/1203.jpg img/sofa/1204.jpg img/sofa/1205.jpg img/sofa/1206.jpg img/sofa/1207.jpg img/sofa/1208.jpg img/sofa/1209.jpg img/sofa/1210.jpg img/sofa/1211.jpg img/sofa/1212.jpg img/sofa/1213.jpg img/sofa/1214.jpg img/sofa/1215.jpg img/sofa/1216.jpg img/sofa/1217.jpg img/sofa/1218.jpg img/sofa/1219.jpg img/sofa/1220.jpg img/sofa/1221.jpg img/sofa/1222.jpg img/sofa/1223.jpg img/sofa/1224.jpg img/sofa/1225.jpg img/sofa/1226.jpg img/sofa/1227.jpg img/sofa/1228.jpg img/sofa/1229.jpg img/sofa/1230.jpg img/sofa/1231.jpg img/sofa/1232.jpg img/sofa/1233.jpg img/sofa/1234.jpg img/sofa/1235.jpg img/sofa/1236.jpg img/sofa/1237.jpg img/sofa/1238.jpg img/sofa/1239.jpg img/sofa/1240.jpg img/sofa/1241.jpg img/sofa/1242.jpg img/sofa/1243.jpg img/sofa/1244.jpg img/sofa/1245.jpg img/sofa/1246.jpg img/sofa/1247.jpg img/sofa/1248.jpg img/sofa/1249.png img/sofa/1250.jpg img/sofa/1251.jpg img/sofa/1252.jpg img/sofa/1253.jpg img/sofa/1254.jpg img/sofa/1255.jpg img/sofa/1256.jpg img/sofa/1257.jpg img/sofa/1258.jpg img/sofa/1259.jpg img/sofa/1260.jpg img/sofa/1261.jpg img/sofa/1262.jpg img/sofa/1263.jpg img/sofa/1264.jpg img/sofa/1265.jpg img/sofa/1266.jpg img/sofa/1267.jpg img/sofa/1268.jpg img/sofa/1269.jpg img/sofa/1270.jpg img/sofa/1271.jpg img/sofa/1272.jpg img/sofa/1273.jpg img/sofa/1274.jpg img/sofa/1275.jpg img/sofa/1276.jpg img/sofa/1277.jpg img/sofa/1278.jpg img/sofa/1279.jpg img/sofa/1280.jpg img/sofa/1281.jpg img/sofa/1282.jpg img/sofa/1283.jpg img/sofa/1284.jpg img/sofa/1285.jpg img/sofa/1286.jpg img/sofa/1287.jpg img/sofa/1288.jpg img/sofa/1289.jpg img/sofa/1290.jpg img/sofa/1291.jpg img/sofa/1292.jpg img/sofa/1293.jpg img/sofa/1294.jpg img/sofa/1295.jpg img/sofa/1296.jpg img/sofa/1297.jpg img/sofa/1298.jpg img/sofa/1299.jpg img/sofa/1300.jpg img/sofa/1301.jpg img/sofa/1302.jpg img/sofa/1303.jpg img/sofa/1304.jpg img/sofa/1305.jpg img/sofa/1306.jpg img/sofa/1307.jpg img/sofa/1308.jpg img/sofa/1309.jpg img/sofa/1310.jpg img/sofa/1311.jpg img/sofa/1312.jpg img/sofa/1313.jpg img/sofa/1314.jpg img/sofa/1315.jpg img/sofa/1316.jpg img/sofa/1317.jpg img/sofa/1318.jpg img/sofa/1319.jpg img/sofa/1320.jpg img/sofa/1321.jpg img/sofa/1322.jpg img/sofa/1323.jpg img/sofa/1324.jpg img/sofa/1325.jpg img/sofa/1326.jpg img/sofa/1327.jpg img/sofa/1328.jpg img/sofa/1329.jpg img/sofa/1330.jpg img/sofa/1331.jpg img/sofa/1332.jpg img/sofa/1333.jpg img/sofa/1334.jpg img/sofa/1335.jpg img/sofa/1336.jpg img/sofa/1337.jpg img/sofa/1338.jpg img/sofa/1339.jpg img/sofa/1340.jpg img/sofa/1341.jpg img/sofa/1342.jpg img/sofa/1343.jpg img/sofa/1344.jpg img/sofa/1345.jpg img/sofa/1346.jpg img/sofa/1347.jpg img/sofa/1348.jpg img/sofa/1349.jpg img/sofa/1350.jpg img/sofa/1351.jpg img/sofa/1352.jpg img/sofa/1353.jpg img/sofa/1354.jpg img/sofa/1355.jpg img/sofa/1356.jpg img/sofa/1357.jpg img/sofa/1358.jpg img/sofa/1359.jpg img/sofa/1360.jpg img/sofa/1361.jpg img/sofa/1362.jpg img/sofa/1363.jpg img/sofa/1364.jpg img/sofa/1365.png img/sofa/1366.jpg img/sofa/1367.jpg img/sofa/1368.jpg img/sofa/1369.jpg img/sofa/1370.jpg img/sofa/1371.jpg img/sofa/1372.jpg img/sofa/1373.jpg img/sofa/1374.jpg img/sofa/1375.jpg img/sofa/1376.jpg img/sofa/1377.jpg img/sofa/0012.png img/sofa/0013.png img/sofa/0026.png img/sofa/0027.png img/sofa/0054.png img/sofa/0118.png img/sofa/1448.jpg img/sofa/1449.jpg img/sofa/1450.jpg img/sofa/1451.jpg img/sofa/1452.jpg img/sofa/1453.jpg img/sofa/1454.jpg img/sofa/1455.jpg img/sofa/1456.jpg img/sofa/1457.jpg img/sofa/1458.jpg img/sofa/1459.jpg img/sofa/1460.jpg img/sofa/1461.jpg img/sofa/1462.jpg img/sofa/1463.jpg img/sofa/1464.jpg img/sofa/1465.jpg img/sofa/1466.jpg img/sofa/1467.jpg img/sofa/1468.jpg img/sofa/1469.jpg img/sofa/1470.jpg img/sofa/1471.jpg img/sofa/1472.jpg img/sofa/1473.jpg img/sofa/1474.jpg img/sofa/1475.jpg img/sofa/1476.jpg img/sofa/1477.jpg img/sofa/1478.jpg img/sofa/1479.jpg img/sofa/1480.jpg img/sofa/1481.jpg img/sofa/1482.jpg img/sofa/1483.jpg img/sofa/1484.jpg img/sofa/1485.jpg img/sofa/1486.jpg img/sofa/1487.jpg img/sofa/1488.jpg img/sofa/1489.jpg img/sofa/1490.jpg img/sofa/1491.jpg img/sofa/1492.jpg img/sofa/1493.jpg img/sofa/1494.jpg img/sofa/1495.jpg img/sofa/1496.jpg img/sofa/1497.jpg img/sofa/1498.jpg img/sofa/1499.jpg img/sofa/1500.jpg img/sofa/1501.jpg img/sofa/1502.jpg img/sofa/1503.jpg img/sofa/1504.jpg img/sofa/1505.jpg img/sofa/1506.jpg img/sofa/1507.jpg img/sofa/1508.jpg img/sofa/1509.jpg img/sofa/1510.jpg img/sofa/1511.jpg img/sofa/1512.jpg img/sofa/1513.jpg img/sofa/1514.jpg img/sofa/1515.jpg img/sofa/1516.jpg img/sofa/1517.jpg img/sofa/1518.jpg img/sofa/1519.jpg img/sofa/1520.png img/sofa/1521.jpg img/sofa/1522.jpg img/sofa/1523.jpg img/sofa/1524.jpg img/sofa/1525.jpg img/sofa/1526.jpg img/sofa/1527.jpg img/sofa/1528.jpg img/sofa/1529.jpg img/sofa/1530.jpg img/sofa/1531.jpg img/sofa/1532.jpg img/sofa/1533.jpg img/sofa/1534.jpg img/sofa/1535.jpg img/sofa/1536.jpg img/sofa/1537.jpg img/sofa/1538.jpg img/sofa/1539.jpg img/sofa/1540.jpg img/sofa/1541.jpg img/sofa/1542.jpg img/sofa/1543.jpg img/sofa/1544.jpeg img/sofa/1545.jpg img/sofa/1546.jpg img/sofa/1547.jpg img/sofa/1548.jpg img/sofa/1549.jpg img/sofa/1550.jpg img/sofa/1551.jpg img/sofa/1552.jpg img/sofa/1553.jpg img/sofa/1554.jpg img/sofa/1555.jpg img/sofa/1556.png img/sofa/1557.jpg img/sofa/1558.jpg img/sofa/1559.jpg img/sofa/1560.jpg img/sofa/1561.jpg img/sofa/1562.jpg img/sofa/1563.jpg img/sofa/1564.jpg img/sofa/1565.jpg img/sofa/1566.jpg img/sofa/1567.jpg img/sofa/1568.jpg img/sofa/1569.jpg img/sofa/1570.jpg img/sofa/1571.jpg img/sofa/1572.jpg img/sofa/1573.jpg img/sofa/1574.jpg img/sofa/1575.jpg img/sofa/1576.jpg img/sofa/1577.jpg img/sofa/1578.jpg img/sofa/1579.jpg img/sofa/1580.jpg img/sofa/1581.jpg img/sofa/1582.jpg img/sofa/1583.jpg img/sofa/1584.jpg img/sofa/1585.jpg img/sofa/1586.jpeg img/sofa/1587.jpg img/sofa/1588.jpg img/sofa/1589.jpg img/sofa/1590.jpg img/sofa/1591.jpg img/sofa/1592.jpeg img/sofa/1593.jpeg img/sofa/1594.jpg img/sofa/1595.jpg img/sofa/1596.jpg img/sofa/1597.jpg img/sofa/1598.jpeg img/sofa/1599.jpg img/sofa/1600.jpg img/sofa/1601.jpg img/sofa/1602.jpg img/sofa/1603.jpg img/sofa/1604.jpg img/sofa/1605.jpg img/sofa/1606.jpg img/sofa/1607.jpg img/sofa/1608.jpg img/sofa/1609.jpg img/sofa/1610.jpg img/sofa/1611.jpg img/sofa/1612.jpg img/sofa/1613.jpg img/sofa/1614.jpg img/sofa/1615.jpg img/sofa/1616.jpg img/sofa/1617.jpg img/sofa/1618.jpg img/sofa/1619.jpg img/sofa/1620.jpg img/sofa/1621.jpg img/sofa/1622.jpg img/sofa/1623.jpg img/sofa/1624.jpg img/sofa/1625.jpg img/sofa/1626.jpg img/sofa/1627.jpg img/sofa/1628.jpg img/sofa/1629.jpg img/sofa/1630.jpg img/sofa/1631.jpg img/sofa/1632.jpg img/sofa/1633.jpg img/sofa/1634.jpg img/sofa/1635.jpg img/sofa/1636.jpg img/sofa/1637.jpg img/sofa/1638.jpg img/sofa/1639.jpg img/sofa/1640.jpg img/sofa/1641.jpg img/sofa/1642.jpg img/sofa/1643.jpg img/sofa/1644.jpg img/sofa/1645.jpg img/sofa/1646.jpg img/sofa/1647.jpg img/sofa/1648.jpg img/sofa/1649.jpg img/sofa/1650.jpg img/sofa/1651.jpg img/sofa/1652.jpg img/sofa/1653.jpg img/sofa/1654.jpg img/sofa/1655.jpg img/sofa/1656.jpg img/sofa/1657.jpg img/sofa/1658.jpg img/sofa/1659.jpg img/sofa/1660.jpg img/sofa/1661.jpg img/sofa/1662.jpg img/sofa/1663.jpg img/sofa/1664.jpg img/sofa/1665.jpg img/sofa/1666.jpg img/sofa/1667.jpg img/sofa/1668.jpg img/sofa/1669.jpg img/sofa/1670.jpg img/sofa/1671.jpg img/sofa/1672.jpg img/sofa/1673.jpg img/sofa/1674.jpg img/sofa/1675.jpg img/sofa/1676.jpg img/sofa/1677.jpg img/sofa/1678.jpg img/sofa/1679.jpg img/sofa/1680.jpg img/sofa/1681.jpg img/sofa/1682.jpg img/sofa/1683.jpg img/sofa/1684.jpg img/sofa/1685.jpg img/sofa/1686.jpg img/sofa/1687.jpg img/sofa/1688.jpg img/sofa/1689.jpg img/sofa/1690.jpg img/sofa/1691.jpg img/sofa/1692.jpg img/sofa/1693.jpg img/sofa/1694.jpg img/sofa/1695.jpg img/sofa/1696.jpg img/sofa/1697.jpg img/sofa/1698.jpg img/sofa/1699.jpg img/sofa/1700.jpg img/sofa/1701.jpg img/sofa/1702.jpg img/sofa/1703.jpg img/sofa/1704.jpg img/sofa/1705.jpg img/sofa/1706.jpg img/sofa/1707.jpg img/sofa/1708.jpg img/sofa/1709.png img/sofa/1710.jpg img/sofa/1711.jpg img/sofa/1712.jpg img/sofa/1713.jpg img/sofa/1714.jpg img/sofa/1715.jpg img/sofa/1716.jpg img/sofa/1717.jpg img/sofa/1718.jpg img/sofa/1719.jpg img/sofa/1720.jpg img/sofa/1721.png img/sofa/1722.jpg img/sofa/1723.jpg img/sofa/1724.jpg img/sofa/1725.jpg img/sofa/1726.jpg img/sofa/1727.jpg img/sofa/1728.jpg img/sofa/1729.jpg img/sofa/1730.jpg img/sofa/1731.jpg img/sofa/1732.jpg img/sofa/1733.jpg img/sofa/1734.jpg img/sofa/1735.jpg img/sofa/1736.jpg img/sofa/1737.jpg img/sofa/1738.png img/sofa/1739.jpg img/sofa/1740.jpg img/sofa/1741.jpg img/sofa/1742.jpg img/sofa/1743.jpg img/sofa/1744.jpg img/sofa/1745.jpg img/sofa/1746.jpg img/sofa/1747.jpg img/sofa/1748.jpg img/sofa/1749.jpg img/sofa/1750.jpg img/sofa/1751.jpg img/sofa/1752.jpg img/sofa/1753.jpg img/sofa/1754.jpg img/sofa/1755.jpg img/sofa/1756.jpg img/sofa/1757.jpg img/sofa/1758.jpg img/sofa/1759.jpg img/sofa/1760.jpg img/sofa/1761.jpg img/sofa/1762.jpg img/sofa/1763.jpg img/sofa/1764.jpg img/sofa/1765.jpg img/sofa/1766.jpg img/sofa/1767.jpg img/sofa/1768.jpg img/sofa/1769.png img/sofa/1770.jpg img/sofa/1771.jpg img/sofa/1772.jpg img/sofa/1773.jpg img/sofa/1774.jpg img/sofa/1775.jpg img/sofa/1776.jpg img/sofa/1777.jpg img/sofa/1778.jpg img/sofa/1779.jpg img/sofa/1780.jpg img/sofa/1781.jpg img/sofa/1782.jpg img/sofa/1783.jpg img/sofa/1784.jpg img/sofa/1785.jpg img/sofa/1786.jpg img/sofa/1787.jpg img/sofa/1788.jpg img/sofa/1789.jpg img/sofa/1790.jpg img/sofa/1791.jpg img/sofa/1792.jpg img/sofa/1793.jpg img/sofa/1794.jpg img/sofa/1795.png img/sofa/1796.jpg img/sofa/1797.jpg img/sofa/1798.jpg img/sofa/1799.jpg img/sofa/1800.jpg img/sofa/1801.jpg img/sofa/1802.jpg img/sofa/1803.jpg img/sofa/1804.jpg img/sofa/1805.jpg img/sofa/1806.jpg img/sofa/1807.jpg img/sofa/1808.jpg img/sofa/1809.jpg img/sofa/1810.jpg img/sofa/1811.jpg img/sofa/1812.jpg img/sofa/1813.jpg img/sofa/1814.jpg img/sofa/1938.jpg img/sofa/1939.jpg img/sofa/1940.jpg img/sofa/1941.jpg img/sofa/1942.jpg img/sofa/1943.jpg img/sofa/1944.jpg img/sofa/1945.jpg img/sofa/1946.jpg img/sofa/1947.jpg img/table/0087.jpg img/table/0088.jpg img/table/0089.jpg img/table/0090.jpg img/table/0091.png img/table/0092.jpg img/table/0093.jpg img/table/0094.jpg img/table/0095.jpg img/table/0096.jpg img/table/0097.jpg img/table/0098.jpg img/table/0099.jpg img/table/0100.jpg img/table/0101.jpg img/table/0102.jpg img/table/0103.jpg img/table/0107.jpg img/table/0108.jpg img/table/0109.jpg img/table/0110.jpg img/table/0111.jpg img/table/0112.jpg img/table/0113.jpg img/table/0114.jpg img/table/0115.jpg img/table/0116.jpg img/table/0117.jpg img/table/0118.jpg img/table/0120.jpg img/table/0121.jpg img/table/0122.jpg img/table/0123.jpg img/table/0124.jpg img/table/0125.jpg img/table/0126.jpg img/table/0127.jpg img/table/0128.jpg img/table/0129.jpg img/table/0130.jpg img/table/0131.jpg img/table/0132.jpeg img/table/0133.jpg img/table/0134.jpg img/table/0135.jpg img/table/0136.jpg img/table/0137.jpg img/table/0138.jpg img/table/0139.jpg img/table/0140.jpg img/table/0141.jpg img/table/0142.jpg img/table/0143.jpg img/table/0144.jpg img/table/0145.jpg img/table/0146.jpg img/table/0147.jpg img/table/0148.jpg img/table/0149.jpg img/table/0150.jpg img/table/0151.jpg img/table/0152.jpg img/table/0153.jpg img/table/0154.jpg img/table/0155.jpg img/table/0156.jpg img/table/0157.jpg img/table/0158.jpg img/table/0159.jpg img/table/0160.jpg img/table/0161.jpg img/table/0162.jpg img/table/0163.jpg img/table/0164.jpg img/table/0165.jpg img/table/0166.jpg img/table/0167.jpg img/table/0168.jpg img/table/0169.jpg img/table/0170.jpg img/table/0171.jpg img/table/0172.jpg img/table/0173.jpg img/table/0174.jpg img/table/0175.jpg img/table/0176.jpg img/table/0177.jpg img/table/0178.jpg img/table/0179.png img/table/0180.jpg img/table/0181.jpg img/table/0182.jpg img/table/0183.jpg img/table/0184.jpg img/table/0185.jpg img/table/0186.jpg img/table/0187.jpg img/table/0188.jpg img/table/0189.jpg img/table/0190.jpg img/table/0191.jpg img/table/0192.jpg img/table/0193.jpg img/table/0194.jpg img/table/0195.jpg img/table/0196.jpg img/table/0197.jpg img/table/0198.jpg img/table/0199.jpg img/table/0200.jpg img/table/0201.jpg img/table/0202.jpg img/table/0203.jpg img/table/0204.jpg img/table/0205.jpg img/table/0206.jpg img/table/0207.jpg img/table/0208.jpg img/table/0209.jpg img/table/0210.jpg img/table/0211.jpg img/table/0212.jpg img/table/0213.jpg img/table/0214.jpg img/table/0215.jpg img/table/0216.jpg img/table/0217.jpg img/table/0218.jpg img/table/0219.jpg img/table/0220.jpg img/table/0221.jpg img/table/0222.jpg img/table/0223.jpg img/table/0224.jpg img/table/0225.jpg img/table/0226.jpg img/table/0227.jpg img/table/0228.jpg img/table/0229.jpg img/table/0230.jpg img/table/0231.jpg img/table/0232.jpg img/table/0233.jpg img/table/0234.jpg img/table/0235.jpg img/table/0236.jpg img/table/0237.jpg img/table/0238.jpg img/table/0239.jpg img/table/0240.jpg img/table/0241.jpg img/table/0242.jpg img/table/0243.jpg img/table/0244.jpg img/table/0245.jpg img/table/0246.jpg img/table/0247.jpg img/table/0248.jpg img/table/0249.jpg img/table/0250.jpg img/table/0251.jpg img/table/0252.jpg img/table/0253.jpg img/table/0254.jpg img/table/0255.jpg img/table/0256.jpg img/table/0257.jpg img/table/0258.jpg img/table/0259.jpg img/table/0260.jpg img/table/0261.jpg img/table/0262.jpg img/table/0263.jpg img/table/0264.jpg img/table/0265.jpg img/table/0266.jpg img/table/0267.jpg img/table/0268.jpg img/table/0269.jpg img/table/0270.jpg img/table/0271.jpg img/table/0272.jpg img/table/0273.jpg img/table/0274.jpg img/table/0275.jpg img/table/0276.jpg img/table/0277.jpg img/table/0278.jpg img/table/0279.jpg img/table/0280.jpg img/table/0281.jpg img/table/0282.jpg img/table/0283.jpg img/table/0284.jpg img/table/0285.jpg img/table/0286.jpg img/table/0287.jpg img/table/0288.jpg img/table/0289.jpg img/table/0290.jpg img/table/0291.jpg img/table/0292.jpg img/table/0293.jpg img/table/0294.jpg img/table/0295.jpg img/table/0296.jpg img/table/0297.jpg img/table/0298.jpg img/table/0299.jpg img/table/0300.jpg img/table/0301.jpg img/table/0302.jpg img/table/0303.jpg img/table/0304.jpg img/table/0305.jpg img/table/0306.jpg img/table/0307.jpg img/table/0308.jpg img/table/0309.jpg img/table/0310.jpg img/table/0311.jpg img/table/0312.jpg img/table/0313.jpg img/table/0314.jpg img/table/0315.jpg img/table/0316.jpg img/table/0317.jpg img/table/0318.jpg img/table/0319.jpg img/table/0320.jpg img/table/0321.jpg img/table/0322.jpg img/table/0323.jpg img/table/0324.jpg img/table/0325.jpg img/table/0326.jpg img/table/0327.jpg img/table/0328.jpg img/table/0329.jpg img/table/0330.jpg img/table/0331.jpg img/table/0332.jpg img/table/0333.jpg img/table/0334.jpg img/table/0335.jpg img/table/0336.jpg img/table/0337.jpg img/table/0338.jpg img/table/0339.jpg img/table/0340.jpg img/table/0341.jpg img/table/0342.jpg img/table/0343.jpg img/table/0344.jpg img/table/0345.jpg img/table/0346.jpg img/table/0347.jpg img/table/0348.jpg img/table/0349.jpg img/table/0350.jpg img/table/0351.jpg img/table/0352.jpg img/table/0353.jpg img/table/0354.jpg img/table/0355.jpg img/table/0356.jpg img/table/0357.jpg img/table/0358.jpg img/table/0359.jpg img/table/0360.jpg img/table/0361.jpg img/table/0362.jpg img/table/0363.jpg img/table/0364.png img/table/0365.jpg img/table/0366.jpg img/table/0367.jpg img/table/0368.jpg img/table/0369.jpg img/table/0370.jpg img/table/0371.jpg img/table/0372.png img/table/0373.jpg img/table/0374.jpg img/table/0375.jpg img/table/0376.jpg img/table/0377.jpg img/table/0378.jpg img/table/0379.jpg img/table/0380.jpg img/table/0381.jpg img/table/0382.jpg img/table/0383.jpg img/table/0384.jpg img/table/0385.jpg img/table/0386.jpg img/table/0387.jpg img/table/0388.jpg img/table/0389.jpg img/table/0390.jpg img/table/0391.jpg img/table/0392.jpg img/table/0393.jpeg img/table/0394.jpg img/table/0395.jpg img/table/0396.jpg img/table/0397.jpg img/table/0398.jpg img/table/0399.png img/table/0400.jpg img/table/0401.jpg img/table/0402.jpg img/table/0403.jpg img/table/0404.jpg img/table/0405.jpg img/table/0406.jpg img/table/0407.jpg img/table/0408.jpeg img/table/0409.jpg img/table/0410.jpg img/table/0411.jpg img/table/0412.jpg img/table/0413.jpg img/table/0414.jpg img/table/0415.jpg img/table/0416.jpg img/table/0417.png img/table/0418.jpg img/table/0419.jpg img/table/0420.jpg img/table/0421.jpg img/table/0422.jpg img/table/0423.jpg img/table/0424.jpg img/table/0425.jpg img/table/0426.jpg img/table/0427.png img/table/0428.jpg img/table/0429.jpg img/table/0430.jpg img/table/0431.jpg img/table/0432.jpeg img/table/0433.jpg img/table/0434.jpg img/table/0435.jpg img/table/0436.jpg img/table/0437.jpg img/table/0438.jpg img/table/0439.jpg img/table/0440.jpg img/table/0441.jpg img/table/0442.jpg img/table/0443.jpg img/table/0444.jpg img/table/0445.jpg img/table/0446.jpg img/table/0447.jpeg img/table/0448.jpg img/table/0449.jpg img/table/0450.jpg img/table/0451.jpg img/table/0452.jpg img/table/0453.jpg img/table/0454.jpg img/table/0455.jpg img/table/0456.jpg img/table/0457.jpg img/table/0458.jpeg img/table/0459.jpg img/table/0460.jpeg img/table/0461.jpg img/table/0462.jpeg img/table/0463.jpg img/table/0464.jpg img/table/0465.jpg img/table/0466.jpg img/table/0467.jpg img/table/0468.jpg img/table/0469.jpg img/table/0470.jpg img/table/0471.jpg img/table/0472.jpg img/table/0473.jpg img/table/0474.jpg img/table/0475.jpg img/table/0476.jpg img/table/0477.jpg img/table/0478.jpg img/table/0479.jpg img/table/0480.jpg img/table/0481.jpg img/table/0482.jpg img/table/0483.jpg img/table/0484.jpg img/table/0485.jpg img/table/0486.jpg img/table/0487.jpg img/table/0488.jpg img/table/0489.png img/table/0490.png img/table/0491.jpg img/table/0492.jpg img/table/0493.jpg img/table/0494.jpg img/table/0495.jpg img/table/0496.jpg img/table/0497.jpg img/table/0498.jpg img/table/0499.jpg img/table/0500.jpg img/table/0501.jpg img/table/0502.jpg img/table/0503.jpg img/table/0504.jpg img/table/0505.jpg img/table/0506.jpg img/table/0507.jpg img/table/0508.jpg img/table/0509.jpg img/table/0510.jpg img/table/0511.jpg img/table/0512.jpg img/table/0513.png img/table/0514.jpg img/table/0515.jpg img/table/0516.jpg img/table/0517.jpg img/table/0518.jpg img/table/0519.jpg img/table/0520.jpg img/table/0521.jpg img/table/0522.jpg img/table/0523.jpg img/table/0524.jpg img/table/0525.jpg img/table/0526.png img/table/0527.jpg img/table/0528.jpg img/table/0529.jpg img/table/0530.jpg img/table/0531.jpg img/table/0532.jpg img/table/0533.jpg img/table/0534.png img/table/0535.jpg img/table/0536.jpg img/table/0537.jpg img/table/0538.jpg img/table/0539.jpg img/table/0596.jpg img/table/0597.jpg img/table/0598.jpg img/table/0599.jpg img/table/0600.jpg img/table/0601.jpg img/table/0602.jpg img/table/0603.jpg img/table/0604.jpg img/table/0605.jpg img/table/0606.jpg img/table/0607.jpg img/table/0608.jpg img/table/0609.jpg img/table/0610.jpg img/table/0611.jpg img/table/0612.jpg img/table/0613.jpg img/table/0614.jpg img/table/0615.jpg img/table/0616.jpg img/table/0617.jpg img/table/0618.jpg img/table/0619.jpg img/table/0620.jpg img/table/0621.jpg img/table/0622.jpg img/table/0623.jpg img/table/0624.jpg img/table/0625.jpg img/table/0626.jpg img/table/0627.jpg img/table/0628.jpg img/table/0629.jpg img/table/0630.jpeg img/table/0631.jpg img/table/0632.jpg img/table/0633.jpg img/table/0634.jpg img/table/0635.jpg img/table/0636.jpg img/table/0637.jpg img/table/0638.jpg img/table/0639.jpg img/table/0640.jpg img/table/0641.jpg img/table/0642.jpg img/table/0643.jpg img/table/0644.jpg img/table/0645.jpg img/table/0646.jpg img/table/0647.jpg img/table/0648.jpg img/table/0649.jpg img/table/0650.jpg img/table/0651.jpg img/table/0652.jpg img/table/0653.jpg img/table/0654.jpg img/table/0655.jpg img/table/0656.jpg img/table/0657.jpg img/table/0658.jpg img/table/0659.jpg img/table/0660.jpg img/table/0661.jpg img/table/0662.jpg img/table/0663.jpg img/table/0664.jpg img/table/0665.jpg img/table/0666.jpg img/table/0667.jpg img/table/0668.jpg img/table/0669.jpg img/table/0670.jpg img/table/0671.jpg img/table/0672.jpg img/table/0673.jpg img/table/0674.jpg img/table/0675.jpg img/table/0676.jpg img/table/0677.jpg img/table/0678.jpg img/table/0679.jpg img/table/0680.jpg img/table/0681.jpg img/table/0682.jpg img/table/0683.jpg img/table/0684.jpeg img/table/0685.jpeg img/table/0686.jpg img/table/0687.jpg img/table/0738.jpg img/table/0739.jpg img/table/0740.jpg img/table/0741.jpg img/table/0742.jpg img/table/0743.jpg img/table/0744.jpg img/table/0745.jpg img/table/0746.jpg img/table/0747.jpg img/table/0748.jpg img/table/0749.jpg img/table/0750.jpg img/table/0751.jpg img/table/0752.jpg img/table/0753.jpg img/table/0754.jpg img/table/0755.jpg img/table/0756.jpg img/table/0757.jpg img/table/0758.jpg img/table/0759.jpg img/table/0760.png img/table/0761.jpg img/table/0762.jpg img/table/0763.png img/table/0764.jpg img/table/0765.jpg img/table/0766.jpg img/table/0767.jpg img/table/0768.jpeg img/table/0769.jpg img/table/0770.jpg img/table/0771.jpg img/table/0772.jpg img/table/0773.jpg img/table/0774.jpg img/table/0775.jpg img/table/0776.jpg img/table/0777.jpg img/table/0778.jpg img/table/0779.jpg img/table/0780.jpg img/table/0781.jpg img/table/0782.jpg img/table/0783.jpeg img/table/0784.jpg img/table/0785.jpg img/table/0786.jpg img/table/0787.jpg img/table/0788.jpg img/table/0789.jpg img/table/0790.jpg img/table/0791.jpg img/table/0792.png img/table/0793.jpg img/table/0794.jpg img/table/0795.jpg img/table/0796.jpg img/table/0797.jpg img/table/0798.jpg img/table/0799.jpg img/table/0800.jpg img/table/0801.jpg img/table/0802.jpg img/table/0803.jpg img/table/0804.jpg img/table/0805.jpg img/table/0806.jpg img/table/0807.jpg img/table/0808.jpg img/table/0809.jpg img/table/0810.jpg img/table/0811.jpg img/table/0812.jpg img/table/0813.jpg img/table/0814.jpg img/table/0815.jpg img/table/0816.jpg img/table/0817.jpg img/table/0818.jpg img/table/0819.jpeg img/table/0820.jpg img/table/0821.jpg img/table/0822.jpg img/table/0823.jpg img/table/0824.jpg img/table/0825.jpg img/table/0826.jpg img/table/0827.jpg img/table/0828.jpg img/table/0829.jpg img/table/0830.jpg img/table/0831.jpg img/table/0832.jpg img/table/0833.jpg img/table/0834.jpg img/table/0835.jpeg img/table/0836.jpg img/table/0837.jpg img/table/0838.jpg img/table/0839.jpg img/table/0840.jpg img/table/0841.jpeg img/table/0842.jpg img/table/0843.jpg img/table/0844.jpg img/table/0845.jpg img/table/0846.jpg img/table/0847.jpg img/table/0848.jpg img/table/0849.jpg img/table/0850.jpg img/table/0851.png img/table/0852.jpg img/table/0853.jpg img/table/0854.jpg img/table/0855.png img/table/0856.jpg img/table/0857.jpg img/table/0071.png img/table/0858.jpg img/table/0859.jpg img/table/0860.jpg img/table/0861.jpg img/table/0862.jpg img/table/0863.jpg img/table/0864.jpg img/table/0865.jpg img/table/0866.jpg img/table/0867.jpg img/table/0868.jpg img/table/0869.jpg img/table/0870.jpg img/table/0871.jpg img/table/0872.jpg img/table/0873.jpg img/table/0874.jpg img/table/0875.jpg img/table/0876.jpg img/table/0877.jpg img/table/0878.jpg img/table/0879.jpg img/table/0880.jpg img/table/0881.jpg img/table/0882.jpg img/table/0883.jpg img/table/0884.jpg img/table/0885.png img/table/0886.jpg img/table/0887.jpg img/table/0888.jpg img/table/0889.jpg img/table/0890.jpg img/table/0891.jpeg img/table/0892.jpg img/table/0893.jpg img/table/0894.jpg img/table/0895.jpg img/table/0896.jpg img/table/0897.jpg img/table/0898.jpeg img/table/0899.jpg img/table/0900.jpg img/table/0901.jpg img/table/0902.jpg img/table/0903.jpg img/table/0904.jpg img/table/0905.jpg img/table/0906.jpg img/table/0907.png img/table/0908.jpg img/table/0909.jpg img/table/0910.jpg img/table/0911.jpg img/table/0912.jpg img/table/0913.jpg img/table/0914.jpg img/table/0915.png img/table/0916.jpg img/table/0917.jpg img/table/0918.jpg img/table/0919.png img/table/0920.jpg img/table/0921.jpg img/table/0922.jpg img/table/0923.jpg img/table/0924.jpg img/table/0925.jpg img/table/0926.jpeg img/table/0927.jpg img/table/0928.jpg img/table/0929.jpg img/table/0930.jpg img/table/0931.jpg img/table/0932.jpg img/table/0933.jpg img/table/0934.jpg img/table/0935.jpg img/table/0936.jpg img/table/0937.jpg img/table/0938.jpg img/table/0939.jpg img/table/0940.jpg img/table/0941.jpg img/table/0942.jpg img/table/0943.jpeg img/table/0944.jpeg img/table/0945.jpg img/table/0946.jpg img/table/0947.jpg img/table/0948.jpg img/table/0949.jpg img/table/0950.jpg img/table/0951.jpg img/table/0952.jpg img/table/0953.jpg img/table/0954.jpg img/table/0955.jpg img/table/0956.jpg img/table/0957.jpg img/table/0958.jpg img/table/0959.jpg img/table/0960.jpg img/table/0961.jpg img/table/0962.jpg img/table/0963.jpg img/table/0964.jpg img/table/0965.jpg img/table/0966.jpg img/table/0967.jpg img/table/0968.jpg img/table/0969.jpg img/table/0970.jpg img/table/0971.jpg img/table/0972.jpg img/table/0973.jpg img/table/0027.png img/table/0029.png img/table/0030.png img/table/0031.png img/table/0055.png img/table/0060.png img/table/0078.png img/table/0974.jpg img/table/0975.jpg img/table/0976.jpg img/table/0977.jpg img/table/0978.jpg img/table/0979.jpg img/table/0980.jpg img/table/0981.jpg img/table/0982.jpg img/table/0983.jpg img/table/0984.jpg img/table/0985.jpg img/table/0986.jpg img/table/0987.jpg img/table/0988.jpg img/table/0040.png img/table/0046.png img/table/0989.jpg img/table/0990.jpg img/table/0991.jpg img/table/0056.png img/table/0992.jpg img/table/0993.jpg img/table/0006.png img/table/0007.png img/table/0008.png img/table/0048.png img/table/0050.png img/table/0059.png img/table/0072.png img/table/0082.png img/table/0085.png img/table/0998.jpg img/table/0999.jpg img/table/1000.jpg img/table/1001.jpg img/table/1002.jpg img/table/0001.png img/table/0002.png img/table/0003.png img/table/0005.png img/table/0009.png img/table/0010.png img/table/0013.png img/table/0014.png img/table/0015.png img/table/0017.png img/table/0019.png img/table/0020.png img/table/0025.png img/table/0032.png img/table/0035.png img/table/0038.png img/table/0039.png img/table/0042.png img/table/0043.png img/table/0044.png img/table/0053.png img/table/0054.png img/table/0062.png img/table/0073.png img/table/0075.png img/table/0077.png img/table/0079.png img/table/1003.jpg img/table/1004.jpg img/table/1005.jpg img/table/1006.jpg img/table/1007.jpg img/table/1008.jpg img/table/1009.jpg img/table/1010.jpg img/table/1011.jpg img/table/1012.jpg img/table/1013.jpg img/table/1014.jpg img/table/1015.jpg img/table/1016.jpg img/table/0004.png img/table/0011.png img/table/0012.png img/table/0016.png img/table/0018.png img/table/0021.png img/table/0022.png img/table/0023.png img/table/0026.png img/table/0028.png img/table/0033.png img/table/0034.png img/table/0036.png img/table/0037.png img/table/0041.png img/table/0047.png img/table/0049.png img/table/0051.png img/table/0052.png img/table/0057.png img/table/0058.png img/table/0061.png img/table/0063.png img/table/0064.png img/table/0065.png img/table/0066.png img/table/0067.png img/table/0069.png img/table/0070.png img/table/0074.png img/table/0080.png img/table/0083.png img/table/0084.png img/table/0086.png img/table/1017.jpg img/table/1018.jpg img/table/1019.jpg img/table/1020.jpg img/table/1021.jpg img/table/1022.jpg img/table/1023.jpg img/table/1024.jpg img/table/1025.jpg img/table/1026.jpg img/table/1027.jpg img/table/1028.jpg img/table/1029.jpg img/table/1030.jpg img/table/1031.jpg img/table/1032.jpg img/table/1033.jpg img/table/1034.jpg img/table/1035.jpg img/table/1036.jpg img/table/1037.jpg img/table/1038.jpg img/table/1039.jpg img/table/1040.jpg img/table/1041.jpg img/table/1042.jpg img/table/1043.jpg img/table/1044.jpg img/table/1045.jpg img/table/1046.jpg img/table/1047.jpg img/table/1048.jpg img/table/1049.jpg img/table/1050.jpg img/table/1051.jpg img/table/1052.jpg img/table/1053.jpg img/table/1054.jpg img/table/1055.jpg img/table/1056.jpg img/table/1057.jpg img/table/1058.jpg img/table/1059.jpg img/table/1060.jpg img/table/1061.jpg img/table/1062.jpg img/table/1063.jpg img/table/1064.jpg img/table/1065.jpg img/table/1066.jpg img/table/1067.jpg img/table/1068.jpg img/table/1069.jpg img/table/1070.jpg img/table/1071.jpg img/table/1072.png img/table/1073.jpg img/table/1074.jpg img/table/1075.jpg img/table/1076.jpg img/table/1077.jpg img/table/1078.jpg img/table/1079.jpg img/table/1080.jpg img/table/1081.jpg img/table/0081.png img/table/1089.jpg img/table/1090.jpg img/table/1091.jpg img/table/1092.jpg img/table/1093.jpg img/table/1094.jpg img/table/1095.jpg img/table/1096.png img/table/1194.jpg img/table/1195.jpg img/table/1196.jpg img/table/1197.jpg img/table/1198.jpg img/table/1199.jpg img/table/1200.jpg img/table/1201.jpg img/table/1202.jpg img/table/1203.jpg img/table/1204.jpg img/table/1205.jpg img/table/1206.jpg img/table/1207.jpeg img/table/1208.jpg img/table/1209.jpeg img/table/1210.jpg img/table/1211.jpg img/table/1212.jpg img/table/1213.jpg img/table/1214.jpeg img/table/1215.jpeg img/table/1216.jpg img/table/1217.jpg img/table/1218.jpg img/table/1219.jpg img/table/1220.jpg img/table/1221.jpg img/table/1222.jpg img/table/1223.jpg img/table/1224.jpg img/table/1268.jpg img/table/1269.jpg img/table/1270.jpg img/table/1271.jpg img/table/1272.jpg img/table/1273.jpg img/table/1274.jpg img/table/1275.jpg img/table/1276.jpg img/table/1277.jpg img/table/1278.jpg img/table/1279.jpg img/table/1280.jpg img/table/1281.jpg img/table/1282.png img/table/1283.jpg img/table/1284.jpg img/table/1285.jpg img/table/1286.jpg img/table/1287.jpg img/table/1288.jpg img/table/1289.jpg img/table/1290.jpg img/table/1291.jpg img/table/1292.jpg img/table/1293.jpg img/table/1294.jpg img/table/1295.jpg img/table/1296.jpg img/table/1297.jpg img/table/1298.jpg img/table/1299.jpg img/table/1300.jpg img/table/1301.jpg img/table/1302.jpg img/table/1303.jpg img/table/1304.jpg img/table/1305.jpg img/table/1306.jpg img/table/1307.jpg img/table/1308.jpg img/table/1309.jpg img/table/1310.jpg img/table/1311.jpg img/table/1312.jpg img/table/1313.png img/table/1314.jpg img/table/1315.jpg img/table/1316.jpg img/table/1317.jpg img/table/1318.jpg img/table/1319.jpg img/table/1320.jpg img/table/1321.jpg img/table/1322.jpg img/table/1323.jpg img/table/1379.jpg img/table/1380.jpg img/table/1381.jpg img/table/1382.jpg img/table/1383.jpg img/table/1384.jpg img/table/1385.png img/table/1386.jpg img/table/1387.jpg img/table/1388.jpg img/table/1389.jpg img/table/1390.jpg img/table/1391.jpg img/table/1392.png img/table/1393.jpg img/table/1394.jpg img/table/1395.jpg img/table/1396.jpg img/table/1397.jpg img/table/1398.jpg img/table/1399.jpg img/table/1400.jpg img/table/1401.jpg img/table/1402.jpg img/table/1403.jpg img/table/1404.jpg img/table/1405.jpg img/table/1406.jpg img/table/1407.jpg img/table/1408.jpg img/table/1409.jpg img/table/1410.jpg img/table/1411.jpg img/table/1412.jpg img/table/1413.jpg img/table/1414.jpg img/table/1415.jpg img/table/1416.jpg img/table/1417.jpg img/table/1418.png img/table/1419.jpg img/table/1420.jpg img/table/1421.jpg img/table/1422.jpg img/table/1423.jpg img/table/1424.jpg img/table/1425.jpg img/table/1426.jpg img/table/1427.jpg img/table/1428.jpg img/table/1429.jpg img/table/1430.jpg img/table/1431.jpg img/table/1432.jpg img/table/1433.jpeg img/table/1434.jpg img/table/1435.jpg img/table/1436.jpg img/table/1437.jpg img/table/1438.jpg img/table/1439.jpg img/table/1440.jpg img/table/1441.jpg img/table/1442.jpg img/table/1443.jpg img/table/1444.jpg img/table/1445.jpg img/table/1446.jpg img/table/1447.jpg img/table/1448.jpg img/table/1449.jpg img/table/1450.jpg img/table/1451.jpg img/table/1452.jpg img/table/1453.jpg img/table/1454.jpg img/table/1455.jpg img/table/1456.jpg img/table/1457.jpg img/table/1458.jpg img/table/1459.jpg img/table/1460.jpg img/table/1461.jpg img/table/1462.jpg img/table/1463.jpg img/table/1464.jpg img/table/1465.jpg img/table/1466.jpg img/table/1467.jpg img/table/1468.jpg img/table/1469.jpg img/table/1470.jpg img/table/1471.jpg img/table/1472.jpg img/table/1473.jpg img/table/1474.jpg img/table/1475.jpg img/table/1476.jpg img/table/1477.jpg img/table/1478.jpg img/table/1479.jpg img/table/1480.jpg img/table/1481.jpg img/table/1482.jpg img/table/1483.jpg img/table/1484.jpg img/table/1485.jpg img/table/1486.jpg img/table/1487.jpg img/table/1488.jpg img/table/1489.jpg img/table/1490.jpg img/table/1491.png img/table/1492.jpg img/table/1493.jpg img/table/1494.jpg img/table/1495.jpg img/table/1496.jpg img/table/1497.jpg img/table/1498.jpg img/table/1499.jpg img/table/1500.jpg img/table/1501.jpg img/table/1502.jpg img/table/1503.jpg img/table/1504.jpg img/table/1505.jpg img/table/1506.jpg img/table/1507.jpg img/table/1508.jpg img/table/1509.jpg img/table/1510.jpg img/table/1511.jpg img/table/1512.jpg img/table/1513.jpg img/table/1514.jpg img/table/1515.jpg img/table/1516.jpg img/table/1517.jpg img/table/1518.jpg img/table/1519.jpg img/table/1520.jpg img/table/1521.jpg img/table/1522.jpg img/table/1523.jpg img/table/1524.jpg img/table/1525.jpg img/table/1526.jpg img/table/1527.jpg img/table/1528.jpg img/table/1529.jpg img/table/1530.jpg img/table/1531.jpg img/table/1532.jpg img/table/1533.jpg img/table/1534.jpg img/table/1535.jpg img/table/1536.jpg img/table/1537.jpg img/table/1538.jpg img/table/1539.jpg img/table/1540.jpg img/table/1541.jpg img/table/1542.jpg img/table/1543.jpg img/table/1544.jpg img/table/1545.jpg img/table/1546.jpg img/table/1547.jpg img/table/1548.jpg img/table/1549.jpg img/table/1550.jpg img/table/1551.jpg img/table/1552.jpg img/table/1553.jpg img/table/1554.jpg img/table/1555.jpg img/table/1556.jpg img/table/1557.jpg img/table/1558.jpg img/table/1559.jpg img/table/1560.jpg img/table/1561.jpg img/table/1562.jpg img/table/1563.jpg img/table/1564.jpg img/table/1565.jpg img/table/1566.jpg img/table/1567.jpg img/table/1568.jpg img/table/1569.jpg img/table/1570.jpg img/table/1571.jpg img/table/1572.jpg img/table/0076.png img/table/1573.jpg img/table/1574.jpg img/table/1575.jpg img/table/1576.jpg img/table/1577.jpg img/table/1578.jpg img/table/1579.jpg img/table/1580.jpg img/table/1581.jpg img/table/1582.jpg img/table/1583.jpg img/table/1584.jpg img/table/1585.jpg img/table/1586.png img/table/1587.jpg img/table/1588.jpg img/table/1589.jpg img/table/1590.jpg img/table/1591.jpg img/table/1592.jpg img/table/1593.jpg img/table/1594.jpg img/table/1595.jpg img/table/1596.jpg img/table/1597.jpg img/table/1598.jpg img/table/1599.jpg img/table/1600.jpg img/table/1601.jpg img/table/1602.jpg img/table/1603.png img/table/1604.jpg img/table/1605.jpg img/table/1606.jpg img/table/1607.jpg img/table/1608.jpg img/table/1609.jpg img/table/1610.jpg img/table/1611.jpg img/table/1612.jpeg img/table/1613.jpg img/table/1614.jpg img/table/1615.jpg img/table/1616.jpg img/table/1617.jpg img/table/1618.jpg img/table/1619.jpg img/table/1620.jpg img/table/1621.jpg img/table/1622.jpg img/table/1623.jpg img/table/1624.jpg img/table/1625.jpeg img/table/1626.jpg img/table/1627.jpg img/table/1628.jpg img/table/1629.jpg img/table/1630.jpg img/table/1631.jpg img/table/1632.jpg img/table/1633.jpg img/table/1634.jpg img/table/1635.jpg img/table/1636.jpg img/table/1637.jpg img/table/1638.png img/table/1639.jpg img/table/1640.jpg img/table/1641.jpg img/table/1642.jpeg img/table/1643.jpeg img/table/1644.jpg img/table/1645.jpg img/table/1646.jpg img/table/1647.jpg img/table/1648.jpg img/table/1649.jpg img/table/1650.jpg img/table/1651.jpg img/table/1652.jpg img/table/1653.jpg img/table/1654.jpg img/table/1655.jpg img/table/1656.jpg img/table/1657.jpg img/table/1658.jpg img/table/1696.jpg img/table/1697.jpg img/table/1698.jpg img/table/1699.jpg img/table/1700.jpg img/table/1701.jpg img/table/1702.jpg img/table/1703.jpg img/table/1704.jpg img/table/1705.jpg img/table/1706.jpg img/table/1707.jpg img/table/1708.jpg img/table/1709.jpg img/table/1710.jpg img/table/1711.jpg img/table/1720.jpg img/table/1721.jpg img/table/1722.jpg img/table/1723.jpg img/table/1725.jpg img/table/1726.jpg img/table/1727.jpg img/table/1728.jpg img/table/1729.jpg img/table/1730.jpg img/table/1732.jpg img/table/1733.png img/table/1734.jpg img/table/1735.jpg img/table/1736.jpg img/table/1737.jpg img/table/1738.jpg img/table/1739.jpg img/table/1740.jpg img/table/1741.jpg img/table/1742.png img/table/1743.jpg img/table/1744.jpg img/table/1745.jpg img/table/1746.jpg img/table/1747.jpg img/table/1748.jpg img/table/1750.jpg img/table/1751.jpg img/table/1752.jpg img/table/1753.jpg img/table/1754.jpg img/table/1755.jpg img/table/1756.jpg img/table/1757.jpg img/table/1758.jpg img/table/1759.jpg img/table/1760.jpg img/table/1761.jpg img/table/1762.jpg img/table/1763.jpg img/table/1764.jpg img/table/1765.jpg img/table/1766.jpg img/table/1767.jpg img/table/1768.jpg img/table/1769.jpg img/table/1770.jpg img/table/1771.jpg img/table/1772.jpg img/table/1773.jpg img/table/1774.jpg img/table/1775.jpg img/table/1776.jpg img/table/1777.jpg img/table/1778.jpg img/table/1779.jpg img/table/1780.jpg img/table/1781.jpg img/table/1782.jpg img/table/1783.jpg img/table/1784.jpg img/table/1785.jpg img/table/1786.jpg img/table/1787.jpg img/table/1788.jpg img/table/1789.jpg img/table/1790.jpg img/table/1791.jpg img/table/1792.jpg img/table/1793.jpg img/table/1794.jpg img/table/1795.jpg img/table/1796.jpg img/table/1797.jpg img/table/1798.jpg img/table/1799.jpg img/table/1800.jpg img/table/1801.jpg img/table/1802.jpg img/table/1803.jpg img/table/1804.jpg img/table/1805.jpg img/table/1806.jpg img/table/1807.jpg img/table/1808.jpg img/table/1809.jpg img/table/1810.jpg img/table/1811.jpg img/table/1812.jpg img/table/1813.jpg img/table/1814.jpg img/table/1815.jpg img/table/1816.jpg img/table/1817.jpg img/table/1818.jpg img/table/1819.jpg img/table/1820.jpg img/table/1821.jpg img/table/1822.jpg img/table/1823.jpg img/table/1824.jpg img/table/1825.jpg img/table/1826.jpg img/table/1827.jpg img/table/1828.jpg img/table/1829.jpg img/table/1830.jpg img/table/1831.jpg img/table/1832.jpg img/table/1833.jpg img/table/1834.jpg img/table/1835.jpg img/table/1836.jpg img/table/1837.jpg img/table/1838.jpg img/table/1839.jpg img/table/1840.jpg img/table/1841.jpg img/table/1842.jpg img/table/1843.jpg img/table/1844.jpg img/table/1845.jpg img/table/1846.jpg img/table/1847.jpg img/table/1848.jpg img/table/1849.jpg img/table/1850.jpg img/table/1851.jpg img/table/1852.jpg img/table/1853.jpg img/table/1854.jpg img/table/1855.jpg img/table/1856.jpg img/table/1857.jpeg img/table/1858.jpg img/table/1859.jpg img/table/1860.jpg img/table/1861.jpg img/table/1862.jpg img/table/1863.jpg img/table/1864.jpg img/table/1865.jpg img/table/1866.jpg img/table/1867.jpg img/table/1868.jpg img/table/1869.jpg img/table/1870.jpg img/tool/0001.jpg img/tool/0002.jpg img/tool/0003.jpg img/tool/0004.jpg img/tool/0005.jpg img/tool/0006.jpg img/tool/0007.jpg img/tool/0008.jpg img/tool/0009.jpg img/tool/0010.jpg img/tool/0011.jpg img/tool/0012.jpg img/tool/0013.jpg img/tool/0014.jpg img/tool/0015.jpg img/tool/0016.jpg img/tool/0017.jpg img/tool/0018.jpg img/tool/0019.jpg img/tool/0020.jpg img/tool/0021.jpg img/tool/0022.jpg img/tool/0023.jpg img/tool/0025.jpg img/tool/0026.jpg img/tool/0027.jpg img/tool/0028.jpg img/tool/0029.jpg img/tool/0030.jpg img/tool/0031.jpg img/tool/0032.jpg img/tool/0033.jpg img/tool/0034.jpg img/tool/0035.jpg img/tool/0036.jpg img/tool/0037.jpg img/tool/0038.jpg img/tool/0039.jpg img/tool/0040.jpg img/tool/0041.jpg img/tool/0042.jpg img/wardrobe/0001.jpg img/wardrobe/0002.jpg img/wardrobe/0003.jpg img/wardrobe/0004.jpg img/wardrobe/0005.jpg img/wardrobe/0006.jpg img/wardrobe/0007.jpg img/wardrobe/0008.jpg img/wardrobe/0009.jpg img/wardrobe/0010.jpg img/wardrobe/0011.jpg img/wardrobe/0012.jpg img/wardrobe/0013.jpg img/wardrobe/0014.jpg img/wardrobe/0015.jpg img/wardrobe/0016.jpg img/wardrobe/0017.jpg img/wardrobe/0018.jpg img/wardrobe/0019.jpg img/wardrobe/0020.jpg img/wardrobe/0021.jpg img/wardrobe/0022.jpg img/wardrobe/0023.jpg img/wardrobe/0024.jpg img/wardrobe/0025.jpg img/wardrobe/0026.jpg img/wardrobe/0027.jpg img/wardrobe/0028.jpg img/wardrobe/0029.jpg img/wardrobe/0030.jpg img/wardrobe/0031.jpg img/wardrobe/0032.jpg img/wardrobe/0033.jpg img/wardrobe/0034.jpg img/wardrobe/0035.jpg img/wardrobe/0036.jpg img/wardrobe/0037.jpg img/wardrobe/0038.jpg img/wardrobe/0039.jpg img/wardrobe/0040.jpg img/wardrobe/0041.jpg img/wardrobe/0042.jpg img/wardrobe/0043.jpg img/wardrobe/0044.jpg img/wardrobe/0045.jpeg img/wardrobe/0046.jpg img/wardrobe/0047.jpg img/wardrobe/0048.jpg img/wardrobe/0049.jpg img/wardrobe/0050.jpg img/wardrobe/0051.png img/wardrobe/0052.jpg img/wardrobe/0053.jpg img/wardrobe/0054.jpg img/wardrobe/0055.jpg img/wardrobe/0056.jpg img/wardrobe/0057.jpg img/wardrobe/0058.jpg img/wardrobe/0059.jpg img/wardrobe/0060.jpg img/wardrobe/0061.jpg img/wardrobe/0062.jpeg img/wardrobe/0063.jpg img/wardrobe/0064.jpg img/wardrobe/0065.jpg img/wardrobe/0066.jpg img/wardrobe/0067.jpg img/wardrobe/0068.png img/wardrobe/0069.jpg img/wardrobe/0070.jpg img/wardrobe/0071.jpg img/wardrobe/0072.jpg img/wardrobe/0073.jpg img/wardrobe/0074.jpg img/wardrobe/0075.png img/wardrobe/0076.jpg img/wardrobe/0077.jpg img/wardrobe/0078.jpg img/wardrobe/0079.jpg img/wardrobe/0080.jpg img/wardrobe/0081.jpg img/wardrobe/0082.jpg img/wardrobe/0083.jpg img/wardrobe/0084.jpg img/wardrobe/0085.jpg img/wardrobe/0086.jpg img/wardrobe/0087.jpg img/wardrobe/0088.jpg img/wardrobe/0089.jpg img/wardrobe/0090.jpg img/wardrobe/0091.jpg img/wardrobe/0092.jpg img/wardrobe/0093.jpg img/wardrobe/0094.jpg img/wardrobe/0095.jpg img/wardrobe/0096.jpg img/wardrobe/0097.jpg img/wardrobe/0241.jpg img/wardrobe/0242.jpg img/wardrobe/0243.jpg img/wardrobe/0098.jpg img/wardrobe/0099.jpg img/wardrobe/0100.jpg img/wardrobe/0101.jpg img/wardrobe/0102.jpg img/wardrobe/0103.jpg img/wardrobe/0104.jpg img/wardrobe/0105.jpg img/wardrobe/0200.jpg img/wardrobe/0201.jpg img/wardrobe/0202.jpg img/wardrobe/0203.jpg img/wardrobe/0204.jpg img/wardrobe/0205.jpg img/wardrobe/0206.jpg img/wardrobe/0207.jpg img/wardrobe/0208.jpg img/wardrobe/0209.jpg img/wardrobe/0210.jpg img/wardrobe/0211.jpg img/wardrobe/0212.jpg img/wardrobe/0213.jpg img/wardrobe/0214.jpg img/wardrobe/0215.jpg img/wardrobe/0216.jpg img/wardrobe/0217.jpeg img/wardrobe/0218.jpg img/wardrobe/0219.jpg img/wardrobe/0220.jpg img/wardrobe/0221.jpg img/wardrobe/0222.jpg img/wardrobe/0223.jpg img/wardrobe/0224.jpg img/wardrobe/0225.jpg img/wardrobe/0226.png img/wardrobe/0227.jpg img/wardrobe/0228.jpg img/wardrobe/0229.jpg img/wardrobe/0230.jpg img/wardrobe/0236.jpg img/wardrobe/0237.jpg img/wardrobe/0238.jpg img/wardrobe/0239.jpg img/wardrobe/0240.jpg ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02691156_test.lst ================================================ 521eab9363fdc2a07209009cfb89d4bd 50da48c8e7644508fca1f1143bb6bc17 43abe330362164e99be82ec29531a70f 4ad92be763c2ded8fca1f1143bb6bc17 d06105ee2a2ae27c51008e496c6cfd2e ddec69970cbc4d29112a90660b187a10 36d8c865f766e3e097872638b21438e3 f9e80ce23d9536623fddedb0bf24c68a b1f08c51a098c43696d224195a988f09 4a837740b388aa45d8ff6111270336a9 a56143efe74ee89ebbf3143b1cb6076a 3c7e4628a9ea201bbf3143b1cb6076a aa07239e9397cf189601fb40d0d298b9 4635326bc4fdc3e9297cd7e2ef7dfa80 427030abcc0f11a8947bbeb9022263b8 d08471df3e76602427743256ca3834f b785b39d10c33b5de9f07d25f575b2d4 e0385af10bddc6a0ca8607f540cc62ba b80bd34ab330babbc8727b27ee96a4b7 e42443669339a6c1a5a118bd15e6e34f b4575e5e6161fd497b164268a44f7712 a6cbada42d1a30d0f5c7319b71bdce6e 53eee66291c47a91bc0909d98a1ff2b4 db0c0fc7ce05d372311e3590f044c241 b976a48c015d6ced5e9e2656aff7dd5b 489d3e4cc3d790a0ca8607f540cc62ba d20e3ed9b3430672bbf3143b1cb6076a eed299b690be51ffbd931fcaa69140 b092d523bdd320e4ca8607f540cc62ba d0ee4253d406b3f05e9e2656aff7dd5b 3db61220251b3c9de719b5362fe06bbb a1708ad923f3b51abbf3143b1cb6076a dfa36bffe436a98ee0534173b9189765 fe0c4db38fb6399990b1d6deb98feec6 545cadae487b55bbc46ba5100bcdc520 57937c7ab42260ebf119374ee5d5f944 aa2af754642256c08699933784576e73 350d12f5290908c7f446f92b52bbd82a 48e9c61de4db838d84b83051fa0ae5d2 a9a7f21271b3efbaf446f92b52bbd82a ff52c059efaca3c1ca8607f540cc62ba 997cb29f544d6f2726360e1e29a956c7 57fe8ad460bcb4929a4a28ef635593ce b1835836e541766882568aa50e4e5dba f12eefbbefabe566ca8607f540cc62ba cf0cdaa94220ee3f4c3a35cee92bb95b a074750e28ed3818203936772104a82d 45a4ec99ed13ed773c2498c4c2f13ca d72a483cf8a0cf2bbbf3143b1cb6076a c9aeb20d7cd1b3b45e9e2656aff7dd5b 471ca950dbdf0c6c5f80f808704d6409 9825919cffec79701944f01d3ab2091b e0cc4f538a8da2d65d3bbd70fc7759b7 97d662e5e6345b46bd46d022fd7d80aa 9ac292686a2fcebbe719b5362fe06bbb f2d4b8440d4bde5330afbcb38d77d0c3 4c008f39378be18bc0909d98a1ff2b4 adb3ea03d7b954255e9e2656aff7dd5b abc465975af79827dfb86dddee1d6ac3 33faf711ed54a4d3db22b838c125a50b 50755e616df58fe566cf1b4a8fc3914e f6ea6663b48bf78261f1ef59130c405d 947d6b9cd1966e2e719b5362fe06bbb fc7387d630c84bb9c863ab010b80d9ed b6d61068ef2bf2d46059aeb39e538eb2 b590adb6d3486f6e90b1d6deb98feec6 9afe827a622d8ca28699933784576e73 dacb447d7820e7f7ca8607f540cc62ba f57c74e194cd2b2bc8727b27ee96a4b7 b31bbc50a0d3a4366cf1b4a8fc3914e a5cd14be786fc8175e9e2656aff7dd5b e86fd13a49f0ee0a62b600da24e0965 a0a7e673a1e1bca78699933784576e73 d4dac019726e980e203936772104a82d 9bf3c126d5918c41f5c7319b71bdce6e b72804a8bd3dbbaca8607f540cc62ba b9fabfa6d5fedbc3a8e091cb544689d5 dc7c5d12854b9467b96212c8f6cd06e 9a8aecab136ce50db7ef47444625afb2 b2b1c1d5c757af8a7209009cfb89d4bd da9d111e1175d318bbf3143b1cb6076a e8409b544c626028a9b2becd26dc2fc1 a805c30d4b09f11f62347b4731688b0f b3a59a941500e76535592b447835a16e fd41d04f1aabbaea3fddedb0bf24c68a ab95a4e7f2d3cf9ca8607f540cc62ba d5a94c9f09d238c4c3a35cee92bb95b 571cfb1da3d5b3704b5910188444efc8 af696fc30a96a0c8bc0909d98a1ff2b4 4ff50b9f815c58acca8607f540cc62ba 9f5dda6f01bbe29bf810506e9ae2dcc2 ba662ec78231c493252b4f9439ef95a6 acd8f367c36a3d84fc7a6d75b3d807ff d2e2e23f5be557e2d1ab3b031c100cb1 f39985959d394f8c863ab010b80d9ed 56ba815f883279b462b600da24e0965 356a633ea047c549ca8607f540cc62ba 9ba460913d86466f62347b4731688b0f a04d10b24ede5e9a3de778e85611513b ce827e4c857d553f71d03b466c72ce41 ca4ec545363b3b8e8c2814a4ead9cb90 ecb4ae05d7dd135a619550d2af0b6117 973df01cea43c7f690b1d6deb98feec6 f13827d156628467b4cdad9a5bf52dd5 1e0a24e1135e75a831518807a840c4f4 2d3ecfb6d7ef2c45e08b03c50fd87acb 9bd8d0fa75bc21c5e3375a6b96a1d765 93ba822e84586999e3375a6b96a1d765 cf61af3c52dae1e0651e8da9cf70afea 5bc41589eba11a4e15477d594f1fbd99 7e8be9c88e596b84198609c994ea801 7805239ad1e40e07c69d7040c52664c5 8951b4f9834869a6673a028ac04b7de3 fe266c740580c102ff9ce0c50c2cd25a d844094b073a0452b04b2d1c5ce9783b 79351c8f83f5a3abb2d09bc8d348e46b 8f9fe8d7df1af4e057240bc6888ed016 3255eb4c8ad868b3b378822897b79a81 7eef160cf5e4188a5a8c25d312cc3c6a f9fc7fc23e62986fef6c510e24348d3b 70f330ba02ad7a05bec2ed99cca9acdf 52151d6a699ed1acecae07472b415b97 92a83ecaa10e8d3f78e919a72d9a39e7 bc58ff3369054fa68f52dc705c3109b9 8700f6db654c5d2aca52e8e28cb200ce 4c0f48d49805a37298a97ddfb532e08c aeb10a6725afb1abc79f92df566f8c6b 46d2373fa05a4876bc913a3935f0ae10 effbe2683574dca2b37a6cf3f07b9ff4 6c432109eee42aed3b053f623496d8f5 f62ad267cdd1a00a34b1f3550986bd42 cbf4dc1c144ce656ffa79951b9f955a3 5e77ccd7794465dacbbcf57b22894cc3 aac4ceced7042e4c1a6d59f1fe711d12 1c2e9dedbcf511e616a077c4c0fc1181 d5e01850a9d1f3ac5fb48d488d5dfafd 752d9a010346862551cfdb4c9f126c12 396c8e232192a44be1a9c234926c21e2 733db701650ed0d4651e8da9cf70afea 14d9c576d06622198f52dc705c3109b9 bddc2c1a4fae008947a1dbf5fd48a4dd 5459029489f68030590874dcd9dc8481 4a7b3bb0f7e4e13af7f031a34b185310 caa7e70beee4543f42c20743f866e1a6 3b2a19d782234467f9cc1fc25372199f 97066012fbca5983c74417871493eae8 95cfdf728da16975c5f6fdebb053ab2f 5aeb583ee6e0e4ea42d0e83abdfab1fd 7790715d4bc226f8b569b36137d81c9b ab7001e6d0321374b378822897b79a81 5ac0cd21410b2a6a341877ff7a6c751f 1af4b32eafffb0f7ee60c37cbf99c1c a87c4bebcad260edc05997f3aeab04c6 a12179d6f8b753a934a446df7eff04e9 914c308ac4a9156842c20743f866e1a6 f66bf1a9b6d2d109a34fb3db6a11a22d 4658a2fb7353f839643ae903098a314 376e9480ebe635b1e98208adea7b4e8d ad66ac8155a316422068b7c500584ade b26c50c3dd4a1cbb16b34c3751bc447d 19b219dbd2e4467828d4f2ffc8f17f3a 1e6a71e0cb436a88a3a1394d6e3d2c63 af04f04964fc2f1b64a62403221fd59f fbf6917bdd86d5862df404314e891e08 48b99ae8fbe0762a8ed04761eced33c6 a61bb94e08709f2bd0734afa0d357999 885b7ba506c9d68ab6ecbbb2e4d05900 b5130ad12f6db8d0c83b9fdce4d2e0e7 8383e10a1d1faf89c7749c7e68c22ddc a0c9b929b9a57fc8f0ea53ad10b4d47 8fa9e2e8dbed43911f32208e53f871eb de9e093bb17848c3b2bd4a92202f8700 369244d49f8f1308b858e64ff0fa8db3 a657a0dec941d40772fe60ad306aa5 464a8718f0e81ffd9a6e43b878d5b335 1adb40469ec3636c3d64e724106730cf bfa8e832618454c0a179137acc8d4437 f9a8c5ae39362284d538ebc793e748b2 4bca81eedcc3da52b8013668e30e23b0 552d76fdb54e5d57cf7cf1e30e2f5267 c087319ca6126c51c5b0cf694baa734f 5c4095795aad447f7301f2b895d332ac 8a84a26158da1db7668586dcfb752ad fc44636ad5fd9754927b6179bcc6e892 84de1d44d8795d5876817284cd40c7c1 c207db490c4acde27b5d32a85e1b7987 65654b5c4e488e0c961fa14fc879444e b152548ae1a12bcb680558279a114842 22e4e0210f80fae813940713146922c1 3e0561d70c7fd4f51c6e4e20f2b76086 3fd97395c1d1479b35cfde72d9f6a4cf 257d7b5ccd3b5c7f7c5c969e221ece01 ad6e93a1db3e1da5977e4bb19a62128e 218caa58819e10d1fe40308d822f996c e30e25fe047ce1ea10b08ceced9a0113 a73be4c48272735df64801ad2940cdd5 3713302f0330f960970864f653fa080f 98011d15300361e54f0e6f5b218145e e6363b1d63f6aad3c1006ed55bc1a3fc 1fccf0064e0aebfeb179f2ac46747670 b552a6155c5b340e70828dc2c11733e1 b27de883a83409a86bd2a0f0614d73d 536f5d8e46467566643c3c243d611069 bd48d0beb5d1acf1d2106c9042f1bde9 efbf3d4c8877e7dc7ce8c809505eca2f db4e26b10e48f0202eb17a4a1756af76 721eab5632f60887e72b7fd373921885 cbc9d6ae9d22fcc57f3efc94c2d31dc5 bb7d526405e9347b8f6810e1a2b6aa04 f0d6c53d21ae5b5cd0c57f18e8d8830d d722973c75c85d93d0734afa0d357999 789f032dccc6092977b7d0d4764c121d 8a25b5ee4421f96a349a1add3c9c4a87 f3e2df468c15795872517bb0a6b4d3ef 9a5f4508a4337d195e48cdafd0101d9 63ca41783e5d41f1651e8da9cf70afea a374b0448461438ef3d4cc10d9776c62 3d5354863690ac7eca27bba175814d1 62c875c3db8bbc512842bbbd2f23c97c edc9fefa5fb82a0443a0c73d98327de8 2a2caad9e540dcc687bf26680c510802 8b0d9118e9e7dc3f95c9af648ce95367 c6c525a71215dd5a459f73e379ceb540 90612205109d7458e84aab2e1d454e3c 9d292c07f1dff16e1304733e0af0907 e1e7f3843b1fb876f5156bb441883fa 1c798f3e8bcaaed6f34c3a85e57ba71c a5021faf372fa2c48f329df3701cbb3d 39ae262853031e42aedf20f7099e25c5 f8647af0b1ad01445de04aad18bd94c3 eac2573ef637a0dbf31cac033b2c0831 d276954441de1e878a3d2bbe7d58317e 79d82d0db21dff48aedf20f7099e25c5 f74cbd91e6fb40dfce5965228d7e8c9f b9ee9a1ed9296e8c598bfdaf1b614b1 9441549e323552f2f001dddaf44c449b 6aa1ef13aebb1935ebdda919ac927e5e 3ad337dcef167024fe6302fece358e4a 98168c1772b769c0ea1bd6f2443b43e7 d1a8e79eebf4a0b1579c3d4943e463ef 4def53f149137451b0009f08a96f38a9 8325baeca433510f4e8c959f70e2c0d8 48df2496242053da4ee0fb6a51564c3 37ed9b767fb055959d61264e98b74348 bf124ddeb1189a3cb312af71146176c8 a3fc9ef9f611a783525e60273896d30a 12f3fb99c95c6a7357891d676f728bc0 fc16704314dc71ee9a6e43b878d5b335 a14b262838529c2c81e1d9f6b27f1a92 1deb997079e0b3cd6c1cd53dbc9f7b8e f4a5b28233523a4e588ed1d0f708d42f 48cb2de06f46cde25ed29e0a9f14425 b04ec55f4960b3b984b7ea000aa0a2b b34526d94a00ab55f5a25dd70eb863e0 e416ba617d5388401b0d75a1d7e2d58 3c2986906532a1c8cc36f752df32539d a516f9a6947bd0d639cb1b92881e8e76 c510e14ac20edee814a46d7ec44fc258 a93a20767d70220cd3b936925082270f b43ccbfd5e1d88bd780469afe5e05eb1 b6a1b55eb79a383542086bcdee59b1cf 9f9cc77c5e32664e6a8a5e39588ebf68 f9c93ddc9b921d88a72ae0d8b7f98590 55fabcb7e7c11560fa6bb68bdba0e663 d12f7698698bbc8f9b10643ba761a774 444d67950ff9a4cc1139bebb00fe5be8 50342e9cb1a7e00e59c11002fedd14ce c8a7eab796be432d5de04aad18bd94c3 5ae05c956af61890b58b3ab5dbaea0f7 2c1fff0653854166e7a636089598229 6cf339eb8c950ac5d556fc099c90ab45 10aa040f470500c6a66ef8df4909ded9 c1b5dc92221bcdad5fc84bf2b9ef981 fac4af109beb0108b4f192eea1889928 83ed7c81a011d72a179137acc8d4437 ea58a51483e3604897dec65c2238cb8a e033b6ad34586a86cc1c9e8218bfe7fc b9ba988dd9a6cf426e8b6dd39a855b69 a702da03d770f5096e2738fc9da60e6f c359e067e75cfa8693d4024985440d4c ddd06628f3bfd0b64e1dedff94c67c76 e79e9e1c8dae48888ee1ba57de3d34e0 14762404f34eb050bf7a28999a707afd 7a57a9b261f60dcb2296d88107d065f6 85da8ecc055fc6cb58328b65a4733701 f07028f2080aaf4e75b90b083ed202b 9e998a06601e9f944b2bd73664dd1844 b59a7cab8e95f6eaf3a7414a84b5637 afc975c77f6d5a1bd23d6ce2c840685b bea43bda17ea2ec792e07599d5caede 4f0bf26c62bb7c8b7e1c97634acf0214 70295db03521e219a5be3c7b80fdc3d c5c726006697aa19b5666ac9dae008e8 2a906a12b740afe2fe93207afde39a32 737629e185f4c45f99f30106e678cab1 feb0bd0dcd155af4cc34b900bb2492e 41fd618a15692db27359b134afde902 aa0802b8b940b7222296d88107d065f6 e0df54a0990000035dde10d3d9d6a06 b75575684fa8ffaeac7e7b41e1ebe3e4 ee0105d05a5007ab827afb33b6d5eec6 de29a1335c332a5ef7bc9a344bb7bae5 b46455f82ad28fb595ff232cd38210b4 a8773829298f492cbcb9a99298d16322 6b69e4c1cceb6e0681fa1ee3c368532e f24daae76836e249f0878b58b4e887bf 69d471ccfdf9e55cace8f9c62f7ef839 58fcba9ef405277cfc8d2548f6ad75e abb19f2adc42aea2579c3d4943e463ef 46829981c5c25285bfc0a2c490b4c222 e0b5c450de6d7fe3d87c63d8b3018b58 66e60b297f733435fff6684ee288fa59 67dbb0de722cf5cd7a734abc5ba1db0f ee92bc35ee989f59271b3fb2659dec56 f5403d3ffcc6bb17adce4f2283adbdbd 79c10c1d217b4e96ee2723567c7709e6 461891f9231fc09a3d21c2160f47f16 e9df546c1e54af0733d72ae4e2c33411 5b5c4dc4bd29dc8166cf1b4a8fc3914e c2352a98200942e5b39b85af85a55aef ea06bef342fbfd4236f3a2343a8221f2 237b5aa80b3d3461d1d47c38683a697d e5c6ba3e7d4f2fde40acb87a6be88b3 dc74cd06430b61f478d9c09d692f9057 5b985bc192961c595de04aad18bd94c3 cc0c7bf3f0f598db2a9ab3cbfdfd536c 3ae96a1e1bb488942296d88107d065f6 74a5f937c22aa08a3e70653c1b3170b5 f1111840bde23096ee2723567c7709e6 e3de366a0cfb59ed38294c37c250d7cd a48676cfe44fd9bee40acb87a6be88b3 76252e1b65ede02f889919e9428eee54 7fce28d597b3137cf24f8f5f80968450 1b90541c9d95d65d2b48e2e94b50fd01 89f21747e6403735d9e1375411b582e d3f2dcf27000283799d9d900afe054b8 861dbd415c83e12e67c647d96462f673 e1e5cfcabcbe26a03087f84b199fd297 12991e9529a2b2bf9ac9930d2147598f 97ec5b82d9757b639cb1b92881e8e76 efc9cda06afcd8c2354ab1decf4fe605 b81339a2f1dbc0de9598ceb95c7f0752 1cb757280b862ae52c7575c9089791ff b2b3fc16b9a676f5950bd071d87a18b3 97eb9cf6c8a11a389967b23b351d6841 ebd96d07a7d68cf2fc7b6f7beb3a27ff bf5d6902e75fd8812296d88107d065f6 d109c08886c2a3dabdf566b587d6b21 7d226c520a29c7705e28caa3b26a73fd daeb27ada93505b1e24e4b657f0a298 cc80380c511ec8e2c91a9d486db717 d6bf9fb6149faabe36f3a2343a8221f2 715623df7ed5a6fc2296d88107d065f6 4e2322d4f1c0d29df96e777471c18dbe 94379090010cd6bb874c9ce092a813ef 96ed9dcc355f3d34585be1dcf6e59170 ce682d7a2bbf77b6fc4b92d3d335214a e69631d34410f99ac4f72bf08dc79a6 f134306ace70df3ac1006ed55bc1a3fc 8b59ed9a391c86cdb4910ab5b756f3ae afd6b2789e486ad4663191fd557d3a61 d24f2a1da14a00ce16b34c3751bc447d b94b4edc5e4701093ba0eea71939b1f2 c31f5303997022c842c20743f866e1a6 62bc52c204b738317dcda43eefa0ac02 f691f2409e006d33f412783097373bdc 4a3950ebb6fe6aca8afca43ae0909988 df25be12ae47d2517ef7776b3bf5815c 33ddbeb13fecf7868405970680284869 448bd2bcde027ca9e5d07633dda45110 5de2cc606b65b960e0b6546e08902f28 c237b4636625f1b0af8d9a7eb0a2bedf 31a06c63b8932cac8bec85d7b4e1ee67 d43b80dd95a2233a5ae839ffe09b9d31 9dbab9e46b372e837645a27090729af6 5d8583703889178a8bc354dd4eb23614 df68b8fb9f4531b42e690fa6dfd5d610 70d9304de59792a9515d73fcb34092fc 9c41b0040048581c32387cdb9b2a84d5 a4ea22087dec2f32c7575c9089791ff b8e4e4994d4674cf2023ec956848b741 896508fa65b8a31c12b38b1d99376c0b 9a266b3a734e374687bf26680c510802 de519752147a225032387cdb9b2a84d5 35ae2885a0e645fb7843a50f3dd2047e ecc50d702133b1531e9da99095f71c63 5dd2324cd6ebf52e293fdbda4e7beec9 4580804c798365a094a6f19fab16fe62 adaadca2be822544d81b6465d8dc20b5 167740d2a5f5cb6c7f4561609781d8c9 6896058e4bc0be46bdf566b587d6b21 7664f3809169e998a4ee0fb6a51564c3 8ddc3bfd5a86d4be2e7c68eb5d1b9123 879ebdd198cf4aa58f6810e1a2b6aa04 e814190f683946b798b4e13cd6d24c30 e115f4f824e28246becc132ee053f2fa 87b4476ce2df563972459a40bb821ba6 48a0d4cb43c961165de04aad18bd94c3 563cef4df464ddb1e153dd90dac45a6d 75705b82eb24f5ae23e79e99b949a341 fbc429365ab7136be1a9c234926c21e2 1a9b552befd6306cc8f2d5fe7449af61 35bb733b13c48bbc839ab492b6143b9d c1c341e597c01d3814a46d7ec44fc258 e3aff5ae3e8f2a7c4c2c88971423d0be ad546b049b2246bd609e2d916fa0da27 57c4a88a7b2e10f14c971d5c531b9d1c 862d685006637dfef630324ef3baae90 81e4cc88fc757ee220152153c3a56171 dfe65f8a20df11c5d1df55cbe0874aa 853dc1e740631bf2ffa79951b9f955a3 68c61d42222863682296d88107d065f6 8996445c6d2407c0fb5c1b0f759e2bc1 26f8a11864fd6bf7b68211fcc7956ac6 cda3cd7f140fe791ed137f17a6d8e3c8 13f9eb29d699488a99eab31c7df6f5c3 8c42e3042a4beaa7d5c40787c7bb7824 9b5e193416d5b2c09d608d5eb8e56ba5 d940f33afc01ff036da97d9f744f7e97 213cdfff847f32135ae839ffe09b9d31 895ae296f701f5e2ee7ff700fef7cd22 7b1859e6b57bb6621c795eedd7ee6db0 85a15c26a6e9921ae008cc4902bfe3cd e4b0599a9d06f7ae39cb1b92881e8e76 99c0ee178c5a4dbd8d8a353a30b33dd 6459a6977cce8f8789b0d69aba91f1ef 1d0c128592385580e2129f6359ec27e3 48c4e5e2c2dfccc7a68efacd2d601104 bdfbf1c555dacd9d325212819caa597d 8264f874bc7fa58ac3d9e92d9c33325b b51032670accbd25d11b9a498c2f9ed5 76811819fc2bf7fbdbe9ce60b93b8bd5 bff6cee515cdefa8a5effc03faf54012 dd65065e6e2d31d62e350437b1fc5163 5558a2511bd43caf2fc668af6d3ad0ad 1998ee1bf3806b05818b286e41cc1a3f c7c5bb658cafcc7c67711f7c205c5b63 123ac29b0aac8c8e5d07633dda45110 343a607d1604335fb4f192eea1889928 67c8fe06930cf8788762ebad71629f9b b5589ad89ceab860123d1d349cb8cfb9 f6e6fd724a9eab24ba8e93696257b3fc bdfa5ff6aefd3fb8a57854d2ce086d65 9a84ed39f9a2a3c0b3f2b01de37c0b29 5294c39d2a57bd7e5cad6226edb8e82 8c0c8307c5de1b65ac96c03d6280efb7 51d6c3bf592a1fc16dfe8328adcc508e 204f4e737fa14aef33ba31f6ad43c835 723a86a2b266109d1fc43d5b32fa230f cd9f07bc1e5087b7f33a09c02bab9cc 407135e4c3c7cf2523c853ced7da0343 320e542b0b2f8afa248b612e49a6e572 3bff0d84311470a357f53fe209e96fca 6e25548ed9d2c7b597dec65c2238cb8a aea5192a4a7bda94d33646b0990bb4a 324304121b61339bc36cfeafa51d54fc 3d23703a618ce7df1e569ed4e4cfe84 3f9cab3630160be9f19e1980c1653b79 5a4c3f3af30e42e057891d676f728bc0 86c8e75179f00b725b7d3d0361fc611b 87069f21b11c180799a771d197c7b487 52a84fea7c314f4c3dfc741b4df74043 b481294a2692419cba5f6626ebfdf87f 2aec6e6096e640add00d52e62bf14ee9 ff6e377e8e5b3757cc34b900bb2492e c0375c2ce28292d9a179137acc8d4437 bd698089021a4a58e23abb9b807b4cb1 bbd8e6b06d8906d5eccd82bb51193a7f b8ce3803485b620b2c674305897e1782 e3dd7fd80f9e53be6ec2a8147a044691 27e6fe140e6e668a3881254c11db28 e41c5719ad09055f1b880c747ee1f83 3d6a8f8c27e465aac6747f7c9ffe9e32 80b8f4da6b77eb66d208f79049825a82 f6e6bab105ab890080be894a49cc4571 4129199695b9344930813b40bae6f4cd 1d396e76ecfd973575ffe5b08493cffc 20865546e07ab8067c597cd12d99981b e110c699f2ed6511b53a02c8ab03ad65 e2ddbf9e63bbf9cc4e99bd46be8e610a 5d1d88958bd1c9c573328938c756eb4b e02485f093835f45c1b64d86df61366a fc0097a6ad81e5cc1c2daaaceea98731 35892510dcd7cebb87bf26680c510802 4fe7bcbeccf207a5a2a2a57a63160d60 804821516ddb3203c6747f7c9ffe9e32 aff5f5ac9dbabebee5d07633dda45110 da1acb401541235be4d2773f0358b43b d45809b73a371efd185b376619557c95 b509fbbe99df854f0478431b5ad57db f337580024e8c36da5cec7cc83604181 3069d990d52051eb3a34c2907e8f3f1f 3921f5f454c5733e96e161ce7a956a8 a6b09752263b1de2296d88107d065f6 6b6cb0c71731aacc277d303e3a640f98 f390b1b28b6dda03dc57b3e43c28d486 af73d05ac86369bf4ce863ea27e2b897 3b5b8a2384e8850d185b376619557c95 52ca6970fb09b561f9f7510373841dd9 d4cc520929730248642fa8402286a797 b702e35f4a59e81f64801ad2940cdd5 20150c9c3038d08419bf31399c6e39e0 4bfa5d948d9ca7ab7c5f0032facde6fe e805054e6b9b3666fcfb100fed3ed97a e9704a563a5a0a3f5a4b8d382b9decda e138a98d82f3aa692142bc26f72ae44c 7f0c20bc26b08a163e2ffe63fcfe09ec e3f68fbd5d1629e238976998fb731b88 3a3827f1a76c5230e24527abcb488f31 d96f2b6990d0d79e247412be0e58d7d4 882b5868ee1382ab1608512333cae245 3209a02075cb9f0168023bcf4ba60aff a1db8dcb7f1fcdd597190b73ffeacc5f 3a54f2b6f9b053b759b859405dee3be8 2e3c317357ecb038543941eaaf04581f 6481eb70eb9a58cfb2bb87688c5d2f58 fb9deec3a422b06b609e2d916fa0da27 bfd606459cace196e7ee2e25a3cfaa4d 330f797ebbc565e71560e45167753555 b153004c293d4b151f32208e53f871eb 3f387e8586f92b6b7d3b11085e75c7ad 9cbbede82cf4f7e463a33dad5001f8d7 c5e999752db444eb91a464c5de1b632b d6d84d05892a4f492e7c68eb5d1b9123 7b1d4aff088fa3736e0f3d76ecf4a53f 8277c0294461b76e8405970680284869 b2960c2be8fad9dac140e34b6af37a1d edd9583988b62c90328f15e6c60d0e90 7f6af37cd64377e1cabcecce1c335df1 ed1d51ac367d0fa5f830b2dc9bf63133 70ed0fe305145f60e53236e6f2fbeb94 83778fc8ddde4a937d5bc8e1d7e1af86 cf6fa8a054ed7bce5de04aad18bd94c3 ed50758d8792491314777db9411e4949 ed4aaf81dc577bedac4f72bf08dc79a6 c271badfb6842c882fd5ed7e39258c7 2b5c0a38c754927d21abaaa81d1a4195 2087ba820bd70001243402995adcdc4f 700bc5991a46c1d53ddab476a0f5c5ee 14cd2f1de7f68bf3ab550998f901c8e1 f9db62e6a88f0d7129343faf3bbffb15 398ff83ba75191f050405f236096897d e15f4c98857b67e41e287f9f679ab620 a359cd0297d4e655a871065f9ebc6ac5 6341436b6a9df0c6683651cbc8e49e4f e75ce21b914ba565b4c6d1a32dc4f554 7ce599765d4c11fe87bf26680c510802 8b4309aac2f7f6b3b97c9314bd4647d5 f6ec20afe98e37ef6e2a24768a2fccc 556d2b99469e62e623a346a784afd6ba a7394a6f2dcf8e9b3cbb132878a747df c47954200b78fc32f677dde7945cba25 261093138afff514d8d7812d176664b2 ff6ab0fe13f58e22962a5697e98a94be a57802c776ba1b69e44b1dd0f956e84 cbb5ed444249f0a9e90916c8815b5c43 2dcc844fe9c4d4d99b0fce6a4905cf2b 6420a3ff5e526d59e16519c843f95ce0 61e8e8a7ea726a03c79f92df566f8c6b d6c655a7c97cab8e9f5f802084bd1d73 a828cbaf4b3bd253e163b5a191403a0f d883e6e5622a0cab72351dbf9e0687e0 9436273fc1a5e3ca7af159eaf7625abf 9c0431249dd5a50dfaf7f0ef9aa8fd9e 15898fef6fec88c53ada73811bb576de 902cc09a60a494a278d0cdddb0c08062 43d8125d940bb2ae850f318836ee7512 29192f8c96264e3435fc197bbabcd5bd 2c64c521c114df40e51f766854841067 b2ceeee3c5b75962ac4f72bf08dc79a6 240fd3c1fd804ec1b8cf782e8c539948 5e9129782c45b26992e39b8eae3e6b15 1284eb71b82f6794207f77cc6c79e3d5 958c54f8da7a1359cea2c06142ecb1b3 d83300deab42c100eb9db4e832a6dd82 1e155559446469112e690fa6dfd5d610 ece25d89898c7d9090b1d6deb98feec6 b22014408721ec314567cadca15fe337 166d333d38897d1513d521050081b441 4cee36a2e8dd3b24b87697d3904b168b 3fa511e1882e41eeca8607f540cc62ba 48706d323b9041d5438a95791ca4064d 8ac8c21b63ff535fca8607f540cc62ba 7bad9d15c0f0d3c03554ccf8c30febe7 e36ce61195489a56c8da6d3458daff84 829108f586f9d0ac7f5c403400264eea ed7e1a38fe33830b87697d3904b168b 4875318127182dbd15aba2f83720a298 d70d648947c65b1eca8607f540cc62ba caf92880cf63690188a7f6dddc29eab 9daa49ab2f97fc14d85e5191b992b560 d16405b7a4300014ef5bed0139d3780c e06c2333068e9bd0755d33896264181d 21827b0be78dd3e17dd9ca9e282b9209 494a1698eb82572c3df325aac2f73830 8c746468d3dcb6d3ff3a35e90542981d bc8c26902e912b851a53b454324fd345 e726c8e6897130439a6e43b878d5b335 e8de6c58f4a772d771d03b466c72ce41 5ac00867c7d78b1690b1d6deb98feec6 7c6a2879e359f505467f6b8c6b1d352f f1b9ff223b5a13719a6e43b878d5b335 3feeb5f8ecbfcb4ba8f0518e94fcfb22 13370c42b8ea45cf5e8172e6d9ae84ff e812f54386acd072d44f37c9e0fb10d0 87348bdeb8bc74139ebd7d1067b13a be080a797406422843afdb9c81ff2967 37b1f7f02c4b87dbca8607f540cc62ba 59f258b7aa7c1f7aa7d0c1e4eb8db7dc 2176fa9f69e5e1dcca8607f540cc62ba 971ef250f2d0cb389a6e43b878d5b335 72aee7d0e998a68aca8607f540cc62ba 7fedb48b457ee9f31629b98cc1b1b992 e0058b4948f87d3b87697d3904b168b c0bb4f92d12f4504d65766fd3c4f994c babf58c69501ae6b9b46c030f642fc41 49660fd24e5c2fbab87697d3904b168b 28d719b73b1fcd2f5de04aad18bd94c3 123ba1ebe2ee533ef0c45eff2a917cc9 25bd1569261bc545e8323edc0fe816a8 8add45a11c9fcb446eb5821e78d8898a 57f1dfb095bbe82cafc7bdb2f8d1ea84 ea9eece7f2c45a2a82e4c37374fbdce a00c0bdf007689619ebe905ef4009f84 86b11ae736659136ca8607f540cc62ba 54e926e12382808b66cf1b4a8fc3914e 1678946724380812de689e373096b0e3 90769434f2b588c1b675ec196a869fe5 d0614abb68caa5ddac7f1a00b76bd166 917694a71164f2148e8405d6c51a908 d74767519393a937f73e5bc170b7e2be 4008286f2fe8b6a97c44cd1ce3d402d0 66ae19841350ac2d4ba2821676102936 bc7ead8b45952ab8822054a0a020bf4a 508fa09e7df177e7fee8021c81c84603 44c0cb6571f6f000ca8607f540cc62ba d63daa9d1fd2ff5d575bf8a4b14be4f4 7385f1416e93f1c14ba2821676102936 757c47e20a37647431e38f024b7ad042 934dd5529c22cd05bc0909d98a1ff2b4 e25e3dc95243a92c59bcb260e54d3785 f009f3112625ee00b8cf782e8c539948 d59bb0ad79371634f3d7c71ae132007d a2712db5540766cdf6a602e459585636 c494f446954523a8a32748a9f843a0bf e59c4f290d8585a862b600da24e0965 167250e2014c72dbb87697d3904b168b 118e8142a8cb1fe19a4a28ef635593ce befcb95d80e0e49119ba010ddb4974fe de5807cb73bcbbf18587e940b916a22f 452c18f8997c53741adbb4c4e06ad649 1e2de00cf19a0a33554ccf8c30febe7 959f28c6724979ef9a6e43b878d5b335 ca11efc8928c10908b96ae1a0a8b84ec f46df635ac669a9818b14db3b83de9ff fd9f1cdaa381599bca8607f540cc62ba 692797a818b4630f1aa3e317da5a1267 d81042a53dd1cc5bd90bfc986bc4c94d 130422d62194cf026c8067e570d6af71 9fb60716f0f5a2b84408eb298433d643 c9be9f07f5ae7c375d7629390efe0a2 c1b5fd196374203d772a4b403daac29b 123bd9e948881939c38a1d3458dafa1b f7110ecac70994a83820d8f180caa23a 18e6f319062ccb49ca8607f540cc62ba c6e4d12318bc4a3b262daac8a0882e96 319cf93077118d19f64801ad2940cdd5 26e10058cf9835aaca8607f540cc62ba edc185566c1df89c35fc197bbabcd5bd 5fb64e3fc0abe449ca8607f540cc62ba f7739764eb1c78a053f370d353cea84 4ee48907120e261c3df16180af9974ee 265f5348ab2320b2148672750a1a335 2066f1830765183544bb6b89d63deb6f 1e9ef313876bfba7d02c6d35cc802839 a7a0e7eddf4ffb8c19378fd691582500 fddcb2b3d45ce98e641c309f1fd7e183 4bdb2c4fc6701174ca8607f540cc62ba a1848a4a69b14704ca8607f540cc62ba 4cdd238ccf9002344f59c2a67aa8473b d7a2512d9d8ad4c8a18e0889038e4fb6 caf80ecbad22a7384e1799d9d4d697c3 2229bc4e646f506679f56e78e8640bfb f31be358cb57dffffe198fc7b510f52f fcfa1a67f34e7f2fbb3974ea29d1d642 75d162523d703917b87697d3904b168b 6a75658fb8242b9c590874dcd9dc8481 144070f63941362bd1810447902e2904 77ee6ccca238ceec5144962e2c20b832 d615a8217b70af06bc0909d98a1ff2b4 85cf5445f44a49f5cf35fd096a07bc43 94ce3a5ad2576e73a5cac89017eae8d1 77c9fd0f0c6b0e9fca8607f540cc62ba c4111dbb21e1f17043afdb9c81ff2967 23eed87ac79f1b152f9c405cf0817830 e3fd510add7b1aa3c19eb6ab3736de88 6f72a0d86494b551a834b9c8bfc8647a 2c49289098e4492bca8607f540cc62ba 9b1fc3881a5335cb44012f72ba1e15a8 560b4af718f67902ac4f72bf08dc79a6 e283e3825d66a985b87697d3904b168b c581942f40cbb60819ba010ddb4974fe 9b687f9cff46d43d89c2da356f872ebc b812c2df636aa0218b96ae1a0a8b84ec 4a11239139c5f81762b600da24e0965 ae4a9574248395b671d03b466c72ce41 ecbb6df185a7b260760d31bf9510e4b7 59b8d36b0f96aa5cca649c0959202cf 3b82e575165383903c83f6e156ad107a 8341ff3b44ed2e30473f10e6caaeca56 345570c792fde290d49cdf0198aeb01e d3d788c1fb35227619ba010ddb4974fe 92fb0d6a866fe7aca8607f540cc62ba 75db11c354c6342aad01ec966c80ac91 3a6d6534045b1895e8ed194c80e0b1ef cc60baa1a796f5c14c3a35cee92bb95b 7de379891610f5feaf7dd1bfd65143a9 aebc4c46b3cb7c3bca8607f540cc62ba e9bae38bc2083d0bb4d73e4449062b04 422105cd23178ebf333c61abffc4e1c4 fd67c89ff247f9e7442ed26ceeb35a60 f04fbc2423b13da170832200321e72bc 37fbd275a734ec1b66cf1b4a8fc3914e 8ff8f3c845e7ae8443afdb9c81ff2967 975c00ab85218a05430355e13bc86b4e 19ff8fce1658f864ca8607f540cc62ba a0d63ee7fd87f93619ba010ddb4974fe 8f40518bd30467151e5ae32cb9e3711f ed738ba28cd73714bb0f4bdf8821663a 6d93492543d1087eb87697d3904b168b 6aeae52e38f892a7e0091ae06332b2d5 576edc1da4e3fb47b627754c4259e985 f95d8e86feb79b17cbebff57eecf0a64 3cab1ffcff8b84cbcad035c2ab458 2e389edb9a3c0496e1c255da0d1c1826 8d5c3d38de9c3685f2e77d54f4da142 f26ea1a00455f44fb88e2a19106395c2 c5d748c352d8eeeb3d4e343a1ac21b93 91d3479f5da120a9b4d73e4449062b04 8b61ba80d9e487deca8607f540cc62ba 4a552066ae1da546cc34b900bb2492e e00b89bc338348caa42c49797afd1f5c 29fd29045703ff18b4a8b7176ed97248 d13d131a649c5df38b96ae1a0a8b84ec 4761e30dcb30471cf7d5cc24ec79e682 6ea21a2265075beb9a2f7b9a6f4f875f fff513f407e00e85a9ced22d91ad7027 618b433a97bc23acb1f09c4591ed2db9 e954dc13308e6756308fc4195afc19d3 9321ab235b82ca268c9bdb0f364cdad adeb5d68e8d65cc419ba010ddb4974fe 329987191cce68bfe64acd170567d820 5a1d4af1f417d28566cf1b4a8fc3914e 52764ef0877372245ddb9958cad651ae f110a2ce31dee1b3c16ef5c633c71b56 eb658ff31f0becea1d0f8853f6d023e3 74cbf170c5f2fb587d9c9c8a8ba32919 81e6b629264dad5daf2c6c19cc41708a 9d06f4ff9f1e7932941d71475449eb25 f1295a30fd857249224c86fc0bbbbedc dd9c0622e873de43c752b66cc923fdb 4374a3b4b98e247b398db3ebdf468ed7 ebd991666f177f8f575bf8a4b14be4f4 ce339f515469303979e13964f05c24f9 c9a6dcf87d1f15bca8607f540cc62ba 3fb7ceab42d7b17219ba010ddb4974fe e5610bbacaf098508b96ae1a0a8b84ec 32e7224d196e5866bd564bd76cf3cbec d75a4d4d25863f5062747c704d78d4f8 e16f9cc7dedcacdb9b0435532743fd43 9818f0b88fed05b24b0a1bcf2fb497ec 310f0957ae1436d88025a4ffa6c0c22b ff7c22a964a5a54e3bb4b8f3758b3c41 97bc5fffde64178f43afdb9c81ff2967 32edb6ba5788dc12d8ff6111270336a9 b0b164107a27986961f6e1cef6b8e434 36a5bd4ca6a0b191532d23702363f9a5 7442ad61d59fac8c7372dc0a2f1067b1 916950e40ca7aabc8b96ae1a0a8b84ec 384e72f69e6f24404cb288947cda4a2c d59d75f52ac9b241ae0d772a1c85134a fb402a36e91ab1b44e7761521d3c6953 49917fb82beca4beca8607f540cc62ba 4d6ec762d1583ded46555ee25941a22e ff554f038a338ef322031be9b666aa96 3265b621ca222d29d00d52e62bf14ee9 1354e0acd354a3ddb6670e1d7042072b 820ba20e5da8325f19ba010ddb4974fe d5f01e2aa54bbf28ca8607f540cc62ba 64cb683afd5e9e559db1d21b460eacef 3ab1e94b6c3a1730c56cc5a87f567365 d8452d4fe51f2bab3554ccf8c30febe7 cfb555a4d82a600aca8607f540cc62ba 4f9b12d07dce21ac9d93a50cb0355558 cd6a3584c3da1db4abcfca680e6d54ff ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02691156_train.lst ================================================ a98038807a61926abce962d6c4b37336 25ae9c70ded5640ac2a9d7232db0ed61 89b6f678789287a3d3128304aa2279ec 36d2cda57906072c1e08b6601b6fd998 ca91becbfaf5a094bba1aa1c98256342 e8b4bac72559c097e8f5e45871fbc77c ee562cc82d73ab212135f3a0e614f115 3fb3fa76a2e67bae71d03b466c72ce41 c6bcec892954942a83855ba2afe73b0b 9550774ad1c19b24a5a118bd15e6e34f 5763ed16cc79ce63dc0a4f5bab755bb6 e380f6fa720e1c15560a4691498bd2fc 351e24a503c49840cc0472b5df09bf08 ccf4e9c074c3395c26360e1e29a956c7 f1b407dd7f610bb1a266a0298675ed53 7b3bd63ff099f5b062b600da24e0965 a5639c976e677ce6e719b5362fe06bbb 73f6ccf1468de18d381fd507da445af6 b71bd3c61315abf9ad8a06dbee1d115 8c2f2570e178823562b600da24e0965 22831bc32bd744d3f06dea205edf9704 b1f40266ad9da400d90bfc986bc4c94d 9a3b5fa35243504124f575085333a65b 8d847b813fa70470bc0909d98a1ff2b4 98988dc4e5c62dfbc0909d98a1ff2b4 88883a7ad39baf47bd46d022fd7d80aa 4ea714b785e24f0d9a6e43b878d5b335 c64e43e18b01fb5eca8607f540cc62ba b6fb57668129c4cd4c11ffe5517eef5a c85a76404b85d94e62b600da24e0965 5b86cf0b988987c9fca1f1143bb6bc17 e777a6a46ae240a7bd46d022fd7d80aa 36dd57178402cdf2afd477f714c68df9 fc9f6bc1ba1cb7c1c3fe7930fce05ded ca6e0a1d5cfee53a8cbc4ababb61ad1 ade0163327c8c7f5847335355bf4459e 1f08b579e153b2de313f9af5275b7c70 da5fda29d2415fb09d92b4de623f5639 c9ba5885f6ffc835a8cba409c4409ba9 ff2f975a23b78bc78caa71b1fbf7fb98 4ee6a3030995dcd4bc0909d98a1ff2b4 5d925e4748bb4ad155050237670e0ad2 895e49f92ff5003032611f2edb791b8c fc5ca618ae253663d13ef00338ba8c52 6fdf55a7ca1e64ff7d7b38cb4a2969ae 4d885cb269ae88ccbc40166c69b12cc6 24bbc1f5225969fb90b1d6deb98feec6 bdcc8077771968d67c54439d6177032 71bb720c33da689090b1d6deb98feec6 91e3ab3e12059b4a9d92b4de623f5639 7855e8ac604ae162bbf3143b1cb6076a 2d43c1430df8194ace5721ccacba16 9259906152f9d885a8cba409c4409ba9 a2f0c1bdfe1475bdc1a897657d9a1924 b90571e8736a296c549b705aa127253d 70ae0521d5ca428d7b3d3cfb30f2513e aa0b34d9bc5b77e0d86ebdaa02a63c4b 96291ea39a5c6eda203936772104a82d 36ce6d61721805abbf3143b1cb6076a 4ee420a617a2bb40bd4fd4a5b9107dc4 498ea154c08d51abc863ab010b80d9ed b237bc484545cb46d8f63fb451ae8aba d2815b419e61dbb0b87697d3904b168b 7b9bb6e42aa2191b58a458f7911d7423 a69edb40dbc1fc6c66cf1b4a8fc3914e 2705c3edd082f0987f1f82f6fc8747b8 a153353168cd47869a6e43b878d5b335 1c4b8662938adf41da2b0f839aba40f9 827c877ebc70fd01faaf13445ab19dca 96600318559071d48caa71b1fbf7fb98 e00d7bd590ac129bbc0909d98a1ff2b4 6e65a6f2b81fdea2282e76ed8cc73a69 e0a8ae255ed47518a847e990b54bf80c 7bd43965f17c25377209009cfb89d4bd 66cd9502b63e8a97bbf3143b1cb6076a b4dbf6f6b0cc8ec5ce19d55bc5e6a406 a6b9d686a7b977035bae66e2c509821b 256626ea73837e032625b83fa7422e2b f3cc7d5c4089b842df6e254b0245ddcb 463834c3aa682c281883411175051361 dba3ab64bab4ed3ed13ef00338ba8c52 d221f607d5b5c553faac198e88c3dbb7 a4462b31326da9493ea703383c665f30 2c89cc6eb008eaf5ca8607f540cc62ba cfd42bf49322e79d8deb28944f3f72ef 62bd247f0e8081a171d03b466c72ce41 89b42bde2332e5c067c5e3041553656b d28a3cd771b2bf1e71d03b466c72ce41 6fd578ff0ad4f6e8203936772104a82d d2e99eeecebf0c77bd46d022fd7d80aa c18b1ed6e935b11bca8607f540cc62ba 76b492b77a03882d431e5b4ad135fb8 9dbc0aba1311e7b8663e90eaf6b4ca52 151550551758af098b96ae1a0a8b84ec 24968851e483feb237678474be485ca 471f072ea9d51f639d92b4de623f5639 98dd57d068c8de064c3a35cee92bb95b 69121d9daf6d569fb96212c8f6cd06e 56c79a936f57ef3f7b164268a44f7712 b2c69aa6c8d78b59f119374ee5d5f944 816f1a18692bca2abc0909d98a1ff2b4 4fd9c86e43a1dea17209009cfb89d4bd cc23974115a8de15d13ef00338ba8c52 69a7b9b7265a70f1a9b2becd26dc2fc1 a1784ead19fb7645b6dd6448cb8a70ee e2116e0b34db656dfca1f1143bb6bc17 2c83e01a7a4423c74d4cb1c2a5e48b7a 9e57a7d6a7f488dfbd46d022fd7d80aa eb60d49fd5cdb809e6a2524c335c48f9 d24e6c81b5261fe5ca2bd098b9203af bbd1b96d77b8dc08b96212c8f6cd06e bb7c6c397143f72fe0cfe7507a46f0c 366b149545ba4df546ed10e8f7fe336e 48a36df204cb05dde7fc8cd567dee096 73934196c92ce472f4a5531fe6556d72 f11d14402a759a1465f50257ecdfa5c7 ed95d9219432bbdbbf3143b1cb6076a d7e8b636d4a7dab67e697b0700f10b81 6ba642ca477a73db4c3a35cee92bb95b 54c13e95f07492a9e10e757961deca98 5274742871cef1aca8cba409c4409ba9 b522108c4c08430a71d03b466c72ce41 34c669182c8c9a2623fc69eefd95e6d3 3e0e8b37400e290125b57604d8b9519f 1d269dbde96f067966cf1b4a8fc3914e fc6decc887f6d8a0bbf3143b1cb6076a 5ad5fbe84d7d8ef790b1d6deb98feec6 ebedcd06f1770cd4bbf3143b1cb6076a 875c4b43e35b6803a85b9ef94e886600 c0edd36fbf8d63fa35fc197bbabcd5bd 4385e4300e72e49e90b1d6deb98feec6 d34eba7c2ce4db53adecb6fc00604132 803fd1bf9b85da0aa79201593c1eb4b0 b738666a0403a7fa6818e4a1f2613507 4a9d28a5f272853fbbf3143b1cb6076a e4ac77fdf28116232fa725d7a62a02a 52712e1c07ea494419ba010ddb4974fe 31b75f20c64b03ff6b7bd17e458d0dcb 26048b00f9227a9f8699933784576e73 1c27d282735f81211063b9885ddcbb1 43ddfbedbd6721fa828204947d78b9af 5c7ef3d5de5ca9a1ca8607f540cc62ba 5bd21df38ef89239ba4ae55719e5e195 afa65aa66f7ca040873ec74c119307b9 bf93f4dc64eff22b4d4cb1c2a5e48b7a 5bdef9dfed852e26195688f8ce8acdb7 a487d7527a0d0c2076b0a025d05432d d1df81e184c71e0f26360e1e29a956c7 cdccbb56939fcdafa266a0298675ed53 e841e17e3256acf38699933784576e73 a3bafea9edc457463da2ae40e7681e7e 3e5aa51d27e294a835fc197bbabcd5bd 1667ab313638fb366cf1b4a8fc3914e dbee200cebd464779b0ed23034a67f7f fd528602cbde6f11bbf3143b1cb6076a c12362906beecc796059aeb39e538eb2 cfc075c635df8a7a94b9c9a92aa36f8c e413c15ded9ba57a23fc69eefd95e6d3 d21c556af88582754c3a35cee92bb95b a36d00e2f7414043f2b0736dd4d8afe0 4e67529b0ca7bd4fb3f2b01de37c0b29 9873e280d91107fe9a55c6af6f4b2bb3 9d7e431ebd35cdc2bd46d022fd7d80aa 201e40e86acd7d34f4c1adce71073351 b9e6298004d7d422bd46d022fd7d80aa dc8d9003cde43b66c8727b27ee96a4b7 4209abb3ec319f85e5118a089c2a99af 6db040a8d5c1d5c14d210d9468aedaf2 a2de53a5de7ea01dd01b5600c06c528d 7f2d03635180db2137678474be485ca 596cddf6fbdc9d6b96212c8f6cd06e b58058567bfe6976b30e3fbc7205ab54 c1aa42594ad2d80e4c3a35cee92bb95b 67d9607d84fb51435fc197bbabcd5bd 91f8e08144218e2d23fc69eefd95e6d3 c27b08dad98f802488a89a28f04ce622 e523ba4e79a48d31bd46d022fd7d80aa 41abfb4a9e8071754a40844f179aeca9 9f7d4125c4b705208b96ae1a0a8b84ec 98b163efbbdf20c898dc7d57268f30d4 bd2a375de8c7374195adb59fcbb6489e 3f6c0034bb278de4f446f92b52bbd82a e005d8b297850d483a99ba0078ef7bd1 48e47a6e592cf635590b4d838791a67a df990580230f0254d21176457f0be3a 117861b9ebca4f17c69cb28fb4b4d257 24db19ddb06fcd3f9a6e43b878d5b335 9fe677b21938f6bfcc14f1e6f4f4f49b 8b65813c6ab0c972ca2bd098b9203af 5466493424ca47bbfca1f1143bb6bc17 91f3ccba290da90671d03b466c72ce41 124a579e0635b8eace19d55bc5e6a406 b95510fb88096a208fc2d09ac4aa4e78 f186d2998485c6ed5e9e2656aff7dd5b b82731071bd39b66e4c15ad8a2edd2e 7cdbe41e6701c661bc0909d98a1ff2b4 d068bfa97f8407e423fc69eefd95e6d3 f0065f4f9e20d604521546825315c695 b3c7044fcd6f15c24b0a1bcf2fb497ec 9baf5b31d70e0d05e98d814cc4d9c5e3 58d23c8bf0902cc590b1d6deb98feec6 c1d8614b0e5e3f3bf5a498db2fc1d347 c12d132ade345228d75cdfed9b20c6e7 1e9acb74ad09ba97192ddbe75f0b85fe 448b45ac858784e9b020e22bd5fe2e73 c4ed630f9c0f728090b1d6deb98feec6 299ec43108d7109113ae47e860a2333a 9e617d72fabc718b90b1d6deb98feec6 1fc2625479e798b11944f01d3ab2091b 2ce94527ad7f57333bfdfb6cb363d727 f0bd0660d9cec23cf2b0736dd4d8afe0 ad9059778f3e34ed4c3a35cee92bb95b b151573056013eaf71d03b466c72ce41 de543fb92592aa48236a74f773a58aa b788ca6fc544c0aff3f3e17ace8695b 376466b562217c2abc0909d98a1ff2b4 157a81baeb10914566cf1b4a8fc3914e 7e10d8f0457cb48219ba010ddb4974fe bf78d2e27a671fce4d4cb1c2a5e48b7a d84bb293898861ed9b2acbfd8323f804 dbd74d18fa992eee7f1f82f6fc8747b8 b53ea9af10f2a151bc0909d98a1ff2b4 24c2cc372c63603137678474be485ca 52747021197c7eeeb1a0518c224975f 4bae467a3dad502b90b1d6deb98feec6 79784107e5be61a562347b4731688b0f 3e7e119508f0abf935fc197bbabcd5bd f7bf32d3aecd197360c9b6e4c75a092a 8ce12b6b3b451b8ad0671652a4c42f7b d220ffb04a5ff31abd46d022fd7d80aa cf13bbe558f37bab4c3a35cee92bb95b 75916f78e72f90984b70ddbaea6e513 639d85cb4487bb0e3c326782eb2d380e 9b285862ababfc3a68222c7df7dc40f1 cdb17eb7b14c83f225e27d5227712286 8f33d2c0c08befe48caa71b1fbf7fb98 5785c8651893ca6b7209009cfb89d4bd 1e4bb798f236f0b17f1f82f6fc8747b8 e9dcdcd8963ba18f42bc0eea174f82b eac05be6e7f3bfa99a6e43b878d5b335 37cbf91baa58d6577dc01d89d8a05b74 a9e6abca0f6bf69416ee5e3e330ec691 884adbb15fcb934051279f7b42f4d889 dc7a703f94b3b17667c5e3041553656b d5ad529ad399086e4e9a6f7cd468e49d b87185699318f4b635fc197bbabcd5bd 4710274bd87b099f19cd118ab9f114a4 d6cc7ffd165de05e2e2de556c136fbc8 5c8b6d47313dae4fca1f1143bb6bc17 a7d29332d98b7b8340a4a448803b06f7 be11ce096084bd784f95630cc18536e0 617993bd3425d570ca2bd098b9203af ce1d767436d9b289e8ac6b4e1f12f978 dfa5d6ed898152d34210bb5f1b1324bb 7b7ebc856120f97a1944f01d3ab2091b dd5310819d4f16d7b9fc567905a4b292 f40fe7461dc4e3396b7bd17e458d0dcb 4542b5cf23a95691ca8607f540cc62ba 398fc0e717b0cd524c3a35cee92bb95b bd22bcf18a9c8163adecb6fc00604132 c9063c31d7b42fa564ed556128c71bda c69c73793f459a2c3d4b1f38e3dfce4b cbc73e8bc866ecacf7f795409cb230c2 c7e74cb0f2dcef904abea106683105f 4cb1c851d4333d1c4c3a35cee92bb95b 6ea7eb1ef18eabcf8699933784576e73 deefcd290f7f2f1a79201593c1eb4b0 2988a7a566ea79797209009cfb89d4bd dfed744828fceb4d28cd0e56fe42c08 7d19ed245331582c3fe7930fce05ded 362af793b1d0084423fc69eefd95e6d3 e9f39176973edd33a8cba409c4409ba9 71ddef945e2ae8de7d64cad20089f027 2bdf8800514abd05a7d2c4e7aae73d33 d51bd83c27fc3167ba4ae55719e5e195 fb2204e98090448ebbf3143b1cb6076a 823de294a08784fc879e4d613e8d4e33 3c1e298b4222f4d15d3bbd70fc7759b7 7bd76c17b7194d571aa9d8d95b6740cc a053f49d808b7b36c8db97d9bc169245 d64caea6c332861bcc14f1e6f4f4f49b 4eced94670d10b35e856faf938562bd0 a1c3287d5e847f866b7bd17e458d0dcb 388c9b9f1cf24ff84e61a0c2eaaabe87 5d6334ae2a0dbf70bd46d022fd7d80aa 10e4331c34d610dacc14f1e6f4f4f49b 92cf58c641a4e5af56a793e48de27b07 3391c664149308cb4f95630cc18536e0 20aec82ef5f61b0bbd46d022fd7d80aa 62a72a5afc84ed54faa7ec7d870d2e09 acb99bd964b1b23ad13ef00338ba8c52 535dad1777edb67bbc0909d98a1ff2b4 707cc578bfec0f671aa9d8d95b6740cc cccf4d96e0e3d728c93b40751084c22 fc7c3ccb57f65337209009cfb89d4bd a51d836a9349b2a1f42bc0eea174f82b 66493aa4ae7dbe40b6b87e72ead132ed 18f5265d553d72fb6b7bd17e458d0dcb 7d89d64afbb5b24056dd1ba442ba87e2 4f9a01d66d1de632f810506e9ae2dcc2 c80e8a74a31c6156bac66f0bb664359f 3d6b9ea0f212e93f26360e1e29a956c7 78551e5fc01df70f77fd7318510b8627 2a05d684eeb9c1cfae2ca9bb680dd18b 62fa636e217a3db25a70c4e5328e0b9f b2235fbc13fc2ae0bbf3143b1cb6076a d281db2c631c0170991ade27bbcf967d 54f0d46b866c1f714d4cb1c2a5e48b7a d3580448933d00fd90b1d6deb98feec6 8504e370736b26604d210d9468aedaf2 1930a979c7a9a2d662b600da24e0965 de776175878f17d1f4c1adce71073351 cf93f33b52900c64bbf3143b1cb6076a 1c673748703c99207f1f82f6fc8747b8 cb5fe2eaa25b2518afd477f714c68df9 ffccda82ecc0d0f71740529c616cd4c7 a1ca5014ee1048081e06124bec25a766 d919249737749c36417568af9ae9577f 642e481ed56874eb19ba010ddb4974fe 420f92d84c88244b9a6e43b878d5b335 cb8fb401a278fc36bbf3143b1cb6076a 2d4c147d4d1cc40c582bf3113c3974ef 63dda61ab3ccc4304a3b534252984039 2103dcb213151791acf77e718d93f3e1 b1696ffd98c753ccea88a0a7eb1222bb 14d6bbabad3ad00dbbf3143b1cb6076a 45a4b43dc4c77dea6818e4a1f2613507 14bf5197d60d733f2a3ecc4a9713cabb 8682729ee0259ceaca8607f540cc62ba 82cd0676627c20b0879eac31511e27a8 ab0ab979406ed687a8e091cb544689d5 1385305478499e6c1e06124bec25a766 a99ffd1b1fd121bcf2b0736dd4d8afe0 eb43db95d804f40d66cf1b4a8fc3914e d9f90f110ce30fbbadecb6fc00604132 77ab8bb69221b13bbc0909d98a1ff2b4 251313501093a024599faef54fd54e83 1896f1f8724aff33b7ea0a7ab024f81e ddf0e3053cb1ca8f5e9e2656aff7dd5b f2f779b4f12ea6d67209009cfb89d4bd fad346b02d91348bbbf3143b1cb6076a 3dc5331ce579b2d0d8ff6111270336a9 68ff153952368948b4eba5f9f157d8c8 d07277bc3c95a365bd46d022fd7d80aa c7b1ae292fb3d011511e2f9385a386db 446327ea5e2e50aebbf3143b1cb6076a a50b4b0ac82a67d0bbb9a486df472172 12b25b8de7aa37a0bd46d022fd7d80aa deb9d02cd1eda25270c4138179d9ed97 8d5ecf095e56cf8cca8607f540cc62ba 7c67e8cce3f3eb3c89ba278a735b3c5a e0bb0ddf67462f4a8b686f76be476fe0 999539f6290b7072ca2bd098b9203af d639c8d2f55982558b96ae1a0a8b84ec 64211a5d22e8ffad7209009cfb89d4bd d6b4ad58a49bb80cd13ef00338ba8c52 ebda573deda43034f2b0736dd4d8afe0 8fc553e3a88b7ad54e461d462a3ccbc4 6693d4bd6edce2a7fd3f94e9ae089f96 131db4a650873babad3ab188d086d4db 45985e48353c65cfd14a90435b48593 110f6dbf0e6216e9f9a63e9a8c332e52 2c9d5fed0ebb4a544c3a35cee92bb95b 47bf091a7c919d1c90b1d6deb98feec6 b63f7eb03f91f8a7de04805f7d685d 5f8fa607106199e7bd46d022fd7d80aa 41d4250764619ff5bbf3143b1cb6076a f0b22be59432dc8bca8607f540cc62ba 7bb1d2f8be9593b3cc14f1e6f4f4f49b a6693555a4c0bd47434e905131c8d6c6 154146362c18b3c447fdda991f503a6b 688f4e273beef132f0daafcf2996daaa 3cdb3a166a13e44dafd477f714c68df9 e127b1f5ead603f9a5a118bd15e6e34f 329a018e131ece70f23c3116d040903f 4542d34685168ecf7a571401e6605fc2 8e47730a471abb7f43afdb9c81ff2967 b0fb094d1f0fc2a6766c6046535346e7 c8143c3384690147d13ef00338ba8c52 20bf5bba045e5a53fdd77aff53f4b7ba 7e52ac52a2eb74ac26360e1e29a956c7 c1e6d2235406d250e9ca68dea406967d e501a0327ab3731d0f859db45b95a2d d3dcf83f03c7ad2bbc0909d98a1ff2b4 9a3cb94af2f2a5b826360e1e29a956c7 f4b734236ec678d269e10d525d6df27 2495267afeb60584c3a35cee92bb95b dd465efdee6a57e966cf1b4a8fc3914e a9545fac33430c6062347b4731688b0f f6f2905883c49d179e0d0faf84afc607 45c4867cd4554e7cc863ab010b80d9ed 47821cd2309d5a3990b1d6deb98feec6 7ae99c0cc14cdd97408827f71d73e45a c8ea73dddcd80d901b1cc145b0144991 4100df683795dfa1f95dfd5eb5f06d19 a8471560d4dd5a31ebc34aaab30ca460 ae8073beb28788809f576466d21c96ff 37d2da0de056f5045bb2b764fed1d166 4a15b999378e1831dee83316225be271 7934ca36e240e91d5e9e2656aff7dd5b b41f477cd3c6843094b9c9a92aa36f8c b19927db257219bb26360e1e29a956c7 78a94b8bd2971595ca8607f540cc62ba 6f0ad1fb7917fd9b50577cf04f3bf74a c5e04f903e3472c31883411175051361 5dbe5dd200fc214951971f8370d9050 1580c09f49bb438a7209009cfb89d4bd 3572e3fa25911295922e63c830b776de 6c87f8378066f8f171d03b466c72ce41 ac76572656c1e36ea79176d3c96ca1af ab399dca637174fb9a4a28ef635593ce 6705821a6b32fb3eca8607f540cc62ba da58b3e055132c9f6afab9f956f15ea 880715a3ef69f47e62b600da24e0965 a6aa2281ebfd822e9b2acbfd8323f804 863742f8e07f52ba4c3a35cee92bb95b fe0eb72a9fb21dd62b600da24e0965 83cb2b58d88c0ae3f4fc64fb3aaf41d7 3881241b81d379644d4cb1c2a5e48b7a 304c2daaf96c79138cdbee8c4dbbdd7c 513c955bb46d739683651cbc8e49e4f 33fff5b8d113cca41b950a59358e57bd baa972f48cde1dc290baeef8ba5b93e5 ce0c461237a21cefdb22b838c125a50b dd9e42969d34463aca8607f540cc62ba ffc1b82bec23a50995b8d6bdd18d56e8 81b67bd14fbcacefd67fc01cbf5eb7c4 29f514bdcf72e779bbf3143b1cb6076a 8d54e30dea0e2508bbf3143b1cb6076a e899c19c87245ac94c3a35cee92bb95b e161df613fc808b0d7ec54df5db5828c afc2efb530e899634d4cb1c2a5e48b7a b55748e796006e18b3f627c3cfda6efb e2612c366bd11e305e9e2656aff7dd5b d22521d217d89f8d5b1bb801ea1e2db7 758b67f9af18602715aa5b227c027ee0 19604020a86ab1790b1d6deb98feec6 95a79d9ea571592bc3e5025cb598f546 2117484d4ad547ae719b5362fe06bbb cf96229978efbb488b96ae1a0a8b84ec 39ce355324ab4bc8b96ae1a0a8b84ec dbab9feed7e936cfa87372b03d6dc78b ac0234f2b9f195e3cc1281a5f11b5a5b 66a32714d2344d1bf52a658ce0ec2c1 735466165c04f71f62b600da24e0965 58e967e02a183d49bc0909d98a1ff2b4 2e9c1c3d866c4b6ce2c6d8aa34a5d35b 6c8275f09052bf66ca8607f540cc62ba d39075b8eb890a898deb28944f3f72ef 94dffe91af2c8834fca1f1143bb6bc17 3aa98ec8f8a1c1f44d210d9468aedaf2 8da50272a54dee98d972c9dd75ed77d4 f59470cae839ba0e9b2acbfd8323f804 8af46946b9b2b3aacf0820a704ed425d 6ad44d7abe7492b7d89ea85a4a66c0f9 e9c78deefc2950be62b600da24e0965 59209cb5ba7a34633e1e5609a53c0477 e08402fb1e5953a2a93f0f952e72609 3a72adcf14ccec9965f50257ecdfa5c7 273e90f5c26654ea8b96ae1a0a8b84ec 6110cd7e771f0ab3a847e990b54bf80c 912219c657177b17774a720fca15e35b 1066b65c30d153e04c3a35cee92bb95b 79e924263f903feb35fc197bbabcd5bd 68b5cf1b10331dfa77c1f99ed297e3ca ea6ccb2dfb61484caaa29616be3e223b 74797de431f83991bc0909d98a1ff2b4 112ca5420188df4bd90bfc986bc4c94d b273c9007d1e364fca8607f540cc62ba 9e8f908bc6c822ae3f6fe63822cb343c ca88882d06ee5468c34c40f49da8010e 9705e3c2d21106ced7f23cd024f22c12 6cf5d850b55bc9f990b1d6deb98feec6 f04b62deb7737c86d37636af9c7bcc34 e712867dc4c1a4a6d016d0153a25a372 bfa52c24ed71614f48a7b7802dc31138 5011e352793d063f26360e1e29a956c7 94d3a666d2dbc4385ff3feb917a6004b 5e7952b2d1a495f24c3a35cee92bb95b 73bef2b9747edffb8b96ae1a0a8b84ec c330992ccc6154d82b6925c3587009fe 9d3eb87e69fba56890b1d6deb98feec6 a75977cd75acf0f05ff3feb917a6004b d1cdd239dcbfd018bbf3143b1cb6076a 95fe3a31e4c084a128132d87f74ffe13 ed73e946a138f3cfbc0909d98a1ff2b4 f9d30b24d9651ee476c772fd813166d b4e9ebb75081f146f6babb7d9ead7011 f57caba2eed21f2998459325335edae9 3a5aa99b9e9e37a6bbf3143b1cb6076a 63c78352b218c01a995425f067333fd3 9483e1b0e4222cb4f2b0736dd4d8afe0 c2f3e3a227aee9ecca8607f540cc62ba 22944fabf8a9763f28132d87f74ffe13 7ef375680d89c711c8db97d9bc169245 fcc94cf74fb886b7bbf3143b1cb6076a 5c63ad3688c623b1a787d03c28977672 df9d8ab5ab6f50ed4d4cb1c2a5e48b7a 152d35bcceab5592eb1a0518c224975f 865f434c71d41326c9d5795160525060 de3a0bb3f0ca87a5674fc9582804ad0a 94351a82955a6136c3f40f6a57084ffb a94057f15ca19a33fd98271adcb6e31a 2ab4a5c3ca32ba9a4d4cb1c2a5e48b7a 559f9a545b9b98a1d433b2698458193 9634ed6dc8ecae0026360e1e29a956c7 48c4b6bde824e987a8cba409c4409ba9 6f96857e279a38793525b6164e3f382b 4ae3924f14d2c0084c3a35cee92bb95b 77410e47feee769deb1a0518c224975f 3029b9f2174da4b0bbf3143b1cb6076a dae59259ed2a2951d13ef00338ba8c52 c476ac72594e39ffbd46d022fd7d80aa 6a861b7cf2552818181edaa32d7673d8 404714cf775f5ceed32761b337f8b72a ed709305e61acf6a9b017c80f62649a0 d4aec2680be68c813a116bc3efac4e3b e5af05179ffeb8fcbd46d022fd7d80aa 26950e05ed379413bbf3143b1cb6076a 1d1244abfefc781f35fc197bbabcd5bd ae857883c77d156b71d03b466c72ce41 85c9fba37bb685d7ca8607f540cc62ba e49d1e1d176ec1dfbc0909d98a1ff2b4 6d6b6777cf1c15106540a0ff73700634 58fadbeceb7e239724f575085333a65b 7e1646c0a04dc68f6ea66e6959004764 90489d6f74296c88daf24b8b932d0212 4c07126c6ecf5436b7bd17e458d0dcb b97900a7f44bd7dcca8607f540cc62ba 72a74e13c2424c19f2b0736dd4d8afe0 fac9c4f0d5f239e4f2b0736dd4d8afe0 b7b657d7db3c3b8cd13ef00338ba8c52 a7751857e571d6bd3c326782eb2d380e 2b1a867569f9f61a54eefcdc602d4520 7462d130f9c7abcd5e9e2656aff7dd5b 2a7c34d4f5aaea962b600da24e0965 76a86e664e302f32fca1f1143bb6bc17 788cd4e599b0ca1819ba010ddb4974fe 7f4ceb12e48be00ea4642ec4b6f68a 53d0eca7c8ab5e644c3a35cee92bb95b 1f96a33a3a461544ca8607f540cc62ba b19771099e1d3cd4d86ebdaa02a63c4b c953df8a3f917663a9b2becd26dc2fc1 dea43c46fdbe84511adbb4c4e06ad649 317ac4d5ff597c9ae719b5362fe06bbb 8baeb2c664b0bdf4ca8607f540cc62ba c489f0cb96399da63c326782eb2d380e 642b46912529c6e57f1f82f6fc8747b8 49131e925ef3349566cf1b4a8fc3914e 892ae1180c58b3e671d03b466c72ce41 640c9b76fd75aa94d13ef00338ba8c52 e50f001069380884b87697d3904b168b d390f0246fd43cc8bd46d022fd7d80aa 21a1049ee5b7f531bc0909d98a1ff2b4 5515a62182afd357f2b0736dd4d8afe0 7274be512ba47d837678474be485ca e761cf88524cf8f24c3a35cee92bb95b fb0f2907b977e7cb67c5e3041553656b 1e358e70c047687a1a8831797284b67 65166f18d4ee36a61cac9affde84fd21 accb9ee4edf6af6ce4080dcedcbec993 296c3ee559f87c9354eefcdc602d4520 444a58c4c6bfcd6c7a571401e6605fc2 9e30fc9f2d9ae56e3ec83bd6bef75c92 55ce4fc0b3df0234bbf3143b1cb6076a c0c32558decf271df3ad4b0977199f23 bf5d59729b0c0e336cec6e2299cb4a76 65b3e612c00a65a6bc0909d98a1ff2b4 84e45a6f079cfb9526360e1e29a956c7 5f46b24028db58f490baeef8ba5b93e5 ca8e8a54b54b41eceb1a0518c224975f 9bfd7f4ecdd8efd8bd46d022fd7d80aa 2502fffc569075b152486b4487d562c1 1c87b854cceb778615aa5b227c027ee0 ba1358d41ef026fbb87697d3904b168b 8fe1c92c1c9ff33fbc0909d98a1ff2b4 c5d0dd7a7b44b079a76ffc04f04676cb 8200621d7b5cb84a6b7bd17e458d0dcb 2c3df6a4d0ddc9a69725372054c2f091 211cac5d62271583b85f0298cf43349d 45145c5e7924dca8e991cc67fb9c11f 16715d886ecf0a97ce2cec85ea6ae00d 50e793fe39e527b245f31985fc702c6e bd91c1eca592312048464d2edba1bcf0 d63bd140efa537dcf73e5bc170b7e2be a69c25f93540eaed6370c33da8a7988f fdb87fe46a2dd5ae148cecac5cfe1090 99b2ee98a16b3c0b1338b1079208569a 2026699e25ba56c5fd6b49391fda17 ad98f06fa29c52eb23db3adbb2f1dce b1deb3638098e9c92a4947824596dce3 2af93e42ceca0ff7efe7c6556ea140b4 e52f809111bb75692b5a1d128057b6a4 a051219f3f444fadc5e2bf7b5a5f1c56 e9bbeedf2681b8ad154c6bbaeb7d331f 7279a912e89a6f00adcbeb54f3d014e9 8ba22e93df58242b61c0a7e9e23d6288 de72864008c4db8bdeadc9ca0263db5a 206a4bec609b727566cf1b4a8fc3914e 577ef32f6c313a5e4ca16f43c2716caf 900771de03746670ca8607f540cc62ba 3caf95d83fcccdcc28662498a294724 f5a8cae96024e709c1ccec171a275967 bf77987a13fc34b5b6c7da997b0e5e3 fe00bf68a2cd32b6dd455eb19d4d269e 5a6eb0f2a316f23666cf1b4a8fc3914e e52f08852429e6117dc01d89d8a05b74 989da7f7bce36747c6c291015ab44100 2997fa1441eb7bb735fc197bbabcd5bd f21a375ca5fd26994fb6540b6bb872e9 aca6b424287392cf3438e17bc657daf1 37f251fbd5e094348139630c61d12904 707da8b9f37fd990bde4f466a45d975a d3856a35d1fb8536d8e727806889c9b0 cd9062c0065ee3a4727e0d1e650e3b69 6af4383123972f2262b600da24e0965 8df55e58da6c297b4c3a35cee92bb95b 5f11d3dd6ccacf92de7a468bfa758b34 86012cd0bb6727e9e80771be8faac585 d532217c7fabf1d44e8b48a4c01e36f8 e18b6350437cfe0d727249e8d9a90100 bf448fcf33a5349619ba010ddb4974fe fd6210721415e4bb51a9048f9848535d 2bdb44eece3409a5a18e0889038e4fb6 63a2144cfae402149b30aa09067b7eef 48fed12884533a5fe48f6bbab67fa514 bc764c59e4bf4e9f508cfa5a106b05fe a3bcd8767d2827626f5b49394e7f4cdb 790e9d3a9e037d3efa86938af3fa9595 b4a420a55d3db8aca89fa467f217f46 1203825bf97bc3524722e1824a086fad 67e8571eceec1ea44c3a35cee92bb95b bf57639c6735626282b3aeca5b3e7150 29120728132e5dce42a2048a31b7df8c 78c3a29d1153e68e5fa2a5df3ce5bc40 4cbca5f95cd6cbc6e59552931a2cfd3c 2f379576475cfba24c3a35cee92bb95b e88a8692a22d548e1ec438f11f5ea1c3 5df7124460d8cd14fd17e1e0553418c6 670d455bf1bdaafdf577ff4de1ac394c 911e9f0246b26b309f789b924eaffb62 641af2da275049936cc53f9d72e7fec3 8615ac14d65e76efbde09007ce74853c 5e34c340059f5b4b1c97b7d78f1a34d4 22c11b2bab2cf93fc1ccec171a275967 e08574959d2cb7c8f6cabb305f7d6d18 afcb946d2d36a77abc0909d98a1ff2b4 c398f78fb73ccf29751c7a6f15617f4 b458bf7d57d211ee43bc2645d97a220e 72aedca98ea4429c8ed4db287040dac1 f2f6684e930651df3dffb45955223d25 19e2864af4f6de438050e8e370967931 d15e3519a61c5bad86442c51e82d8d69 ff6f81eba664481126360e1e29a956c7 c2d5bd1215248f9c8b6c29bda2bc905a 3a92789dfc5186dcfdbac8c3ccfc63c 93e0290ab5eede3a883f7527225435dc 1c16739bbf3fa7c44276157eea5f8676 5b048655453b37467584cbfee85fb982 d708c311bcd60e61c9ac656f0c2edc4b e521828113e1e0c45e28caa3b26a73fd 945b33ed9d6844591596c26b5af806fe 28add8a00a7bcb7318d508b491dafd46 9d65814e1b252fb01636caafca838500 f7298a13f6d1644472a4466eb772f128 fbc7afa847c30a4c183bb3a05fac486f f144e93fe2a11c1f4c3a35cee92bb95b dd9ece07d4bc696c2bafe808edd44356 fd3a9743e16d35e51fc210a07910eb2 41c7470ce9ecb74b6f9423fcc87803f2 6feb039c710277aabd10f71f04d299c 91ad0ff431597651767529f9ae81ac0f 6021cb206f3db880c57b4651eeb679eb d3ecaf6bb9395131d563154e026c3490 7f1eaf37fb4e24de82cea33798fcd6b6 ed2aaca045fb1714cd4229f38ad0d015 d59cd5f2012a1ca1aae46a5cc955c766 b23e79036b214fd4ca27bba175814d1 f5bb02c0df184488e0b6c670e0e97766 6d3965fef2c63d37b3a197029fcc978f f2fda88e9688fd81d972c9dd75ed77d4 fc5d7c28e254a0d84c3a35cee92bb95b 71e9496397481233a8cba409c4409ba9 c00b97813a9cbd72ec85c5551a78ef2b ccca0685aa63308ed54e5c2e672a56dc d80afa36aeb72c552b5147716975ed8a 7568400ccaa12eb9d972c9dd75ed77d4 ccfe789ebc77be87e71a4f02883f26bc 315f523d0a924fb7ef70df8610b582b2 b65ddb8f80d8fb562e38f6d9568202c7 9a007813a38638c379a04281ec8c6618 32a547e29d66132110b2a26d47842033 72c28618e3273795f9066cd40fcf015 106dfe858cb8fbc2afc6b80d80a265ab faa361f642620bb72def37e9c0b35d0e 6ca6c7920c62773073d96deff5ddb8e5 eb85e7d86e2ef861e7cb9c477e2b7be bc2c90ea00831423908b15214255bff9 8f4c92227704fdf11c568754310e5f73 7e75688f4b185d4193a78ffd70737098 875d75a0aef86850b6b87e72ead132ed 2c932237239e4d22181acc12f598af7 85fd79b9fe5948ff62b600da24e0965 7c7fe1664a1f36b8ad6a38fcc21e6e9e e5bb559c00276ad354eba1f1b35fb0c1 4e85ef428689df5cede07437dedab44 a1d2c8b24476c8ee70d98a97e17b4da3 90bd96c05c0208c642d1180c659735fe 6f8e17cf5180fa96a911ef3962f7cae2 72fcc9dfb927311935fc197bbabcd5bd d8719b491412ea0bb1cb87d703a74b6f ff13be97bdfa45f8254dc1d04198881 9fb0988ef701a11388170d426b6605b5 2751a0d9a1effa41f0b8c8d7a19e0d9a cce565137003bb39b2da68ec42b2eaf6 4f3f39ddde5874f2db73445864b72015 da67955425ffe66071d03b466c72ce41 5abba5b86814b98a9f4ab5ced9b9495 f40467cbad9ca466eb7d375d58cb985e 4f5fc434ebc03254fc7b1255b2e02e3f ef20d432f2a7b1752c164e0c5ea74611 c0796e38ea7a1d9fbc0909d98a1ff2b4 265e6c77443c74bd8043fd2260891a82 5793a442744f4bcf7af203abeca5ce86 68a423eea131656b1e2b909763d0fd31 f71028dac9b396fe80288501d9901d7b 105f7f51e4140ee4b6b87e72ead132ed 5213a6520cc225a0fb5c1b0f759e2bc1 fc25e0cdcb2ecf1ca2bd098b9203af 22795c32b54719dffaa7ec7d870d2e09 16ef481509c64f845dcf422dd1ee66d9 39d7e8e001e0234e8f721bc8b8155d7 4f2830d3d566220be5dd38f670a033a8 d5b78307fd9a0764bc97347c46fe15e1 d56fba80d39bdff738decdbba236bc1d 8b72934186e1d8b0f510cd52a5f27547 eb8fe6d82d195ab5bc8feea465aa74f2 aeb538b2f1c36a8d9e811b082458229e 604392af2cbb7d1fe30ec10233e7931a 6778c46aff633538c0676369cd1d063d b6dc4ddde769573df551b6c3f174499e a02387f2b9d73a01a5cbab5aded19a14 bdbc01a1bea50bdba6cb562d18000d3d c3454da26509937d4b4c1e25039af4c8 2818edd47cbd2aa1afe30fe053f7a977 fa5c740ca9192b708e8131a047a07ce1 d984822941e7a768c231d70e1e0cc567 329b62a63e882c7c71d03b466c72ce41 f016679500a76fbd8badc4a9f1acc937 18806a80387734b754c7b6e11bf7148d d64f391dee878277bd46d022fd7d80aa 8a47b24f85a0eafa12234b062bc6c471 6659e72d40cef80be07c29b23ef67611 5d022668941c6559b0ed23034a67f7f 2ba980d080f89581ab2a0ebad7754fba fe82a9934a38997866cf1b4a8fc3914e 16f81f41ba16edebca8607f540cc62ba 6296558889cbcba8faa7ec7d870d2e09 5da145252e095024ee738cc95b5ae8e c2923f0931fa539f794f2d24bb38b7d1 83b55a6e1677563d6ae6891f58c50f f88906b677e97695f4126163bc622a34 d0b7060229617935d2a4e6ac398c976f 4d0994838c31434cef5f09964a6a1f97 33a4f9403600f29c281f657e8f8481a1 39fce052e13f97a57a10aa3eec436422 6baefb84d6e12a0c6bdb424f4ee7ff8b 3576bf753aea3dcf661f0ad700067cc 31fd02481a07471e4e8b48a4c01e36f8 ade3c4987f49895ff960bc420d751255 8ef4637cb349584420c6a28228acb628 e3f562bd552fbb14496e2f80fb255499 fcbdaf6100aad67d5abb92fce0f1ced2 66bdf712963b9a17efe0d4e1eba2e3af 5efa09bee2cf193afaad157818f6ee1e cdbd857f25b1597c711d3e79ce66dfac 7631caf6989bd17e4a51f4b900f5eb50 b30bd72e684744c521b1ceea9c93aa79 b644db95fe32d115d8d90babf3c5509a 934b1ff5cf72b25c4310636931b68fdb f44c0e1e55a3469494f3355d9c061b5a b5b0dac4093a61cb3f2b01de37c0b29 9de5723b085c9dd8f4fb6842b3610149 f3cbfb52ea1c907a850e00840470903a 5de885a47cf8aae2951971f8370d9050 10af5de930178a161596c26b5af806fe 5f73e503595094b783b772877a547745 9d72d4ac799977bb71d03b466c72ce41 3c109726e03fbac4ace5721ccacba16 150cdc45dabde04f7f29c61065b4dc5a 6fc4f30540b2fa9dbc0909d98a1ff2b4 3826bf5c55ee469cec4dff11e684b695 132fc603f8f69b08e816c75152573ee0 122776d17b6a118086da73d36506db6f 4d3fca1d1cacc27beeefea58691b769a f25ffb9cf92236fb9671f5163e7f6535 5fcc974627fb15fbd1491f61ed5cc034 5b3e534b2d022a9528be5258a76a8dcf 862f246e54900f48ed4212b3ec7c4371 17bc7631cbdaaa0c932e2c9d273ab571 391b9c5bb875607c19ba010ddb4974fe ba7d272a0ef0f06cd165fddf32a925f6 46c259e87609c54fafc0cc47720c0ef4 2f576be042897eae38f859e2bc79169c f5e271c3cb2edc1681209be1a5e8b10d 1605bdb8709be6773c4d876662ed7ef0 4f1fb7c062c50fb15a2c5766752aea65 a9bbba73d3fb7688b6b87e72ead132ed 7bdf4816b61c0e1748766ee3c52f8ba4 3a7e89dc355faac111f5789deac2dcac c1262e16d330f7a0231e16e03ac422a0 fe0b8ab916cd568d749f4ec7f5556c32 ef6db5bcb6bb96ddd2f0cc036969ee4f 9407c551466b346450e5128bacca96b5 91948fbd89e316b9a1efa53c1b6b3c23 c06b54fce5cc4961c9d5e99e50e5e709 72e68e04a203c96d873ec74c119307b9 3a7e396786751f544c3a35cee92bb95b b1f056090f81f992301e72365eacb45b 6db64533897238af392d539dc5a47ed5 40d6a54bb4f276afefe0d4e1eba2e3af b3c37b67cdcfd68571d03b466c72ce41 99dc4702d20942da18e0889038e4fb6 fcc2023fd98e157f2d99c69702933ca4 eaa0d465e9d0c16acfbf0f1430c86945 d353b227b279804190b1d6deb98feec6 6720352c366eba1a60370f16a3e15e76 dbd0efc89242cc9318de900bee20377 949acc63ad8f8816e816c75152573ee0 60f99c0946c095e833b2a295000cb6fe 296d0aa10bd7ddd87965b154b2af39d4 ce5310bbab4bc178d7a85b8b6dea0a54 80b9b2807547a2d3ab94ae13bc67d41c 5a399ad6696d587d5e37076261ed63 525f3ec38c3baa7a4944d3c8bf9547cf 8af65c495c966cd7c337e45399cf632 e3c26c3920b93f36eb7fefaef8eada2b 636dfe39d75701b6cc14f1e6f4f4f49b 7ee2912263fa4bb36f14b7a660f4c864 a1bb5d1a075bf7fc37d1c8fcb5a639e2 edd9f45c7c927032db5e5b1ef1010d8b c814a53c1538cdca4f7e1991902e92f7 4e3e46fa987d0892a185a70f269c2a41 d9dd8dd2c422dadaad70e50d5d7d02a5 dbd589812bda0b1ebab624e35355496d d18592d9615b01bbbc0909d98a1ff2b4 f8f4cccabf7ac33b199dff268d0aba38 7608d7a5a3e3c2b13d4b1f38e3dfce4b 78ceee44d207e826c87f6dba8af25d8b b831f60f211435df5bbc861d0124304c d0456644386d9149ce593c35f70d3f cbacce3a17e061251ab9df4be75138d0 ff12c3a1d388b03044eedf822e07b7e4 8c6ec24418f0af1950e187c1fbdbf3ba 5f0e7de6a86a694d3930849f1d75b1 d777b1e4ba72cebac5353b0f3cdec54 22ed115500e9648c5fabfc69ee61b28b a1a58070ca1749d76abbb3e202b76402 58e7f5046a0eb6474298cee0ed15ce9 b9794f4722f565e319ba010ddb4974fe 7af320cedd724bc89437816457a69b f8ceed6c984895079a6e43b878d5b335 c7749c0a8b61f43bc9b9e28055202e3d 351c9235749e398162147e00e97e28b5 b76c6ef211d627efac8c46f8a114a34b 77a81458ea729c62ace5721ccacba16 ce4b8076f8f9a5a05be07e24c1d3227d e7ff46a15ae32ede7480441c35610069 aa4df918db6c5973db6e67bf56014264 a162465f9664d92a94eaa56dbee38b5b afd43430bd7c689f251fe573763aebef 2a06adfb446c85c9f9d3f977c7090b2a 209bb7656231011d7965bced3a0d8967 b63c554a915454b7a8481a97c910a7de cff4a52406b84da7aaeb49542c2cc445 4c3b1356008b3284e42e14fe98b0b5 313758cb2eacbb576d3e60add9f0d715 276908a82ab3728e6283c6757ac506b9 b7fd11d4af74b4ffddaa0161e9d3dfac c4433144c905ad0b71d03b466c72ce41 a9240313c39307574c3a35cee92bb95b 541db123c3ae32cda91f7285bb2efb4d 1de58c7eec71b438bbb26c14135f164e 94c4ade39534d1902c13e5b9ca0fc656 78edc61edc8835b5bc0909d98a1ff2b4 38a8e07ed9b0da99fa7918e5874b2c16 5cfdb557f5fedd51adb50624aa91e8c9 5aec07305ba4bd3d66cf1b4a8fc3914e 7ee59463dc17ac6e3e3f3c9608255377 2677c3793143e75766cf1b4a8fc3914e 22393fa9307224ec853c6f214c15e60f b55af8905ccc3b35102bb5032a53eed8 baa3e1edf8870f755f1a3e0b9f8002cd bfd02b9a1ad7ce73fe2d13a096d8b561 3e9ff76da8ca4885d0635288642e63e 7175100f99a61c9646322bce65ca3756 ed7eb0caa75661addc82b8fee1057b30 eeeb30213be73bd14c3a35cee92bb95b a69d6f9ea766b9d1a13079850f677b69 a05cb1f091b01cc87aaa57326478bd1f 4561def0c651631122309ea5a3ab0f04 cc6041868bf2913312b981fe5abe4a07 a9b2d531e073113f9d1eb836604648db f8038d33c212f81fe99ea3c41458bc01 530540dc968b396d7f3805c1aec66f00 4b0f44a76ef66ec9491bc6c980bcf9e4 136c2b868c5326dbba5db366aa3ac475 9f525ad90573de3dccc19f6800e20c43 63f4d6895e0de9079bd3f7086e6031a 94981062a6f3748844750bbcfe7b8fee 3844797c89c5e2e821b85e5214b0d6a7 87cf8f265536d4369a6e43b878d5b335 2764f43226260c94a5a118bd15e6e34f d1a887a47991d1b3bc0909d98a1ff2b4 679d4f84caa5a1a8f019a51d1a3b2e07 8eab40ab482a46f04369ac253fd9f7b2 b65ac56abaecc35bedcd88be6151afb4 b0f3f0f754c0129486faacd7b0ac262e 8f39d2dbb98bce6057b643a522b3d830 b1dfa9a6274688cd29ba25678ec45698 ec2ceb5d65007bacfbb51ecfb25331aa 8b851217c2ef15b8eeb11afd6f15c99e 7662fbb435dc1d0760bb9786c97a649e de5cade3966a1dad94946b454cd190d0 ecd761d36abc0fb5250e498b1554a6f 43e078c68d2fa3b4d5d30e1306d90d74 b9168b74c6d459e65a73760c6feb254c dac25e0fbef7dabaf1692146d36a4a3d 92497dcdab4d0a8de1e82eac4119b0b3 5e0331eab3f051988f6810e1a2b6aa04 224a8b6776a242f8adcbeb54f3d014e9 35835c28f33d985fa18e0889038e4fb6 ee672fc1455b9fc43523242fdf9b75a7 6187d076d53429aa67c54439d6177032 40fefe66b018c17b4c2c88971423d0be 2421f54274a5c237e8cef78f8179925b 5c43f5436b308ed89a6e43b878d5b335 ff77ea82fb4a5f92da9afa637af35064 e6e8f0e244efac73da2b0f839aba40f9 76e66ae36d942c494c3a35cee92bb95b 48c2f17fd1610cddf9b189ce48b45ae1 1397f5bfd89673b21fc43d5b32fa230f 172ac13acd9aa91f3df325aac2f73830 47c7b3cb099b3212d1c83bc8b134e4d8 e96cd99f545a4d22b0a339fc52929deb bad95673c40e3bbd66cf1b4a8fc3914e eefb4a1fcc2ca4d8894e22af7ae821f8 10cfc2090a2ade124c3a35cee92bb95b eae845d4a7945ecaf2e466e56cb8c63f 77dfe229aa38e70b3fdf1b3b0fe86dff 3391b6520218cacbf27ebdfa602af873 6044301c7b4c63ec90b1d6deb98feec6 32a2723086f770e9233d80f3ecb7c6d3 c8b848f32a850b15e816c75152573ee0 e51bd7d434d1ee6622096c1bee7ddc7a 50d2629e7e96c2883034111f96c5f617 54984229a5e704f2941d71475449eb25 7220043361fe9e50eb983188eb4e930b dd4da4309c12d47bc2c2c81e2232aa95 a73231f3d0342db94e8b48a4c01e36f8 7edc7e17171b488bd33efe8cc2e2bf98 395afa94dd4d549670e6bd9d4e2b211f 253a1aead30731904c3a35cee92bb95b f214cf57d5d5634960e1e93111ad3e76 e93a2143cbec37a173fac4529123dfb2 9f21e660ba62b9c8ac055f4f708c624f c600de8c83303e6a441eeb748bfdabb4 4244f171a6065c2f71e3a79f2415f19 16d40e779903e77863b132896d8bc65d fe58e1c34a7fc8ac7f6b2c9a3874dfdf 3fe365251b54087af0478431b5ad57db 1f5537f4747ec847622c69c3abc6f80 733afba7f61652e789850bc84e2ce90e 3231fc366c6f4f3cca8607f540cc62ba 2cc1ff07bcb27de4f64801ad2940cdd5 ff28d340bf0b5d9387b2a887422ab97 d4849eddcd93569ac119f94203b4868c ca0f8f701a042689331960c3710d952 af69c8020fa9b68366cf1b4a8fc3914e 78f32f279a50beea216b327569dd806e 46791426a5b92fed6cc9876a2c35084c c950fc7d559f30016e86a8ae6e1f4d7e 676e568ab8e286ad67c54439d6177032 18d55087d052ecc86b7bd17e458d0dcb 3af52163a2d0551d91637951367b1518 83dd9dd45724d5fbbeb310a83b693887 56616237ed5168f3a18e0889038e4fb6 5aee97ad467ed9d75fe4b20a3aaa51a2 6ea4e68428cba49f68557927e45c29cd 23e30666530887e69a6e43b878d5b335 f0e7808ee55510be1a7dd57f67482196 697002e0242f331eca8607f540cc62ba 95a6c003f5bd8a4acef4e20384a35136 46d4d453ceac2f5c3c3b254d8683a766 7b3ef304a0088b39112e53a423c9745e 7a97d3dadc608b4350f01eb2b12b0a8 d9c080cb6634a902ca9f0727e23831d9 9465be8f818fbf94b01a0cb11141e033 886942791e830bf1d32b1717fde97410 1d6afc44b053ab07941d71475449eb25 6dedeb5b87ee318b2154ead1f7ab03aa 57f30880519c8270e58d21f41272cdad 43beab0c1cc46ae641b5a73cd6c05ccd 1f3fd9b2ce99e4ed164ee3a88aef3755 8b3bccc84ac7d534d56132409b00c58b 6456e87ff00e31a96efa61580a088aac cae48a376cb607547d3b11085e75c7ad d2842bc324b3dac5bc0909d98a1ff2b4 bb976c45b6812b9254e2b6da60f72ab3 b77aae4fdee662f487dedd9dfc0f1d4d 12877bdca58ccbea402991f646f01d6c 5869e6c3e9d2748e5ff3feb917a6004b a18f4e4c291761fa7cebb3dd777c66be e2275ee8d6b175f2f446f92b52bbd82a c022461863cacb39a2872fda285c0d5f 65d7ed8984d78a797c9af13aaa662e8e 6f473d567942897b9908db9f2ff495fe 5d0d3f54c5d9dd386a1aee7416e39fad 675464537c846822aa7669713586004c 783f3f72d5639597ba0d990ae229b477 9e524a14078824b5cfe15db7c5db913 cfaff76a1503d4f562b600da24e0965 42dcf7058ed936fd22362be7f5226e91 87d37c43f41871fb4dd260a1dd3357bc c6ab8acad9e61a3e48227c7754aae2a1 e87902d01d40c71521b1ceea9c93aa79 229c164fe2c80acc1ca2e8373597f711 8f39cc306f68c89c8139630c61d12904 a0fd595fdbd3a85113a96c178eda1cb8 56c605d0b1bd86a9f417244ad1b14759 eaccb2ca303223afc503a3776fc280fe f56cde19efc8d428b03f97f6dc2a21fd 723c87de224355b69878ac4a791083c5 ad66ece988a63911643ae903098a314 aeaa3ef74dc4c60c95175320d65fc89b 221c079c90d4d5779e9cd6cd13c91bb9 5bd746709adf5b3ccffae3eeba6126e6 759da7376ab2196a66df9c92bbd3d5c1 3c6c4be95d2dad2937b25178f54477f4 94056866a14b015a50c626aa72455dae bbb8ec10b86465356630654359fc97d0 e0ad511aab31dfdb3e237dc81fd8be72 99ee9ae50909ac0cd3cd0742a4ec7e9b 8cf06a71987992cf90a51833252023c7 a55a46c1442470aeace5721ccacba16 831171fab182f62eb115cf6cc3371017 c7fe2215d41c2db3a45193285587808f 572cae68af04663cb145cb2b20ac87f8 b88fef1090e6d151b3f2b01de37c0b29 fc5dade8622f686b4aba1f0cb15b1439 c541b8c49b5d2d8e99ad3ba13045dc42 fb110c5d01f1b3fc59dcf12563d8fce3 1a963a929d9b1332290d63dca780cfb6 f1b3408a3ba452d0c1ccec171a275967 e8289fd7e6ab0df4d37636af9c7bcc34 e4665d76bf8fc441536d5be52cb9d26a 92e2aee5e86c0fc870d98a97e17b4da3 a922f408bb1b1ea1f2cb090f7f07d463 a281b2664e7e5b2fad9d7d48f3cddb17 b2e86c7880a56b6f71c382fe82cf6e04 efbb9337b9bd3cab56ed1d365b05390d ea1aa637a6cbe7b4fce29e20147f9d9e 33c9e81a88866451f4fb6842b3610149 21adc93a24e86672f054f5e37c7ac323 7fa1d1bd456f0fdf6e68e46a69a2d96d 3693696a7d11f2a866cf1b4a8fc3914e 8ceca54101f96a96d972c9dd75ed77d4 9f18925334b6f37bd560687a81f263dd 9cb21d68582e1c4ec1ccec171a275967 8ec085a86e6d9425f4fb6842b3610149 8e50f707e506f65f66cf1b4a8fc3914e 20b91c5ceb005cc44947b319a9e09fd 9f40666fcc14828abc2db24227b9dabf 2af04ef09d49221b85e5214b0d6a7 b07608c9c3962cf4db73445864b72015 3b41c0837f22555871d03b466c72ce41 a331e93c3184742853a6ddb5892da51a f963bac7f45473cdb33bc7516e53285e a63e9d5df0c56b3f099bfb561edad43 d5189c00524f662c79f9bc8b647dba0 fbe213adb802384db443c685f436f80e 65278860c7d0f3704f59c2a67aa8473b 16f67f87f414a5df26360e1e29a956c7 d441a12b217c26bc0d5f9d32d37453c 2993c233805d2718ad8912880b776dcf e25794343ee37d6fa8eeb11153b68d81 751b1e75fcd7f1deffb814dfce3ab22e 71a3c6e1c87c8b42233f6392bb87bbd4 c62237ac28c4ed61efe0d4e1eba2e3af f3660119189d3eca4c3a35cee92bb95b 18d994c4f8362cfaee9d01b4b18e1b2f e5c98b67c146cd61e816c75152573ee0 6fe837570383eb98f72a00ecdc268a5b 934d7c130fd419cdacffbc7889712a99 ffbc31352a34c3e1ffb94dfdd6ddfaf0 f533dc37778c6f004c949161e83c47b5 a762fe69269fc34b2625832ae05a7344 2980f6ac8412890548437f47a316427e 7df1ad6363410383f3cc56bc9bfcde3 f6f5efa1554038ce2154ead1f7ab03aa a00f6bbbba234739b92527b70e93ee2c 70e4200e848e653072ec6e905035e5d7 17c2d3e052dfe73f9cc1fc25372199f 617a3d4bb40402679c411d305417ef6c 6d52412e798efdeab87697d3904b168b 882c6bdea5fc5e82a3ee83e6cad78356 909548225096784cd5cf6c89d6cfc357 d54a694d514b1911844ac48bcfce34 81bfc74dd037d1ea88d58cc5b9d401bb bfcdf2928e854d109b6724d4f3457e3e ae8a5344a37b2649eda3a29d4e1368cb b7b8ffe2f07e4eff95dfd5eb5f06d19 b2dd8a3e977d8e5f23c640e813cbc041 b8fbf59025f18f1ccf5fcd318778a0ea 34c656eeca31045724a182d01c698394 56fbecc11e62071553a6ddb5892da51a dad83c903379cb9cfa585c96250561a9 b3066d613364710797020a1f4453e3a4 5903b9eeb53f1f05a5a118bd15e6e34f 55d0772f003a362916c1ee83fd7a7f1a b7023a2bc0b1c28142edba76767f7bf5 b02aa659514366aa2c6868c67da0489 38884564ee0da15798494085d68ad6a0 1bdeb4aaa0aaea4b4f95630cc18536e0 4f7814692598ebdc7dadbbeb79fd1fc9 e332fb3eb2c4016ec1f9d235878ff0a9 f7f915160c0e1f6f42bc0eea174f82b c9620ae77d3eb16ea3123c495342b850 64e36b948869a79683653a771e25099b 67a6b5b12ba64c529a6e43b878d5b335 ab35aa631852d30685dfb1711fe4ff6d cb91205ac0f2f62429dc68c96bb3c4 42d9f626ba4bc61516c4bdb2c8eca27b b501466a5a77f1173d2cc3e9d55f7579 560e0890ae86aa7624a25a765a1075c2 86e19045d9f27bfe269856bd6e519d10 e58010dd5766e0ce78f081615c34707c 7977f492ebf2c1d5ce78be835f7c74e3 eb7bf553e500b9b544bf3710e93f8cf7 7a3da3c75d98e44d7d64cad20089f027 7b485e11f80e0577bc0909d98a1ff2b4 46f9b86c1292366fadc12de54d203570 2f5c1ef50794aa92a55d095b876bb574 28711664a9d08bae46322bce65ca3756 688c6d406c789b8d71d03b466c72ce41 db5146b7695fafba78d7c0e1adfe122c 3112ef52e6da5d6142320ab3b0c39c62 e4bdcd6baad501ab2a8b9d468136b0a1 f7160900b6ce7bc4e63e266a803d9270 d7f71651e6571ee2f63894cf4226f14 52b2c8f99319167c71d03b466c72ce41 b3dd0a06e7f727449a55c6af6f4b2bb3 7af2dfbf11201feac3ab86afd1c689 ea527508bb74f476f64801ad2940cdd5 1d4fbbf681ba892ddeddb5c33cb2f8f3 34e87dd1c4922f7d48a263e43962eb7 6509073d1ff37d683d41f76be7f2e91f 7af9fcb4a2c4079b873ec74c119307b9 3a6f0d1cff0aa524567ab83a85d8a5a0 d1b407350e61150942d79310bc7e47b3 31d1cf39b807c856efe0d4e1eba2e3af be5d2c935a36894c92cea77f96988ae6 82e50255f14e7d9e60c9b6e4c75a092a 2407711ff7759994101cacf58b339533 d8a8e238987fed8dbc0909d98a1ff2b4 e7158ecb09050b03873ec74c119307b9 eae958f99bad7dcb18b14db3b83de9ff 926749549b15941e6455d739a5cbd8d7 a4ca564574e55f1a66cf1b4a8fc3914e 79f0a9d3d78764ec19ef6dae2862f036 f944c570191885e8ca8607f540cc62ba b29c650e4d7582d11ae96ac7591d0dc5 aa70737ddaede2e3368d7e7849f8df62 6fe8da29821a60d75057515802db06ab b7bd7a753da0aa113ce4891c7dcdfb1c 22eb91041de27ca4936b2c59e7c43ba a849d4325008fbea85dfb1711fe4ff6d a367bcfb5d26801a848c716e284f561f fb5e00c769fa06e7c277130bc8102991 8463c1f30bcd9151b92527b70e93ee2c 10155655850468db78d106ce0a280f87 480ee59947a01283873ec74c119307b9 d6ca5966c5ed5b86da2b0f839aba40f9 f36ac9cdcf15ac8497492c4542407e32 68303a007a6c8ab02d6ff44f79e93a89 ace4fe6e9c97150a35fc197bbabcd5bd f8fa93d7b17fe6126bded4fd00661977 ec531add757ad0fa9a51282fb89c35c1 4204361e3781952a8e951223a21e1fc1 60b5f5da40e0dd33579f6385fdd4245b 8c2d5c6dd599a5bb68c7efc443fd2354 8c3419a655600e5766cf1b4a8fc3914e 35611fc0fecb7a795e02646e6b8fbe8e 1367266dc0a07c925d4533028830a79b c05bb681e0ee27e2eea65ef742e4d989 6826af6513566b12f4aab844bf68e35e cd846470dd7a135d29ca62020db7d733 5c9b09738d7920f0546100d9c41f5274 2b2cf12a1fde287077c5f5c64222d77e 99e1961a72bb8ac46177b6d1ecbf989 1b626fd06226b600adcbeb54f3d014e9 c93f76888cf5a14c93421b5e4ff654e0 42b71c3f82a845574c3a35cee92bb95b 8a343fecfe2b8660d0fe0309648c1f07 f858fdc6841407e6d4bf37afb4832e7b 1dbcb49dfbfd0844a480511cbe2c4655 fe3aa0ec747c12c0ca8607f540cc62ba 76f949c39923b0778f297017462c6cb0 7c96e824c287f684651713cd1e90c5f4 fa27e66018f82cf6e549ab640f51dca9 523f5360c3aa35b5e1c77ed807ff5c62 f2171bb2d715140c8b96ae1a0a8b84ec c5ff8a911c2780efc03676083f8f4de6 2be6cc069c95951a4304ffdb51711149 18cd9dc7631ef3064c41882468413db8 1a04e3eab45ca15dd86060f189eb133 fc2d2df18182df8c82a2a8a82be86fd6 fe4ad5664773074cb536c73c7d134340 af3863d4ce7dd92ac6f6da58b133bae0 cc630f80fc235ab360c9b6e4c75a092a 195ca2eabbf7c735a8d66821ccb813fe d837b5228d9c010bbe584d85bf07b4ac f9209166fc259d8885e96081cfe0563b a05347463ea86f1ecc777fcc6b5f19eb d54ca25127a15d2b937ae00fead8910d b7eefc4c25dd9e49238581dd5a8af82c 10e0a7255d279a419751c7a6f15617f4 e037cb87e6cdcd76df39601c41fbe0ba fbcc12c5530ab67cad659a74e36b6387 a0bca89b37e69d349f66d5781c13189 674115a86dd196c142c20743f866e1a6 9c916b72d9f9f93b9f2700a6b7be99ac e66996d97d9f553939e75b12f2e5480 557429a274a21e1e6a257cd6bc529741 ca2a07b005ad4385ca8607f540cc62ba 78646117554e23162c00431da4ecd526 6f96517661cf1b6799ed03445864bd37 1bba3fb413b93890947bbeb9022263b8 1d5beedb73951ef68649ad8da70da1e a224182f76e4a44fe1a65cde8802138c 6ad89740605331aef5f09964a6a1f97 322e8dccadea03d3340b9c9d10273ac a6a27c5acbf70ebd3df325aac2f73830 cf2bbaaebcadfb282933085759cb1f25 912d89d2d910a81cadcbeb54f3d014e9 7206b1f248826f2398b39d2f77aef0eb ca16041e31078463afe21c1ae3d91b49 4b4fd540cab0cdf3f38bce64a8733419 b793e65c707e884262bbb378da4fdb53 5fc53108f6bf2f45893f875739da1b24 337e7f2c3745e07789d7e2c40a194e8 30b5160e2870b7a0ac8be969b55649e0 4377ea17eb17fa79216b327569dd806e 94ee700c27e2c05f84fcdb4aed90c145 fdcb11fa39661f0fb08f81d66e854bfa b008491b09894384451efd5041dc713 32da9294ff0c3d8c7a40e1005054fac1 df0b14faa90bd4dce68b9e5f5c3d0eca 32637024c9aad5289a6e43b878d5b335 1d68bc47a558ec9b266eb575093ccace bd8c9f9442124cab5e64c90e34fc13b8 902b39a955eeb2bf35569910818956dd 6eb12144093da25e816e98a113f4d393 697161441b9da2a7ca8607f540cc62ba 1ea7a36e4f353416fe1f6e05091d5d9 d7454b0e80d3236ff268234accd8cf4e 4b623f70c9853080aac5531514d15662 219fa6821c9240e42476c2e017302af2 e4237061106f5df1dc82b8fee1057b30 a87cad03c8f717e230dd29e8b6a554b3 58fe58e9f7431a1a428659c2b5124968 494660cc290492218ac43fbf276bac06 8bde5a00c3caf9771d03b466c72ce41 e8e1b765fdf5edfa14c19f41d007670e b943b632fd36f75ac1ccec171a275967 a4c41dc85210c3a0ae049cb809622fee f88be1c8e93fbfecba0d990ae229b477 2efa2cfc42f2ff481b27cd1681a3d0e7 abbe69a6f94918c79eb9aa3111a82815 2d33ee87ee5230c335fc197bbabcd5bd 6946f7a2a5ef851215ea536736a1eb7e 87fb26b8e56d25f2b87697d3904b168b aa3a801045f6fea9afd51f67d3985e6e 2893dc61be63a8a16d0ff49003c479bc fef1c15a5db21b00a67cc8f661e7890a c2be303f5abf0db7b3369733e21bbc63 62bc07e9813d75ead46f37bdc1dd4b45 4a6961377146f08cb45fd154bd3b6957 8da05b28d9b2e2fddd01eabba9d45203 a4b26e08b6080277a47575cd04a1d851 ddb96cc263869979f446f92b52bbd82a 93c3ce7904b3258b2285a9bad03a0ac7 6ba7cad8fa7301f9c1ca96a73599ca7e bb785567f73903da2661ac6da30aefd 440ac1b4ac3cbe114c3a35cee92bb95b 6bc51a88f3c58469b00421d9df4746fa 2c9797204c91e3a440975e4feec771f6 24bdf389877fb7f21b1f694e36340ebb fca4c82b2c488d329554e5818acd6e12 a3a3a3d2ccc590eeaef99de91a3e555 12e127c0416f94ca4c3a35cee92bb95b 96ee3ab4413dca5a48d2ba4615e03b21 bdc5360ff3c62ed69aa9d7f676c1fd7e 6c2c84db10ba167e48464d2edba1bcf0 260288918550573dc9eda6e157b92d90 143326cbe409ca9f62048be44e1fa435 ac0d1320328f5636b819f3a4f3895504 26210ec84a9c1c6eb1bb46d2556ba67d f3f3805b0f1c81e6f1218670339368db 1abe9524d3d38a54f49a51dc77a0dd59 f5cc091bacb338c6951971f8370d9050 595556bad291028733de69c9cd670995 d605a53c0917acada80799ffaf21ea7d b1021932b387da327f58a59a37266b2e c46336844aa275098b96ae1a0a8b84ec 86a5bdbd8c0c70eea7de26672c5fab85 6b15289a71312a5af8ea21a9397429b9 d78a16856adad344670aaa01f77ae41a d2f8a99bbdc387c8c5552bebbfa48bd7 e8c1e738997275799de8e648621673e1 ebb5a048015c13cd35fc197bbabcd5bd 86f2c71ef3700ca2cca362d2a61f33e4 22829f20e331d563dd455eb19d4d269e d2bf5f39131584c0a8cba409c4409ba9 2636cc55f0bee49671d03b466c72ce41 9b5a1706223b150613f6b7168403d0e9 81440fcd51052844af7d907e4e1905dd 551635d89144da64299a59bfd8e7d284 189f045faacc1b5f9a8993cdad554625 bc48b77452fd108adf8f666ba0e601ac 6abe0099d2a6efc882401bb74114a99 600f970e5d1032dda4642ec4b6f68a ac463974cee5a8867bd1a5c452e6bb5f e5a7a353d5fa8df844b2fa2cac0778f5 fbb2e9c15888afcaca504cdc40c452de 262795bc8a994b11ba0d990ae229b477 91bd6e91455f85fddcf9f917545742df cc7a48498e745baef828c8b5be2ff54 e31da3ac74fa3c0c23db3adbb2f1dce b74369cf3556cc822fa1bda037a5a7fa 9a29495f38c07b0526a6eb5f28c0aecb 724be1fb093a31a1ac8c46f8a114a34b f6b96f56212f55363023a5c0cae3fffe b725f44502906a42dc5a5a67e94552af 6e4570ef29d420e17099115060cea9b5 b224e74c6de1185a6f498c6206a06582 669060a91dc45dfd2ede7237ec38a80 2e0c7d77c0b74e87c1ccec171a275967 e8d5a3e98c222583d972c9dd75ed77d4 71a3888c2229715b694188e21796efaa 167a44b60adc37319ba010ddb4974fe 25864172dcde70c6ace5721ccacba16 d6db0815d8fbaad621967ef97204d18 5c379a118ec80927febd4e8b843c95aa 1d5708929a4ae05842d1180c659735fe aa05bf3c5a7bb61bcacf204c07dae519 8fe406a829c40c933b353a5057e248f5 5abe1e80846dd485c3e7213e9e8493f0 53c7a6b56afb63807222da102ac36d2b e27229a5f83b0ac96ece6611a5309fa2 214d7c0720b860091f21e5fbc0306e3e cabce3320f119855a5131d38588a62b f9505b01e3ea959cf9700e397b8b4e4d 84d5ab52436c832d36813a9f7d8d3045 a60b2775f1955153ca8607f540cc62ba 551e8582c195944af1b991541832fbf8 89175682a6cecf548966fecb9138dba7 49f400e6574c75554c3a35cee92bb95b e6d6e9544e353f9f75e49fe23848bbe5 2af529843a47df7aba0d990ae229b477 361f57d736cfc14dc8bff13697c27fb fe23572aac36c84761cfaa00f7177470 f1210d8f895e40b663c15773e7567372 990431d8a1ef435bbc913a3935f0ae10 ddb9b552868e8c61334736c27ce16882 89a697d339c01c19452b96e716decae1 1d7eb22189100710ca8607f540cc62ba 800334df5da57266a4642ec4b6f68a 78c5137e361e02cb24624455c20aef91 1bcbb0267f5f1d53c6c0edf9d2d89150 6e324581dbbdfb5548e8405d6c51a908 7006c5afe5175d76e69ef11112d71da4 3aa2ba8ca2aede556d96f75c7a1666e5 f96426f2392abb1d8d58389384d9812e 2a895d17616bcae1f361e4786a4d3c00 82a472004d00b288b4d569aa61960548 5ea68e6edd123801ad75fc64c51fb188 3902709d4b10903579995cc5afab9d5 fabe8fdc617e3aca2bd098b9203af daf0298bbe90dff19751c7a6f15617f4 a53846c68d0df55fbaa5dc5e42189b81 76eaa5ea5f272c2f5986032c1ed37f74 d47207e14e61db3f1436d436f198567c 30acfedb688a62e72ce638efd383ace8 66c37aeffd6e73f284306f3bf0a1f2d7 ff569b4018fc2640cea77fac5d58428e c4f22c879e8adbc6aaae11b67645c759 a2041f74f316e7b9585e3fa372e910b7 fb62efc64c58d1e5e0d07a8ce78b9182 260305219d81f745623cba1f26a8e885 51f24c13e4af3e06b6e5b4d7b00c5b3 8238cca88d753930a23a96b0250afc71 ac06ebedebe86a7b4c3a35cee92bb95b b1762428d609674598aeb62a3dfc01d8 7fec4732aa03b54e7db7c8d619fa260f 3b0efeb0891a9686ca9f0727e23831d9 e7e73007e0373933c4c280b3db0d6264 85396c57cdbf919f83467b3671ddaea2 c6306d07f28bc5231309643a94d8a5f 5454ef3f1e0367f38f92ff0dbc52d7eb 953baa426dac775bbc8c4428ef1dffc7 ac3336c2f47b17d5acf77e718d93f3e1 1d663e36e305fa8e2178120752ee7a07 468e504d8c28d8c9b8b8dbe00be04f1d a1947665b3f56b584f127ea45c2fea1c 3f80ce1461f3dbfe16af5d7a0b735543 5a0fe6557b4e2b9ea8e091cb544689d5 afe6a70cc5fa98fbd93d05336f155bb9 98c0c90dcce8f9ee3ba77af508a192c0 ec8ba88cdead53f336dafa9b6763ef3f a20db17555286e06f5e83e93ffcfd3f0 3bc8cebf08ac975dbd46d022fd7d80aa 20dbfa169424bb8ed7b90ecb4a11cd32 eff5216d782684aa3c7aa3e4b8926c27 12c66a0490b223be595dc3191c718398 b54d9c1ccb737eb6d972c9dd75ed77d4 f277fd1032f615ec2268dda5c324173f 31af9b965002990e27e7e81f554f78b 2da62d609cc59f9a10b920f84a47c477 e3473fc8fffca7d4d972c9dd75ed77d4 e3e6cbc295806a47cf0420e0d05f48de d199612c22fe9313f4fb6842b3610149 5c74962846d6cd33920ed6df8d81211d 521b82ced564aa2c8ee17de2c75c8e96 ac75db84aa4e72e28f21c6f032637775 440e5ba74ac8124e9751c7a6f15617f4 4a27a6276e748777bc0909d98a1ff2b4 d25572a7c7bd40a72d716a8ba99beff8 464879f87b67827af268234accd8cf4e 7117ac29aef4f1c4951971f8370d9050 6ed172205a9805b8dd9eb6c0ee8316a3 580e54df8765aac1c1ca96a73599ca7e cc40acee83422fe892b90699bc4724f9 47fe79cbf9d6ef36dc3607950feada54 cbbf6ca6a621c5f9acf77e718d93f3e1 144649df5a5f9c8b5e4cd38353d7ef05 9196f5a53aa7756687bac2e90bbe10e8 51ebcde47b4c29d81a62197a72f89474 49aa625393dbd1a4d443895deb2f03aa 4303c9458a723504d972c9dd75ed77d4 fb06b00775efdc8e21b85e5214b0d6a7 754d9b0f12e6c6104af5b53e1d2ec5b6 6bfb3e84a0fe44c1bc6e7c82ab33ecb fb01b45a0659af80c1006ed55bc1a3fc 6cdc9acb022b2d7d98aeb62a3dfc01d8 e55224bb456066c618d508b491dafd46 c54ca35ef1df558850ea677bbfebf3fb 2b20176a59621b35497add46ccd9d60 b848dca797986bd69d175f8055b49b9 4c9214d70e0a00c6c1ccec171a275967 796bb7d6f4d5ce8471d03b466c72ce41 c94efebebb2eaefcedc8262267425d73 e387c8d826cbbdd68a8dc9dc46f918a8 6a59f581ea7f33a5700feb5468ed9746 d8a037897d5d5b108130971b27e95927 ce3c18550fb997d1107e1ecf38d6ca93 21c7cc3e5f27540be6553f96496649c9 d1e81c9479eb1b7da9263338bcc7d067 14c954d5d3c8e954b6b87e72ead132ed ad10ae20ac2e87a2adcbeb54f3d014e9 d23eecb0437107756c63b8b48495261a b6af488133a67825881b4ad693eafd3 6db6f79bff14b883a0ff12a4a79c7c7b fb92c2e96fdf6c37595dc3191c718398 ac39424c7666c318cde5b07c0f09692a 5a38f5eb63dd8b20ab9d1113aabc16f5 71f718d82a865472bfa44fe936def6d4 d0001af4b3c1fe3d6f675e9f2e677792 ca8c65b83038dddb17486544d154bb2 655ea8d8c710cf98f3a69a6853df2d7b 7bbe33ebb5429a0a7a9e881131950954 c781fcd64271dc15224d7b1b956e1382 23cb6abc0705de4ba5a118bd15e6e34f f1a917846d46b61f71d03b466c72ce41 e1324a093b45645c5a5672eede2b271f 80796b736f1d6bc78e8131a047a07ce1 81596cc38eef8260ce9e5ac45c67ec22 1492ab4cf7a345e34b6f686803e61ffd 56c827003a2fdb16853d2b3113ecdbb6 cc86a2ca41e279bc89b1c1fd829ec927 a2c2ad021c80f08c973e06016b069172 cf17d0ce34f09f572722fc1bdd7e0e51 7d180493022c01daace5721ccacba16 fdc1a422b48a16f67341d39902b9e2e1 daedff5e78136a8b507c9a5cb0f72e1e 769efbce0af867807456183f198fd1e9 ce6aef9846db6aa5c1a897657d9a1924 196d35794f869816db6f03b6829a5891 e4e1b542f8732ae1c6768d9a3f27965 c14cb2e75415dba59a6e43b878d5b335 a7df65b30f1e6a3663d1bfc21cc05e4c 83e4e523003294ab9a6e43b878d5b335 7c76d7d8ecfca9c2b1bb46d2556ba67d 1d09583e9236b8d149d860a48be37092 9a847e8c8f9c0acbbb05fba9fce1c1e0 65b12fc357604a2587b2a887422ab97 fef935c1f862f4aa31309643a94d8a5f 320e639572e8b9ceca504cdc40c452de e431f79ac9f0266bca677733d59db4df 1d4f988b009edadf54a2210c7b2aa25 c049dcd36058a87e75b7e61db54ffec7 f613ace665da5e3e8b96ae1a0a8b84ec bc2deb55a1c952beca9f0727e23831d9 7ecb807e2270606619ba010ddb4974fe 9a5d4e2d21506f11c503a3776fc280fe e3bdca8304aa6593c503a3776fc280fe a2491ac51414429e422ceeb181af6a7f 50e6ab918250ac797a663d343339f8e ed4aab2d41d62b49895ae53d16ed9e39 e4d902abdf9481558caa71b1fbf7fb98 11d2af04fad0a7e2ce19d55bc5e6a406 4044d5954ef85af8279326882e8430cb 6c613c1893bf7f9ffae8113cc147b3ae e160529ef50ae4dbb819cac660ba383c c2d90cc742f17ce828204947d78b9af b2bb5a56b3d805b298b8c800ae001b66 17c86b46990b54b65578b8865797aa0 8de793e2e964f40a26c713777861983a a4678e6798e768c3b6a66ea321171690 af55f398af2373aa18b14db3b83de9ff 2d01483c696c0a1688be2a30dd556a09 c353ad7ae6ad2b9df1cb19f636b1c2bd d8a43017132c210cc1006ed55bc1a3fc 5f9b4ffc555c9915a3451bc89763f63c 67eac921334c130c336fa8434b94be14 43edf9f02a027ed162f11c7bf54cc1ed 4de5861211ad5b95e7ef9fff09638f8e ae4fff8877a5a64b3ae1361afc45ac52 2f988bec20218fa19a6e43b878d5b335 fd95b99d4699430a7395d58407f193ba 7b134f6573e7270fb0a79e28606cb167 393cfa7e090b972dce2cec85ea6ae00d a9b95631bcbefe9ad225a1c252daae25 ce12e8c1a5f5ce1df58f507a9f1e3e03 9a4bd6fa35e2e59689437db5f9b0a8a1 8daba5f5c906b3b331fec775e1dce6b3 b356ef92a2052648b8494b55ada518dc 171f4e9ffda674f44f4fd7b0550f5bef 57eaa54ff3e4d6f211f78b196c636566 a9dff753cf97f9c5354ab1decf4fe605 37608404f9e224d4fd180252c91ed0f3 e17a696c47d4292393db03f6b4e68f17 40c730231c4da8f33c3bcafb5ffed4c0 c3bd5ab4d3ac6a5a5c351e299b24e355 166c9abfb0f5256bbf46baa68c6e37d4 68537bfb054ee3802ffb52751fee2c0d d5f4e2228e3fadd2aa6a832b9db7452f 68ac5704aefbe4f54e86b47976e55141 3d2e10ca9a5db964dc398f7f89f37ee6 460f2b6d8f4dc18d565895440030d853 d9eaf9c7d58279dc9a6e43b878d5b335 8c6ab402ad29ff5c3b9dffcb3e0245d9 61bd590e917928f6b6ecbbb2e4d05900 dca7f88e151f196b8179909e06795c03 e0aec5757f7a907d647cd52f13caf24b bdf120e29b19f77b352526271bef32d2 f25da5eca572f01bd8d90babf3c5509a 9eef6307dc504b88392b84e3285cce39 e6f0811f15286120cedbd07f4cf21a81 d2c7b95823938833339bd6b570381585 6422d4a9c5b5b8f350361148ac946a05 e216667457193c729a6e43b878d5b335 bc92b144ec7029782e7c68eb5d1b9123 71dcfd1e5d1e261179febb7e11d3625 a726f95306ce6e1071616ead796bdece 9b60b20ea5fe6f002a2fdfabfb4182ed f12b45a38f012a78ac4f72bf08dc79a6 c78cbd0e53900a1ef34db3de24263f32 6859dc976c0528a831fec775e1dce6b3 8bb827904cd9acd36c1cd53dbc9f7b8e 82a2a1830758bacba389345bd31e2871 788548a68d7b46ec179febb7e11d3625 37700819bf2af266f64801ad2940cdd5 30d1974a29d95d8be8bfa4901aefcf8d 67636e7d15d082089412a62cd6b1bf5 64dbeac5250de2bfc5d50480246d2c40 521916cfab629ce0b6ed9420d56b12a9 eb110db9bdd0463e5b7003ff580606fa e218bb755f35da1bb4cdad9a5bf52dd5 e0df97dfc068e3664bf88973bd147a26 47d958a8a781144b132a08135eefe76d 240136d2ae7d2dec9fe69c7ccc27d2bf 1f7a516fdf80dcdc1006ed55bc1a3fc a361d82b2c510ca5208842e3d616cb23 aba51f26f4da1b44b785bc4e6e3fb739 e452189bb7bd6617ef7cbef6334698fc cbdf611a2146031823a665a253ac8cae 9378f4e9b3bc187e621c837076d6923a 7cbd504262e2d17ee91114a141d25a9d 359f69a030d69b3da8fcf7222eacb152 3b9c905771244df7b6ed9420d56b12a9 5bea928fa9b2255ca8cba409c4409ba9 cb55e0710b727bf62e36a049ed2b7f88 c235f2c6d1e8c80e7f436bc8bb8973a3 be96646f774c7d0e2a23d93958262ccc 420f3bb771e8e75ed878249aca2571f 4ed01f44e3e422dff64801ad2940cdd5 486f1238321ffd2825eb6beb311c44e1 3adbafd59a34d393eccd82bb51193a7f 77f5111d348bf051368d7e7849f8df62 69a46dafabb616191f9b3085a256a338 220a911e2e303865f64801ad2940cdd5 3764de22af04fd32a993db466b6d73d3 4d13a1b180422efc2d0334ee3a22c9fc 57575cb42132554af64801ad2940cdd5 4bf0b3df529d5093551df482db927edc 2b0a2bb1556c96b94f762cd8ae1b1c4b 54885d5beee4e76ab63969f9f8d6f075 21feae1212b07575f23c3116d040903f 6058d6701a0ca4e748e8405d6c51a908 6a868213168421c6f0985368fed75674 647e76622faa22b626b85a24a73a298a 1d4ff34cdf90d6f9aa2d78d1b8d0b45c 3b3eb57af5f995c268aa0dbe2db661e2 7f3446564689ac918f69a600441c970 5fed73635306ad9f14ac58bc87dcf2c2 5cd14216765393f18b96ae1a0a8b84ec 22acc443fd007fce6e80138ae17d7d07 4f8952ff04d33784f64801ad2940cdd5 3daca58825ce2ff6dc82b8fee1057b30 2628b6cfcf1a53465569af4484881d20 d18f2aeae4146464bd46d022fd7d80aa bc33901245943313d6d949577c389a84 40192d0e50b4d2c1f27a705edb2f9ba6 b7c11baa48456c23149f1a143758cddb 34ddff243ac3783521b85e5214b0d6a7 3948ac8a29ae42c761f027f2a55df6ea 776bd07271792d1b131c2ccc2e4397 421f45774389984bea6586b61968eac 69f1d9c3987d429e5e9e2656aff7dd5b 4d223d7a0e8162cabd46d022fd7d80aa 77fea5bd4008e5f09a6e43b878d5b335 73bcbc2d147291451e7b1f533ce75 5d2f0bdbd08be6fa3105bdad0abb9e24 16689e54c884aa01639c7058eaf33ae 4f3a64164fbe16f54c2c88971423d0be f771c5a1b9bbac21f4fb6842b3610149 3a82056ea319a442f64801ad2940cdd5 54711bb9127ddf7ef412783097373bdc 61330ac001ced49f64801ad2940cdd5 1ea8a685cdc71effb8494b55ada518dc 3ecea45bfa541b8e4a4dd08ffc16eb81 48e477d5904bb7bb1ad94eee1d03defc 1c26ecb4cd01759dc1006ed55bc1a3fc 4b4782c572fa8b11a20c7111a5d0d7fc a4391c7977d990142c20743f866e1a6 5f6b6f649b419cea71f4784575c35350 67979ab8dc522028788e57551eae0744 62ca091091053afd9a6e43b878d5b335 2f4133664133746cf64801ad2940cdd5 1f9b49f320eeb2f5d0226d12d397045 32b6448c0864812729348d14ca881f7d 538f0b5ee7c786e6d3b936925082270f 35131f7ea7256373879c08e5cc6e64bc 4653be69e215a1a4b378822897b79a81 33b8b6af08696fdea616caf97d73fa02 5963e4385e6e5c0925c10fa44a32fd7 879a8f69cd931fe9f64801ad2940cdd5 562a94308f7bf09b8aa0062ef5480a6d 743670f7f3a8042e6ad6a28101cd3ecd 844d36a369cdeed3ac4f72bf08dc79a6 162ed8d0d989f3acc1ccec171a275967 1628b65a9f3cd7c05e9e2656aff7dd5b 5678fc24603d25cb74745e8fbb11e3df 4d2d87e61a18760ff64801ad2940cdd5 2c5bdd9a08122f9e2023ec956848b741 6a3028e1c7205b22ad6a38fcc21e6e9e 3bad4bd2c944d78391d77854c55fb8fc 3c52f7f687ce7efe3df325aac2f73830 445404a75a0ba2ab1fc43d5b32fa230f 61fe19a62a786c96950d2b3eef73a70e 6615bb23e68159c193d4024985440d4c 273c9c0bd43443c3b4f192eea1889928 8b594934c14ac5db66cf1b4a8fc3914e 35f43f566f2f14651713426437a9f7cd 1a6ad7a24bb89733f412783097373bdc 16868a30ebe634053dc22b596edc161e 24d4c063f7a361bacbc6ff5546f4ec42 34a89777594d3a61b2440702f5566974 4470a28f2dd0cca9d9fba06863881b8d 68f26c36ba5340ede58ca160a93fe29b a2c5e769f19c7e97b7d7aa9b9ebcccb0 150fd58e55111034761c6d3861a25da2 5cbe5be753b5c7faf389d19fad321c37 5c10e37453733ddb46d83d16be057f3e 5a37bc42a52130a18f52dc705c3109b9 22d0561f06900e165140beb2199de2af 4a21d3920b11cdbf1592d7a04a86fa53 4bd5f77521e76e6a2e690fa6dfd5d610 37f2f187a1582704a29fef5d2b2f3d7 a273a18b004c209c90b1d6deb98feec6 1cfada8b8ad2428fcabcecce1c335df1 3b31e28ac1eb36fe1eb4be4ad34a6dbd 65cde29553fe7d763a63e8ba97b45ddc 2d9a7863dcfb5663d208f79049825a82 c00d38c09ac5e6b8405970680284869 aa780af4d9cc83c3669c7dec71cfc5b0 24e79ed92be932e19bfb78d2af523ae 372c95e7685363ca18e0889038e4fb6 33d955301966e4215ebedace13b486c4 556363167281c6e486ecff2582325794 3f3cd5461f7ec6edfa8a0c9a1860ff01 3636483aff4b7977b7d7aa9b9ebcccb0 75e9e2d6970f5ee71927c29d6faf370a 3ee352a759364cdfbd46d022fd7d80aa 4d84619c0da53326e90916c8815b5c43 59bbe6a07a5a68d5d96b332cac4e78f7 66e0fbcab927f21a875d37e2f5bce5e8 2c1f66380af03e4c5d1df55cbe0874aa 740e79be16a92efbf1f2e10bfa81e2b 3b86245a5cd388ccf12b4513d8540d7c 31d40e6e24511386d6d949577c389a84 457c12e05d0f5d15762c3bd1a2b3f377 88af6c30339602c2c87c199a35aa58d6 b3bfc198214215397b5fa2b5a4fdb00c 7a794db8180858fe90916c8815b5c43 d6c1cb09e27c3fbce8b8a0b16211ba77 a839884fba87173ce25031ee39d82b94 ffce3c994052ffea339b6c8cc24f619d 6da4590bf9d7bb9698b8c800ae001b66 7d928af41b7dd26e1d0f8853f6d023e3 a34a6611fd6b2451690ce339b831e7e2 b80131dacfa19f77337e02e3502c7536 cef4d41c07613b658168857903a9552b 38edc8fad5a5c0f0ac4f72bf08dc79a6 adee8f091d7cc677508af777f11ed409 8e2e03ed888e0eace4f2488af2c37f8d debd942c5fcdc9c84c2c88971423d0be 5d7c2f1b6ed0d02aa4684be4f9cb3c1d a26639a06e2ae1ede7d756565593b850 af188ff4bc1ed0693faf1ff99e423b8 9159a77918eb86cf408508ea36928b08 4d139f21350f64d2425a06bba46b20dd cc113b6e9d4fbeb23df325aac2f73830 794fe891e20800d37bbc9fbc6d1fd31d 96430e8f2174428ecbc790a63192d2ab ce2c4502b06c3c356abde8e1529c422f d9a92927192e9755702736225b32125 41acaa4d19dbdca75ad6eb90e75c835d 95e589163afd0a7a609e2d916fa0da27 5fc63354b0156d113136bac5fdb5050a 80da27a121142718e15a23e1c3d8f46d 61159c0458d41ac8e341b5704aa568bd f39e0412290bcc714917e69390d054d0 dae96d5eb7dd6fcd2863c6a2c8157d17 8383c4706c60ea2fc1006ed55bc1a3fc 687ebd7d2b1e1475459cbe66a12329e7 775f06502261575c26b390daf74a4b00 1eb1d7d471f3c4c0634efb708169415 de1e70fefcabfb6f79be89de816ea2e6 27317e8e93190374780ee0648cf79a36 30b514b24624da4fc1ccec171a275967 d405b9e5f942fed5efe5d5ae25ee424e a1f740e10229b43a82401bb74114a99 f680ee392bad2dca29348d14ca881f7d fc76d0a9da7cde0bef5ebf5f74916182 e8ed294534ba18df4a29fef5d2b2f3d7 5cd68dfe309e1f8317e5bbee411fa5d0 ec4a2a47f601397ea01e5c9f53f20fd4 655dc5a5376e9c8152c3271e911ffe19 b5cdecafe353e18ac1006ed55bc1a3fc 4ae3b41081645ca3e70b97b9b33fd6d6 b7b94613ab6076a2a959294e5fb80cf8 9f25e4e0aa598c7fabda204c62559ac3 22dd4b6a60e20112185b376619557c95 de9564aeaa585a6ccbc790a63192d2ab c3600f9ede30352a663e90eaf6b4ca52 6271b0016c5fb3bd59d2e83012533b47 657439efe649f57f47f8deec944763f7 c8db76f18f56c1344c2c88971423d0be 536e1640461854957a86454b5377c47f a9b808a446c498f475df24d58e852c90 d3198154076f49a86f0778e65d2e88ad 76851aaf721dcb63509012911cf74f29 f8fb835bdc55ffffdc82b8fee1057b30 46dcd7b89d67cc41a1398b9e7da33687 3a3403fb14bdb46823e79e99b949a341 40a828b10b1b092bd208f79049825a82 9f90f3298d7b6c6f938204d34a891739 9513fcab860b113795ff232cd38210b4 4dfe2199fdd333d09837a3d08a6a1966 947ac452f850e284082bf69673a94f e9ddadf335adac52e025e00c738da634 9695d544e326baeaebc75cd68927f0b5 c91e7b5681d8aeadb81009266e6622c4 44dece8f8529374ee2199ec015f35ba2 959044f10e27b89ee664ce1de3ddc8b4 ddd6c2a51c25036c8a43cd65b179a1ff 33c5c1919425791de038c01d73511063 f8d8b590a0dcd399718ac2a6ddb54499 4508864390ae424d663e50e76f163b3 51f51906f12681a1dc82b8fee1057b30 d617ffca7890b33eeb9d949e4b90f4af 65468fa9ca2f3e9e642566c028df23cd 2d0945065aa2a427eec7473defebb526 8675974f9f6ec91ceb3b5fc90bde085d b87cb85be0d8eedb44bf3710e93f8cf7 89bc3fa2ecf1425f6c32d954b1c7f41e f485dcbd466f217286774cad40dd456a c624907ad60cb9348a69ce464571d8bc c9584d90a1da19f723a665a253ac8cae bd298d2907400418df8fc3a07f996293 337658edebb67c301ce9f50324082ee4 ec9bfc810a015c3a446cb1ee5d43f75f a3e15e215144dda0a03ebab0e8b8f7a0 2c16ac865f06542381598514fe928082 a430ba73d3ee2c0fca9f0727e23831d9 7932eddb8032b6f1e4d2773f0358b43b 2d43bb802a8faf0bce15d210eb57e565 fbee89bee5338798d4837a4534bf020b a287dc5d0e28d3d3325212819caa597d 876127a17b7285b3c1fbdb352261d023 697b269a890237fe15796a932d10290d 84b84d39581a6766925c10fa44a32fd7 a9cdbca070047fe61e9dc95dd6a9f6 ca45f5d7efba158ca35e371359a547 e7fed0e0dbd871ce35ae6d8873b772f2 7b39d993f6934a96b08e958a32ef3184 f2975fde05d9d63eeea0c0561850e04e 26830050c44b5a8f9cf081e9d8a0b57f 764894168678b36efc1619e612ccfb0b e53547a01129eef87eda1e12bd28fb7 4a559ef6547b685d8aed56c1a220a07d b11c03976f121b3537007500db3b770e 584e076b6cee78addc3757fd1f4189a9 a799568755357be8a07b3b853565360b 8d148580eda6994c2a8810071030bd25 bc86e4461bd4c955a34fb3db6a11a22d efc2f4eb92871bb2b7a641946dd77b16 5eff54a76d8ef89d7e1c97634acf0214 8c344cf05ad1bcb7709f5d258bc9a906 92306925325c9e8a3f3cc56bc9bfcde3 b70b049cacaee0f210af2c858faa12b9 5024341275a685bdecff69852469d7e3 172764bea108bbcceae5a783c313eb36 4c5b8babafbb7b5f937ae00fead8910d 28402efe2e3435d124fbfb66ea1f14f7 47a40ce42bb9077579dc7d843e2be5ed 947a78a898b6aa81f19a675dcc5ca632 1f672d2fd5e3f4e78026abe712c1ab05 87d764f79c2f3af24c2c88971423d0be b46244d196a7f66635ae67400a94a6fe dbdca81a0f9079096d511e9563e4bbe7 e06d3e6c1fb4b208cb7c15fd62c3982e 2e961e38a039f1bc67711f7c205c5b63 23fb92d8cc0f8ac4def547874c3364e3 db73a3c857949f469a6e43b878d5b335 af6b292c7857c78abb0e5c1799dab683 8615fe6e2a959ac1efe5f291bc2f5fd0 f087be2dec869154acb63dc32be3cb01 9a878c5f0bfbd964d470a0056f762381 9a0f4dd21a4ca19bf1cb19f636b1c2bd 8d2903595298549959bf29282ea7962d 57b5666dfe2607ea1025c08d338b6d83 1cc3ebbadfe69e8011f5789deac2dcac f47c5c54c4e49f62e0a768dae1badf69 f97a48680d63a78a9751e413d5325f7d af71e72822241808a8ab13c300600dba 6a8b9f82f1de022a9ea7c189c9a53081 62ebb16b6b4ffd74df8fc3a07f996293 1b0b1d2cb9f9d5c0575bd26acccafabd ecb0d8d1c592bcc11bee3078a673c2ae 9595693b6c0f5157651e8da9cf70afea a19a5a459d234919c1ccec171a275967 ce337df2f75801eeb07412c80bd835 2a3d485b0214d6a182389daa2190d234 918b46dfb239ee044a8d8b0dca1fd34 d1b1c13fdec4d69ccfd264a25791a5e1 93c38745ac281f6b8aeaf14658928f6 910bd9a7d9ac4738d5c4dc314e25b351 e88ce288726375ff87bf26680c510802 6a47f4d30d54771e8782c935066e938 a675480b02f939424131d9ef9081c198 f592e88114a240cc61a8d3163a0a75a7 8cd5191c587341029aa2a8cabf259b68 17ac3afd54143b797172a40a4ca640fe f97fa7329969bcd0ebf1d9fd44798b9b 6da4668de7ccdd0d4d10a13d437fced6 c5143d3be7f1d0eb27745e9b6b461e93 f58a26c915e7a1dceae7a0fa074b4a2a 8a050edf3d971a617b17a3f88bbfbb61 5a815646537e3b39f51612c193433f02 d8e8540acddacf98c1006ed55bc1a3fc fcd7a8834a7f26f15069db69b8c1c70 d7f3d0503ee4ee1cc34b900bb2492e cdd4dc06cea48b5faae529ab4a75c4af 72e1cdcb882b6993c1006ed55bc1a3fc 8df8e2580639b093c1006ed55bc1a3fc ec879d7360572a5db65bd29086fc2a67 98480ee19ba4dc93ef5f09964a6a1f97 e430f24c3125997339cb1b92881e8e76 f894972de285088da0896c4491cb3db6 cc9b7118034278fcb4cdad9a5bf52dd5 a660b01d17f929f54e61a0c2eaaabe87 1856da25a85402ce63e266a803d9270 23f911351a5801aa46555ee25941a22e 4d50ff789e84e70e54eefcdc602d4520 c8dcaeda94da8da962b600da24e0965 a211208ba6b752b1e75e6a02e772bcee a231f85d38f2b52154eefcdc602d4520 893c03e02dd0e1ad7d64cad20089f027 a00ed5d078c6244c37678474be485ca c57409c95dd4bafba5a118bd15e6e34f 3e4b522e38ef9a781b5928ecfc4b0684 520382dade7695c4906bca4ffd4af837 e1a8e2f93abfc7d590baeef8ba5b93e5 a777672f17d3641f1aa9d8d95b6740cc 9d230551c65af968b207f792ce9b3f25 19f211f1dec98bbb82ea21d84574e1ef 617259db5ef0b9f8bc0909d98a1ff2b4 f4818cd7c0701fbe752556d244bfb42b 602a71a251857294959a8a7d5a8a5077 f405858991b190173af8c56bd4352c9 10eeb119fd5508e0d6d949577c389a84 dc6a2bdc4c3e630a43bc71474ad05fbf 8406b2372f6e1478d62bfd1579f9a1c2 30d8f7fe0da9d5d0c164bdcf3c9661ee 439c0ad637f11af762b600da24e0965 437de410d7c23cbb29b33c3ec58287c9 f55390ed02c0b2b36aa3bf023a2b42a5 26a29227d6326e20e63e266a803d9270 57e135ae4fc03f2e6d06e36417078f 56ec4638067cfccd3dd4ea7aa5ac3a5a dd48aa92170bdde04c3a35cee92bb95b a8c4288e4027e6a319ba010ddb4974fe f1a4a370f9e50890686c25eb09ee7de5 820c903c55d7a1908f0d19519a0ef908 414f3305033ad38934f276985b6d695 25668f59015af0de56a7f2952cdf4b81 2599e47b04ea7a32d872dc56d048665c 762e29f11597581d62b600da24e0965 852e1b84dfa1f7e8e075f0bda7acfbe2 41aafedd84a6fa7490baeef8ba5b93e5 993599a55057f963ae7c0d0e12bd33da 325f0b5ace799075bc0909d98a1ff2b4 a4cbb0489a3a680eca8607f540cc62ba 73fb8c3c4530ed4bbf3143b1cb6076a d05cdbdddb68865d2dcd3faa5a0a5f24 12c82319147385e7ef0e1705c5c9e361 45c963d64b8ef3de37678474be485ca 8a674703723db7a390baeef8ba5b93e5 4457652c2853e0bea8cba409c4409ba9 8af730a8f082af9167b9bb226efd81df 52e27aecdd55c1bf5b03388497f76a9e bd46cedafa0568b070d98a97e17b4da3 afa83b431ffe73a454eefcdc602d4520 a097428376f298abd872dc56d048665c a20490d0ffcd3be6e0d6812cdcf8799b b4de0e888e562f40873ec74c119307b9 5c3e308093e9f287f019a51d1a3b2e07 b64f57298cf3e4328b96ae1a0a8b84ec b253d5dd187679c74a9ee9951c24bdb0 c01746b173e0870b3a4cd082c6787017 b3ac8c2c48af1c07ca8607f540cc62ba b3323a51c2c1af9937678474be485ca 5676893c90ec0f6dab81b7399bdbb6e2 ab9e9045e6c7bc6537678474be485ca 2e468cc6afe2da70bc0909d98a1ff2b4 70bb20cf86fe6afe76b85a01edd4a109 29b92db18649b64e959a8a7d5a8a5077 fc9b408aee84f46d70c4138179d9ed97 77dfd8d4ee3c54c3e99ea3c41458bc01 9052a53f45d5f8487d64cad20089f027 1e8adc1e176bc68571d03b466c72ce41 97c12e6155fdf8ca90baeef8ba5b93e5 525446bc8f55e629151f2df200a24ac f70e5f2568e927147d755f57c8fea340 2018b7614e77d726c1ccec171a275967 718b6f112f70146c62b600da24e0965 b7b743834a6d78c2225a23c790f08fdd a5ca77bfabfad028b56059027b9b30d2 62ebe2dd7bceccd097f28f82dd9c77a2 a611fb88b28c3f2ec231d70e1e0cc567 cb7c32bd7266daef37f38dedb2f1219 34ffc5e29472358cae81a3776126c079 72985b83dd9c31955dcafa83e2819ac7 30b9882d1d75be3537678474be485ca 93314e5d740a48049a6e43b878d5b335 fa7cf8d11d1340ff9a6e43b878d5b335 bc3b68407bba00d92756c2c914ecfebf a931895438ae4502a9f468923d4ea2fd 857350d3e780366537678474be485ca 7584ab1da1ae2778300ca77569ad3884 bb9ba5deec9e2a5fca8607f540cc62ba a2661597dd2e8a2eb87697d3904b168b 5739574537212a72b3f2b01de37c0b29 68d3c213b16ee2a6b5f20f5912ee034d e09c32b947e33f619ba010ddb4974fe 53789eb9419da78c19bf80b167cee3a3 aafb38ca8d8f27de350ef9fb5390c42a e0e0d713c8969b52ca8607f540cc62ba 776c423005dbb55d354aed6327ff24db d0ab3ed71a4ac9319d1eb836604648db 7f895411162624e92023ec956848b741 59b851010f0aef7422b13c48c34706de f986604528abe35554eefcdc602d4520 bbc645e0c0449532b3c7301213dfb7 ea29b3af190b00367d3b11085e75c7ad 3fba2f3ea21abb4f8c1b0ccac3d04f1 dadf41579d385b0aacf77e718d93f3e1 cf71f5442c4120db37678474be485ca 732ff6155a096fb0151f2df200a24ac 2cd9e40d1ccb1917228c3c30d65cabe0 35fcf4cfd91d7cb3e1211756a8e887aa e51b620853f2cc0137678474be485ca d3b9114df1d8a3388e415c6cf89025f0 8259a1fdcb9bca7526360e1e29a956c7 a4d75675f0f871c96466a07aedd68378 4e66465abe540ee326ccedfb0470de8f 3fe8243b660d5e8fbc0909d98a1ff2b4 ec4f0bfd77978a1cca8607f540cc62ba 92e445da194d65873dc5bf61ec5f5588 6a54d956a8adb2d0e691625fb79e2c2 35c8abfbabb0d8ea66b0983c7366318e 1d96d1c7cfb1085e61f1ef59130c405d cf310fe73705eb85a099666f6cac75b0 6812a13a1a99f0da2f20ac99f64093d dd949574a91719eb7ab25516d117381a 44e08106211ff2596ed8c57a1980bb26 b74611a3b3b3ac72ca8607f540cc62ba 2c3ba3f35c5d2b0ce77e43d0a92bdc06 e4e98f8654d29536dc858dada15498d2 46ae88cad17edca7ae7c0d0e12bd33da 8d84a34d5aac3bffc6f6da58b133bae0 e70bd95ab764bc1b3465be15e1aa6a0c 350d4b260bb18470f77959a47a1c16a8 53958f924a50069090baeef8ba5b93e5 55cdb0891d7a05fb2217d56276f279c db758090dd739ee9ca68a659ecae961c ca4443e9a37c4f0b16ade7bb280a6832 da3ed25d281fc4c065fc5f76098aceb0 828176e6eaee542ceb532c8487004b3c c7df0d3a924147a49a6e43b878d5b335 1ba18539803c12aae75e6a02e772bcee deb196087108dfbdbe4df22b15a36e0b 69ed3801f4f6f4d1e1873a3963e0d14 1e40d41905a9be766ed8c57a1980bb26 e5fe5ed2cdc8b11d62b600da24e0965 db628662ba1cac04b627754c4259e985 8c851663113c3f6790baeef8ba5b93e5 125417c3fa9bc1b130f57e42c77d3894 813927b25c3a0c6dff227f13dbef5a8d 543412ccea0db2f8f37f38dedb2f1219 5a5e4590c54a70c6322c168d7a7c32f4 b3d034788411421019ba010ddb4974fe c9f91acaeea4136f2863c6a2c8157d17 9ac7fb5963ae673f7d64cad20089f027 e45d71c7afb3cb1c67629418bd553f95 8855c5531c093275146f724acb952fba 413a85d9cc7f19a8b6c3e7b944b34fa 649a8f44ccc86f4843513dd632697ccb aaefbfb4765df684cf9f662004cc77d8 54066a3cdb79ac8fa5cbab5aded19a14 9912e7eaab960bf0e3639a60ffa58b1e 18d123aaef6b911954eefcdc602d4520 ab2f47cda3622573c231d70e1e0cc567 86099a00dd63ac05aac413eef609e99b 1caa02b831cccff090baeef8ba5b93e5 9e75560008080a8529348d14ca881f7d 9a04c7aa6e1655fc90baeef8ba5b93e5 8adc6a0f45a1ef2e71d03b466c72ce41 d3f93b6da62fae46a98ae8c73b190485 d38922599bc74f6da30fd8ce49679098 afd02e6d4cf0a342c1ccec171a275967 c3733e626c07b9ff26360e1e29a956c7 333278f95a359498e768735f27170bc4 cda1206f9460ece9868255f726935f63 19b6112991fb8e33f3f2af1b43965204 7030044b49828f08b96ae1a0a8b84ec 52e7f93d592622a9615ba7bf3620290d 57a57f639a3e636d914c075742032f6 e557af9d5aa40f424d210d9468aedaf2 a3c928995562fca8ca8607f540cc62ba c93d0663035962b01b1cc145b0144991 371a609f050b4ed3f6497dc58a9a6f8a 3427fa8e6ea160f1fd138baf628cf158 9a58779da170911a7a571401e6605fc2 f34a66147493f0633d5158710d6fb8 8bfcf5618f2d169c9a6e43b878d5b335 b10ab8efa0aed59e90baeef8ba5b93e5 be92048655bc5b001d4c061b53288f62 3badd7765618bd66a532a2f6f060af39 4fb69651d04e010554eefcdc602d4520 3c80dde1fb615ff5ca8607f540cc62ba 84a167f743ec4f4de6f558e7f4a68d3 720d70482d13696277fd7318510b8627 e5abd988cb34ed9cdc82b8fee1057b30 62aecdd1266b27935fc197bbabcd5bd 4fbdfec0f9ee078dc1ccec171a275967 775120d01da7a7cc666b8bccf7d1f46a 856a4d86ea105d97be13ce34aa7c0c1c dcb5bded8772135b4295343ee7255799 729aa8cba8e1398a43afdb9c81ff2967 e6908f525ab8e6823a562128d0cdc8f1 1e7dbf0057e067586e88b250ea6544d0 ee461612837ce39eedd03f781ec3ebcf f58b4ed02fc2fd1d4e7648015fd29a1c 29c0b705d6368b6ef0483511b875f0d2 ed0a9a32a8e35f21ca8607f540cc62ba 845d7718879d26f9a45fa73059b12336 8f4e31ee9912f54e77fd7318510b8627 326e859d86a8078427eb9e7911a17418 b174db77afdcdd055b2a16b1d9c48e6b 24cc8816b384723510a7b8c5fa89c603 aad69c419b27d6744d8e7d3c15c98c3b 870dc1667e957672c66e7238ddb322f4 e9b29777e840e1fb63737f7c5d9fc39b a1ce38065b93520335fc197bbabcd5bd 78feacec03272b28854fbae23376cbfe 4e1dfdfdd417479f49e1f7e01fe2ed1 ac026df0c0add322f37f38dedb2f1219 208114e3aafd381ef27c5ff0af8b0e80 ecd19c1f74064962c6603e997b54421a 79e06d1fe2e217b2cf67c0b63878e138 93da50dbee3d1f78a7d0c1e4eb8db7dc e805624480f632ebcc14f1e6f4f4f49b 7f837b389e885af471b4c018296f73c7 4982bea0a007c19593b2f224b3acb952 e533a1a758a1752b187ea8c086d9f2c c1b9934ddbf4f29e77fd7318510b8627 898b4899114d9bb890baeef8ba5b93e5 a991428cd388fa7278afdab27190395e 541c19fe42806c4d26360e1e29a956c7 ae837be3456bd54f71d03b466c72ce41 2a966a7e0b07a5239a6e43b878d5b335 341f5b3c74970a618d0dbc7502fb16f2 eb5baf7bb88c1499873ec74c119307b9 46c311894026d9a762b600da24e0965 33c6568fd4de5aaf1e623da3c4e40c05 52cd5876945106d154eefcdc602d4520 5d81abbccc11935b4d4cb1c2a5e48b7a 28448469f5bce47b4ddd8a480b571bd7 7b4b931c5b6f8167295338c0e33a082c e6236c5ec784a48111dcece1819895c0 791af615e17374d38eeaefe98ae26867 10c7cdfdffe2243b88a89a28f04ce622 62ea17b5f0d46e2288a89a28f04ce622 951358ab93e7380c1ccec171a275967 b4f41b2faeb528fbf37f38dedb2f1219 e6ed2c677e158daa1059f490634fcf62 ab06b28f95e4c2caca8607f540cc62ba c3a03137955f65c5cf67c0b63878e138 b3fbc7a0b0e3a821fd279055f27928f7 5e44d38e88458ab1e1873a3963e0d14 88c4ef9645eee90866876073bf7a9ab0 bcaf04bfae3afc1f4d48ad32fb72c8ce c878cac87819f01490baeef8ba5b93e5 b97b9cde30c23b4d71d03b466c72ce41 d2faf50d6d88dd0690baeef8ba5b93e5 cc1e143cf7da051a6a6dc7e2bbcd098 fb48754430b17846e3375a6b96a1d765 5e124107cb94b90218ad244e2cb2c6cb 4e2769ec84c0bd0454eefcdc602d4520 e594754cc2a264d63da2ae40e7681e7e 157936971ef9b6bb858b20d410ebdb99 aad1733e7bc7152bcc14f1e6f4f4f49b 9f75309b9744f1b54eefcdc602d4520 967b1afce4221816cf67c0b63878e138 d1e78f6226a9ac76fb2fba771d8219ff 750000e25d4078f64e61a0c2eaaabe87 965d457720def9a490b1d6deb98feec6 4937396b74bc16eaf781741e31f0df4 6e5810d6fc96e4a7db73445864b72015 e8bd07a978ac82baef40e4c1c2686cd3 f9cd8293c30f1aaab87697d3904b168b d1b28579fde95f19e1873a3963e0d14 b98a46b40d030e8a26360e1e29a956c7 ded529516b4362c9f019a51d1a3b2e07 7f4a0b23f1256c879a6e43b878d5b335 2bfd3dc8b0630de9e1873a3963e0d14 c6009ba1bf947303ca8607f540cc62ba aabbf242aabd1af7766c6046535346e7 4782920ddfdeef4ef6bd63e31c40dc1 fdb107ea7a600f5fe3f3aec01b086ba d2daef39d1cb8d027089ddd41f4af842 f1df46c588524ee76aa3bf023a2b42a5 5d1594f792f3641583a1f09b027e5462 575b8ec48c550f456252573e97057236 d6749fad86648a9719ba010ddb4974fe 4515ac65d312fdbdb63361ca9ddfc9ae 5f7f0545eba4034965e692ae5160ef b9f486be9d0160349a6e43b878d5b335 6df2cf3685456b4c2e78e1154b9a2647 fb01f6b428d094ad3ec83bd6bef75c92 a42bfdd67b3fc9926b2f6b824c9990c0 795e0051d9ce7dfe384d4ad42dbd0045 52c9b1a9f8d3cbcb9a6e43b878d5b335 3b9241e85d07de6a8b6c3e7b944b34fa 53f0e2f6671346ae5ff3feb917a6004b aafbf69ed97274cd462a084c3c6d8557 9712035b78970ca71e623da3c4e40c05 a4f5ce5926123e472e78e1154b9a2647 5c9e30bf0691c04d4c3a35cee92bb95b d9d39f688eb9ba58b3f2b01de37c0b29 8615e879f5d72ed5860c8fc9227db68d 91a00801903a1f64bc0909d98a1ff2b4 455bcf19112ebab52e78e1154b9a2647 300a0c78e402decd7e67bd3e242c324 3c9d577c78dcc3904c3a35cee92bb95b 8938ab05c9dd830cb422638f4c34a0ac ccdec989c4ca289d9a6e43b878d5b335 9e06044df59e7f9f953041d9e16fa262 3039adb37c192644f8c6d04d97f8cf7 365747560fafc7e847b5c8181a9fe9a3 a61a59a4c48154db37678474be485ca 85738a291d67c649f019a51d1a3b2e07 ef0d51f895cee0e04485f82d9fa383bf 9759b89377e9d3f454eefcdc602d4520 d1119217281b8475fe755e3418b63110 db8ee29417ddae1bae6908c1ddfd8734 ba37c8ef604b675be1873a3963e0d14 9a9f615801c2dfff4d210d9468aedaf2 4992d4c425b3cb426e8204b21fc3574b 5aca1a2ca9143638b129901f80d24b7b 97a6bb84720f250122df1994a149e700 3923b98b26a3c7865f50257ecdfa5c7 6cf2f9112ffae7c3be54b70092ca256 7336bffce72ea58b90baeef8ba5b93e5 9cda097e69ef82beace5721ccacba16 bed589371c324e896aa3bf023a2b42a5 b4b1b113173a6ec6bbf3143b1cb6076a 47006ce926cd5519b3f2b01de37c0b29 c3408a7be501f09070d98a97e17b4da3 d4ed7de4aa7799f066cf1b4a8fc3914e e1fbbf2ea1989b49fb2ad20449a93a60 63f3edb47c67caa29a6e43b878d5b335 6e66c96067f3c631ce58b9b5a8f9e3b2 6dead775080763b94c3a35cee92bb95b 20b6bc7d69902db4d3ccdbb72feef61f 74b0d11834cd8ec258a4fbb6b625be1 aecd996b2ec3832771d03b466c72ce41 33c8abb3658f2d4219e06ee1b2e7b1b4 fc0dbd045c9391ce4a29fef5d2b2f3d7 dfa310706fad49d873ec74c119307b9 bb26678e5faaed16300ca77569ad3884 830f3e14a8882ea0f4fb6842b3610149 87ac28e0b2342ac19a6e43b878d5b335 ad2bebd9c3004b2e151f2df200a24ac 7488f87b1e08bbabd00d52e62bf14ee9 71a96b4e134ceaacbfacbd9a73055b6e ed1a5c9fac829d17a6766282ea8c438f 31d5be3944350915efde2c2b27dc1843 17e66cd463ff0de126360e1e29a956c7 483207a72a39129771d03b466c72ce41 e41bbd12896cdc724d210d9468aedaf2 7db10020f24a3232abf03860b8d62488 1560968d05cd8887cc14f1e6f4f4f49b c6342ca5cf5c445cbd46d022fd7d80aa 1ed9876ed48c145d663e90eaf6b4ca52 47331e4c26dd1dbc66cf1b4a8fc3914e c854bf983f2404bc15d4d2fdca08573e e88e090caa1ccc5d187bd96066d7269e 2269715ca42c218fe3921ab5df3d2707 7bc46908d079551eed02ab0379740cae f258c40371334a4e90b1d6deb98feec6 149702d4e275568c18b14db3b83de9ff c7ae9f9e3f95ce76adecb6fc00604132 bad8f0b4602df33fbe4274edc10c1c8e 408af35642971375be13ce34aa7c0c1c 654a5b26c59c12e5d2c4ce8118ff5045 d6edd8b0801a02baf7571913c73c0c78 d80486b768083cd6ba0d990ae229b477 c48af98d47f76002deed0e4a55ad5dd6 399449fd9e6149de62b600da24e0965 e74b8862468d887c6d9b5a419d9131 78bd38a7282a73f8b184ba15dd506a2d c2ea74539ffe96f8be4274edc10c1c8e 45bd6c0723e555d4ba2821676102936 fbe788465e564e46bc0909d98a1ff2b4 e66692f2ec8ea898874f1daffc45b57c 15ce56898a636466afc526de59117398 8c622c7e0b15a0243ec67cba9d24f2c9 9267c510247327a2297d46b42718e32f 222c0d99446148babe4274edc10c1c8e 4cb164f1fce7849762b600da24e0965 2fb78c8d2f27598826360e1e29a956c7 c9ad8451915ebe6bbd46d022fd7d80aa 76f142e62adc0f2ae768735f27170bc4 46c07706f1bd10fcf9cf2c77edbc841c b2509e9f52a19466c1006ed55bc1a3fc bf54b050d092d1e35b5e900e37653d26 97bd6259fd4dd69a90baeef8ba5b93e5 6ad619600049376a4aa57d4816c68a3 47bb2e8a53331a2f3554ccf8c30febe7 15442b53631b7e88232438a710acf1da f6373cc88634e8ddaf781741e31f0df4 d532a5abb756ebebcc14f1e6f4f4f49b df7313e87ef2905d37678474be485ca 78789e98f905fcdd9107f68a9cb8e3c f067fb1b12badf2b732bda87f2718525 38efd4e4060d8b4ec231d70e1e0cc567 18666bda4244d22ca7aff2c3136e8e59 186ca7892ed6de2adb22b838c125a50b 7a95a024f5616009ab21e26e992b2c94 6615d159d2e250376969ef231a00a44b 6b84749eaca0e657f37f38dedb2f1219 d1e3bba19cb9447dcf6c095014f481a4 a0095db392a8b520884a857d19f7439f dc28756381ac019ac2912ef1a1302821 14453b29e139d81f6d07c55cf995503e 60232dad38a6ec709a6e43b878d5b335 8f4416cb67c3807bcf155ddc002a8f77 bb8c3e64da2788b98057ec2068d8fa1 edb916c2cdc2d3b9ce2cec85ea6ae00d cc14512d5fe6e8489a6e43b878d5b335 20f2a121d9dbbf9e98494085d68ad6a0 14282db0ca4238429a6e43b878d5b335 3fc25f2cd192f7d262b600da24e0965 c1fd4eb9f911851f4352ea917328a5b 71ad36bd32ad44a0c503a3776fc280fe 7c4e1ab21e8d6549a46ec065c01b381 723921d0060203a344d33ea02fa0f619 7713f76f4ef99f19954990879891d2b 228478022f30a2bef1f87579d4dedbb4 3fa6a05b62169e0d2350d07acbcc057a ddc14c7e0a228663796843908eee8f7d 6adda4af6b2b7bf9f315217de00e37bb f27927b066b0696d1f95d2b537942ba5 bb38d29611ba34572af1006be0f51835 fbd800d43c5f0d74250cb4f7fcd9ec03 dc03e743739c4f87c27f2d9f006d69eb 7089929d7a778403e91b0867f5d9629f c7b2f5b125bc41056d07c55cf995503e 194098fb0aefc4a0666bd6da67d3abc2 d48064100e793155f56a7ca118af1bd1 d1d308692cb4b6059a6e43b878d5b335 ed35478403ae873943cf31d2bcc8f4 121e9fceb90440efed79d3bd546890bd dfdcc024d1043c73d5dc0e7cb9b4e7b6 4ec2aff45e8c495a667f1f26ed74631c 3fc5fb97d23b6bf111f78b196c636566 5afdfdbb4161ce0a7456183f198fd1e9 266ba93989037e6d48e8405d6c51a908 51c0b132806335051592a2f89cfd307e 1659db64bbf46bcdc1955ee4b5680e91 5d5aefde5935fc9eaa5d0ddd6a2781ea a1e5e9561b501f2a19e06ee1b2e7b1b4 e2a6bed8b8920586c7a2c209f9742f15 de7cc3442b1775d46559a92f80e3672e bb244dba6323f80a126bd036879e7101 e559a626d0ef8b4f982014dd9aabdeeb 3c98bc293d33375a9a6e43b878d5b335 9facc516914dcfee6c32d954b1c7f41e 228fcd24cea34febc0909d98a1ff2b4 487c60f57489506d5d515fd83cfe3891 739c8cadb1db6db39a6e43b878d5b335 46c52edc6107d1a3505ae8d422ba349d 6dd16a06f0e9a286bfc945be58e73eac 6ca40d19374c9d735c5f85af1b625f04 7edf83742bece6be7cc4b32c704a58d2 6e7bc6995080fe6542ca265836030911 79a62c385180cc51da67790f4274f014 db567b8afbaaa95060a762246a709d46 48836d07312f930223e2b52fb0c019e0 e1be99a614c85c3e2016648502c798bf 395cb914880adc105b50b4451364cc2c 688930b9d0e06ead9a6e43b878d5b335 f50eba69a3be1a1e536cfc00d8c31ac5 422700fbef58a0ee1fd12d3807585791 515b1b36d9f7721a903a13c314c66013 da7354a90e6596e6139336f03eb955d2 2ebfd5fec5c0bc85a52a419d042ca7b5 f0137228f926dd464f8327dbe71ce85c 3b529633bdd49dc1e5dbe91fa3801c4c fb68077d405c233ef879f4163a3ec7b 7201f2a0f410dd0ea79efb489d71d723 7191b4709d5142a1f86c2bd4e090c60d d581b2e10f8bc6aecc1d733a19631a1 95240a3e33d607bd88803e631d9fa455 d438a4539d8068fd44601c64497858af adad9536c34c673862b600da24e0965 23d5975dd63000eb4e901b3386f76d65 7a3392340af9ec7b62b600da24e0965 130d3f27fb083eebc0909d98a1ff2b4 697b4a3b6a380443c503a3776fc280fe 284e6431669d46fd44797ce00623b3fd a28b92f0ed237d6d13256b8319a93100 fbebcde2d8fbf81ee7cf320ab5761d45 157bb84c08754307dff9b4d1071b12d7 dc3bfc83bc2d1db643afdb9c81ff2967 45251b4f76c9a840139336f03eb955d2 960d086565fd36def0a9e4c23bc75c0 caab31ecfe961086bc0909d98a1ff2b4 297316f1c8a6f59bd007e7980e2b01ba 32d9fe9366da899b90b73cf2bf8fe3d1 645b2bf682e865ab9a6e43b878d5b335 ff725af6df1b76207b164268a44f7712 2c97e6b2c92913cac1ccec171a275967 ddfbeb997ef83cab884a857d19f7439f 9c7395d87c59aa54a79f2ed56427c6e6 1974f6955c36c2aece2cec85ea6ae00d 89a6af782a025acc62b600da24e0965 d172705764e25e20884a857d19f7439f 2228845a400dbad30fb60bd5470eb25 133937bd45f953748be6919d4632fec1 1a74b169a76e651ebc0909d98a1ff2b4 fd0e59013a16eb5184306f3bf0a1f2d7 ae3556f7151098b0f64801ad2940cdd5 28da27a6bebc81df62b600da24e0965 a60cd34f71c3c0549288437ebbe47284 b42620c214ca7cfc44deee06752bbfaa 558d3d7e6e78f2d941756cc47b70ca20 3390c5050cda83c09a6e43b878d5b335 a68e67e5fa7ae694d9a7daf2d70e57bd 7628e525228e5a2d9a46ec065c01b381 dab7d624889233a863dc0bc8d259b20e c85e3f6c572581de7d3b11085e75c7ad 9b09169e0a2b8650dcadc22bf3c23ace a3c1b9b0c75af9a65cbd1a70b5b90a8 645cccbc057c79cdcc57882dfaef8a57 60af3c930040c8b915d4d2fdca08573e 9912b47f0efc512b8d548f89c1029ea3 4afcc2cf695baea99a6e43b878d5b335 49611834b200ece04c3a35cee92bb95b d130dd0c96152140bc0909d98a1ff2b4 7b4b249f1d3400e488be2a30dd556a09 634de14a7721145fb3f2b01de37c0b29 1c93b0eb9c313f5d9a6e43b878d5b335 a1017765200c668c6ecd5ddc73f570a8 2b8bcb6e208a69b16a3383b58c4a9330 787d2fbb247c04266818a2bd5aa39c80 b26d238e335c59b567b13a456b2224a6 49e9aa7ffa2b1a25e9d8a35d7a1fb08d 89a6407ce86efaeee1211756a8e887aa 29925f23c2050efa7def3dd22d9ef72 f5a667f5796b9a0b9a6e43b878d5b335 b5b6f5ed2031f34cec7a415ac918303f 4ba7b11cd496e3be69176f0174b7620c 27c409ead0c4e34c9a6e43b878d5b335 7feab568d879270dd8d90babf3c5509a 480d027eea9830b511c04c8a3e94088 5608c1b40a0c2fc9c2912ef1a1302821 d37781e47470fa3d664a56105f5816ce 7054f98cc8af397f9a6e43b878d5b335 3a3d4a90a2db90b4203936772104a82d 4fccf49d6356c756b833a96759a020e2 76788a2758e938f435fc197bbabcd5bd 45801aa10db0636d4694b8455e89054 6b8bd13bb6c2589db61f9d3f64979662 cdeb868930b32468f879f4163a3ec7b 7401bcbb1a184bf548627a76b6268107 5c6590461085c93ea91e80f26309099e 987e67ef16969b93663e90eaf6b4ca52 847bfe2bea87c55b2d49d91e9a282aa0 65960aceecc9d6f88388594197e843d8 4853e07c17127af7df92be10876fa000 1850f4acdfb738bd7456183f198fd1e9 49e21b81565a51e6493c5f51f14398c7 1eb3af39d93c8bf2ddea2f4a0e0f0d2e cb744ec78dd320efd2c2bfa672ed621f 4ed5983b7721f1da7f79d93424b708f0 b9e1ba3782922bab6ad6a28101cd3ecd 1914552110aa5a61c1006ed55bc1a3fc c88275e49bc23ee41af5817af570225e 117830993cc5887726587cb13c78fb9b 1bea1445065705eb37abdc1aa610476c da6faddc7079ce8ab6befd5df74fffa2 1272dd98c66f13579a6e43b878d5b335 1322a9cabb1517219a6e43b878d5b335 a96c1589731b06a1efbd0f357ff7c40a ba0f83a82b18613d2350d07acbcc057a 24fbe7a49fd786c5fb5c1b0f759e2bc1 6a9b8fd1f4ddd87f152be1f5910e33df 40dc09d726aa6325ce2cec85ea6ae00d 1890f6391df25286394b1e418d5c594 a0d3a490ee1b74762a4947824596dce3 56bb8130f49b481e230ac8907b9b7f90 47a4ed133dd37264521546825315c695 a85dbb5bb889881419bf80b167cee3a3 653665e9c401e7ce6b310cbbfd03b8ce 9e8ab1862683399f570726399d67ccc3 2aac22a33893fad8b96ae1a0a8b84ec 62e29787d3623618575bf8a4b14be4f4 f998bb1b62da4d06d3a1a47fb9b678 b6d2c4beaec0520e9a6e43b878d5b335 40b916f7c41ad451494ac047ec5b052e 1021a0914a7207aff927ed529ad90a11 6d119be1286c7b129a6e43b878d5b335 ba784e6de35a5c6b4f8a08a5e6b028e7 5c306ddfcc08ea1b230ac8907b9b7f90 7182efccab0d3553c27f2d9f006d69eb 30c0995dcb7c10039a6e43b878d5b335 80770c90ba84524e825b20c2472ad90a 50040de261741893fb5c1b0f759e2bc1 523f1c2392338cf2b7f9c6f6b7bee458 45570756a871989cfb5c1b0f759e2bc1 ffef991d85e3136a9a6e43b878d5b335 226e3f0a844a3b4a77fd7318510b8627 f222d51d7c6fedc2db73445864b72015 3692c62cd29c6f1378a64d47db225ea2 142acab4424009a123fc69eefd95e6d3 e3b06cf8bea9a6a5c1006ed55bc1a3fc 4b20c1736440ff9d90dd6eb126f6cbbb f8bc6483dd3c87085df50a69f2f8e096 d31a0f4f945775de5823df672991ed66 3547cdf24eeabdc925194e2abdb4c403 48996e27f430ce286f67a5681eaf4d9f 18e86ba0172154f3bc0909d98a1ff2b4 aa5cdbe94abd2ee15042e5fc5b753f1 2c4228b79cf44778b96ae1a0a8b84ec 35e2eceef33804d8196c5820729d438f 54d49185bcda732a91e8833d3c500d73 36393e03ed11f78461f1ef59130c405d 9618b78610150b53825b20c2472ad90a 20d97069df784e19a80799ffaf21ea7d 47e48c70040beb9c8db97d9bc169245 13ea0a2ac279dbaa5e9e2656aff7dd5b 7981eae34c05e8409a6e43b878d5b335 14ec1da5f5499d83bc0909d98a1ff2b4 3cb63efff711cfc035fc197bbabcd5bd 2bc9a8aa5826f7335fc197bbabcd5bd 1b171503b1d0a074bc0909d98a1ff2b4 35055f849da2cf0ec3fe7930fce05ded 103c9e43cdf6501c62b600da24e0965 32e8412ce01e63c1a47575cd04a1d851 3656c9bbd79f6e29f6439977935c2784 2767994ce3078824f38bce64a8733419 92b7d0035cefb816d13ef00338ba8c52 6c3593d0cc398e715d058822e4c8a2a8 df6aae66a8c378ae9029a69fa5fc9ad 7cabdedabd1d65bdfb86dddee1d6ac3 177fadcfa6b4a8346aa3bf023a2b42a5 b9c8536f91ec3bcd3aff44a57f77b39 3cdf7ea70c5a8471f446f92b52bbd82a b5d0ae4f723bce81f119374ee5d5f944 a90230831ba263e5f7fe0727acb55c39 47b409c5c80dd7c533de69c9cd670995 f7f69ecc4ff199ec5e9e2656aff7dd5b 52a1b6e8177805cf53a728ba6e36dfae 5a12bc3a78c510cb366a5992755f2322 5b76fbabde77889c99399ee63318a21b 19fc1b9ff4b6456f1232236eecec447b 7dc614fd957186cf216b327569dd806e 14161a05a21cbd6f62b600da24e0965 b8df5a1fb0fa198a9a162c818d22a620 85d3691b7bde76548b96ae1a0a8b84ec b51c1bb30371852fa325f626d0051e24 f9fb41a3b1f59bb027745e9b6b461e93 2b62a8a0bcac6f22e1873a3963e0d14 121b5c1c81aa77906b153e6e0582b3ac 1304ef60fe9793f685e0a2007a11e92f 4e67ea4fbcd0d9a4bfb056e4de687088 6a242ce20c44e82bcc14f1e6f4f4f49b ce9246d409f1c688bc0909d98a1ff2b4 132111c575000a3c146e44cc99f07c52 74ebf601d9c872a7828204947d78b9af b45e5b92bb4623ff151f2df200a24ac 6d432caaa8eba4fb44b2fa2cac0778f5 e2f91794c302f5c03221f63172285740 bd066f14adf6c0a9f6639976815d96b 4de653411d132abdf1e2558bb9cfc329 a5cdc19967a8f69fedf24d76037ce02d eae54f8d47cf07c0aeec93871310e650 2cf6583a74dc4d1e373ed874fe97420b ee30cf94a209a45b91d43bb96e1bb0b1 130934b3dd2fddfaaf4f36f817f09501 98b5a3a8e2ab94ccce19d55bc5e6a406 95f7a9754cba79469a6e43b878d5b335 4396510f1346f13050586f69625e08a2 6311138687290f8a505ae8d422ba349d ede14aa589c68280216b327569dd806e 16b2f62791bd9f003554ccf8c30febe7 3ca058682dfe98f7f678b53750b6d181 c68efb547224f1dbed4212b3ec7c4371 816935cac027310d5e9e2656aff7dd5b 1490a4ae04d453784f856435f28995af 1345cd9d0da6d149c6f6da58b133bae0 1e4fb40e5908f2bddf2f34e1100f0241 cf4c2d7d836c781e5a59e179e114b9a7 72d96bac651bc74c7af159eaf7625abf 4e4ae13865bf47f41adbb4c4e06ad649 ec4cd947eb2ee3103554ccf8c30febe7 df411aa240fe48d5855eb7906a7a7a04 a3927542339a2c491b1cc145b0144991 13daaef458d6bb11e1873a3963e0d14 425619faec43ba86a000a5a61b867bca 124062ccaeae95085e9e2656aff7dd5b a5be00166e57ce5dd92de1e594e3dc28 1f86a689ea6c35f0d9da70c3ab6dcf3b 1b300fd9ad4050e6301fa0a0663ee996 995d06b3afb755eef446f92b52bbd82a 7826147390af0f9d1fbc781ac25c5c7a eb4396ab17012b3c9a6e43b878d5b335 5d7b52a58c667ca835fc197bbabcd5bd bce1b10c92fb9fc81b7a4091d85f2e8d d3b39374c97d39da7dc01d89d8a05b74 12e6e5f07b3aad3c5b9f44d7cd72a051 133b74393a3349aa70c4138179d9ed97 df8bb967a346ccc25e9e2656aff7dd5b 688c645ad207773f5c3e79a10705422c e60b86c7a4015490e5a760ec65004efd 29ff751f989bdcfc9bff604afc480b65 3a18489f9615a350e768735f27170bc4 de863b025e53c9a63554ccf8c30febe7 6dfde67c8b905939bc0909d98a1ff2b4 5b815e2726656685823df672991ed66 146533404a778665c93b40751084c22 dbc521b1d4c2d308303d346f4be7d4f 596c6e1e27b102aedf9d17a71b5ddec2 41afa42c77cd167c2b5147716975ed8a 5ff1cd7d4fc48c864b6d6a3a20b9f7f 24c499191b85dd55bf4fc6675b9d12fc ad85ce4dde9fde14a13757cba42c461a 5eb91263da1f0bf3e816c75152573ee0 37d32db3143814fd9a55c6af6f4b2bb3 647a8f5c79b54910f6c0d5cf01fdaf45 5c7729a3c482d77542c20743f866e1a6 c85079e83e463fac65f50257ecdfa5c7 f16381a160f20bc4a3b534252984039 40278c4bbf6c1f3d9642905e5096dbcb a80a6ec94928f7dfe87d0cb113e517d2 a82400edb160c18fc8727b27ee96a4b7 94b0675bb9f2a7fdf8a8bda5d07839b5 43c5f85e9a10071cb1bb46d2556ba67d 5958285db82a82cbc0909d98a1ff2b4 48fc59725119ac1133de69c9cd670995 561bab672a9e12352c1752d7966dcc0 45574293b59c62ff301fa0a0663ee996 fae6ae6ef62cfa107b164268a44f7712 42b63c881861105ccc14f1e6f4f4f49b 67b2e9282e92abe110ac482828ea39f 4ce24828099fdb5e744ca709c13b7abe ab8eadee08cba8d8303d346f4be7d4f c76f2214e133a81adbafc7250d0654e de45798ef57fe2d131b4f9e586a6d334 2e235eafe787ad029a6e43b878d5b335 e7c6e2f7c5fd372e8e9091d822257500 aa3a317001bb8617f7fe0727acb55c39 1a29042e20ab6f005e9e2656aff7dd5b 2de92a57e410020cc231d70e1e0cc567 5f9707e5f6b820275823df672991ed66 77a1744ee3c37f9b6aa3bf023a2b42a5 137acaae47b50659348e240586a3f6f8 f1ef7546cc85a1815823df672991ed66 572d374ddb49e77a828204947d78b9af ef26ad836cd29010f2acf00738ce9d0d 34ef846a22c6a6ac5e9e2656aff7dd5b 97e58a98eeee184565d73e2944dbef1d 845364350601ca0cbdf0b44e2f8f4e6d 98ca06c300ad5a6bdc9181d6fa468db3 519f1ddcbf942a76a71b0c9b506dc672 611c65a9a9099c6121e570d3da54bf9d 48bcce07b0baf689d9e6f00e848ea18 3cbc83ba49edeccebc0909d98a1ff2b4 4063fb031d8fb78e505ae8d422ba349d 46a1b199bd63c0b4505ae8d422ba349d 16079ddc92f4c9efd677715e63c14038 52a6ae9074397d5f65f50257ecdfa5c7 48d03ffabd0399f4303510f9a56d94fe 420eb46efaa81427b60ce16063f0788e 1b3c6b2fbcf834cf62b600da24e0965 589e5b24b3b0e30e2620819ddac40644 18d0da47a238945abc0909d98a1ff2b4 1597cbeb8266af206aa3bf023a2b42a5 1de008320c90274d366b1ebd023111a8 55b7a2661bffdf9d55a352cb563d3195 c61f67c3f03b10537f3efc94c2d31dc5 3998242c3442e04265e04abc9923b374 2f7253f8fd1a6a999a6e43b878d5b335 2494cb5facfe7b1f85e0a2007a11e92f 96a69c2add6d55379a6e43b878d5b335 380e9e8c3ef07372acd7e882b88d2b 7a80f3950b5e31f6b0d51feef5761dce 12a1ac26d29ed1083554ccf8c30febe7 11def84f9fe8ab0acd726e804e5d7a 472e6c2a77198432e1211756a8e887aa 3cd1b98f12d2a22bf3ad4b0977199f23 34d467fc26232f53f36024ed2c0874a7 e409d714620161c132fa725d7a62a02a 229cd78f9ac3e77c8b96ae1a0a8b84ec 839a950d0264cbb89a162c818d22a620 29b3b168322ac49448d2ba4615e03b21 a839663396fe378a896facc4c7b99761 3b95867a47a8afafe593bc205a118b49 e039c9760ca026cc6aa3bf023a2b42a5 2ce02b8bb91ecd05c503a3776fc280fe 86590fb6310cf7361f1ef59130c405d 347d86d7001cef01232236eecec447b 1482d7a9e529dde7340461a254c1a95 1943ee06ecb139819330265a9fff38de 84615b34a2c8a2868699933784576e73 895939bb0da197f8303d346f4be7d4f 5fe313e070d6fc4e2620819ddac40644 842e5dcd452f34aa8caa71b1fbf7fb98 96409ee8309b4c679c72d95bbb12b7e8 85743f17e13271e0709eb7790ef48e0c 61c804d4751079962df73a6189a3b87 1a32f10b20170883663e90eaf6b4ca52 b9006dadc7ae7f7d21afc48d963f897 9ff7d7d71bcf50ff4fb6842b3610149 1026dd1b26120799107f68a9cb8e3c 122963149f6a04272620819ddac40644 1e8c56bac4e66672e85e222f6559b47 66b9ccf5842ed7f79330265a9fff38de efc7d4fb87937413dc13452e3008005b 5f2f19cff434d86ceee9782f3a645bc4 1954754c791e4571873ec74c119307b9 d60ec60e091e9d7ade125dc914c4bb9c 8def338aaf898d6c26479a182158bae5 53c27d3031f6f97e402be9c8dff728f8 12d15ac778df6e4562b600da24e0965 1496504f42de2eef8b96ae1a0a8b84ec 1e827425b289432e8b96ae1a0a8b84ec 23616b4d03c5bac61232236eecec447b 1825c91c5f2da4bab12962b43f188cbb 75fd28838e0fc8cf5b1edf5d4f643136 52ef4ccb24accbb295673ce3194af95e 26bc67e3ecda6aa1adbb4c4e06ad649 b3135ae5bad8cc23cbaac693398e53fa 32fb1aca48b3a0d197eae247c9b1df47 985e020b26adf663acd7e882b88d2b 85462aa8b58d5a1ae753c4c9af8a19d7 1f47381312c9bebc9bff604afc480b65 420efeb902ba9c9f47f9199352b2dddb eb2fbd46563e23635fc197bbabcd5bd 2c77ff96a9b46996b963df94d2f21069 3788ee24009c65cb4d210d9468aedaf2 29374d5ffdb23451e1f2a1daf140ac9f eee96e21bf51ee6ce719b5362fe06bbb 3a756cbf87c9a6c64d210d9468aedaf2 d629589ee52d48ee4d210d9468aedaf2 6ba3a181a40ac7aa35fc197bbabcd5bd b0599ecbf78aa615a8e091cb544689d5 4d97f6fcb6886f49cc14f1e6f4f4f49b da12fdb456d5fb588b96ae1a0a8b84ec fd7c74a05072d3befef192e05c55dcd3 5a3344eee5b27e670da4e1131665650 209e9845a482333c77c06b43df2749d 552871abb864d06d35fc197bbabcd5bd 3baa3ca477d17e1a61f1ef59130c405d af6cf1d2b6c00b1233de69c9cd670995 f350f4836dcd13541b1cc145b0144991 b4d64b689e870d1b828204947d78b9af e85cd06b4a14d3ffbc0909d98a1ff2b4 3e8fc3155bbc4225c1ccec171a275967 d583d6f23c590f3ec672ad25c77a396 8bb8876d55433eed216b327569dd806e 909f59399d056983a0a3307f8f7721fc 1807d521bc2164cd8c4f5e741c2f9cdb 873f4d2e92681d12709eb7790ef48e0c d4d61a35e8b568fb7f1f82f6fc8747b8 84b396dde837c81994445a3e8b9de59d 427240c0fde25a90e6901f9a264cdbc0 bee504b4909890df1dfabee9ba27dc70 a5beb33ba75edd59485e40e44ec62786 b6da5542f0a81fb5aae46a5cc955c766 5aa22f8c52d2f777a80799ffaf21ea7d 2a801b1918ef23f1121ca0b13e917b22 460cf3a75d8467d1bb579d1d8d989550 2d4a57a467307d675e9e2656aff7dd5b abb3c5d793e4c26d7aeb2194e56698b4 1818597d398db8f7f1f82f6fc8747b8 6047f2c5854dd38526cb540828830330 23c8d6c73cf78ab23cf128905a10d59d e8ceb64406509714e5dcd47593c60221 b4b21950f0627213fba066e52ee0e502 94bb7abec5f1b984dd1c97b5ee3d49a6 958cc8251e6f7d8fa9b2becd26dc2fc1 7e1d4583f70c8583431589819e5ca60c b4cc2bdefd4f9ce13f4d6518603e8629 2cc44e0f9fb1efdb85e0a2007a11e92f 730edec9009f8cea615ba7bf3620290d 22d9a4a9290e8f09112a90660b187a10 1530400ceabc1d7145ec485f7da1d9e3 735aad15a1d22ed3dc92eaa8f8f40f9f 73945c1b294716e1d041917556492646 6193ca8f5b4419bfd86ebdaa02a63c4b bb6bc2b0786734a79b2acbfd8323f804 854c2f430e7aa00f4d210d9468aedaf2 7cfb337744133ea1bd46d022fd7d80aa 84b07419645a3418bbf3143b1cb6076a fc7fda7232bedd84bbf3143b1cb6076a d7287ce98d521db5ca8607f540cc62ba 8eda6d2dcf9302d2d041917556492646 d06035fb4ba89c91f119374ee5d5f944 812111e3a4a545cbc863ab010b80d9ed e025a1fc1bd71c2aacf77e718d93f3e1 7eff60e0d72800b8ca8607f540cc62ba bc16d2cf6420432cb87697d3904b168b d99ddce71988c822475045ea78b20eb7 94843fffd7d2a8c0dfb86dddee1d6ac3 fb2e4eb19ba19bde5fe6cff21a9e8496 e1225308d6c26c862b600da24e0965 bb91e932504e90ffcc14f1e6f4f4f49b 4788f4d5afd92e151df8f3faa46a0206 df1c68e94259c6cf5c7319b71bdce6e 2f4f38d774e0e941dcc75fd1795fa3a5 c156719444d78942db73445864b72015 c2e38200a238177ebbf3143b1cb6076a 77a70f61dc0c6260e70eaaf99089d5f7 8db0b83cee14e1e5eacd58bc9fc5db51 bdeb0a21cf1d602962347b4731688b0f 26e26e21438ed02990b1d6deb98feec6 f1f12c4408b0b4ee445d150719ce97db 298d674a14dcd356de6e2d41bcaaecbf 881e02b2d5a2c306f7fe0727acb55c39 4a9f55420d17c815d37636af9c7bcc34 d004d0e86ea3d77a65a6ed5c458f6a32 c380dfb1b098757ace19d55bc5e6a406 5f2aa0bc5a7fc2beacf77e718d93f3e1 f59a2be8fd084418bbf3143b1cb6076a 92ffaa5ebef3c4025d85b5c95b248fc3 89a5679cb03f30caf5c7319b71bdce6e d9a263d86ae0fa599751c7a6f15617f4 cc68ac5b18674485475045ea78b20eb7 89836a37ce10a26c8699933784576e73 41fadd55b341e54ab87697d3904b168b 5335e5be2619bbed8141b488a44e65e2 67217ee1bb8443c8316b8b2265213f7a 7078ad51c3c30972b310347ab50a9dea a0359a8d86947a2049fe495b383f9f0a b8720c5fee3264f735fc197bbabcd5bd a39940973102985635fc197bbabcd5bd 2590dff7d8f19797bd46d022fd7d80aa 47d677bf1dec3dca82cea33798fcd6b6 53d8ce9573e361d990b1d6deb98feec6 7e092d9460157e968b96ae1a0a8b84ec cf402c23d4ce807d847335355bf4459e 8686ebc30c07b53126360e1e29a956c7 c0f9c28c45e7c8354f95630cc18536e0 bdb7294dc4742b33bc0909d98a1ff2b4 19e531e6d0bd5ddd67c54439d6177032 8b1b372c0ea200bd225a23c790f08fdd 35c9e363ca3fa6f8e4fc4c6009ee9462 17874281e56ff0fbfca1f1143bb6bc17 f4453381943f6039eba96cf317eae721 87edb38cd76e89f5996d31205aa7f7a 6d752b942618d6e38b424343280aeccb d458335c758930c210b8e0008ef5faf6 858c0e466deead2c66cf1b4a8fc3914e e94ad5f8e53a255a8fc2d09ac4aa4e78 6c931227c1735c329df8dd4a2554378c 65511fdb2afad900203936772104a82d 9300dc1ca5f16b074f95630cc18536e0 22d36043ad59ef026edd138a394f7c4d bc3f4d2bf11e1c6382328b5e05417037 2d7aff5577ae7af0d8ff6111270336a9 527975c6c0e1c426ca8607f540cc62ba ac4774b7a9fd06d55e6724a7c6e30991 4843a702815e8ab442ffb0c016ee58f9 e090eb003856ed12ffbd931fcaa69140 29c81ffc84f2f7ba1adbb4c4e06ad649 8d62d327fb15c9b42ff26728ed9d7bc3 7a1954799b5fbb438fc2d09ac4aa4e78 a72bf66e9213b313a9b2becd26dc2fc1 707cb24ab99bff07e2aeeb16e93626f 241648add391b8d54d210d9468aedaf2 c0c49c529f1ac5d8ca8607f540cc62ba d0e517321cdcd165939e75b12f2e5480 47319a4f6de68c2966cf1b4a8fc3914e ca359fd1ed701d06f119374ee5d5f944 5392580fe70da9043554ccf8c30febe7 1df217928b39b927a8cba409c4409ba9 807d735fb9860fd1c863ab010b80d9ed 694da337c806f41a7209009cfb89d4bd 973211dfe6bcc4ae90b1d6deb98feec6 468831f7b19aaebabbf3143b1cb6076a c14ffb40a37074ed26360e1e29a956c7 d2412f19d33572dc4c3a35cee92bb95b 619f0ed9bd92778e1c6bce26aea93f68 ddf4aa5f68f89616bce962d6c4b37336 52185f504ffa9b32ca8607f540cc62ba 67b7039f53759e92f4fb6842b3610149 542a1e7f0009339aa813ec663952445c 22ce6f6d1adb08d7bbf3143b1cb6076a 8c1d67bf88f34ac55823df672991ed66 48a9b9c041d377b26012a714b05f25ca c641785e297cc8ef74008994fb1880b a271ac76b0e6bbbbb87697d3904b168b 9314289f486e58caa8cba409c4409ba9 bb5844976bf8ec479e8d5aab043eeb56 802cbaaf1a51cf38c863ab010b80d9ed 605c79a4937e72aed0f4914f6d630bad f6b7f7695d091b9bc0909d98a1ff2b4 8a6ab7486ecbecdb203936772104a82d 74334440119b4225951971f8370d9050 9e4c0840aeacbf10f119374ee5d5f944 88771c5b02d6e267b02bf6205401969 53011f6c40df3d7b4f95630cc18536e0 b837c3b8eec02a4967c54439d6177032 952c5b41a44f6f3166cf1b4a8fc3914e f73a8fa9c2859211f2b0736dd4d8afe0 9aa371acc735844efdd77aff53f4b7ba 1b7ac690067010e26b7bd17e458d0dcb 5e31a194b02a286df8c6d04d97f8cf7 f80343ac3064e74862347b4731688b0f 22ced10a5d20b1c1fca1f1143bb6bc17 9c9d6469ecdfc54fc2a9d7232db0ed61 a5d68126acbd43395e9e2656aff7dd5b 64a0f304fa3c113bc817819d30841d0 e28e5714139535e7a9b2becd26dc2fc1 bc59a1d1f959b6f9b2acbfd8323f804 7196ea15821ad2fdd8ff6111270336a9 1a888c2c86248bbcf2b0736dd4d8afe0 d709b3afd41a578ba03df56f69a35fcc 1ac29674746a0fc6b87697d3904b168b fd8d7742ee03905df446f92b52bbd82a 89e0a038b52184e04f856435f28995af 7addd02b1c255edcc863ab010b80d9ed 42b464affaa4b3f985e0a2007a11e92f 77c52530ef9983c94c3a35cee92bb95b 78a7cdbbb27dfb21bbf3143b1cb6076a 8e2846178e2976fab96212c8f6cd06e 25805c9f5b2812b6b7bd17e458d0dcb db5fa6a73bbe6d35ca8607f540cc62ba 2b99e54070c8b6d466cf1b4a8fc3914e 9acef1e2e46120f8fdd77aff53f4b7ba 95d0f4440a694e4a203936772104a82d 2ef20ad4c579812571d03b466c72ce41 236932c4f4b2f557f5c7319b71bdce6e acb398aa5605abe5a8cba409c4409ba9 5f9d38e5e7fef49f7a571401e6605fc2 7dfaa526d4b432e867c54439d6177032 2c9331f57865a9d2bd34bbc5253f83f8 448ff32981729dd38eeecfc1f147b56c 3033e5dbbff674a55d3bbd70fc7759b7 c9764fd84080da3f4fb6842b3610149 e7c1bb596e9a1ce9ca8607f540cc62ba 85a62cdab580058925149ab881d5692e 5cf29113582e718171d03b466c72ce41 1169d987dbbce76775f4ea0b85a53249 8c11ef88dd944d00fca1f1143bb6bc17 65f77283a392890aa8cba409c4409ba9 c6d39a3c52f8beaf7f6c3adc89eef8e6 fd425567d79a43d14f8a08a5e6b028e7 17ad3ab1b1d12a7db26dc8ec64d633df a5215569ae825265ff3feb917a6004b 2dec9e7b1acf88fea8e091cb544689d5 62d03831457b2fee62347b4731688b0f 350110d2828b3b927370804727e72eb2 31b201b7346e6cd15e9e2656aff7dd5b 2ec4d9949f80154b7a571401e6605fc2 4fb10ce02887e35efca1f1143bb6bc17 8af350191d35e65cc3fe7930fce05ded c107063f573cbfb3ca8607f540cc62ba 5face359ff1d4b4f8e8131a047a07ce1 ca91bc0603ac0b808303d346f4be7d4f e511258df02edf1046ed10e8f7fe336e b8ed32beb17c3cacafd477f714c68df9 56c7e0b6f27cc498f3ad4b0977199f23 a07446a1799bdea7afd477f714c68df9 bd6966d7d0beae75f5c7319b71bdce6e 89887eb7413e51a55970a7489fd4b4fc 1a54a2319e87bd4071d03b466c72ce41 939f3dcf67a1e1adbe13ce34aa7c0c1c 969455251a1ee3061c517f0fe59ec7ee a39880327ac8815e62b600da24e0965 6dccca8485094190be13ce34aa7c0c1c a95734cb8f7511cb46ed10e8f7fe336e 4a199b1c3c80c8823bfdf036d38c839b 78a63dc99b3b68962b600da24e0965 44ae568461e04dc2fb3831486f8b425d ec03d76cbd50314f5c7319b71bdce6e dc344ae06e26aa55615ba7bf3620290d 647576c71cff90b4ca8607f540cc62ba fc2c9fd0bbd77dac4d210d9468aedaf2 5f46f3c62e353c7bb4f5fdc59ce06e88 579187a52086b0a63690bd3a9fab7134 22d0100fa46f20eb8699933784576e73 bcf7743f0dc85517bc0909d98a1ff2b4 a4f5529edc990706e719b5362fe06bbb cbabb37711c06d4046ed10e8f7fe336e f9589c9b900fd33ef23c3116d040903f 795894b9a1105df34d210d9468aedaf2 817add33c6fdd1534d210d9468aedaf2 a61d4ad108af6eecca8607f540cc62ba 71dad8605fbc699623fc69eefd95e6d3 99656ff9d5a8a0fcbc0909d98a1ff2b4 881a9dd186e1d5c3ca8607f540cc62ba b089abdb33c39321afd477f714c68df9 bfcc89117315f3da90b1d6deb98feec6 1db7bca33ba446aba5cac89017eae8d1 ffd13ca14b85fec66cf1b4a8fc3914e 99c13d3c3f30c34dca8607f540cc62ba 26237deeb192f83d3ada73811bb576de 7526757d0fdf8acc14f1e6f4f4f49b c31bdeebd8d74a7dbbf3143b1cb6076a 8448475504ba9fdeca8607f540cc62ba 383d7574448bf7f235fc197bbabcd5bd da26509e7d1864a162b600da24e0965 53edcc6832e776dcca8607f540cc62ba 1d63eb2b1f78aa88acf77e718d93f3e1 800ce26e517769dcb87697d3904b168b 4b10780b9e0f93f1d32761b337f8b72a 55036f6b22ddeeedca8607f540cc62ba 68899f486f3a6015ca8607f540cc62ba ebf8011ea1f4b4190b1d6deb98feec6 de65da5cdc92b4aebc0909d98a1ff2b4 9b62f887f1839e5f4c3a35cee92bb95b 646b93aecb7b7011a9b2becd26dc2fc1 2c9e063352a538a4af7dd1bfd65143a9 cbe8994d1dea1bcb4c3a35cee92bb95b 3794aa3159c10929da116749c2415b0f fe1d825ce462c3e7b96212c8f6cd06e 55ed35a03b08a8f44f95630cc18536e0 30bfb515f027be9a4642ec4b6f68a b7f6e94ddb5ecc2366cf1b4a8fc3914e 88fe762bfda775f84c3a35cee92bb95b a60569e3e80d24939bff604afc480b65 c2e047aa11190a0f3523242fdf9b75a7 2bc0d99cba39f7adbbf3143b1cb6076a d5b08d1355502d325f83a2299c09f64 8b9a404737736ece774a720fca15e35b 7aac10eb5b285098774a720fca15e35b 6cfea839d3dfe358bc0909d98a1ff2b4 c846ad445cc9acbb98427765723d5e48 db4079b8c7d3d674ca8607f540cc62ba 79dba7fc4ba0829d62b600da24e0965 b17142a2f2fee3d4e2c19eec35e842ff 6bfee98d2078c3c4ca8607f540cc62ba d696c3119cae40323ada73811bb576de f1384d3fd2d59e63f4d6518603e8629 2af24e1c7067533d50a05a17b2f9bc 27acb1d0e8c808262347b4731688b0f 3360b510b0408682bbf3143b1cb6076a 4bf2c942aafb4a2cbd46d022fd7d80aa f79fce6480d9276facf77e718d93f3e1 d01da87ecbc2deea27e33924ab17ba05 6a7bcaa4c62779e45e6724a7c6e30991 44836457aff60736e10e757961deca98 728d58b27cd53a16c93b40751084c22 352a8e4f2023b029dcc75fd1795fa3a5 5ab5f03340921fc8b96ae1a0a8b84ec 59043812c2139ea8bbf3143b1cb6076a f98964dc88c44a2c863ab010b80d9ed 12f4778ebba781236b7bd17e458d0dcb 940c9ed5d7610d915d3bbd70fc7759b7 e028fd73515465da5e9e2656aff7dd5b 7b553eabcfe3709f3d2b6eee5a74cb08 c777a5b86424892c644d8182e9bdf4a3 6db52e6917c80e5157b14532cc71431d 2d255ec7a05b301a203936772104a82d 75b151efa363c18d94b9c9a92aa36f8c be02fd401a12d23822362be7f5226e91 675a2332a973401f6376dff6c42ab2c2 4d0898c7cac1199a4b0853084d4042f7 5cd19fcc882cc769e8b0cab853748d53 2349e4b9a4ccbd97bbf3143b1cb6076a 9be01448f3b2b932828204947d78b9af 64da2f66ccfb98c6c511571426f8b16d e33fbcf5b616d6f9f44f89e40af48618 ddd729a8623bcb6e8699933784576e73 a9668a32a91787a6be5437d0813f18f0 f7c11b5e07e9ccab3a116bc3efac4e3b 9469590435736800b87697d3904b168b ccd448614257253cbc0909d98a1ff2b4 d8d9de967255b4c562b600da24e0965 71222607731812fa5e9e2656aff7dd5b b1998932482a6215a9b2becd26dc2fc1 fd0262e95283727d7b02bf6205401969 41dca8046b0edc8f26360e1e29a956c7 de001f9e2311dffb7209009cfb89d4bd a75ab6e99a3542eb203936772104a82d 7ce6c64ab3a45504dcc75fd1795fa3a5 4a9d3df03a7d41d77209009cfb89d4bd 4fe076aa34c706b83d7edb3bb2d24b58 56b44fdca08540da71d03b466c72ce41 25f08a106a0eb00eca8607f540cc62ba 10db820f0e20396a492c7ca609cb0182 7578bae68447de8498427765723d5e48 96168894d7331c75acf77e718d93f3e1 5c72cc06d79edd1cbbf3143b1cb6076a a2b758aa5d51642bd32761b337f8b72a c2f43dd2c483e0d86b7bd17e458d0dcb 1beb0776148870d4c511571426f8b16d 56ed0ef0864d18c2f5c7319b71bdce6e 80af162c0c01f27c4f8a08a5e6b028e7 77c86e12f27b2adff602d628e1c92113 f0fb27f3a597838feb1a0518c224975f 1887d7e3ec69fe06a5cac89017eae8d1 46d334b92644b9c8445d150719ce97db a211cfc04bf47039e933de2bdfbab002 34da5dbfb4bead034c3a35cee92bb95b c798fdb5baef6b8be36e92960e9f090a 1435b52348569ce1bd46d022fd7d80aa d9d282f79262ebd4c3a35cee92bb95b 3716ed4fa80dbf5f41392ab7a601818b 93a635370616538abc0909d98a1ff2b4 9a84164528544d5690baeef8ba5b93e5 86bba8b007786db7be00b7fbad2ca0e8 67da7044f5bee4f65c6d168c6e7f59dc 172e23ab5b4d189566cf1b4a8fc3914e f7c2edc1beeedd006e68e46a69a2d96d 3aba99921e9e1c93ef40e4c1c2686cd3 94cb05b56b89aa2223895f8c849f85e 6c8b2544144c38d99e8d5aab043eeb56 1280f994ba1f92d28699933784576e73 6c36b0f84118a75cf9c41a0805a0d953 dcded0031a71305c52d6957c59c3d213 2d41a07991b546751702b97fc9845e5e 21bf3d8201e3e41f93358ca8580664d1 b97446f1c30c0ed7b13143dea57f5eda a09773e513ca86ba8699933784576e73 c47a2cb459ab849c493ab0b98cb45d3 65bdf7b997087055ba30a078a973ced0 f8d7d8331fe29f247209009cfb89d4bd 8338cdc32688a863bc0909d98a1ff2b4 acaccf2af6ed78925a25a01ca5b91f98 443be81bfa6e5b5ef6babb7d9ead7011 7315cd530e4858246ed10e8f7fe336e f9f4daf3015b5ece5e9e2656aff7dd5b f3463eac7325b600d01b5600c06c528d cf911e274fb613fbbf3143b1cb6076a aff764398f14383eb87697d3904b168b 7201e35e5062683571d03b466c72ce41 9efbd65b09daf8358b96ae1a0a8b84ec 72761d1c2c7e1418d86ebdaa02a63c4b 4a300ea7cbe3ae58a42c49797afd1f5c e5f08a5e3dad6cdff810506e9ae2dcc2 63ee010741ba665c35fc197bbabcd5bd a6afd80fa3d70682ca8607f540cc62ba 983cb909846f4e1bbd46d022fd7d80aa d75ce9ee8a64adfd98459325335edae9 384da5cd806c436b35039158de2eb4b1 db02eb57817e4b4d22362be7f5226e91 997539bb0a0d8cf852c3271e911ffe19 dcbd333ef51b76862b600da24e0965 bc140e3c54b27bfabe13ce34aa7c0c1c 3b3b2777be8b6b31ca8607f540cc62ba a591b49406ab0d2abbf3143b1cb6076a 1f7dbc112b7375dae0cfe7507a46f0c 593dbc303a7afed7f44f89e40af48618 177ea8d43905b1646ee4da51ee0005c9 19e6717acfa7d2bdca8607f540cc62ba d171967c6353177bb87697d3904b168b b7b0068ecf75d279afd477f714c68df9 63c63aed97f15526bbf3143b1cb6076a d4a8134b2463a8bca8607f540cc62ba ce00bc7519d595c525a407b55f350179 2d7562f5bf2c7f2da1d85548168d6015 8ac48eb3349098b535fc197bbabcd5bd a49a75d2b22c9eeeb87697d3904b168b 2f3bef6d679273d062b600da24e0965 33e11a7dec64dd42d91ca512389cc0a0 3ad6bdeed351f5a84e61a0c2eaaabe87 7f4b166fba71407490b1d6deb98feec6 a1a419007c828bf290b1d6deb98feec6 55f212ad58883877ca8607f540cc62ba 7f09b3b11ae3f22dbe13ce34aa7c0c1c da9c541228a171b7ca8607f540cc62ba 396312e9bec88c2590b1d6deb98feec6 5413e0eca808b2601f17e8416b3322a8 b2ae4acd6774f410833bb0b457d51a52 6cd3028fe03d04fec6f6da58b133bae0 1e44b99c8de5eb01ebc54ed98d6399b2 30b317e256e9bfcb1f17e8416b3322a8 aa21bf2a545e710cf68a010d0fc56333 5524fd6b35f47d5ba8cba409c4409ba9 8d49b7496a2575d5146e44cc99f07c52 f6a09cbb6d08feeec9d7d324d11034c9 c7f6766e4e96ca0f444c0cf9e8ad6399 213004db08a787a466cf1b4a8fc3914e a2b6edd3f2f060c7ca8607f540cc62ba e3d197bfb47ec943c9d7d324d11034c9 b3950d8c2c1da884e52afb4158d0847e a34a2fa46d7a0a6390b1d6deb98feec6 2f01cae5fb585d56ca8607f540cc62ba 165c4491d10067b3bd46d022fd7d80aa 7ba9eb4e8405371ca8607f540cc62ba c1e081e8b97b3fc7ca8607f540cc62ba 72537a008bf0c5e09d1a1149c8c36258 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02828884_test.lst ================================================ 131edf0948b60ee6372c8cd7d07d8ddc c96afd58ad067a6871b66f80cfaa9877 dd97603ce7538c15be5bbc844e6db7e c6dbedf2028735ccd2b12aa6a0f050b3 d8c1f1b9bdbd697b849cf9ca1e2dcbed 974668cad6e15520c955e5ed03ef3a2f 866b0fab7a3e54053555de1e3169ac6e fb861f0e4e7f528fccda8d28b44378b7 22031fe0420834a9ad5067eac75a07f7 87c34f2d5d53a51768679c90b064f491 373ae08d8903dc10ba929f7d2edd1706 e6a3b8946b66b83065ba78ad9601cf1b b3974f214dd4af93601104cd2d998272 9b5dfec7d45eeca94c8c340ea700916e db4aeb6354f5bd0dd4d8765e3910f617 a5a9a0be36997bd82f549c6b85154162 6df5b51b250a823b147d36b9f2f13116 b4ae95fbb879bed0ee38cd6552dcaadc 366db933a2c99444f4fb4dee5181bee 9c9fc31bba4881794620a50068fc504d aa2571b8067d6d5383c4907a93b0fbc1 6b4e4125c1a680cd2cc92e3c03668ea8 42ffe8d78c2e8da9d40c07d3c15cc681 eb038519c5ba87b663b2acb037dfbcde fc7785be580a926a3409d1e6da3f019 23ce36288382e8285710c881d369ccb3 a8e987a6a6486b962d6c8e51365a5a87 4647754b7c5b31cccb2a965e75be701c 957596b8dc4cba37ad5067eac75a07f7 a4491b4a67356be5184c1614f4105c8b 218b98805019ba7df11e0e33e4b1b85c 2e2518a8a2f335ae76bc197b3a3ffc0 1b78416210cbdcf1b184e775cf66758c 89f810f17284aceb85ef4356ea4ff622 2eea9c22b37967006e40121acd58a004 94420ab399ce8a1561e51a63d5bc6e46 b852e63ad5983f1a8ccde000e771fc1a b6b10e519fed3c9ea9d99888ae8a3eb5 9fd5b67a2b20b5d1b19874039c8f3e05 88440ae4e218fa6ed4d8765e3910f617 ddbcdce0db6aa00524b325c2195eaee5 7b21980987b63b953e329950ec40f6dd f8ff2310c6b130d38aaa31e538081318 fdf0f799b897b0c99917ad57402f53f1 71ab9fd8db7ee09a59cbde03ded257fd f7ffdf91b66c0c989c9513cebb0fb44c 459f90aa2162b1f1d46c340938e2ff1c 7a8a8c523bcaa364a41bbb5eb703e15 d74a990634bb4b98ad5067eac75a07f7 2c6c50ead2551d51a0e159a720dabf7 8f102661c3efbdd184f92715bac39b74 7cab2809bcc7b73a141c96faecd80bdd 498ef3fb51503dc36e07666ce67ff5a 61ade658bb475cc6a992c1353f8a88ef 7bbd4d3fed3c4255626d7e3d07da8352 5d463e4412600a3213afadfff198a630 2cb61abc0c2663ae8f0add668496d7a1 8277bffcffda5c4edab3d510e4b89249 c9ca9b7317ac41b82168e5dee0d7f21 af79d505f2ef2223cb2a965e75be701c d7025b55fe15337ed7c5502d4a22edf5 6752d9230ae82d1ce67de87b371d4c06 ea4740ede10b7620c09352f205bd9134 8d074f177479ac42628516f95b4691f 9e4c82a76b6aff2bbeedb4c8fd29e2d1 557899ea369eedd4cb2a965e75be701c 8a5a59ab999c03ccfb0eb7e753c06942 d1f9f40f8f58394c91cb0beedee33fd 14af4a9931635c75f4fb4dee5181bee 35948e4d06a9b07e8ba8ff316aec8d3d d8b87f36fde3f2f3bc5996932c1238cd 56a818c4e5891f1d39316df04169d12f 3830a5b2eec789ac63b2acb037dfbcde 85db4f1bf9e2b62c492d9da2668ec34c 9de1b1608e6ffb9afde926512eb9d305 1a55e418c61e9dab6f4a86fe50d4c8f0 f0b85200702e4739391e4d6c585a697a 84bb6a30b1c5a87be008ebe8273a693f 14abcb14222adcd499b68520b875243 95cbcdc64b28bbf396f61afd58e50ae2 cad58af144b615b674a3201fd136f855 3749b110a6f7895afdb310510a9dc39 a047cb14c22517e6f33e284fed03c3fc 28b9f2908f0cbb179c21c139c0613648 84efcf2796fad0d2917fe9209d09e56e e7bb6ef568db1c986dfe473551340375 5d8f7c82a04943fed201085e80edb26a 4d6b053f11e784e2a136ebdce43e4200 d9c927569da63ff92ebeb1e6a8111f53 a7366461245f831ea764a25163affad1 beae527c550f5ce8e4ed7bd95fe664b 2bfeb0ef0693823d1418b6bd61b3ca4 b9fb64100372235adbbc9440457e303e 19399a9aac37442359cbde03ded257fd a380e75d8efcb4192f550a4f461edf6b 8fc8fb14df48da05ad5067eac75a07f7 1e039c5d86b061a593ebeeedbff73b ad9a12cce63df1c9870f22c94729669b f264c4d430891732d97248c4337f8439 eb9938d81ec9005882db9fca4b68095 efe997f288fdce2d985ef0bf52b97bf5 550e62946d2f55554bce3147c41ec725 26299b4f8e03f3ae9470a3e695aa4fae 92f1fa8d3b5da497ad5067eac75a07f7 18d0aff1a5eb486ae2be3aed8abfbbaf 20222f467d257022c8bbbd98dee48cb c3d8c664906eb8e57b11ae648ea92233 5a96b6b335bada106fa8ce57c8ec2e09 ea56c97ec123270c2d776d9e024e5deb abcb5dc91337f47682db9fca4b68095 8a03039b614b41b319fb4103277a6b93 2974b7f87eb2297ffebad4f49b26ec52 3d470843f013f9d8c9fd4914d3d18461 891b8a01ad71af2db7e843606969432b 220ab2896e0b5d87dae58dd9656897ad e56b95381904bfd08ccde000e771fc1a 717019a5d139874f44dfa7c5506ef235 abf095439d2d7bdb57a8fa4c1cbcf3ea e8480e72fb656057656a19d1d18fdbac 617fa8d6d65af35d71295682a9280b8b e1ce45ee8de4436655a9b4fa7594b177 de00838284782bfe97fb25ec4f973add f7b5756c04e354a0c1c40d87de24d930 552ab19eab47725cb2a965e75be701c 84d0db8ad40017a195c500dedd6e2c23 cff15ed24c45878b3567b82c74e275b4 2346b4f87a4f683b92e6829c9c63f7e8 e4b80a7e381c6ef0f4215050a7660e65 9399c7769b01d4742591fa6348c25a73 3e81e31d8cd99cdffae0a22d98098878 8bb2354519a2ca276d9eb2ed02ef01ed 106494f75125eea6adf66a6d73888234 ce23a5781e86368af4fb4dee5181bee 3a60057b27f90ed64910664c4d1311f4 c7fb65bd3bd09a852056b4bd5d870b47 72b6c4e1d8b93b21c2bf98e7124e149 6a237c1e61fe2bba8490246570868c8d 25876fee744f8f8dd45380eb90f62b3f 86059f6fa56a8c5e44175b4dddf5be08 2d1ea225c279836cd67b3c7873295e75 b95994218ee416f492d9da2668ec34c fa2f82cf9275c2078ccde000e771fc1a 2731687dd460a263d8eae9bce48bbeed 5b24beacd0385489a6ca26b5255a8e6 cf873b381095c2d43cbc166debd211cf 38e367e4421ec3cbba70cedf91706353 9bb6f0077f91c613f155d75bbf62b80 90a8b80aa2fa209ca936e2693dce34b6 bfaad1f9dadac9b6a385f05be5d65f80 e329a9a5e7422b0a43638dabe1eb5336 9e4e83e67a901168febad4f49b26ec52 f495bd67af8d9f0cadd1cf65e8dc4de 5775bf637d14acf1eaa4526a35f01085 50ef39d633520df0855931d119219022 5a383d9a0e67caed4ea8cb420cbb292f d0c64a8b3fed1ba113736977841a6b9b 2fe40aafbefd99a9d2b12aa6a0f050b3 1c47c37d6c785d4fe7fd9a18c19837e5 405d1666d90df2c139842e32fb9b4e4a 3c7a0029ec98c965601104cd2d998272 9b37a6d7c9f1800952dac0add839bf80 a76a3d33ac6c3c65d46c340938e2ff1c a3e3c1bd2a644e2df4fb4dee5181bee ca21ae1c48c020db1a7fdfcca5768f88 87086d24c964f9524ee9546b7112f88f 8afe9533153bb82b157f5033576317e1 7d865d0774f34972814c9aa90ee14e e2cf4a7357cae6ed2dd04fa3e4c2a53f f5e4f9657ecc18efc862eec8232fff1e 6fe6b24009d0ac4f19b647a92023d001 4b00859dc8ce46eff4fb4dee5181bee d25262c74c8269a04c80535a28040aea 1ac6a3d5c76c8b96edccc47bf0dcf5d3 bd51deddfdcae18b3b8dea4a358cbf0d 241f99f97083f685beedb4c8fd29e2d1 b65f1141e4eb2529100a6411eafa7455 c3f92e6a78ad156863b2acb037dfbcde 5b50871735c5cce2d2b12aa6a0f050b3 da39ee814b8e3c0387d7792ff13e9cd8 80593a84e45e4345f51f77a6d7299806 88f9fa58ee9ce3de1c863a93a9948fe0 1c79aa69e4ec26b65dc236dd32108e81 f56c78ba29d9f73e9bc72297235ac73c f5c6c9a4c5787dae19fb4103277a6b93 adf284153a2a87208c9b655484c84004 394563d19e157c126f2e3fcce6bbeeb5 91e169ea3ceb587beff42b9e13c388bc c33b2dc4fca8fd178cca710901c2e97b 56f65bffa385a635f4b6538438a0b930 9ebca72c02d26886a6e82f4002a10be2 486535f610428612cf078dc7b29022e6 b2a585ba5f0b4a25e76bc197b3a3ffc0 739d41c59dc387e575f9747ff6fb5e8 98971eb747738a6880360680c1602c7d 50a3b398b3a2e5979ec4bb690ca24962 2eb289d5829907b9e6ad3e1a394e102 901872a92ecdfa4863b2acb037dfbcde a11caea04fcac4f5643a8f56e2ede6dc cf14c102e6da1a78e6d475a101a6dfca a393945aad7a2cad5067eac75a07f7 a64965f10047f31db3ee3d0077feb1bd 43cae409bde302d4c88fd5e1f2929cbf 2aaf5fe631a855b4de9ff1d2442cc6d1 cbf9773bfebd4321cb2a965e75be701c 9a87c9d904851205bfcc4c7214610fe3 6aae683396bc08eaa4b1640fdb2c85c0 62ec527e6093cd007a9af08d0375df56 444e7c5709eca2496f61afd58e50ae2 ebf5b387f119c51cad5067eac75a07f7 605b2c687b73695c8da90b986150cc3b 5f0e28d1324397d9c0b027ae5b223d6 d2cd3e3cb4ed6ee4e7fbee941d13bb9f 205b404cdee5d81cc624b11e153a6d87 de80be770d51dbf53567b82c74e275b4 397ac4bbb11796902d92929fa159facf 567779d7087c75eead5067eac75a07f7 f1f14399ac9684df835bac7bf872f771 da52e5b3a29c06b1eb8ae9cf8e3a676c 1acf34aa0cb8f06a19fb4103277a6b93 ee50d76492226837926fe0a4cdbf03 5a86b8c93baf8ad0a9030dd33d75b731 46a1e2560a1e96f3897fc31a9c059e16 972e0e5717676e47d201085e80edb26a b2ab0b13c344132ec569803a3242d4b9 57678bef578b487a738e43095496b061 aab92a965e310885d2b12aa6a0f050b3 433253d0d97f814025444614eab3fc33 88134efda194f8f422f9a913dd25c68a f13e44c93bca57d092f4c88fd91c6b1b d7d6a7fae6003dd6f4fb4dee5181bee a5669fc418b91f9959cbde03ded257fd feb6a23a5e25abe459af9a18ecf57ec3 691480901ee9f047ad5067eac75a07f7 77c2f1b7a7c0a4d15ca1f314f1afc186 63a218005fa1bee7fd313061a14ce51c 4e1acb893cafc1ea29c39f613cc72411 d5fd97ad2620480c62cdb4b7b7821421 f2a3ac936fcabeb8d1ccbd5d84e5bc86 e6b0ac08a5326f23faf575cbae5008b8 39d8fdb56b0e160dbcceec49967c0de7 fa4d4e697d21ec65512d71be7dbf2d60 9d47deb11cac29f089345002d2594e4c 1b80cd42474a990ccd8655d05e2f9e02 2c75963e304f490223ed665630afd1ce ea96a04c68b969c5c35f34f09f11667 38c4c2ddbdb502e162701a18243b45d3 16549eea10c75d0f65d3152da5208307 bcb4f576747e10bdd7f6e86d7d335698 7acc1a370dfcd3a85ff6fe84f53e00a5 758b78e2ad5dfdd1edecfa50e41e5c9b c02649dad5a5946dfcb04979ea30d7e8 3bc45b4fea81c02463b2acb037dfbcde 8417c3b75ce474d217b431cae0dd70ed 52867aee1e2e137912a905e721b748f5 d673c7ec4a08aa6db6f5e7b313e4eaae e5b1626359c609a59d297e74104d3ac3 7f4f6fc801f4f957263e68b45fad1e64 6b9b014c54423664a9bf865a81345d8e 7e8caf5bf2eb1a61ecaa3c66b0328b42 c0976144b3ec94381076bdfcbbc20a9d 294613465801739b4739fd13bce14311 3d92cb6fe0abdf9c4ab121f03cb11a77 459cad806518f195ba6d436b28fcddfb f70fe48c38bda53282c132e825d0d08f 8f52743c3cb564f149e6f7df978f3373 1be0e167a93a1069acb4ead41419080a 7a2ad24394c5d139d46c340938e2ff1c d87bd42b60591573c83f7280476c6eef 522f8c069a76c21fad5067eac75a07f7 d26818a4e62d931d2056b4bd5d870b47 84d3224312b9630465826cf0dd1f6a6c 327dcb9a47911686815bd25a546c8489 cae6c2b329bbc12de5d5fc930770c792 514ba7cb3392ca5ad5067eac75a07f7 3fbbb64cce9b5fb681faebbdea6bd9be 1422f82a72e0b7f48ae1c1abea367249 bdce8b3475f59d38f4fb4dee5181bee 6233b6cce0da0615d4cfbd0aef5a371 ade8119d5a30ba4bf1547b1668422ce3 94df387a0b97302ad201085e80edb26a c293f2fbc66af3dbf4fb4dee5181bee 870562aca7165d703c78f7fe78269073 a58e45ec5204f09559cbde03ded257fd 52e921d1e558e6cda19b1c45fadaeb5f ff8f8d280de66226d2b12aa6a0f050b3 4504e203b67dd8e473f10e6caaeca56 af264c02f69566cdf4fb4dee5181bee 381317c1e4c91e87855931d119219022 cb30a5a8df3007f6f4fb4dee5181bee 2a9ad7f4e7ab564a5be2d177e843be47 411f68beb7d27135d1dcc55e36186e4e a12abb06ee3aa30ae074517a246f1e65 77323ba74273cfe017b431cae0dd70ed 248e0773a2a8d90879ba0a8466ed4e3b ec3b32347c823f258c2b40655482a651 fcfc935c2ff7c66c858699aaad4acee4 df31fdbbf7e3616b774561c9c1990536 f5557538f4c6d755d295b24579cf55b8 919f90e92283eff8febad4f49b26ec52 44c720c5edf8942798cfd47a860803c5 978e21e3ac24a83c17b431cae0dd70ed 41fe326e3decebd1b40f0ac0fb9a650d 1da4abf560002490391b7a189305050 162550a8510464d97881b8f7aa99120f 7c1cf879c84904a4e82028a475156419 5f9d3dae06acf0e4e93e1127627b834 c6885d073919e897de9de6d8a1c444be 40279f85fc80e16edccc47bf0dcf5d3 7f218ef91e835a90b515d1675be6b5d3 5cbed790bc24fa22056b4bd5d870b47 b1ac6f2ba106e8ec2250bf58700b4d8f 88a00b80d432ed5a577e7964e0284adb fd359f64dda4e753870f22c94729669b 3e4f4c54420bdcae75becd8a4c3f1866 9d68ef4ac84c552819fb4103277a6b93 97d009dc14e25080d83393768c99f441 6152fd8b7b5b10df436455e65b78c0e3 831955faf1c5eceb433fb7e44afbc69d 818879b4a23c12bf575f9747ff6fb5e8 f1fe8c6c1f9f28321739c3c7bfb786a5 303c1519c700d19299e8bf807e902261 36d1f0331d7f4ad2cf695c8970a97c29 ea518b89b8511916ac51268fdb437a9e 8ea569854b8dfc8022b74f7ed4070ae0 9ad5cab6ff1e45fd48113d3612de043b dd1a375db7015e0ad6983f351200ac6a 7c40c1a2e4476afbaca9cc236210e91 367cc7ed7b83b7c8fff16555386d173d 4bc92bee14e81db06c262ba0bee45d20 8b8b59fc52257bea58e51facd8ce1a25 4eb3dc26aad9ace8f4fb4dee5181bee 9f5ae162a075ec741e85d47a2a5461b3 481885f3ffe14c40665f42dc26fed092 f123b8da77f6d17e50f9fc0e2c94dd76 27267209ed320cd271cf429728b349ba 7c33a6f55768b7acb97ad864945165a1 e0f7a559a6066203dacc0b57c47fa747 991803aca7fca258b40f0ac0fb9a650d 3b412429257bc1c34e437e844fb32a1e dd4d12077d16512d8ab9e8dd82b356fd b218e59af74f0be4ee9005feeed08b86 23c874e54f1f9f152d07d128adae16ff ab131feec69007a42250bf58700b4d8f 8c942a8e196a9371a782a4379556c7 93e43734f99c7ca6c42fa56863e48020 d27d44b023a8ac1a54457eecf7344025 137fdd05ae4e69c7a68359455a0ffe24 6bc471eb8f212c9317b431cae0dd70ed 53f19d1ab0828e3fcd3af3995946ed40 a064a3e9b537fd64818b16b10229b98 1f239e55de52bb63eefaf3e79e3e3454 3880be8744dc0ebaadab4c26397edfab ec79d41034e8deabf4fb4dee5181bee 87dfa3332d118867d0d69b51a45f7aff a557114149ae934819420b7669e7265 146934a1cb852afc1a1a2dbbd3d54d53 192684f9de3adfe827ee88e8274f281e 4e4b38efc9345bc3cc543a6b1ba2fd1d 2af98dcf936576b155f28299c0ff52b7 b54d0fbc33d125bb7a6d149f6c9151a9 360d9cc763aa370320768660cf080d12 ca0a5a3a4c5e255b20768660cf080d12 b1117a83ebf5a4c9c337a931444a5063 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02828884_train.lst ================================================ b625936e3db6af6318df1fa50d2b64c 17b7a0e3c70dbc3d90a6b1b2b5522960 a6947bdac4ebc97517b431cae0dd70ed 96ab21db41e4da2d848b05feebb5193c 838c48b41d513a2dd0992406ba4944f5 1b0463c11f3cc1b3601104cd2d998272 7a7ca24c50662907bb808757415d8a76 ab13fb5a4eb5897eaa9fc9f9a28d2718 2356e0b210f85371f8fa66012789e652 275249a603cf7f6df064889421ac8911 c8298f70c094a9fd25d3c528e036a532 8ed3f1b59a74ac71f155d75bbf62b80 976636850849c3d6ffd996335233167 447ad1f23f96171f8d9b3c3ef984857e 6c1ca36830d54ca5c9736640ccf985f5 10654ea604644c8eca7ed590d69b9804 d34b04cb67bf2115c308e7dd57b5111a 230a85ab57a15b90e074517a246f1e65 531658856a6347b1f4b6538438a0b930 83e19abeae8b157d3eb520ff7cd241f0 6e29c6e045daf2a5d201085e80edb26a 7cd1d8b686ac0059ad5067eac75a07f7 b71a0cca7ac86498430b7446f9e1252 32fe3c383ab3687c94c13f8f78a6d62 c8802eaffc7e595b2dc11eeca04f912e 7f418f4737d4a7339702fe80e90cab1c 94ac417b7ec10bcc6420261eb2dfc717 beb4feca82b0082efd60059ad8523f1a 81df1fcd6e2eec15f231d3622caa1150 69f724fd745669fcda56795a6fbde1f b7d0a6ed347a549b278d386bfa54545 d8a1d270154b70e2aa1bf88d515bc6b2 a8be828647ebc817abeb67a6e14a6d65 bc6914d649379349ab3be97afdba4e8d 7d79d398f56c13eb12185770c6bc35e3 d7d7a6bada0ba7705fceaa39a8353bde d074449720d6b421e44204a7bf1b3ed6 c2b940127ae286832d07d128adae16ff 7ddf43b3b160ba10eee5b98d7c69f27 10cfa696ba2259ccbbba142d6df53ce ebc20661d9e103334b3c42e318f3affc b77813d8b4fb7c606919f8efc25fe2eb aa88a7bb135e074e2056b4bd5d870b47 c3531b822720720bf27f378f9a625c3 9bd9483c8eeeb703cb2a965e75be701c 7631a05d80484ad6d2b12aa6a0f050b3 1ea895308f2aa98f966097adcefba56 26240de6617ea89cc6c4a9ba1f33346c ca85baab8740ffa198cd58ee93c42c40 6d9c95a2409a8c90391e4d6c585a697a 92f20bc7a09dfc1d19420b7669e7265 d71d9473e08c108d2f210d96281fe860 7c335945340c674cefacb264ebf1ec75 602f39fc7534bc4a162bf7725b3fab02 812665596d6c13b1adeb1694faeea26 1d94afb9894bf975e76bc197b3a3ffc0 8f25e1c5977cf1350f0339a8f91fdfe a11db718438648a0ad5067eac75a07f7 c1973b3aeb0e54df653ac91111db738b b60b9fe791be0f4b1191025061735ea3 59a3fc2f98cc53cfa13c59d3c05ad9e1 19f24754ceb9bc948598ced6ad25b3e2 1480fa8916f31b6d3c77a85180cab6b6 45c49b9d7cf74ed261477e162a5a4fa4 8967e65c1541d1874aa7f42ef07f614e 1d9fd401e86ab773d2b12aa6a0f050b3 26b3257b2e094083af9ff91a3a02b5aa 4e3d100672af00842dc02296076d8ee0 d7eec9ea272f5fc9cb2a965e75be701c be9a174af2b3a463f4fb4dee5181bee a77b423dbe9f9a34beedb4c8fd29e2d1 989c5de438050d9d6664ead1964339d 22af1585e38e4e76ad5067eac75a07f7 784e9add253365c15a7771962bfe7829 89d15e96bdf725bfc955e5ed03ef3a2f e82eace9941d82f34ff3e3166b80bde9 84d8530355cafc8fd838ae16242881dc d6580bbf1220d39ede270fc3c23d78b d63302230b1e358f24e2eef7547426c4 d21839a3d4b5b30f55f46d55537192b6 be0b1cfa18356b5bcb8b82ec2ef44379 1b77f2fbf17f28e726cd2499b0c05f5a 71225307ddd5a772dc11eeca04f912e b2dc3053a4643c876ae68b11b0aa337e 874577f61fe70621a1370c1659f8eb45 4ed2e0a972432881ac3644c4bb0fb64d 683ddfb4cf9c8f2883f21c04f5e0acd2 e55f19a6d411966c6bf2e668f01c16f7 b8eb131fb74aa39af7436fe692c24f3e 18a3d4fa8abccfa7ff8d4c5a7727a428 5856737e6fc90bbac1a25f36f85c3fd6 64010fd77c10672dac3644c4bb0fb64d 1ebdf871b03ae445f4b6538438a0b930 76958ab9aa25d309c9eed7651b77d0f 9663627be99d2e27d2b12aa6a0f050b3 ac4de7e08bc1f024c955e5ed03ef3a2f 57ded7ea16600342639efb65b33fee62 b990e2ecb2650ba548e7a83cf3fe93c5 6b7e64a23106bc6ad81bfa7b5196f847 61cb827012c745e0ba29d2aa241f8fc2 ad3c4c72cda4dcbd620ea05889322bef c57b336bd865c0907b20cb946bceb58f 6a474cb5a494c1e6ad5067eac75a07f7 72d098aad341ae4c436455e65b78c0e3 2cdf972377f30d9485718c281d7fdf61 a5856a7738262b05738e43095496b061 7a9a3abadf052b3bbc2f63672224bac8 f1b8f4c4b2dc4a63c2dbf50c3528525 1695ec4ee4d2e60b50039fe1590fc615 a4c8d232f7943e61af8dca8fa046a737 7b58a3e5d7f4dddcad1d789f3b2120d0 6f0723826537010c870f22c94729669b 14688c10826a81933792407aee21900f 4fb9527f357f37f99dac46bde4c69ef2 9da3d1f848bb801c77ec6cec7835f07c bb020b7d9c7fca9cad5067eac75a07f7 2a050ecb95f2a056593ebeeedbff73b 729c336995af1f96955a1fc933a0f899 7769891a8af54054bfde7937440ef438 58e85d628f86aa897bd76190db9f54d7 6b2caf6470d3dcb58ccde000e771fc1a 5a6e7c4fb53f27925d3bb412062af8d4 f5f8c8e5d2de751f63b2acb037dfbcde 3a85b1fd831c15bbd2b12aa6a0f050b3 7f7956f11a1fdfd0d81202a54291c0af 54f33a7cb3621d5ced98cca8f0ccd5f7 14b63361a48a9fffe4a048c146e8bd43 80b20fdbf1183f37b7491f8d3451cded bbdc34eb50c32ff7c6e70747a64ccaed d0fa12d918d97314738e43095496b061 abc01ead2541d73f97485073216729ca 38ea17d177c4e872fd07832c54eb7e78 cdb6ceae0102632fffc6e457221b9271 60287e7894707cf9fd074351be80913b fb2627957d4cda1bda31ead4cf13511a 5a074a3422d783cbad7b4c3c92e50b84 8ff44d4849eeb577ad5067eac75a07f7 4f44a4d47a8911c4f155d75bbf62b80 826a100b907c3fc4edf84ea98391428 ea4e8de5b98a0463c955e5ed03ef3a2f 50c0de8fb13d6421dbbc9440457e303e 9bf1e702777f4f5292694c864c93195e 7c3314a24702128d19fb4103277a6b93 9edc26b719dfbd49121811fcf3127a22 67bee18dec77f305e4af5827e8177766 c50aa1c3da488573ba5342d638d0c267 1f4ab55de315d6aa7d77abe0f9632d4 87113624b71e8961e3e484fe1f0aa4c2 35ac96f483e073faf515c76790f82ed4 8d4693c04d684e61a3430e4fb40c91fe 6b70f11a9baa59ade43f70c0a99fd544 6d6143cd573920ba7251f1ec40392b93 1042d723dfc31ce5ec56aed2da084563 7139a01aa4fd148b7435838026088e5f b53a4b74b0c898ab615925cde06141be 91a39f76430e6cca19420b7669e7265 18000ed6034007caf4fb4dee5181bee 11665c5093e85592b340344cde6e80c4 54547a5cbc7cd402c955e5ed03ef3a2f fc3865756db954685896bab37ddebe7 2edc5c32e3ca7242aa6d4fa3e14dc1ab 5f3782702eb8f2d421b4fad85a658c 501e374fc9a9e5c263b2acb037dfbcde 7c5bebe21d2f9232af268f6180933aa3 84e0619bd80f5455880e561fa6db53d8 794573d3e6a2c4ddd845dc43591f551 e8ed5a53c78744aa600895f6141c10ae bee41df71228b870593ebeeedbff73b 38403c071594b1cc749694da9ceaed25 f540ad990dbbd600f4fb4dee5181bee 1b8e304a9c23fd4563b2acb037dfbcde 4ddee322f191096a54e14b4b3de20526 db4f8c9f1c62e421efca4f7cb98e0c29 b20a0209355ef6ddfe6460d8d9bd16c6 76e5103be2d6199071998932c708d327 7836a7015159442980360680c1602c7d 564474f25a4400c5dc20930e6fc85682 85034e80317e36d9a6c03a53cf0a14c9 ba8ce85fe8f294929126d89585a68a7d 4651f5b75533042283bc207d8a5912e3 65e7b3316245780bb5512a11bb8b2bf4 c6ccf94d3e512ad510b3ff08c68acccf 7462c18d6934c5a3a83826e22c7812a6 e0777bc4f8e3c6db63b2acb037dfbcde d3b644f9eb32ec9cbe1fb1bc0addfcca 15b3111c1611c2e5738e43095496b061 613e9e33ebb303b0e9e2744369bf17a3 9e429b7f77646b4ccc8f8e7f17e9d7b6 c2365f1009f94814ece2872dbe44bfca 1d6150ae91a07cf6f4fb4dee5181bee aef0765eabe46794d2b12aa6a0f050b3 cca18c7f8636606f51f77a6d7299806 b8f462d89a31e95b777c3ba457301e8c 7229a4c3b3146f74d838ae16242881dc 9997397f29b90af470e359f3b1d0f6d1 e79a991fbf64c2c771dde564c9e207fd 7b7b25e8ab725feae76bc197b3a3ffc0 704e4229c7f8a0771015feecec1fadc0 5ab38425eb09fe33cac2a982f1c2a5b5 38d4d7313a3698704bbe1e20736de8a2 675f7c94f5422ebe9e4965f0106e00d9 c3da9fd354b31502d6eefa796d2f261c 1998e800a95bfd18edd7d0866499ad97 6550c93bce51b9b4719088c8e42c6ab 6d08f3c059e674dfcb2a965e75be701c 7cc80dbf0cb6f4c6b8134b0fbf68257d cbe6101e5199ca2d88c88a4c0a3c4a21 8450be279a0ea0b555839db883c17775 8f64075972a1f7f3dc18af6f6bfce3ef 2220c6ade811851cc13e020d985215e3 3b7fc97192e483ebb0bf045ee98272fc 65aa814b10f778b2056b4bd5d870b47 f0c2b4f3e73873998cbb8bac2032149c fd2d7b385db7d186f9e8cd846ef13776 b57079e504413f02ad5067eac75a07f7 981fb231709d4d2cfebad4f49b26ec52 d0c8a593361ab77d5c3d5e3801c5ac29 ffad1499a8bb6c7c19fb4103277a6b93 7cbde340db4f4ee2cb2a965e75be701c 783b224ec9a89638736ecce7d21f395e ddd142d8dcd4e95bf4fb4dee5181bee 7a3590d0abb36b49593ebeeedbff73b 186da14db8a38403612d80eb7de76ff 107eb4f1731b2466780bc2708a85ba9a e68f6dfeb7ceea7084663e651cb1f07e cf3821cfe979f0214d84fc9b190bb79a f133d3165d54e5b227d635628fe95db0 5b5d3f675f8d0bfdd2b12aa6a0f050b3 e01c283efd6a0d2120d53ceb96ec7d24 df6fd36040a5719662701a18243b45d3 1e4c1fc02be62675f90c2728303e546a 722458bd2a0eb811214a15a5a42c49c0 756108c9b72e95aa57d85583f4ad07cf 48a9e1be51e751eec4da326c9127fbbf eedc7453ee8b1cff9ca96b2737246fca e31212e9f9f5888effd5817f210f277d 65470e16a5880d4dcb2a965e75be701c 16ce0976d3bca243e6fe3612af521500 595e48c492a59d3029404a50338e24e7 5fa51bc60906cc548270ab5c6ee87257 af5bec1a8ce2348663b2acb037dfbcde cd7689a92e0d39896812e49a5c99d0f3 77aa33479c2ec92f610c2a68437007d6 ba4ffdf3eed29dea9f8c3d2002c77ddb 64cf18fe86206f6e1b1a00a31bfed97b a31ae6a0f58526af2056b4bd5d870b47 696697545f8c8b9ff26d8e17374f38e2 6953a491a4c74d42d5cec9a69bf229a3 72d5a7338dd7ccffd7262b1b986920e7 86980fcab93e60151f53db693ffe56c5 8b19ea942987fd72eb753607b9a115b5 99e759db1e01bc3196ca2abd33a2baef 3776c500e1654d55c50517751ed5f28c 9452149917cb2e27f4fb4dee5181bee 3e16ff75bbe7ed27464e1d2ff524a75b 644043e43b18d2fb4ae9e8fe36a5d4d7 73a6a42f5e45b3e7a3879b7d5fe7c612 6194e1897f8ebb17b40f0ac0fb9a650d 988d4a7f08e66aa3d42b9650f19dd425 4d24a0d4ed77db9f4b3c42e318f3affc 2b065fc9d62f1540ad5067eac75a07f7 34bbcc05fdaed2e437638a2ced7d0ba bd88f333baa6cdc723d95f4309ade30 5b9261d3ab4192a4cacb7e48ba59c48a 1d0dae2db37fcb6ab078c101ed808ecf 5a52ec36c75fd3d87f502c4e1de97042 d46ca28fe271ef7bc5a208307819a3a1 442283366e5b20c7a136444fdcc3f2b1 687efa006864f71d46c340938e2ff1c 6d1883ed7f0cec103023dc1d1218bb2d 4bd994f25cd3e1fd2b12aa6a0f050b3 a8a6aed819779d6b19fb4103277a6b93 c32504d950d54881c3331c70c9cf7624 24eac2668c9f241fd2b12aa6a0f050b3 6f2fa876147a970c5acde0d39b1b9dba f934f89d094313362056b4bd5d870b47 9c9aed95c76b4ecd80360680c1602c7d 607414f33022aff2d2b12aa6a0f050b3 c97683ce5dcea25ad1d789f3b2120d0 6c5b4a90068a6b511fcbd85b6ac8926a 9705540347025dec9c2dcf27153363c7 807f68d665cf7b0cf4fb4dee5181bee e4d1d4714d5dff9b79fb1978bf47fafc 3ef2e306aadb9f98dd1f70bbc27696f8 33a40eba7b3382f5653e42b6d3d77b73 a3f987a1f22abe81c01b94c5b8c30315 32563c1b8b31667bb6695fcbbfeb161b 5dda4ef4ab9add9411ee8243f54292d6 6eaa388bfa782df4392580629414747b 1ffcb829779ad5942056b4bd5d870b47 348c52c333d7a7953722bf980385c3c3 36e1592e13b4f5ed569c11df1aea8ca4 1bf5b1fa54aeec162701a18243b45d3 802e7f3207fe4306175516c727777db1 991c84609666c015da34af5fa7da2314 d6075b23895c7d0880e85c92fa2351f7 e14c754dab919df2ed647189c2f43b5f f3a44bf9a27f1446ae23680cee12f145 c50e2c7a82ab0362c69be1660283647b 7df3c8885b22900ec88ad71674956292 4e3e67fa22620b82056b4bd5d870b47 153116d4415ee016601104cd2d998272 5c1dea3aaa34fee26c289bdcae73ee89 e6f7d84750ac46b260bedcc07a9f285c 17ebf60b6ba61ae949e6f7df978f3373 691ca19f8a2324652056b4bd5d870b47 7ef967a69c03c63dd3a0736b56eaf4aa 79f02eae8c5b417d756b36dbe53a2798 84cd6e96a464894af132460d3f8b116 1147218db46702242056b4bd5d870b47 16592a1467b7751fbb9faba74eec2c74 1b9ddee986099bb78880edc6251fa529 750cec373ccc38a3a3d37e70863d948e 843cbbdda45de37970709281289b3745 ff71a0d33a3aa440565888a91a05d618 1b1cffcc9435c559f155d75bbf62b80 393bc2b638ed33fd201085e80edb26a 5c76331c2d99f3e2fc9d3ea96a9a9d1 d1caf5fd22c6c5083892cfdb72a66fb4 17d8e07c30ff1657d201085e80edb26a 8b9d37a08dc542f86f4e61e20a3631d1 c65b1fe1cb4ec230262cc3347c0f3889 49eda923afb7fd21456cbf78e1e89022 f4b6526b744290ee5459024571014ce6 6e045aac2c52c7c556f6ef8b6ca8f4cc f3ce6a320a9f2791b1a00a31bfed97b 9f757c0acb5264f665ba78ad9601cf1b 1dd7409c95d59d0da192483aa282f8e5 515716e2bf805c088430b7446f9e1252 1f19f93fc7d88529ad5067eac75a07f7 d9432798bd2aa338ad5067eac75a07f7 3feb79684658db043efeb398bf800e80 82b8609a6b1dd9c1c1c1ff0fb1d59ad 1ccab18605adebb15735dec4de5bdaeb 3b2ef85bafb7669d35382c4d59d1fdb6 c8a2ce0e65da4b817b11ae648ea92233 79b66254a33c4a80e68b7becf68bd6d3 92b9ca91ff514bc90658f68885fd5d0 71b9976c657291772d07d128adae16ff ba58fdaae9a5520b421b60451f2f74f3 779907753183ea36601bea3dca268229 7cc7a6e8e2aad387a6a7b6e78d8d5bcb 807b854a7c35379af5779d217e69b7a8 437167659b0b5a8fce8fba09dd640742 852d65fcf7abec4a301cd89e7156530e 319c099e8df5fcae2056b4bd5d870b47 86341aada547727593ebeeedbff73b b2acbc0822c163fb491436340b3b4d18 e2e528622ff47c32cb2a965e75be701c 427df0fbd51ba54560f140e76bfa752a 213e68b2abe5cf24bffe63c069324d61 ecd56b7b86c4d94ad1f278e1513f3b7 d6924af4f2849c8219fb4103277a6b93 7a8dbe4a1ce3be987962800be79c6e52 a82c14ef1540d3abf4c42dc386169bd6 28ccec6ab49631e4e0f41fcfea9716c3 b179e972d13ffde523c05fdd9cf000c0 55c97131574186c0d4d8765e3910f617 15fd978b59889cdc30bbd4cddd04c77b 19aa04605b1b00d0ad5067eac75a07f7 e27ffabfdcd52e7dfa11d00fb25084c8 8d1f361eb7a927d8907921e9162f6a43 7b17313f2c00178b2a4d67a8ec314d2a 2480c05ad2b4969971a782a4379556c7 27fd962813feeb26be25fbd47cafc694 6a3bc6b44ba974b69c0c9824ccd078be 537a02eff282b33df58bc14da5676759 916a6ff06a128851ed98cca8f0ccd5f7 729650e08d4ddb97ed98cca8f0ccd5f7 702cebffa33a19f019f079d1b712f46f 18f57a3d41117140ed98cca8f0ccd5f7 40cee2893781b47f50f9fc0e2c94dd76 43d40b726c369eaaed98cca8f0ccd5f7 e25c7c2469135e3fdd3adf3090c701f7 48f517497df57a2c2056b4bd5d870b47 3ef52655b95ea7828d1fe8cdc415f4c5 6a78bd21ec72d396f155d75bbf62b80 de305de253b7040aa4e9452025f4f1c1 e0ecbe3b106f94dbd2b12aa6a0f050b3 cb4389a968257a7dd2b12aa6a0f050b3 5e0c9babeb535aa4718e797a380b813f f2916fe6d5f06678ad5067eac75a07f7 7f1f873921ae0c63f155d75bbf62b80 5d9880d63d54b9c442bdc91bf8c0f902 ae1adc589a37317b2056b4bd5d870b47 e941e1929bdc87d5ad876645af0395fd b4584ca6fe22a0be599937922ec198cc d2193ef2753921aced98cca8f0ccd5f7 2e5b449d584725dead5067eac75a07f7 41e1774c1ad94df4ad5067eac75a07f7 9d7a51641609efeb54db38a439aab3c3 7047ed12851201138cc469a51e5a5cff f21333a7141e7fbdad5067eac75a07f7 7aca4c47c6861f2122445e799be0f18 4eb44cf234eb74dfcb2a965e75be701c 323f0787810ef9a285a030bdc6cb9884 dd9d0cfda54dfc30eda82e072f128485 f8137efb3a8bf9c3d2b12aa6a0f050b3 9159af619d9125ecf4fb4dee5181bee 165cd9780f069ff31a546a81aa94b4a3 4c26d27e41726d87f359d99f906f117a d55207728b14e543ad5067eac75a07f7 324257d878597916bea0f59596aee501 b90a642198dfd67ba6cf6cbb9f4c2bb 272162e616a4e8e9ad5067eac75a07f7 95e97cc6e2f7e2e1d5183890546dc397 7ba9140b8e416d79601104cd2d998272 8b4314a159d964fdcb2a965e75be701c 5f355af51670666cfbf62ed378434fd1 6798771442c7d473f336cb889fb7c819 95b375118d800de7ad5067eac75a07f7 5aa59235750d4dce9953235c64bd990 31846b186cddba04554672356b2029e9 cc08d4ced5931ed181faebbdea6bd9be abf250a01f526137a035c800c58595d9 46bae1672b4d146993a6b3a551dcb739 3a91034ceb33784b562fc21c99684e03 263f629d385be2b1601104cd2d998272 80ac9f2999087c868c0a51976aeebbec 8d9903f1a197ea9af4fb4dee5181bee 9c7527d5d1fe9047f155d75bbf62b80 e70d19625546502bed98cca8f0ccd5f7 170b01ba7fc575aaad5067eac75a07f7 3a6ac28f247a30146d812a3e2aa98a91 2fec2d7fdd169e28bb90acb1046227f8 ba363a93cf76f9a12056b4bd5d870b47 61e3c4fcffab96b9ed98cca8f0ccd5f7 9f51e1e44bd439f32a0697dbc1a34813 10a66ce0a6b469d3b2cb19fcedc32ddd 7536b671103f96e5b12a55dfcc392e26 78c7cee6016d8dba2056b4bd5d870b47 5d68fdf84dfdc4809f136629ee03397d 80d62612758f74d4e8a5546ad55c2a41 894f41b8e4e3231601104cd2d998272 797d99a5ca291a2085fcf80cfce883fd dfb1e5e85b5892adf155d75bbf62b80 9d01b7c51223f973f155d75bbf62b80 c3ce87b94f493cba4ecb12161a6eb47c 74983e99e7606eb114708467db3d00e2 a7588e794de38fd055a60d8737d1c0e9 30d3152964e13201520d2a054af1eb24 7a910c3d6878068ba653610be84c6d81 12b3daecfb0eb7d2056b4bd5d870b47 23b5a3c3d7d6057636ebcfdda999d232 6accdfe97ecfa9952056b4bd5d870b47 f343599b3eb41ae3f155d75bbf62b80 9a7847726c939d86c267d7dba6c1d40c ecef040a94ab9e59928f4521e8b299ce 5aa9a03af76807fa94f937d854219137 14a73dd6b5d7ef35feea12256ad59f11 6ccec23049ae42ce2056b4bd5d870b47 1cbbb30e8e06e932ed98cca8f0ccd5f7 fbf16da56e709e422056b4bd5d870b47 2c47d12adb8437ed601104cd2d998272 a451f5d4b01cc78856f6fc4b4ce1db04 55f637ec7432a97d1d677cb74bd6536a c0336b0471ca232bf155d75bbf62b80 db663d2bc7e398ad67a2f40ab335eb08 f6219339c25b42fe81faebbdea6bd9be 8bf63e9b3df32ff1e1aaa7ea27fc24bf 3461cf51ad90f09ce3dcb92695647492 86ab9c42f10767d8eddca7e2450ee088 3e850a85b7c0f82cad5067eac75a07f7 9f0a6e7c525c3c53d4d8765e3910f617 ef1a728572967942ad5067eac75a07f7 5ed9651c928575aab719144d1cd30cfc 4a5f9a0672cf3a1fad5067eac75a07f7 9b41191a915c09bc669f4f2ecf8fba0 58a09612c838e441e7b89654b68b9e5b c83b3192c338527a2056b4bd5d870b47 3250f6d70feb1e77d2b12aa6a0f050b3 99375af4e13f0b2f50f9fc0e2c94dd76 c0e755071b467ac433faf2dd5a7ff771 778ad8517a34927d2056b4bd5d870b47 9fd13f28f9260e65ad5067eac75a07f7 2b25e49c58ae0e292056b4bd5d870b47 bf0b9b88be76628440126a5bcf48fc87 c8fa692760ba875848d791284650e46d 338fc00ee5b182181faebbdea6bd9be 367e5ca5d5791739d4d8765e3910f617 8325e5496a7ab8abd2b12aa6a0f050b3 10bb5f29a8654f22ad5067eac75a07f7 7b7e73cbc821d520f155d75bbf62b80 ac78c8b91417aa5bd2f4120f473fc3e4 84aa911799cd87b4ad5067eac75a07f7 5b45d3a1edd81a8f2056b4bd5d870b47 616833ef9cfdacba583f5c4be082f8f6 6ec0ed3fc05dc7b7ad5067eac75a07f7 247227d258f2c239d4d8765e3910f617 715e78fa6ac13a5ba5d322186fc10e9d 4f4416c9c53cee10b3a46b931571f116 7ec901eb9f5204739a6c869309041adb cb48fccedaee0e82368bd71100fb3a30 7792b15f8c598763d2b12aa6a0f050b3 89326f54e97f65d82056b4bd5d870b47 c03e7f08edefc17a5b28ac1273e4dac5 8bcf6b5dc0c19e6cad5067eac75a07f7 e3fddd1e0ce63b65ad5067eac75a07f7 c29ae4355b73ad302be4222736443739 72dfdf42a06d55f61985df8e5a34361 4cb196a794bb7876f4d63bd79294e117 ab1614b56ea09479d4d8765e3910f617 aec473af77a77008cdb14b1e0ff2c14e 3a4ab482c4d344eb2fed5f7b90bc9e3c 32bd91d61ad0824e2729c156998d6717 9c95f498f2726883bdc8e7e780fbaa21 969f830a531682cef155d75bbf62b80 6ee844357bbc5bddd4d8765e3910f617 e60121b8e4ef137bad5067eac75a07f7 6ee8866fa7b253e8f4fb4dee5181bee 648754d5b241b12e4886781cb92ae74e 1f1f0cb43e65903d1d06bff8f83d7c23 cc7ab68e97b381eead5067eac75a07f7 1ee7b919637a2acecb2a965e75be701c edac7cf37d1d7a42c79156efeb6d05c4 ebdcd5f64e44ce0cb2a965e75be701c f35697e0ec1d35dd357ea07594f25728 c4c9828b5c0e5db1ad5067eac75a07f7 a7096667d133db73cb2a965e75be701c 4cd4797320eae6f90dac09d2827796c 280553e975d6b79fd2b12aa6a0f050b3 6e683e60075bff408f98ac7ca14e08ed bdc3a9776cd0d69b26abe89c4547d5f1 a001663b61ea6accf4fb4dee5181bee 82b06455e41204e110df635c029b4e63 13da7d4d1277574c64b7b850ea7b68a b859f6e61529db7b195c5c738f050b29 98de2d75e89789a7d301ec101065cf10 3c2ffb35d0b3d831e1aab65fbcc9b689 2f34980683df2b47ad5067eac75a07f7 b58a0307a86959bd564f6f5de611dfed 388d83f25e045007efe85e37dd46e84a 16e3d7f2b75cd67dd2b12aa6a0f050b3 59cb1f3c7476a5712056b4bd5d870b47 3824b040bd8906e0f155d75bbf62b80 6c8d7faebd2ca60ef3b7873c9ffd02fd 6a7ea728941d3f4f4fb4dee5181bee 5121a485a7eebfec5674b1bb8d658d39 fd2394a5f4d05d4c331bc7630c8705e8 2ab2387e58cfd17ef155d75bbf62b80 e86a2291d77b8ff9408623dbb138b966 3e59aa33fcf672b8f4fb4dee5181bee fa51b43a7de98d0b7a7695d948d413b6 dd86f9095341d19af155d75bbf62b80 188a2c6c2add34399dcab1d3e38b3b70 bc1261eb081cce07467f6a563eb9f7b2 738e4ec61f69606bad5067eac75a07f7 9b7b628bc8cc7463103d45b529610c5c cb4c2ef4e926f7c6d4d8765e3910f617 92d4dbddae3f26772056b4bd5d870b47 990c56d6ab64279c2056b4bd5d870b47 f98b9721d2f5b3d7f4f81e1d4b32b45 371e22e18f8e2fccad5067eac75a07f7 2cdd25a716ab2ac12056b4bd5d870b47 86ef2d2a38bde1ebad5067eac75a07f7 cd08399f8fd8bd3bec6d7b771f3c56c6 7a7c5ca50411d85f4fb4dee5181bee 52d8b9703dfcf31f2056b4bd5d870b47 243ac273ab2262b117b4e4e00788e093 8256252192c60158c5449cfd4c0f0a4a 17d085303d4c5121ed98cca8f0ccd5f7 2c8435941798069d35580c572d992e6 8c6057a5258539fef155d75bbf62b80 c2e0cc96c3ae97932997d70e9237dd6b 1d5d89cc3c83bef056f6fc4b4ce1db04 1348e440934494f581faebbdea6bd9be b2394480df328a98ad5067eac75a07f7 d290989e0cd0ef7acc546d806a30d5b 5f8f2518fb850b544bf6fb242f907340 fb9775e4ada511d7844283a0969502b7 f2c542ed9750ee4668db2d7865d1f724 117259de2f72887bad5067eac75a07f7 5cbffd78e4cefc3038330212e10bdbc0 cf4075a6207a77fad5067eac75a07f7 34577ccdcbd46908ed98cca8f0ccd5f7 d2d4d92195546a1ecac503d0f3cb1d7a fc0486ec53630bdbd2b12aa6a0f050b3 c005e1da092925e5aa3e4791e7582e61 f5ca026c6cb2b06b56be5749887a17a3 8141d9182908d7288be87af3b9c7b4c7 6887f90a83081b56a1ebafc9c1beded8 db8f61eb5dab7b26b7710a2fb1bf7a26 48ea3558db137e87ad5067eac75a07f7 a0ffa64279a8c6f0f155d75bbf62b80 efd2d13058330e49d7f638b2b2e0564 5bb40ee2f4893358d4d8765e3910f617 e929c571972b954981faebbdea6bd9be ba8ca7cb2d3c265bdf535ea8b5cca766 5dea347d55e0704d1992408f320d16dc f1515c5d78429613e80dd430e11432ff 70edb39bb2710eebcb2a965e75be701c 46b3e857b7faab0117f92404d4be5d8 c79fc66b27a900ac842d08202a7fd76 d25707cca23ab03ac8d56a266ac05b68 e66730e74570d0016e90d42867af9dbd 8ccb3bf7c49c24c0d4d8765e3910f617 1ef8c3cabd16f7cbf155d75bbf62b80 f98acd1dbe15f3c02056b4bd5d870b47 e5af69132cc95133f155d75bbf62b80 7540e6df58bf00ff13eaf3e3f6d466d9 25d1aa23abd04998d4d8765e3910f617 7e029f73e9cd98d2f155d75bbf62b80 bd56c556d9514db3500cffceffd2bd2b 287475ec16f5b7477b636e5c31038bd eec9e185d9596e7ed2b12aa6a0f050b3 95ee6234a1638f892056b4bd5d870b47 f958d18643e7dffd99892aa9c57c2870 c56c65eff860855def9373d49bf935b4 ba8e193569ea391efcd6646576d2dbbc 7c49749ab1fa402a2056b4bd5d870b47 575595ab81e657315b3aba3f0877c74f 496f1d6cdd0a0aa247b74f4d1238a1fd c541d59409647408ad5067eac75a07f7 1dfcce44c2f98d2c81e7c6cfefba0d68 9bd3bcb173dc1fdd73141c5c444ce860 96fb3569c007fec46dbc2b0ff6fd8e0c 85ab526dead09ffd398e68bb81784a80 bbd82d91a0b7fc12ad5067eac75a07f7 31615e201e29cc11c7f46e918e672933 7de0323af143c38bd4d8765e3910f617 cb81ce8d2558935881faebbdea6bd9be b83b544f8536375ed00e4d1c6a5a3a74 cd385ebe6cd0c1262acc546c71bed8c7 51c60589bdd1ed73d4d8765e3910f617 da92767c2e0fe6bad5067eac75a07f7 c023275b1a68d6432056b4bd5d870b47 646caeea9d317c9581faebbdea6bd9be a219234ac9ffe2e012f133bc7efb2111 f3e13747a652b96bf5fb97c1f9661c61 d1d433ab6a289a568e95e8a3bb5a538a a8ea7dc227b632edb88a2574e8fbb52 a2678cebeac0a8c9cb2a965e75be701c 127dcb2e061ae07f155d75bbf62b80 667305123da07968d2b12aa6a0f050b3 aad17ac8d5a1ccdfed98cca8f0ccd5f7 143032619a82710b2056b4bd5d870b47 ca238683133f6a7f38f6614f37ed2984 e2f79a5d9126b25aed98cca8f0ccd5f7 b711e64c92fc594c18e830a47a552b39 ae2605e9e8c47cbfad5067eac75a07f7 c70b020a21a7b2de67f2cdc0901bfcfe 473655a56670e13dcb2a965e75be701c 4ec290c73990a82aad5067eac75a07f7 d9479cb37b782ce5b714422ef873ad34 29fafe9d3b95e324535e3a87e2212e35 87783e267a4db70044a8a9dc66c6c095 578b801e35fd2defd4d8765e3910f617 5207969c5c38875a6eca3a103e1326ab 59c914e55665b02cf24b3c783ba45ac1 7bcb67e77adbb19bed98cca8f0ccd5f7 34a1d09b3ec2f05b2056b4bd5d870b47 54c05e235c8d3a4cf09874e0e8a75195 360d4f846b37b7fb5b9049c85f69b9b4 e4f68fb5bdfb68e936a9515582552983 1b40594ce6fa66ca35028a2641239f56 748e447a5f7a698df155d75bbf62b80 d7731559d5f485bcd2b12aa6a0f050b3 84e95910bf6b0b3bb411c6406cd0f9e7 ef018d0bcb3d4c89601104cd2d998272 3c40692f71e9b773c2c0fe12f0bcb343 ed8401565e207665f155d75bbf62b80 ac477aa3d54d0e06f9e4cc51c75c384e 1e4eacc8dc69a40e414354bfb060c386 4526eecda7ff1136ad5067eac75a07f7 7f67934afc4f95b014bcc66f599f3e46 909fcd9e329cd49581faebbdea6bd9be 6718a5b3f89a5d8844c3e89e175ff663 4b079b2e510fffb8cb2a965e75be701c 6a9fb118c1501215f6459198cd03dd78 161bd345833d982325953d410324c2ee 3ff4401d898b488a601104cd2d998272 56916be69d224f2a3569fd2bf3d0a41b b9535bf9b002a226d4d8765e3910f617 9596592f31910b9684a9223b0abc0b3 5f12f2a5d67a1e9fcb2a965e75be701c 62cc45e9d704d87f155d75bbf62b80 2cce7ee3c360abbad2b12aa6a0f050b3 530b1267e70cf134d4d8765e3910f617 632fbec93961015ccb2a965e75be701c 26325f047537acd3f155d75bbf62b80 c20409a88bc98bc8ad5067eac75a07f7 b2596a0e14772bbad5067eac75a07f7 9cd6dc2b9d11016c49b3ccbe36f67015 2e016658e44247bd2056b4bd5d870b47 78f68a5f65ef88482056b4bd5d870b47 25f916e08a803ad5067eac75a07f7 89e2eaeb437cd42f85e40cb3507a0145 9ef2f740d6dc7cec8d01d636ec229b2 d06cf2129d36dec7a4f92840428bbcfc d1190ac57a48b879413d0cdcf1f63207 dd56a9259a0eb458f155d75bbf62b80 759fbe8a3ffa3831a895774ea4e4686b c3feda2ac776a972b8962f874d138696 8d40e13e8d27786b5a2cd0e0d44dc51 8f6890cfdd98450f4f782ac57aea97b 107c0b6b32282102493c8fb81dc7c4da e7a18e21f877b039f4fb4dee5181bee f3ec1b92140e1d80cb2a965e75be701c 408ef9729c48dd40bb273d6b4d49877f ab1c843def8b843bed98cca8f0ccd5f7 c3f3565f0754f1c910917cc30262fb08 13b28cea086fbf59585a7824ddda249a 9787c8521ba8d46b5b83c5170da4c6c2 7a500a01f5ade316ed98cca8f0ccd5f7 f39401db6cc45a3ae3e15116d1de599a 599dd0b655adc794ae143c6e852a4f2d b2b856a8e25eb566ad5067eac75a07f7 1167fd85d3dc7c8df4fb4dee5181bee 20ac7b1b285151789dce72832d2a77e5 bd40921448838cbcb2a965e75be701c f0df158b0694ee1f2056b4bd5d870b47 b6c745406a599dddad5067eac75a07f7 ba5e47b9a08c33d1ad1f278e1513f3b7 edec9a4512b98f6f2056b4bd5d870b47 b788370bde4ecd578a333b44b8649ff 512511e994adef8c28eac72b6945b61 2b90bed7e9960ba11e672888e1de63dc f1102a11687f3451f4fb4dee5181bee 21409db44ac9db8b6f1234a0997684f 3e0694b77418eb25d2b12aa6a0f050b3 4273dca1b0184024b722a94c1cd50b0 7d1e56ea7f32d634cb2a965e75be701c f197553928fccdd2b12aa6a0f050b3 31f34cbd9385944181faebbdea6bd9be 9e5a16d68611c57cb2a965e75be701c 5c31950da8e2eb09929ce23741435ae f136c5515364f62ed98cca8f0ccd5f7 6ec8ad28c96e49b588c2a8e73c840fb2 702428ed9e72d74456f6fc4b4ce1db04 e285e553a6879a5e2056b4bd5d870b47 835086fd24eb283650f9fc0e2c94dd76 ce663a6430eb9523cb2a965e75be701c 3b660f1b7f7f41be25ebd1cd0b422e32 ced678ceab87f6b6f4fb4dee5181bee 41120a43b6b7c93210399d5a44e67cb5 e3c1e31ca2a0247979dee05d9c95f934 bdf722327e02a0f0ce7719c693f5802e 1541e36e8dc2d84caed2201239784a35 18926a71dd7f17eaac40ad047084c6e6 2cd9593e8b7f0560d41e37baed87521d 7e2433a3cd020f53588060c928db75ed dbb5cc73da4780feed98cca8f0ccd5f7 6319038bd4748a03d2b12aa6a0f050b3 65f6f33358b798892056b4bd5d870b47 f11c39810334bc2a45bf743eed1481df a8c8aca72463418581faebbdea6bd9be 77597f34b5f37c5e7a403ae58647b271 5a0f0d22870fc83b2056b4bd5d870b47 146fb2790c11c7f1aaf6c17538652a1d fc6c2a011ba0997cdccf03d91dc58d38 ec7c3cb273f857ca785c8f27b37ec031 cd1077a52f972810cb2a965e75be701c c930760585e923cbdeee898eeed8aea9 b7fd9faa8c78806da9bd18a6c1eb0c1f 3a93bccaa0b3161afca6ee915b120ce0 c069553c08631597cb2a965e75be701c 550b7b205e57c3b2315d0535381646e0 ab891fba7aa43f9df155d75bbf62b80 9c8aba47e37b1eff155d75bbf62b80 6d23e04807a5c840307005544420ecd4 28530ebad05e63d9d9c2d24a3a0c74af fe5711dd4a51b102ed98cca8f0ccd5f7 b4a9481e902d011ced98cca8f0ccd5f7 38dff7c9994cda58f4273dc8988e4c4 15cfe15285425b67bc96b70d50d39da4 117f0ee18ed91ea2d4d8765e3910f617 895563d304772f50ad5067eac75a07f7 a9aa868b77c3769ba873941124e3356f 8c95e3b240f590c52056b4bd5d870b47 f8aa82e7e4c58ce29d31c5ce17cce95d f5d5f659c9cda6d0ad5067eac75a07f7 6d420bec5284eb43ad5067eac75a07f7 616f9d109968982ced98cca8f0ccd5f7 1c310698c57a3d378fd6b27be619556b 8b677cef30fba873240c1f0f1e25335 7e524d1958ca0348d6abb4efd157f402 44085381e0708de48ee8b7b79b7a0cdc b29e0a7af1f8d51b5c50390adfa8881 d8fe288f137ccddc1c57d18f89ad9dc3 2c183b1b94d94d34ad5067eac75a07f7 82071d0daa90cc15ed98cca8f0ccd5f7 b6ab037942cf91c0601104cd2d998272 95096288ad7e0777f155d75bbf62b80 ecbc04934735cbc852dff9108cf86a17 6e77b16c5463bf147756371b6ccc35f2 ad9f6cdc0cab11986bcd8c7601df5d35 e2be5da815f914f22250bf58700b4d8f b2fa26eb323ee7e3697079d6fa35f34 90a309f7ac2c947f155d75bbf62b80 f95f1121136052bcd4d8765e3910f617 36ac567cae9ab205d4cf0f8e55d6cb79 7be476ad18fc7b40d201085e80edb26a 6b05c22024088fa92056b4bd5d870b47 69259c43d80d4815cb2a965e75be701c 206904737710cfdded98cca8f0ccd5f7 f57c2037fdae635b29a9b1ca9709749e c2c788ec4dc9f467d85a7a4d55e9b869 ae9c8421189f6590809b609a351bc774 6512b58401c7ea51ad5067eac75a07f7 bd39e9a5489f89c8d6d3866b78fd4902 fbed7adcac3217912056b4bd5d870b47 5b5be5419120ddbcb2a965e75be701c 3dd362593be47490ad5067eac75a07f7 a31ab48a2b96574b9c3a7877712317b8 23bb9c45796a28d4154e78d1322f3484 d3a5134df6cd94e2e8db995f7899d418 1aa15011153c5d6aa64b59533813e6d6 6a5ba469761d03c0d60ded25865ac76b 579e02140aa4c03edd67a519fc8b2283 582ecc11367a2aca2056b4bd5d870b47 d406968659ec5ab87d55717abcc7106d 6f630f561e5ae2a5423efd8c02bd12f7 1bdfb8796887adf92056b4bd5d870b47 8e260916773769032b7072d8dd8cf43d ddb2c6abe41b2063ad5067eac75a07f7 69ab287543b3a04a7e3b0132a2f87650 8b98dbc11c5d2fb7601104cd2d998272 8ad57afa55cebfe0dad433a29cb627ea 10b43623dbc8ab25ad5067eac75a07f7 98d2e8dc90f050d52ef1844825af63f2 6afb907e76102e222056b4bd5d870b47 a968b5d4ba65b1af155d75bbf62b80 b358c31d1bcab88a26b5e3d0c65cd557 be7408f8b03d491145004a22a9d35958 49704546a313b40781e404e60978a1dc 745ce171571074decb2a965e75be701c 50612adf11f22931d2b12aa6a0f050b3 cad0a0e60708ab662ab293e158725cf0 5125cca7f42b90b2ad5067eac75a07f7 38e54a16698453baad5067eac75a07f7 a857f9d4838b885f2056b4bd5d870b47 8def49409282ccd4d8d8ba9872cc7fb4 9683f5ef9e032a8aad5067eac75a07f7 4d1d28d15b19f9101e0e41d96d3d0a78 4b715a1f611b30768b45d2a1081eca04 110f199f516657c1473448e3f3f73bc2 3f50c37f196c541e776d8bc79b9caa2c b628ddfe4d99a46021c74c368d3910fb 135765739f0cb969f155d75bbf62b80 6a6aba2dd0491b99cb2a965e75be701c f213ccec1e4c9dddcb2a965e75be701c 83e7c29954256530e2c4291819b46f29 e9a9c499e74c2989d4d8765e3910f617 3a1915451880215e9bfbe8b02639d1e9 2d238b5250ab9eb3c55f85313e3bbc89 ae6e6210e0280f24ad5067eac75a07f7 754250f866079c2083f64069b9b28eab 6150a9e7c5534dec50cdeffe12411e9e f397f583f459134030c983bcaf68f0ab 9fe85429413af216cb2a965e75be701c b272113ac712ca012055e892b9798352 41d8b7b9480fe27dad5067eac75a07f7 b9263e32f3d7a9ff81faebbdea6bd9be 68df3d5c8ef4cb307cd7dbf0f3d6d9cc 44d2f4786d18667a86d0ad6addf83b07 8d218bceb517f272f155d75bbf62b80 122a480cfcdd742650c626aa72455dae 504ad0bf35b2004dd2b12aa6a0f050b3 5bccce74947b32e38a92622cf31f5cb9 6b262d977ea93d23ba6cf6cbb9f4c2bb 2f815697256fce5a155b270ed8c04b46 11499e2fe78c7a6d73bc78c81dfbb18 afaaadcde1146dc2ad5067eac75a07f7 58eb1f7c59fda8271068f29f0b65163f 2f2fb3e4f0d9c4fe9f8ae7ed6368949c bbf019371f76366b8fb2c146d92deb96 1d9270d0708fb8a1262707c3863d044 643cac07025f195750f9fc0e2c94dd76 38441b4582f29c8cb2a965e75be701c d23ca8dad2064c4ad5067eac75a07f7 40280757b447eb3cf4fb4dee5181bee 8aabc6c97aeacae7ad5067eac75a07f7 4be9494c9b476dbbd201085e80edb26a 7cf981899878464e2056b4bd5d870b47 4145da9aceda5bcc8b6ad894ae3d111 3363d17303f69d7fad5067eac75a07f7 132231578d6084cacb2a965e75be701c 95db80660b4d979f601104cd2d998272 7ac31f1da37aca5160ddc468fe733ed1 21358aae456be5087e03aa42670e6f5e 302c64b3f9d0e0a3961c690e3d679ac7 a3e6d02075732ca850f9fc0e2c94dd76 8f99b25df578652ae37d4fb630545e64 78585e161ee3e39acb2a965e75be701c a6c3eea17a4b455d75b557dd77720f6d 8553cd048bbdbc15ad5067eac75a07f7 ddaa540f004e7889d2b12aa6a0f050b3 35686cf1e7db69d580be56c7b04dd6f0 4ba9cbd97e4fb17a75e6bc7c944c5642 4a3feda042d94e85319eead4390b3fcf 190bc3dfbed8c9ad4e77259b0944c35b e7536c6b13e44b9df4fb4dee5181bee ccc1d51eabbf589ad5067eac75a07f7 873ce9c208428fd5ed98cca8f0ccd5f7 b03c1ad073bf95cde9edcfa70ed557a 7def648b4fd4d1e419eeae21e79bb898 8d3e69ee2d0168a6d4d8765e3910f617 9d7185edf0717575a6195e775546b04a ddab02e0fc2921caf46518fccab79b6f 5e1ef1b63216952dd2b12aa6a0f050b3 94a2f3859ed66873d2b12aa6a0f050b3 273c618c2d24a562ad5067eac75a07f7 fa1b7b9630c840eff4fb4dee5181bee 448010b6066f3da3b069944d084e877 b3c8573a2d8b0a14c347936f40ef6857 110d24908bd4f49b93d3c9c269b9b9e3 d03199998c84839a844cd843a27223e5 1f0c3038d2a9bb391b305ee09b6b9906 a0ee85921d1bcfbd81faebbdea6bd9be 671cade486e88b3880d14ef4d993c2fa c19a1aeba4d90b4aad5067eac75a07f7 2b529b43c73da6e92056b4bd5d870b47 2a45727df039318ea46a4c5f3c2363fa fec8bee05108531cf7ad31381468cb01 54650f6fee0e76b8b173657dabb4301e a2a83603f38cffbbd2b12aa6a0f050b3 abd7c6ee28e19480a00f752d8c024637 c67c3e22b0c0f34e7db48c721db3fba4 c064a0ebde53de5ad5067eac75a07f7 f7fe4b70b7268f6cc118bd35b5372812 597cb92a5bfb580eed98cca8f0ccd5f7 eb7cc5c0c5f8a289d2b12aa6a0f050b3 a0cadebde61910df98e8242d4a63e1e5 38e8a36cdd879fd2d6f2f8f659863647 702870d836ea3bf32056b4bd5d870b47 80f9707a7e4a0cc856853064b332a2ae ed9e22eeb11ee9669fc351f487d31208 781eb96c0a6ef0b48a51001eb8d95d32 8c387d5e8ca71237d2b12aa6a0f050b3 81d5dd006f418712f4fb4dee5181bee 258a52f3077d3ed56c342cf382162bc7 77ed241c90b88a189f197237213064cd dc4857179ccd30ad5067eac75a07f7 c2516123957e1cc42283e6cce5561adc ea892969e4035e0fcb2a965e75be701c 2f0cd28e2f8cdac16121178eafd002fd b1adfb9857fc98fc28fbd1dd69384cf9 7ab9419e7bfdc80ac51268fdb437a9e 77c25a03784c8ea4d4d8765e3910f617 7ecd49fc95f8eafaf4fb4dee5181bee aa7f8ad0e6108db92056b4bd5d870b47 d014dd996cb7b8ba4f34c3dabeae093 6ba417deb22dec19ff8d96709474c16b 1bace34d2c1dc49b3b5ee89f1f802f5a afa7876470b8b7881d3a1f40308f8b8d b773f8d5af2c1087cb2a965e75be701c 23931fb6b6c46da895f577622f465c85 c9d456bacf459248930524909158355d b274f40cccd7e067f155d75bbf62b80 afe3b299132016512056b4bd5d870b47 f200a8b5882be096d104df3d337858a6 3b18e32e6e0c5942d4d8765e3910f617 b3b8b909ff02f03ead5067eac75a07f7 6a11450577768f2747d4c7899ba36cd 4814cb73a71235dbf155d75bbf62b80 5ab786ce3a18e3a170387839208c8db 445230afd5a0eda8714b6900bef4d88b 66304c61af32ca5aad5067eac75a07f7 b380b855aca5632dad5067eac75a07f7 11e98db089a66426ad5067eac75a07f7 c71738e3b314a72411afa9f5eb84a7ae b20fb19d75c00c9aad5067eac75a07f7 39904b25a6d2f13ed4d8765e3910f617 152617f1e955e8baf4fb4dee5181bee 66adf182075ea88177f32db2e5e73311 23672bcfaa06a86764ab399dbd3ef465 cd49cc9aa0377a298fb953ed1ae534fa a775a66a362089fdcb2a965e75be701c 7a89313a148bf1bfcb2a965e75be701c 3d5cf677f2aa9ad978d4d2afb777f33b 8e25c33aafaade0ad5067eac75a07f7 419f4ab8254c97a2056b4bd5d870b47 49908190a4206224f28732697aa0af57 516f47d7763d1db5ad55477d55e7af82 92e7ed09c8d265e5cb2a965e75be701c 9aafd6c69c331aef535e3a87e2212e35 44facd26b66e6ec8cf0c8ab22c613984 4f9e40b167665d793a0ed7b4771fe31 bb07fac582a687f0828583ad97f853c7 32b62bb2758b4c7fd2b12aa6a0f050b3 bacb5f46add42da9a53649a80e5aff8c eb940ba9c22e793f35f2c389ea4da425 3db1d3904f058b574a9ca2c84bced0dd cd052cd64a9f956428baa2ac864e8e40 1be83cdaf803fa3b827358da75ee7655 1809f6221774f1b62d309335a9a8acb8 ec917ab14b06fe402056b4bd5d870b47 17a7a1a4761e9aa1d4bf2d5f775ffe5e 6b9d09fcf8998360a36fa9e07c662628 edf14e0208ac61b570eb586f56eab45 879fec928fbb6ff36b95ce378e386482 6c47b6b082cdd9b684370b1677f53d8e a762de549efd8f2899d9a264095450d7 9ceab93b37b71c47c62ba64662b2626d 6eb04c416f0e40565a3c5e32936a202c 9790980a8ff823287ed9296ee19fa384 9dde18e7a5ea2416cb2a965e75be701c 3f2d311ddc3b6c19d4d8765e3910f617 8b682ef98315c3be21349c674433e602 9113be55eb8ddd8ead5067eac75a07f7 22c5aed5cfd1ef997666aea996e0bd15 48c9e1679ada2949fd8f87bd7d4c2514 76efe392461139df80ac1d1d1048ad28 aec1143f9e7375846555a8578c9b250 9c1a78d3846b8137d839166e2dcdb427 35908dced5e46b32ad5067eac75a07f7 208b5f58f4f45d63ad5067eac75a07f7 3eba7b7b2b1d139956f6fc4b4ce1db04 c327cf2527737f7ef155d75bbf62b80 5a0468d7c5ce7af6948dd2bc2d391e57 9dec54fbded3ed1767680982183b294 9a58d783e013b051d87d55641461d6af 55da2d1d9250d41b800e0abb10f41d36 2355964634eba1da35eb9316401353ce 9891e489f1f4dab52056b4bd5d870b47 9c69b56c5867afdf5d65e445b951c79a 76d029e29ac2bb69ad5067eac75a07f7 2830e62e4c5fc707f155d75bbf62b80 fefc87e051b4776a2d8a6d5087fd263 8f24d2e90bbd5855b77d52b64ec9e9af 27539b0c42068420cb2a965e75be701c 8d28e56cf5d2bfc8c3deaacdfa0e1e8e 55619caff40ba259601104cd2d998272 e0cefe05e1244097b51974a280a6461 213ddf647e36ce28c933c4a3701f5695 7bdea368f85d9eb5b47a47f71cb78bc1 516e288a1f609250d2b12aa6a0f050b3 a03c239b05374a837c8303a5f3977966 4e512ab638542762d4d8765e3910f617 50db85e4889831dff155d75bbf62b80 b19e1c6ab766b09bcb2a965e75be701c 77fd0def3c3469adf155d75bbf62b80 3f49fe14826172dff155d75bbf62b80 fb39d112f22db46616462411d4c2b1b9 49d0d178976c81f52056b4bd5d870b47 ef1149155829a5175c7dbebb6c018341 ce9c518ef76b4974d56cc378741d37e8 5ee7a51ae38eda6b26b7fce5a7fdd285 756c2cbd2d42644052b192b5b7698446 a90115832bb80dc956f6fc4b4ce1db04 7a0d913c66278596ad5067eac75a07f7 7262d96c5817ab55ad5067eac75a07f7 a973a401412f5561cb2a965e75be701c e01f988796268414ad5067eac75a07f7 26c48cae38ed374e786f181221f27278 50184fbabd0ac41acb2a965e75be701c ea6da848da3f603f81faebbdea6bd9be 3c90d2eda6fdae1fbe1638d01f5577d9 665eb42db0c44bdc81faebbdea6bd9be 43e72408630a790181faebbdea6bd9be 5cb40adcdfa5247681faebbdea6bd9be 2902b377edd4b48aa3a0c1cc16d124ad 22da6d7559e28ac9d2b12aa6a0f050b3 f2bad48085f087dac95c21b3fa5ebf36 ec4733130fe285d03d23022ce06f940d e03e7aab2967929d3fdfe80ff0b57538 733cae1ea9a85122d41f2c02e27f6d9c b3548e858e4fa7e0ff3245f22be4d221 7abeb2903fa22d0fad974a50533b722 b73da1e1a2f2f549d4d8765e3910f617 4769720a332fd899d2b12aa6a0f050b3 f8651ae6dc32338ff7010d9d85b1eb2b be8fa5b70de21c9ff155d75bbf62b80 21e7b25522c63209cb2a965e75be701c 7d67ed4517c1d702ed98cca8f0ccd5f7 2c76c171562f6bdfd4d8765e3910f617 3f8d7d662c9cd90bd6abb4efd157f402 9699995246fd521ca909cd1ba5751669 99cd1d8970feddbaed98cca8f0ccd5f7 f8a1b4d4b7813afe55cb90b2d132a49c 9ff0e30c911ef3a3cb2a965e75be701c 5bc75cb5c0270e60d2b12aa6a0f050b3 1093ca7b44ac90cd902e30b4d3d9167d 928fa92b9f25292f75a9709a8c0e1e6 7807c68ed9963df7f4fb4dee5181bee f2390f9103195622ad5067eac75a07f7 38d0cc28d4ff1ad0b604d999bdb46442 690aa4622c4d3246ea1bc0d82403165c 1b6a5fc808388138cb2a965e75be701c 359c7abaf431a05181faebbdea6bd9be 19d52509d16a9c2c81faebbdea6bd9be 2b6ac3eb1232e99b3cf1509e0eed7683 9f17577e34237f74c2f16c13e1941c0 875b1307c76566c8d0d4e85a15f02eb4 bff5fff9215b5c412056b4bd5d870b47 c2c0a205bb318031ed98cca8f0ccd5f7 fc301ae04efc46cfcb2a965e75be701c 23325f47d2a812351165bc0a3b02b27f 27c3e5b2656c50f7cb2a965e75be701c 96d87da2fecf81ddd2b12aa6a0f050b3 27eb79ddf26fd7ac7898580cb9d16864 2d1e8858446d1a32d2b12aa6a0f050b3 54197739c383e3b9ad5067eac75a07f7 3a7b2f1220e7c13092ccafdeb0ce5a8a 3a8490a38cd7f21929bffcef22233b9d 77fac848d4c863b2cb2a965e75be701c 219c0e465d55e89cad5067eac75a07f7 cc5d0040931906ae81faebbdea6bd9be e30527e054c1bf2ed201085e80edb26a 276195bc09970fdbec0de4d645145eaf 682cb02cd40c9fa412b60d5939b55d61 be2bcc5a5ddedefa80065a186bd67f86 ab3260f85c28adc82056b4bd5d870b47 ab92e0151866e32a9ab1f232db58cef2 24f090d8ee565dd1601104cd2d998272 9897a75c64a369d458c73770090b865 438f3246c29d69e73b67a26c84477b1a 913cb50bf5d336238b0239afbed4a626 210ca657d9a1b85cb2a965e75be701c fa259d97f0514af1814acb3be75bdbcf e28f8467945b5d526070f6b7b2547ecc d3b2e0d1482ead96f4fb4dee5181bee b4a8d71b840fa5f7b90be68f49e6aacf b5b52ba71f6c3c67ad5067eac75a07f7 4b495cde98399a83d4d8765e3910f617 15ed07a6b7265f802056b4bd5d870b47 b695128faed7cffdad5067eac75a07f7 32b74d6b08ea4603d2b12aa6a0f050b3 98af453dfb3b2284cb2a965e75be701c c0d3d5f8941c8014ad5067eac75a07f7 d5ef0f9bb990ffb3b2725423c902ba5d 49989a15860936d6601104cd2d998272 238825520fbdda8e6a4265f8860b466f 8ec231441abe44a05e276f6574cfbdbd 651141a1e0138b82ba6cf6cbb9f4c2bb c311a54150b7c64acb2a965e75be701c ea577ade393dcaaacb2a965e75be701c d3eea79405a0c784f155d75bbf62b80 45dc4d46a456d36c2056b4bd5d870b47 ca4bb0b150fa55eff3cd1fcb0edd1e8f 9a3310c20959245b791985eda7619303 9ddf92e8ab113b77a98ec10fab84d714 68d603f0483f4f869bd9ce04b3b1fd54 3b8d16dc796f667af155d75bbf62b80 9b1ed4bd84562d3f406f2f420f742d6 450fd49e69534ee6d5032aaea433efa4 e9491a1e77cb2a65cb6a91bf3956b490 b09f17c66d25a38cf155d75bbf62b80 d94b57d9a5d0b3732056b4bd5d870b47 b997659a319cae6369923f7b2ea9aba 52c13c1c0812699120f85be7e9edc22b 2ae355c406b7204e8c5da39cd0403824 f48b666e87f0c31f43cda5120584006e d27d7e667c5ccd70cb2a965e75be701c ae635fcb688b88c757411f16004b6df 3b688abcaf09a495c62ae1031b767cea ce2112fa16725a7aad5067eac75a07f7 e8db4ae7ddd84627d4d8765e3910f617 73cc1e9a8f666ad2d2b12aa6a0f050b3 d73143a767890e26505bbba2c4eee722 74d4dfa4709ef0b056f6fc4b4ce1db04 8596664f3d7925cdfdeb515ad63cf4b0 fa1ab735efa7255c81553c4a57179bef 1d9fc51fa296bac9a1770107888e7eb8 941c1bc0f10560a2310d80140e59b9e 1bb14f4633ad52e3ae944a46a2846086 26e3a9d86dc09155cb2a965e75be701c b8407ab7eeda1d261be4769a83930a08 f44b93dcbf00d80acb2a965e75be701c 3ee044d00523169dd4d8765e3910f617 a73601ecef6e3cf9f155d75bbf62b80 c06a17f2c79d01949c8a0ee9a6d1d4b2 7dd37767a253f98d56f6fc4b4ce1db04 9e4391cde5446bded98cca8f0ccd5f7 adaf1ba4acf51baa601104cd2d998272 b8ae866a44a272bead5067eac75a07f7 78ff35f4e229d1306f08940aa2c35d2c 7e73d9c7082453987b019ecf3e106a55 66af742be9a0c722b93fc2b66c6b86b6 8fe23a363bf80c48f155d75bbf62b80 8d7f97ef9187d6fff4fb4dee5181bee 78243d42e55bf254d47bd31d526e1987 f713433b5702975aad5067eac75a07f7 89cb6473e1b3882af7436fe692c24f3e 7a5ecec36bcb9eb24c080f2371a3ed2 26f583c91e815e8fcb2a965e75be701c 51197dd964f598fdcb2a965e75be701c dacfcd3de6bb08e4d2b12aa6a0f050b3 e807cba7fec6d514bb5d4e2d93fefdc5 69494ba3ad8569aded98cca8f0ccd5f7 2fd70e9049377e22d4d8765e3910f617 5d4fd92c09e3369256f6fc4b4ce1db04 6ba411c181323fecea2b566ddae9e6f6 6e27b6fc7769089f4fb4dee5181bee fd38474cc1c62274f155d75bbf62b80 cbe802da10dcae19f155d75bbf62b80 60757e398b7d51c5c143e86eb74c3988 e9bf24b026df9624ef9a8aedf51bb497 c89d4c95f1e7c950a805114916841d69 7cccf8e8ebd9454fe42c56c78fb88524 eb245de64157afe8ad5067eac75a07f7 7ac9bc04a2f8e59c7a19c607757a04b2 a2ee6b6eb6f94856c35213a917b76486 b6410fb9ca3cad2170a97514aa270017 f100d0524db0b12c2c031fa3f6d7bfc7 ff5c5895622d2123aa979e53c1a67c26 3ca55ce22b40b8c2ad364a967d96b388 1a40eaf5919b1b3f3eaa2b95b99dae6 b9b708af97a57de481f502b2c7b6ba78 6e84c668dcc028e6864f7d01926c6c64 84caee0c9f3b03571c56cd199c0bfbf8 88fa7d07abfcf9f03cbbdb20d4d80207 137c82020b8dc458eafa2f074f6cbe37 2e8f1b6cb9b4f568316a315354726289 2d1e5eeb255e79dcab53bf7fa22f3636 3b2f0fa67b29b6cd389a52d0b0203298 943dde2754ddc7822e8ff3556a90169 d0ae223012be978a49a531253b5beabf 3d2ee152db78b312e5a8eba5f6050bab 8893daaecc8c76048e53587ea99de59c 85bfe701cf6398c69875b72c651247a3 4a9a7e5b88cc4b79b985467c63dd34d8 5d9dd008caf920b8c29a08a3db9fbe1 c2b18cadd355a5f18aaae3d020f5ddf8 f4a67224c61f79b1733ee41496c73429 2a80c18fc2b4732bfb7c76304cb719f8 4b4c1a775f9a49958cd4e3ad2fcaf039 723138769c7c84eb5006d092e9ad4f03 f560aae80e66f50585ef4356ea4ff622 694681de16b492987170f3141eadbf9 d9de3b770e53a41d5b7bc62e486d578c 42be414abcd4f66113c01fa2f350f6d b6ed4377ece0567c78cf4e63fa47661 cf24c6b52b12c56ced8d4f003c2a833 9d4086be72fa427cd2b12aa6a0f050b3 a5befb3443b070f8d2b12aa6a0f050b3 76976adc8a170036ae23680cee12f145 ec4317837dd247dcd2b12aa6a0f050b3 eb06da40812adaa9542357877f3143f8 7a4a9c948c54de261dee989d1177ef4e 2212ad7db1587578d2b12aa6a0f050b3 6a2c354ed5212c77d2b12aa6a0f050b3 49ab2a5a9005eab9d2b12aa6a0f050b3 dc286270b2256b94d2b12aa6a0f050b3 8a6f07f3d357fbfd2b12aa6a0f050b3 b6da9b2fefbad3d9693697d8506b1c6d bf7342b225f836a9d2b12aa6a0f050b3 554a52dd42ce558bd2b12aa6a0f050b3 19bb2f65f3de8f5fbdc7943e19c9bdf7 b51ae78137662b05d2b12aa6a0f050b3 70612bccd74c969476c40ae77a98137f e3e3c49caf4b1885d661ff085a0f14b7 961d59d3ba6c7e1bf174129a51bed83 aa27d1ed2ebb8ebdd2b12aa6a0f050b3 23378697712a8dc2d2b12aa6a0f050b3 d41ba8cd6a5b1071c1237601d86c1b5b 229d510bace435811572ee5ddf1b55b 35e62b9c23928bc57f5df2bc47846a54 f1252c297d7ad9a47c51ec7d2716b33d 272a4cf3cfff3eb1e173cee47fbaa88 608af07bd357d605f155d75bbf62b80 244955211c2f3b94b821b834431f4e0e 868d86e47bcf7c9d1dd03d3141d85a03 5ce636f716f8f11e601104cd2d998272 5ce845f80b1d407282dde982679cd879 4b6276df295b3967601104cd2d998272 7c770e38383d59be279e896561802d26 eeb6784f5812bcebb281680297eb79f2 7f6db7a3f529949601104cd2d998272 95eed587c3728d22601104cd2d998272 3e5f4d788fcc628f442b181d72d9d1e6 ee8c43b1ffc8e8cd7389336cf5b6aec6 bbb448ee06bd6d83d838ae16242881dc 2e78dad09566bdcecb2a965e75be701c 8ad9910699d6a21781faebbdea6bd9be a06d35db2ddc85e29656036c096710ba 389f2aa083a7d732f4b6538438a0b930 49a07e9db250cb5ea17702c02a7c3b1f e8403ea994ecb1cf855931d119219022 5117dd16339a8b943ebaaaea70571daf 3a271805da4a65e06a5d67b8fcb702fa a4d107815780161ab7ea82317702e856 ae99771e1f77fd2fa9bdc22a1e02e82 738f4ce6e01920e72e558e0eb05b86a4 b7c366d9ad90bb8a847d09fbfad470bc da39c2c025a9bd469200298427982555 31375f94c8739fdbb043c7d18f748c2e 5cce62b38c0486d74201e10f9a6fb035 3dec9b1439c42797815b2b467e8e2eac 6f607a06c0d86895ad5067eac75a07f7 abddca275435a7b987b6d520ce557b3f dbd0698df1623b0391da37ff8bdd2524 a2c53b2490e4151517a6e523c9595e10 9c8a96bb95a62a6ae6e54a934c4318f1 91c949736e4887002ea98d69e91ba870 e0e2dfd6ed0880a6d6421fd2aa576b15 5be09ade953eaf6ca6910e4922d61aa 10db917982072df1739680f4e31f35e0 c36cc90d01f21180c3c8317b7074dc0 9c1310c5ab89888bd201085e80edb26a 6d4fad5487a044249dc30bab479ad5d4 c5625ef76473a5cc7c3efce71c4e8d70 ca04a1b1ff6701f8ad5067eac75a07f7 12ae14d584758b4ee42c56c78fb88524 a58cb33e8aa8142af155d75bbf62b80 133d46d90aa8e1742b76566a81e7d67e 3bbca1223d18e2caad5067eac75a07f7 f80f3251391f3cfccbfa849e0f7f0b10 715445f1eb83b477b1eca275bb27199f a1276733811a864b99cb1d062b75ee73 f061967a9b5ab9b6fecb38606c52659f 74a91aa0a8d9f2b5bef71ebb79d44440 ca6a1a938c160036a0f31147c37537e5 57afec727772346f30bbd4cddd04c77b ac1b9a34ed8450bb2644d7d4d7ea2c7 456e373768179bf3f155d75bbf62b80 d8dbfb0f58a2df0bf1eac5a8cd36b62b 55ca4cb17b26110d3b160521ef1e85fa 956be1b39e4bf1b963b2acb037dfbcde c3d4204f6f0613b1959f51f2c68b3ef f60378083ea9b7fa5e14e00a99d44acb d7293ad1c563e0ee318b348b36fba247 53e3f4b35e8c992e954bfb4cc0842c46 af06152e440a5224e23bd316353fa056 8f824b462a2870fd98e0d1738edd4f19 ff7a08ac16701dcec0277fc71766d822 4cd23aae912b7de019fb4103277a6b93 28353d39cde416d0ed49e2c2d58fcee1 6b47fc9f533618719c8ccc4e539799af 90d6cf58f5e9ba30c175dd3be8577953 f72eddac559ca6a6a51c26819f8dbb51 5cb02fdcd0f1cf5d3d06403e6871e4f 8ff9b4b57eb5a60daed1fc72009b42ac 8861988f97b2e8c722da8c30c5c6c8ca 5f21d3b66aa9b62d63b2acb037dfbcde 9f27ed5d7877a38fd46c340938e2ff1c c0840a82cd05765c924bf081da6f024c bbe3d0864b95faca48d057884d36455c 4e43690694133a65e5ef38e098c46afd 54c5e4961c97527dcb2a965e75be701c 722f3510b849c950beedb4c8fd29e2d1 4aa87768e4e9c7639f7aad887e9e880f 6e166423582d68bfd5b24cafb84903c7 2c81dd5038d43eb7b11ae648ea92233 3ecf8f8f3b24350bbd17a7d75b77705d ba6348031c6f0a795213cec267286d18 75ba60267a6c36af4b0780126e986ee 6ef84eb436bf63de8e7865f75f64bf68 33458d73568cfb62d201085e80edb26a 98fe81af9b74e4c278d386bfa54545 2edcb17b897706cf71a782a4379556c7 9d56087c9f98bf90717cca22daef45e7 5b4cc3097e79fd316c262ba0bee45d20 aecc04ab28ca258181dea46b799d4f46 c104f4e4a21ef8d42c29915205c35b65 2cd4fb6323fa2462edccc47bf0dcf5d3 e108673170d8f781d40c07d3c15cc681 6198e40d0055c59fc34a45b74d0027ff 6466c201a664851de7b89654b68b9e5b f3db005b33b9f8916cd47ea628d8cef0 66aade9f5d8c74ae924bf081da6f024c f5d370e9fe5b7452dbbc9440457e303e 45d52d8c9b100eb54ebf9d56b42b3033 fce4206a99792d47cfb87ab5efe3dc31 6daa439badf26355593ebeeedbff73b f8dd3c18e0735bb4b2644d7d4d7ea2c7 d58239c7178651ed1fb7397472fde3e9 469235b1160c6df1bd44b6fcd3e363b9 b023f42464e9591867c8e42cd3ac65ef 410c1c5ae4e9d49f5ebcc146be902492 ef207b78de8277ec42fc59644ef58e22 e18d11ff6f781d843d2dd82a57bb3bd7 faa74f8980fadf504777535b9098089a 51d51b67faf16d3d2ea98d69e91ba870 57fc8345fc8667a4d2b12aa6a0f050b3 5d88fc00adb325e6f3a134eb65b35f7a 931017bd80aa7a90edccc47bf0dcf5d3 e223e77b8db4aea17d8864caa856253b fd355d06238853c7f0d9805ad6c2059c 46cfcb7eb682d16d2b12aa6a0f050b3 b9eb4b3d3ed564142427332fd13e1534 c33adaafb71b0080582f9c2e887b930c 66670424b72dc0beefe2ffb03223403f 716fa6d69c22db83bc6fbe160acb5d0e e8ff891162fa20607572046550aace88 be9c2b70082503eb352fc7e973ba7787 323ff904411c3d427c64e9314d548016 9b15c79ea9ddff8d5065e2a2857d7fb3 918507f83ae9eb64ad5067eac75a07f7 c52f48c97868b7dfea8a406c7edcf3b4 f0daa96d0eb986adcf729faf809733b6 4ba13b996d6f1d3b286ea987ad5ffa18 eacb2a4fc51d03853c7e5bbf72a5f5ae d77f648c6df22a05c6510aa63622330c 5870d0ad92321f8cad5067eac75a07f7 dbacfce828f0598ad534c2812395a1c1 3abf9811f26c9752a9b8d9d3b5cf54cc 4a19288db84ea192871543ab797c3d2d e6063d88a2b192ab56f6fc4b4ce1db04 6b894c1c57ba921c98d10ca8df5ecbe7 29aa1d7505e08fb66706998a3e61629 423a75018428cffd46c340938e2ff1c 2f8bf1c9a8f70cb0f4fb4dee5181bee cedbe77bb857a16d3104206d774d39d1 f9e7dcaf9b7a9eb3c9befbd10d7e29b 3a8f4586fbd17e6d56f6fc4b4ce1db04 be125cab2902e0e163b2acb037dfbcde 50cdaa9e33fc853ecb2a965e75be701c 9920a0a8393494c59ec4bb690ca24962 2d80f237dfa7e73e5b7bc62e486d578c beece550c6a1bb1cef0add8da8532fa8 9fc5473602fe0f595896bab37ddebe7 2f340f2bd55d51e5c8cbe1805e7b8eb c63561b50109b27bd4d8765e3910f617 ab5f53ca60521a231aab721727b6a1b4 2d1dda55020a0c4bad5067eac75a07f7 a37801a9289678201f8b303c0da5108d 9787be3282d13a159a3528690d225ee1 94bd6118c10de515d201085e80edb26a 3e323c2a7e5ea5dcbd4364391061cfa2 59b1ca3d780ed0381560641bf48464ff 639dd737961f1806985ef0bf52b97bf5 d9b39a2a427c17ed43d55fea640906fa 8a541c1e735e834ad5067eac75a07f7 decfee8dff04ef84990a10a82d99ca57 9d0eb5ca2d849ff01f9ede15ab569b5f 9795c0ce0679cacdd201085e80edb26a cb1ce3240eec3fffd417c7a2ac331601 35554b4c00816a08b50485c33b91d8c0 4790c04ee2586772d0768f88bbc39dbc 9027bc9728f006bb40f0ac0fb9a650d f4afba7266031dbbb62b272ea9e18d0a 593251f67107e6b4db03e4f5c01cf109 621c4fcded12fff2d07d128adae16ff 28e12ef0e54e204830bbd4cddd04c77b 4de8d632bae6b3719e76a83ca837d918 4d38a3e7f051446a9b5ae2fb66e1e25c fd6ae258090bf95b693e50e46681af47 76463803e8be994e6716685cf333d2c1 c273ce2890d74ae18cca710901c2e97b 54239ba1b945460ae4409e4832196128 9c32648f1412d8a6db6e463bda4c63ae 71970f9a11b0b5bcd7262b1b986920e7 31af3758c10b5b1274f1cdda9579594c 349e1bf46f54c4f267efa971ab69a8e9 a28d0dbb90413692d42b9650f19dd425 d34e91db39030275fc94591f6f745953 300781592a3dcc2313e9164feae00e7 36583be1062e0f48c24b862f5ee36086 30b57b828f961ca8f002715a08c57858 b6e3891b9a761300b77f0c4f1c150c3f 9a2d51fbd6b58048c955e5ed03ef3a2f d5bd619acad1bed3d2b12aa6a0f050b3 634524d6d74142ecd2b12aa6a0f050b3 23d1c6e2e35cb252bb85b5a298d72ac7 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02933112_test.lst ================================================ 115e4c9a9150fe8e99dd23ec22c4943b 480a381b676003df4da5feafe6f1c8fc 6b7123a3631583c612de5317fe5b354f 63397b0df482d51ad7838dc22b16368e 92aa3075799e275a3fe047712e43e185 1a51237c9515ad0a4da5feafe6f1c8fc 298dcf7bd982cf0712de5317fe5b354f 4b80db7aaf0dff0c4da5feafe6f1c8fc 8c1cd3c09ffef7efc59350d819542ec7 140ec01582235e15c59350d819542ec7 70ef5ad531624a24cb87a43f8f346ada 59263293983a99d3de650492e45fb14f 26dcf7a76c89d5aa4da5feafe6f1c8fc 68bc79caeaf162a7ce5d6e9371bb5c33 45553c754e1132533fe047712e43e185 dfe503e6a4a86d4dc59350d819542ec7 131992dab1550a7aec24cae3e129c189 7b98e7b25bb83413c59350d819542ec7 a9bfa9259f31ef9fde650492e45fb14f 6f679ca92bfaca984da5feafe6f1c8fc 6a910ffe32ae2e575588a2543ef0b0b4 c060caaa105890d74da5feafe6f1c8fc 24c781a3aa6310a44da5feafe6f1c8fc cc9194f94951cd934da5feafe6f1c8fc 39db396f57ec698cc59350d819542ec7 3c2a50e5907b0fb64da5feafe6f1c8fc 221d442d733de66144221bef0fa3c36b 5ff7e1be775072e5824662341ce2b233 24da7fd5e33513814da5feafe6f1c8fc 886031ff2a514f86c59350d819542ec7 3649b02bd61a337321730ef9c9d28bd1 31a7cd3b7990834cde650492e45fb14f 7d95374a9110157c7d8c689e1315827b 60ac3a02f8c1116b5588a2543ef0b0b4 4cee2825142a64acde650492e45fb14f 467b66a6ed7b3cd24da5feafe6f1c8fc 190cb7264781df604da5feafe6f1c8fc 4c99fa08135a52d04c62bee40dcdc539 f3bc5eb543bd852bb7ea82317702e856 3b98711b877ae402824662341ce2b233 2a3a3bf0878f1fa4c59350d819542ec7 bb741a003e5ff46c59350d819542ec7 2817480c23e4a106c59350d819542ec7 13aeab12a8ccdb244da5feafe6f1c8fc 48ad79b48a76fcec4da5feafe6f1c8fc 180154895560cd0cc59350d819542ec7 aae9df5536cce166d5532c7891a349ad 5feaee9848b44d44824662341ce2b233 1ec5e12f2b5684a24da5feafe6f1c8fc 2bdedc5d70cda02cc59350d819542ec7 2cf4888579296377c59350d819542ec7 15de6a77af2b4fccc59350d819542ec7 45c91d543ef3c1a829a50a2b3c5e5b6 bceca165030250f94da5feafe6f1c8fc 30675877e822626e3fe047712e43e185 c55eef8d5b4d3db563b3c67777442463 d3257b1df741d9a099c549327bba1953 8a7f0dd58fbf14a4c59350d819542ec7 68f25e77ac6bdea7de650492e45fb14f da5d7b5dfa92abdace5d6e9371bb5c33 23b7a3961eda17df4da5feafe6f1c8fc 233612a657bbda534da5feafe6f1c8fc 26a2132b719d226a86d53ab0fe94e911 19dd35ef180808c38f1735145fdf5c5c 6f03b6ab474c04a243e5ff23b077c03a 973023bbf9c6a603c59350d819542ec7 a95f93b9da094471c59350d819542ec7 7fbd264b7031c399d37a1bae74ee50a2 1e40a4dfbd78455812de5317fe5b354f 721c788bb55b083ae8a9bc001231a118 d8cd6611c5f407cdbe81a9109a782712 b572114b0944ac203fe047712e43e185 83bb0c92d3ede1e8c59350d819542ec7 67616bd629dbf7b3824662341ce2b233 1cd80ed7f3ab7a5d4da5feafe6f1c8fc bc7973150ac25b1ce08dea88cca8641e 1f336c9e48f1b54686d53ab0fe94e911 47344f869d6c12e486d53ab0fe94e911 11ee3844cf96c7194da5feafe6f1c8fc 5b112266c93a711b824662341ce2b233 d3ff3bd1badb62c2c59350d819542ec7 2c6aee97b0325e92de650492e45fb14f 3a2afbdc240a7f073fe047712e43e185 1d61ca99924b13fc99dd23ec22c4943b 90dd9ad1a74e25d53fe047712e43e185 d7fe270a81b0f21c3fe047712e43e185 6f56fdbf225247abcd8f3fe9ca2145e1 29ce2b045bc6111912de5317fe5b354f 88982fc3cdf5d2b212de5317fe5b354f 54ea003ba0d36f34da5feafe6f1c8fc 1252e89db37d786386d53ab0fe94e911 139aeafbfbdd6bb64da5feafe6f1c8fc bdb118e2b6c9f4d712de5317fe5b354f 1715965e2e1e33e1c59350d819542ec7 6d448fdac1dc71f9c59350d819542ec7 1c898677c5b4291c847857e42f50ec6e 3167991b1c87967ac59350d819542ec7 36bfa6f0a5897be786d53ab0fe94e911 1c4e2879669e949e3fe047712e43e185 3eddbe968ac08030c59350d819542ec7 1971024c0cac65a824662341ce2b233 7359539c1b62cf1e29a50a2b3c5e5b6 ea48a2a501942eedde650492e45fb14f 14dff09acf069b63c59350d819542ec7 902a342783278a9d824662341ce2b233 228a83ea767bcab94da5feafe6f1c8fc d6242003931d0a27824662341ce2b233 3cdabe258ed67a144da5feafe6f1c8fc d4a7b45abac7a39c59350d819542ec7 fc5b7d19b1ab1e8bd0504a433b7a549 5a2de91981d27ba3c59350d819542ec7 40d4200a071b555c5588a2543ef0b0b4 4205bc230382f663c59350d819542ec7 1a9fa73ca819aa994da5feafe6f1c8fc 203ef2b06c3ad6033fe047712e43e185 1d973f05e870af4b4da5feafe6f1c8fc 4298f678b53d370dc59350d819542ec7 5b08e72cfe785f4912de5317fe5b354f 21f3c0d4604587b4da5feafe6f1c8fc 29c6f3ce118576724da5feafe6f1c8fc a234f5b48a26fe1d12de5317fe5b354f 285864fbee3a4038178e7d331e641179 fdf32559c6b7a6643fe047712e43e185 2ba392a70c40dac7c59350d819542ec7 85ddbd698b3e7dfec59350d819542ec7 1676f8b995b976e5824662341ce2b233 1a1b62a38b2584874c62bee40dcdc539 55bfa46d7b39f4dcc59350d819542ec7 2e4184763139ff274da5feafe6f1c8fc 3d2870c83ad35dfe86d53ab0fe94e911 12cb11dbb135ca9ac59350d819542ec7 1b212b67e5eb90f4da5feafe6f1c8fc 4fd61ff0aa949a4486d53ab0fe94e911 b0f329dc43af0fbd4da5feafe6f1c8fc 5294d0d31a33e67912de5317fe5b354f b7be75d3cb83457a44221bef0fa3c36b 4946c14a466fb5094da5feafe6f1c8fc 6e2beb63c61144f54da5feafe6f1c8fc b6c1fd850c5b042c738e43095496b061 5aee956ff28e337a44221bef0fa3c36b 134055516ed892913ba1c51b82b58419 23e3c2a2f61ddb2986d53ab0fe94e911 6e75ca2b08fe53a344221bef0fa3c36b 455a583e41579db14da5feafe6f1c8fc 1aa76e87d7bcf5c0c59350d819542ec7 6a121783609b4a18824662341ce2b233 29b2a25804651a34c59350d819542ec7 47f477a8b67d28028f1735145fdf5c5c 16bc9f5821d887f2d7838dc22b16368e a03797c4034be11ac59350d819542ec7 9d0a9c46bb6768fbd37a1bae74ee50a2 2bda2392d5715d16c59350d819542ec7 2b6bd6e0b3c2565839d3717288022c20 99ff3359d64f1f45ce5d6e9371bb5c33 90ccd5fbb48ba3bdde650492e45fb14f 19e444da148930154692707833167ca3 3115a3a0a61aacac59350d819542ec7 8cf41a94663c7fe24da5feafe6f1c8fc 1a4ff09890565843c59350d819542ec7 f6d2550b82c208b012de5317fe5b354f 8415b7cd04f981d94692707833167ca3 839393d59ef6c8cfc59350d819542ec7 c2ac91973d449b18738e43095496b061 3076e5d4a8078a0c59350d819542ec7 1ff28690a2ba31e4da5feafe6f1c8fc 8382308b895aa93286d53ab0fe94e911 f939cc4fa30511963fe047712e43e185 2036aaa68d164c373fe047712e43e185 5f7e3d694d47fe6cde650492e45fb14f 56031b004d5306954da5feafe6f1c8fc 1e25501b8930873129a50a2b3c5e5b6 7aca460dbd4ef77712de5317fe5b354f 8dc8d2e0bdf870ec95d0ca3fdb30532a 30cf0cedd661880e86d53ab0fe94e911 21224eab2d099f5012de5317fe5b354f 15d3297d200f8979c59350d819542ec7 721bd0402e92e339c59350d819542ec7 70b15dbfed77ad2d4da5feafe6f1c8fc 9166a54bcb06b6c7c59350d819542ec7 779cda069c3b6338824662341ce2b233 98d963a9f353cd026b0f9e3b3feb2454 583c242abdc4c08e4da5feafe6f1c8fc 951377627e2fb20f86d53ab0fe94e911 147e9d3591cb190829a50a2b3c5e5b6 1fd36ae1d93b6f3fc59350d819542ec7 c0d58499d2cecf07e1c245f9728d365 146c3a9cbe3d8f703fe047712e43e185 23aeb8fdc0d1ed4c4da5feafe6f1c8fc 6a49166d5852d23044221bef0fa3c36b bd55f9190cb5c9ea3fe047712e43e185 316bd800a04f14f0de650492e45fb14f 19492e2263ea82e4da5feafe6f1c8fc 20d00eeac9377d1212de5317fe5b354f 595999124367c701de650492e45fb14f 2b3f95e3a1ae1e3f824662341ce2b233 14864858c05f52ec4da5feafe6f1c8fc a247a4978888e6403fe047712e43e185 1566915c8a69d58812de5317fe5b354f 48b9fbf28fd33df5c59350d819542ec7 b0f01584cbb37d2ff546596ce7364503 4068c751d46ca222de650492e45fb14f d0421fb0b59291df7eee615e75bc3b77 a08aa6e386cd983c59350d819542ec7 3cfebf4fdfa1384da5feafe6f1c8fc 4e62d6e735b8bf2b90071898148dca0e 68aa1ed740374787de650492e45fb14f 3c28e4a1a5154ecc59350d819542ec7 c817934380830ccb4da5feafe6f1c8fc 12b0773858754105c59350d819542ec7 cc843a4c31c60dec64cb4ed80bd76aed 6fcae7f06d9f86b2ce5d6e9371bb5c33 74c058f9f24fbb524692707833167ca3 de23f702d6e8232f12de5317fe5b354f 114b810af4a847ca99dd23ec22c4943b 7eca681f6174f1ce12de5317fe5b354f 720ee748eb25f010c59350d819542ec7 7d9b7a4412d9f373c59350d819542ec7 c8631f63ec5899a4a84a884e8267301c 57dc5950f0a7304d4da5feafe6f1c8fc 1a4d4980bbe2dcf24da5feafe6f1c8fc b592fe51cdda66394692707833167ca3 4c94892ca2cd066e29a50a2b3c5e5b6 4db0db06f86fe48f4da5feafe6f1c8fc 403661cbfc8deb029a50a2b3c5e5b6 9b34b5983bd64409e08dea88cca8641e 1e694a1848b810ebc59350d819542ec7 2cd6ee7e592939a9824662341ce2b233 297684bcd05347cd86d53ab0fe94e911 e619cf6aa221424cf80ff10f4838c137 c4d17b681e7f3d8a1e1f137e13140387 14a093126f5764bcf2792e4b1535c6c3 8f39d603e733eb58fcbe4e14ff0c4707 5523a90c230a1d0699bf8547ee35d38a 643191e8ee56104e424f8f8e828c9ab9 9dfac0132596ff09b13b0af4c7a59aa0 11b8fd945de0ee99642f6fb37a230b5e 6543e0c78675e6eb868fb986bc092533 181cfc93cd44af805a0e5699b3040a35 d7762b2997bb9e2aa70a592d6c8c9234 809d5384f84d55273a11565e5be9cf53 79a8b5fdd40e1b1d20768660cf080d12 5366e82cfca7382729f1ce9399524695 a5d193fd45690070b93ba26740e73067 fc3bb2eda6e061e9b50d0c6a0c254040 875437f9f2bfdc3feadc9f074ecd1df1 ebc49b9b624dfb55f9913e822d5318 eea67da61b5477c7d4c6910fb477cd67 422975f531854eeaf36ea1eb6542fe7e b28d1c49cfe93a3f79368d1198f406e7 3bc232700d2ed20b89a68decc32d3e34 dd6ebb99b2346757da8c66dd9a203cf0 eb2843ff62280f5320768660cf080d12 5ff47fe4724d0c9320768660cf080d12 84a374fd72bab291ccff75c3d7aff973 895de6b9d3e0f1ad11b65536c08c170d bd7cae3c39773a4ed0a0c43e4971be14 3e080e2b2556add4eabad247a05ad956 c6e91d50e1bb3351a8851b4eb6161973 9b33a5363695ebc3391e4d6c585a697a 3b5d7b7fb89b178d50711e66b0db6ed df0f03ac21921f02c868162258053ece 1055dc4f3f2079f7e6c5cd45aa112726 353dd8c418146de16c7d1f675f2a04a5 b06b351b939e279bc5ff6d1af2135fc9 5e61fc6946ed74c3532e8683617554c4 c18a4772bcfbb98e85bc264270ae0601 50c7e5dace1d5dffc6256085755e32ef 906d1dc1a8e519868cb5d9909aeb1309 fe8c34a5275804d451f8aaa850306632 ab072b1506cbfd921b7554913e3d38e6 2544d05396cf1c91bc19762eaa7ba40f 95ca7e79cf9b51cbb9a0f5d18f1ce54c 544fbd4d4c1d445498a4820926b2a786 c89a5482bb756c041d86c17c15247b0 f0ebc33311b55d6b4e7d60def15dcb8b fe5f6a2aab0091438860c69ebde1e4b8 727a4dbadbb74c33bf1b16662b6673df eaf341c056c79bec1a2c782fdbf60db6 aa0280a7d959a18930bbd4cddd04c77b 6e6801ca4a03a1adc672720c52b0e374 f07668a627a039b87b79156a61ad4c01 46bb63196198ffa2fc98aa4b97627df6 6336b5516cc8bd50635469b95109803c 367044e655cdce1f109be8beeb87a681 a631a1a99b21cd92b87eaf81a9afbbe 5382680280ef5b57d0b36851d61b6fca e72235ca5b0f9b5de485c93908cf58c1 4b2e20535d3ecd016b7154919b02cbec 6bf0f5e06cb748bb9671c58246946ed6 91ac5c074c7d137762646c8cd54d58b4 dca4c8bdab8bdfe739e1d6694e046e01 a3a6f9e80956ec6f4035f93ab9531db 8f7a277ae05da76c1bb088904f7cb154 9f17f45a28d063e7391e4d6c585a697a 39b51f3a6e8447c3c8a1a154de62786 4e217d2ef816a08251c4deb11af7079e 641e64902bb9f6a4aaca4b071fcc002c a7e9a54cfae053aa20768660cf080d12 e18f47b52ff3aa2452174f43a416bc6f b12fd3c4e5912a7dd8b510632cc84b8c 92a1e771eb621c14c2a5a06bb7a05e87 9eada38b3a65963e30bbd4cddd04c77b ad86354fb5faf1c98a4820926b2a786 1f0b5514d93f39ebd189eb81471216ad 3931068c10d0a606ef37b256c10c21e4 9fbb34244e00b2a9eacb155f400b9076 3b3a1bfd87c87a184b499a9d711de5a7 e0393e80702d9a698cbb8bac2032149c 10c484963692d3c87d40405e5ee68b4f e5bd1675d43422bb61706e18472540d6 e0f6e225c7f88db19ea59510032cbc74 38def13ea098f098fb266533561ee98a a49eec529b5c44eaac00fd1150223027 941289c22ad19099a87002a4eeaf610 634fe05a380adac585430ccbd2632877 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02933112_train.lst ================================================ 6ab14d89360d0a55ff3ea34d08547895 97cfa011875acc33532e8683617554c4 d410c925c5e8ebd65b7f630bf166b499 4b2bedb7014636afd38913e96bbf2a5d 148638f9a7c72ab55a0e5699b3040a35 aab180818ea51dbc7cd8de3984cc1e94 e408c939829d0353a6490b68274665e 2d0d55da9d8de4356e79c14dd16aa04b c00edc704ff4b133da27ece6ae88fff 8316451b3959184963be0260dd648a5e 84ef04bae77ca17d532e8683617554c4 37b9ca6c1be7e6e7cddef51ecbec6f95 dca6f5a582517758eab2bd7322386ffd 2993b6f0fa043f2744b0bdbb4386e313 76ee9167548caf224983f386c1ce1710 1f674f735abb7b1d75869f989849123f 44d195279a116e347eee615e75bc3b77 8c60fe0d274ef76f6b983cbae7aad051 bb9ac4b110f7ed3815dd7d7985e749c1 4e0cc6a0dbeeb87df51f77a6d7299806 1a658b76afedb342490ad276cd2af3a4 c7418e21982dcb508c2f9e4176bfe555 3b6042e3f223da66200ec3fc5b3ae5f4 84f34a2d86cd4f0211926054acb73bec 14e2319299a434b24b8710a3469971b1 9a0d2ef1f31fee42b022c94235bc8601 703a95f9e0f51654f51f77a6d7299806 a8725dd0e0eb8d7d492d9da2668ec34c d7ec3740a0c67d89f8c3d2002c77ddb 7941cfe08a5288337a3bc7b2417286c9 8928e0f1fdd7f107f975e70a1bde427d 6d30a4d1ed6f4bdbf51f77a6d7299806 462ee81a089208caf2f140388f79bf7c 7bdeadcf72ee257dce5d6e9371bb5c33 962de4481f2844aeba3e7e48acd3a1c6 defde3dac0ce562361c0d25e41396e8c 2537e62a6495a46bc47fc2b7741fa 9b2759851023fad7dedad3eee47fd556 70424e9cde5be52e25194f3c5a4f307 783ba337e5bf328abe81a9109a782712 7f47c97fbda19b57490ad276cd2af3a4 528ab24c6afd91c38aaae3d020f5ddf8 6f2ce914b5d4db81e28993aa4d91dd77 530d7817abf9b54e73f47577531a0b51 72048f89b480cd411b17743c18fb63dc 217d29a61745991f7aa75dfc74adc93f 962b62d2b3823aff51f77a6d7299806 737fc2d91572a9032ea98d69e91ba870 66a82a157f4a1c9a22e05b27cb30bde 910eec62d3cf0936ce5d6e9371bb5c33 698debfccb32f7404c62bee40dcdc539 26eb1d73803b2426ef46cffe4939fce1 8e897603bc5217174b8710a3469971b1 2b376f6dfed75d53684b7bc3f8a9aa55 18a1c4eb2e4b31fce83221ad0d21775 4caef9af7bd31f195588a2543ef0b0b4 4dc45b86bdce7d96d37a1bae74ee50a2 9edead26059cae09e3f7a74e12a274ef 14590b6bdb425e80d8986c3ed6c52fe2 86d1c6a6a2278e7e1b17743c18fb63dc 7e6c0a7c630cce1d4702663c3b3faf8f 1fe25f0be8d71d6ce2e1a0e8b25f573f 7a051550f229c9a75588a2543ef0b0b4 90f66de8ce581ee39aa778fe3a2080af 8589e65944de365351c41225db8e334 18798a19664ed14c14038d588fd1342f 23108a41e40a49f6389b013bdebd5e94 b74f87f4d4c7da7343638dabe1eb5336 955a80162f342ab45d64ebd26708751e 6e5ac40051b3e17b697129c0aef9e5f7 b6fa01c7e28a4a777024462ecce15220 d209aaa7fd4035a34c7384dbb75cab0d df509063ec7b78ce8f7d9678498f2295 a8e160457848a8be3bba238110c3df2b 373fc669fbead0bd1f8d8332ee17945a d77dd358b31497aae2f840a8b8c7384c 8d3d624b37b4803c33110e4a1f22f6dc 36223972cc8153718cd9445de76e734d 54cbe81983534dc153b10fab8d9d7b30 69544db102786237f51f77a6d7299806 d4f4b5bf712a96b13679ccb6aaef8b00 3ba62bcd5394d5504c62bee40dcdc539 21185c06b8eafd1229426a0f57e4d15e abbb13b953629109d0b36851d61b6fca b31c1b94a2badecf43d2fa0a85ff9354 2a5535f9e24338c7107bd4405fb99a1b 4b6c7f81adcc5f7e4b8710a3469971b1 33445d9d7f166d6c5588a2543ef0b0b4 7910e29e5285fa1a178e7d331e641179 9deca642cbf3e4ef49a734174fea032e 2dbd6cb6a14805297812c3baf25c5bb 4cede87a6ca6bb876a485daf2a997e28 91b2bed2f4b87e615164a043915ac8c4 836fc8edc0414fdd9925b11f2b3f86ba d17b46d9ad9378209c68640456c0e 8b188db0cd8ecb909f076a53721d9427 1624e80fb20e12741bf2b66b52bf6885 b56494e8810764286739a7caa0c577bd 4d79731efe402b0d635469b95109803c b404faa639b8600855f46d55537192b6 9460ebcbd28a8cb7d5a4a04ac21f0578 26979d498a0425b6f51f77a6d7299806 1eed828f325b45bf5f960aba13b9c630 81bef552e83476ad3da27ece6ae88fff 57041ab17b34eba1f49237e570f62c8f 61905b24b17eee756aea2f18ee404fd5 1ef44fc1b4cac21af51fa0238791f5dc 4b67001c30b3a68be4e346ee2650d150 2a22566c3bad34a7d0b36851d61b6fca ca0fd2a5d6aa32945aeac558fa5c869b bf57fe6a331137c2abaf316e4a957cb1 2dddaf7774fd11efe4d4a3bf05a8b705 2f2e54607ea04be4c93bb8ae72b9da71 3475657660a798a155590b0eedbb2f18 721f7a03a70b1107c0b2397831029b54 b9967857b0419d44e7312e7851dc468c 504949a3b05dd13e3f7a74e12a274ef 6d5049bc983aa8b4a805114916841d69 dd7e681525a458befbfd931924135513 dfa0bf0f2b48ea33e3a031805ace4a99 6e6a324c244158325761a0b53ed37cec da62a2f330280273896f268d8862011d 9d2bf81532da5823b69348aaef501740 533ca24b72a0552c5057ad0f363d6ddd 3c855f2a52d5e3f63c8d0fdfb1cc2535 a38f20793fbbd3d3ff03fd9a67a9cdfc 42c3c76c8c8912c61b17743c18fb63dc cb6ca53673e681797292641f4348a707 7e0483b10eb6ae141620773c2aaaa465 584de35ad1e27820365f491f6e3dbc3f d8d2e500860312bf98d5fc0473d00a1c ac2f35da065a451c72ddb537ecda2719 b45bae45ccfdd7b9824080f516909671 275b26f0555e85acf858430284b28022 4392ad03e7d769a6180dd1b6c5060a26 ab870b99f869186fd523772c66ed5bc5 7b02f0d94886f66a121859336e292a5d 9d59bf323b297b327885a2b9445961bb 6c7a1a40e645c48e9c22f14c4b6aad23 9a195ea2a21bc7511a4db721d603d852 216096d5038c86a74c62bee40dcdc539 a46373d86967b3fce9aee4515d4383aa dd2325abe32870f5a99e0f0bf1de3bbf d7c671ead816afdda2aa7d89ba9aea43 54f801646e066ce92afc25cef0918375 b7f1176767b87b235c8607e33463027e 273bd29d931bd255343edb005e0de5c a09130501c18c324404449202e2d8881 7f137684240ee0d62fb11210723490ee 97902b0e2ce271ae60f16a92a4f24bcd aa1077aff8bd9e44d8f27b2e727c3511 7fadf6464f6ba381921dd903dd0b8b17 5bcb725e26e521364c7384dbb75cab0d b184de34d988236464a7317444d5a8d 61d42e7c7c16b2d53334fb6668ccd834 676bf8a039a5937eeab2bd7322386ffd bfdb60bd61d083536739a7caa0c577bd 74c692a9018b66592246f58eda789fa1 9ebf23f2bcb8f334246300e1c662ce6d b649e3084819c7847445d25f394949d0 bfb9eda1e7f92339800f2aaba8549124 648bdbefbe72c6e596d5fa1ee6ada8d1 9c8dff9a5f5cc6ab490ad276cd2af3a4 b8e019587c8157041a3b39b07e4b3d0f 5d0c82af3d799573eff860318f968925 dc4affd586bafbc8d45f502ecff9e44f 4edcf59d45bfff5a5b903ba10d2ec446 7b97739140eebfefaf8acdb77a4cc720 7f6d01dfa00872a26cf87f8460db3ae0 a6abf531780014f890a1391b3fdfda26 975426b49f98bc1b4c62bee40dcdc539 5c2d14889827e1fc14038d588fd1342f 63465f2647384da7cf44224546cb0306 85868e1440bec257a4bc7fdb4c84963 634a4ad6496e20dbc3ea9e7b2ba79cb1 a64be5342dd3c9f782ef94da039e491f 8e7dcefda14362f866f6836074ef23fa a679e4fb660b3751f51f77a6d7299806 d9e69e6cd318d34380d6227ff9b21190 a8cf3a04f848ff0e4c62bee40dcdc539 a66122ff2d0e4bac6ba14bfd91a75020 4acadee1dadac64e4b8710a3469971b1 7f416248bb57f1c0598f1102685df4cd 4e31ddf3828a40f3cd525309aaf63a44 227d258c1045acbe9e4965f0106e00d9 484f3660bf095e6f2b8a1a2aaa466160 1a7b9b946e797ce59f8c3d2002c77ddb 2c1af98d2058a8056588620c25b809f9 cac3d104981b47cd3d113b8340bd5029 8b0411fcc2d48f9a4b8710a3469971b1 66c38b5e6d9ad852307776da88d1350f ac980e21cd4f41eed5076afb08856f4d 9a24860d7ea8d54f109097154427f779 cae4ad6aa7d0e49df160c00ab31497df 88e89b29e8100f1c1bec2e8246842c2a 52e92f372629cf356e8f1932e45c9faf 76172d3f487ccc6cf4ab13f4b49ac318 4a2848db82ae01f7490ad276cd2af3a4 938d8ae0cdc787107bcb070cc655f13a 12bb12017516f20d28b780bf7c8edf1d 6c45346990283b7fa2e244117f013369 b56505eeac0de779289f8cbfc8541c14 83412e29d5978b101f6dfedaba98d5f9 6ecb73ea5a117e3fc6647a321d32ae9a d06a1c6dc8a4dcdecb3bcacd97bbd8b8 df74daf1f96515bf9b849da658b46825 8ee0fd1d620ac1ea974523dbdd88cc4e 2620701a50216dbed0b36851d61b6fca bb0255c8582c74c6557f50690310ce8d 11798e50090b6dcd0b36851d61b6fca 1b92b53bdb962de337aa612844f43db0 13dbeeacdabce3b694658a0201ba0367 8057ca7c19a1457ee3f7a74e12a274ef ac499f75479d2e372ad490d4d7fae486 9a0013f4e6a0521b5670497a6e548500 6098dfbdd0fc78a321e96d7b34bacdcf 995a40846929e9753da27ece6ae88fff 187f9c840611133b7fa41e06a7f4a88 359fbb601801fa9b5588a2543ef0b0b4 d7e4b6d1d9ae4336ef4e42d70375aed8 4539b185db32eb4a533276a8c0b1c862 6aebdfb1622324617eee615e75bc3b77 382b6f8e93e1f576149dc0f3c5ce899e 5ba1fc89122c13c5d4a147733422d301 92ef2c5091a97df18a6e1efe1f5fc0a3 cdf33719d80e3f1dadecb2bfe4fe7f60 8093937b9072e92afab6e40cce6926d7 8f55954a0b07a4b2bf64ff63662d244b 39f7a4eb09dd695d46dbdd6b5b884b3a 5217e7aa71d06df2921dd903dd0b8b17 dc4e9bf3eaadf2544c62bee40dcdc539 8fd43ffcc981f6eb14038d588fd1342f 586cd9ce3d22685f2280e8623aad43f4 be1978696eddc1e980a88936375f2ef4 860929843ad9e7e16ff961d84ac7046a 37fbc4e7c9e46b602b5631520b7d94fe 43ed2ac5e1836f5ef51f77a6d7299806 429536832f2f4e1abfbd6f1ce8dfb216 5edc6766196953a28f62bdf4e9082924 c54828598efd80d78542f96306060db4 90e6262b1713ab09fa3b6936d7879478 964258d29263afdae76f0f0566cf10f2 9304e9ad9853d1caf760390d600fe7fa 7650fd61f3a162397ee0cb5488055ac 2a3023853ebfeff5eb0fe7d6b5545a1a 71aaeb4dc7a7d41ef51f77a6d7299806 958fa3ccebcaa8246c4866b1c92b8a35 ba5e1671d26af2763c6c38b12db4d8f3 d4e6002f0114461df879b7d55192442a ac11c66661c8f95825b0a60e00f47d7d 45342795c9bf86d94b8710a3469971b1 3d21c18153474a0acf004563556ddb36 493593c78a647030cbb5746221d658f3 71d240b4e2e79be96a001de88d8cd8d9 9b28e4f5c66daae45f29768b6bb620cb 72105548b0e01be8659e37b49210f361 a0eb46b125a99e26473aef508bd8614e 50f0ea68b77810121fbac718728a36d 464e34455b49aa5c824080f516909671 ade25be3b1ee38bff51f77a6d7299806 7822a30ec2e5c57f59f8e31ca87c470e 33c47c4c9afeea5a4c62bee40dcdc539 b50c25e6b5447714e90f8ac2c1271ce3 230a987c4ff5f673921dd903dd0b8b17 b99b7673b0927283b1732c7d45a02ba0 a21e3a21401f889defacb264ebf1ec75 8bd6e4ce15468e1ad6eefa796d2f261c c5116cb158a5b4e6a0f23466c3c25e2e d68b1b0c95408b95380188eb80c957bc 4ac617dbce5ab494985850bfaa8d58e8 595a8444c362be66b8803f6649e6cb9b d917ca3f60dce05aaf31a22c7bed177d b9fd0cb66675dcc87c9ecef5753df626 1ded292e60cf7f11178e7d331e641179 78937816b70f990d8fe14b5c9bc18491 6c2762c2c95d7a2063b3c67777442463 7ed5c429313f20e079bb09dc5605a57 283bf988df376b9786ac7f2dceaa530 4e89985989c6a1936aedbd2a02b96953 50492ac55ad27122e8990fccb12f2c29 3724c3633a0db0c260a7085510f65cd6 9a688545112c2650ca703e831bf56f93 c7165635f2288945585ed17f54616d23 30b75567780d84638ac5263758737a81 4d690cd9d3b41f46ce5d6e9371bb5c33 46304273699efb534b8710a3469971b1 e47b9d0905d05d656fa63795f94c4d8c b30ee0cf13247fa7f51f77a6d7299806 3d326cbd820a49443a9bf8c718fc345e bb5c331b32e39d0d3ec45bd2bc895504 37d41aa1ab8e7318534f016fc3878f48 85f41119ca2bbde1dc1f6c4cdb4bb9b3 646fa7efaaef21a41d20b5ad5ef1cb1b 4b06417d98fabe3b4c62bee40dcdc539 7ef036a41e1b9e2aac00fd1150223027 7415fc8bf90b3696bc08b7cef3268bb bbbd4de3e7ab25ad80d6227ff9b21190 e22f10f551cac7fc6cb99ff1a702c4e9 283fed24177526de7eee615e75bc3b77 267545b2c6ec6ee1f51f77a6d7299806 94cc8a8df8c78f5e14038d588fd1342f ca15dd33a276b636d1fef881bd33f613 452ef94b9cbd238dd869694b17a45f49 d5058b014492f748220c986172788383 3824d4b03e74afe0743d4e4333af43e6 b56d8e21ac71f5d184296c7704cc40e8 d0aee9e36e73a88a11fc2b865c2a185b a81a218a06fa2cbabc78261b35f7ff55 ca89804bd77f770c4c62bee40dcdc539 c4db384855e345009f8c3d2002c77ddb 98003a902555e73adc6a693174c70feb d5c60b873643f0e99f0825ef57cf78df 55b945bcc9d3525be005c5c244da3c48 8d9fd58227bc92e41f3980612faf041b b399f7819e05c8bd492d9da2668ec34c 9c87e3b439c20e177f1513678f5ee92 ca3c48798200a14050e21024808d3b59 7dac6c932ca4f2fbb1cbe768f98549bf c6abd725ec744274b8710a3469971b1 760d765845cfb99b770ba9dfcb1fabed bfec781e562e1dde3eec26c23f5bc80b 6219b46946f62474c62bee40dcdc539 de30133b2550826647d37c7945792fff 62d67406fb239e21533276a8c0b1c862 56253642219df29c37d43e094da89ace 687a33b0fd4a906dc2185cc0ca1b306b d30e98009559150df27756ab62184cd0 9cec9c8b65ec9e4f4c62bee40dcdc539 97ff4614190d8cdfff05fff9845ac53e 1411cbedcc428f73b76e29c9c43bc7aa 8fcfa31d1df6e8ec9c2edb56a98b4be7 426f7850e60a5447616fb9ab42452112 1b32d878eeb305e45588a2543ef0b0b4 3775c10b5502d12a1190e285a2cbc9c 7ef23a05ff56687087cffb2975eab062 2cb76d6aaac3c677bb60e56ad1645b95 6478d877795d2214f51f77a6d7299806 a8a4fbca233fbadb7ef0119f8dd1f40b 1ae6d530ee86ee9a4d87481e09b681b3 b235be00006f3c03e6513d84422cefc4 28e7fd7a7a5ee8787d3ced6148bd0a15 76fa5df01e82242c684b7bc3f8a9aa55 6db5a05080eb2480f863ead9331efd45 6a36134591ec32cd37c7771ad8a91690 36bd3f2daa4ed31a921dd903dd0b8b17 9c87aebafdb4830ba5dc3fef8d22887b 7d22aa2a9ce589b37ca94e8674788609 a5f28af83eb1dfbc3ffd072b23bde58 2cfa88eb16cfd27b921dd903dd0b8b17 321eb85037156544799b0b9a0d4a12cf 4d3308cc92ffdab432b72c6a3d82ffd6 ba17ef05393844dfcb7105765410e2d6 1ad4c572e0fd6a576e1e9a13188ab4bb c9576be714b6cf2d219113a79b8c092d 131072b0a226f05f51f77a6d7299806 90c2b07e831f5e7fc75178c2e93f5b68 b7dc1e9a3949991747d7c2aae1e5c61 e2de47fd0e63a280490ad276cd2af3a4 b154cb1a8dedb14345ef69cff7e6d57d 9ba333215be4d6654c62bee40dcdc539 225905a8841620d7f6fe1e625c287cfa b6ec38384c0904a666023b6076341c23 6059f5f009c40b814702663c3b3faf8f ce9c5aa7a4016f138c2f9e4176bfe555 bd89eb4a7407f07e54d8afaf6caac97c da57e1d30424771a14c06184923f6962 54dfbf6333cf06dd652b6926f989dd09 45039a5ac0912f8523d871b44977a702 917de5653765673f8c2611a5a36e83b4 9623560560cb59a3d37a1bae74ee50a2 5906bfad8f6d794f490ad276cd2af3a4 3d5ef34ce469b11c5af597c14b093f6 53d1e4d3a815840b7753393bcfa5f775 aca4241639feb8f0921dd903dd0b8b17 5ec805e8599196746be771595eade0e3 3084dcbd0a28399170ad2e9733c71638 1c87c14a44982206df3a1b0d597ce76e 7b927d55b634c4aa178e7d331e641179 9b1175f3e0b7f0938ab7e957399ebbf0 b12af552392f92b476e9713f57a5fcb6 2f12c90e2001a0bfd7bd133fd14c164d 868509e96bb859bbfd5b2dc3df6521d5 60d7e8aba1f692a8c2185cc0ca1b306b a32e351352e1053ad124fd2a448c2915 c01ecf4426f58beec3c7482d23c2379 acba82ca76cb0201774bc00c294ec5e4 e1ff64e53154ccfaf51f77a6d7299806 b38a8896aa33692098605fee62c12dfb 3f668a006192f1afffcdb54593f6ab3d c95634c0a44d6596e71fb4d3a412f2d0 444ff46c1275b83fefead98a255f706f 60508a8437c09eb2247353095dc395a2 3efeb00eeba8a6fa2db3e9b673557fcd 192caea21a57389265dbe89d2f371f01 9935a1e91ef08470569e2e0d2caa039 7f50a6bb1827b9f582bfcd34215ccfc7 82f7946adba23f5f1c6beaa592f1b2c5 d599d283cc1d2615a7547743355554a7 1ee58b9b772b8807f51f77a6d7299806 b1d8cd17d6c936392caaf8842dbb8ac2 6ec7c811025a30a2e3a031805ace4a99 265521e0fc7a663259f8e31ca87c470e 27e65f34c3b8dd7f490ad276cd2af3a4 4b006b7a2215db3d284f6213916dba67 46a618f995c1019b15dd7d7985e749c1 22d10cc8165d310a15dd7d7985e749c1 92e421ce25931b6da5e3e028709e0474 984c969b9948fea738e43095496b061 90b901d37c751841c93205b4771d5663 c4fc9ac6e45a8ebc90546f5d45015351 34bc619e8ab3c0d2a93db6e4c0c75191 9e53d5b34c4b403841b765d3dbd065f7 484aac3c3f3ee4aadfcedefd655bc18c 927ac18cb336cfe3df289a3ea5d3a440 b34ed11766d80175f40dbe27bdacff57 56676ff1d9f8a1e94c61a7cce317bfb7 6ba512e07979da6ba3f4b1457e62c2b2 626bba505f03233ef51f77a6d7299806 13a42286f65c8b559f8c3d2002c77ddb d3829c7b8afd0d2ef51f77a6d7299806 d4fe9416de5e2a95b022c94235bc8601 df55c6665781293cbe53b3b9f1274310 cb4234b5106ee84dfba786d6c256035b 9c245f01f94ae038413b3ddc4f2d9a06 b6b378a05bf6982b70c33714b19283df 8fe70b11448dfeef2369c46027bce7af 6c7a2ca9ef6cf7a3ef4e42d70375aed8 1175801334a9e410df3a1b0d597ce76e 789ee42d2fc0c5e088c59e12e565eb6c 9e1fb93dc979f8fb5f9734700aefae4e 8ddd7f1e19ff809abe81a9109a782712 ac536462e72dea3211fc2b865c2a185b 29dcadb19ddb448ad98e761e6d91dfc8 6723be3b8435e27bb6146c7a77e1b943 42689fe4a481168276e9713f57a5fcb6 3d8183c2f6c0003bc59350d819542ec7 786566b66299405a4da5feafe6f1c8fc 606d50b144d8ca164da5feafe6f1c8fc 98d2b95fc4f59c426ba8b3973e201d74 4e02dea48a1bed6bc59350d819542ec7 b2b89d3ec5918f69c59350d819542ec7 4a4ae602159a711c824662341ce2b233 14ed803c2251dfc1ec451f73f474981c 315f29b2492f66a9c59350d819542ec7 1e91ab0d6eb0053ac59350d819542ec7 17d25c26485edcf94da5feafe6f1c8fc 17ba4ef76444e74b4da5feafe6f1c8fc 198cbe57b01bad9dc59350d819542ec7 21ae39cf6ba8557f4da5feafe6f1c8fc 1af4a1dfa4f94cd44da5feafe6f1c8fc 2441395102a132354da5feafe6f1c8fc 3b307c9b473270a1c59350d819542ec7 19c79a42f68d7d444da5feafe6f1c8fc 2cf613433894022dc59350d819542ec7 33ec57af7f648994da5feafe6f1c8fc 2950d1baed4dbd78c59350d819542ec7 282f296a666fb63dc59350d819542ec7 10c14b0cb76f87584da5feafe6f1c8fc 19a0a48b2b908dafc59350d819542ec7 4ae5df17829fb50799dd23ec22c4943b 8a3f6cd19f3f92fe7242f2b1500945dd d7fe9a6bf2c5ad924c62bee40dcdc539 27cfe222aec3463bc59350d819542ec7 83a9e08664eeec09c59350d819542ec7 2862558059dd584c59350d819542ec7 152dd0a74ed08ef8c59350d819542ec7 4c8e95fe5fdbb125c59350d819542ec7 1548461b13adc0d0c59350d819542ec7 56625ccb6e7dc3fdc59350d819542ec7 1caaaa5c1da4dd2dc59350d819542ec7 82c05fe4890a7f5112de5317fe5b354f 4073ca6ce52b5d65ce5d6e9371bb5c33 170be0087472182bc59350d819542ec7 1fc8231114fa42a7c59350d819542ec7 5413dbc1844cbed099dd23ec22c4943b d69d9de0c79ac6a9c59350d819542ec7 c4802a2901dcd6e84da5feafe6f1c8fc 5799c06f71bf6b88c59350d819542ec7 c59d2a61caf94a97c59350d819542ec7 29c7cd661bce3e50c59350d819542ec7 247dfd279585b1b0c59350d819542ec7 1e200d34c5555634c59350d819542ec7 181716a7a34f2708c59350d819542ec7 8e9a51408589448bc59350d819542ec7 95bda55d633ca1824da5feafe6f1c8fc 48e0fa8a06a163014da5feafe6f1c8fc 46e31ba5963a89fac59350d819542ec7 ba6599d00e879e11c59350d819542ec7 1257abde355da7ebc59350d819542ec7 88fd3b8aa4280302c59350d819542ec7 600d06bd779fbedfce5d6e9371bb5c33 61b9d7c12ba7aed4c59350d819542ec7 21eb0039185dd955c59350d819542ec7 1834778d026108e0ce5d6e9371bb5c33 688102337377c19d1d860ee2ad2a42e1 c4fd6d64caa1e371c59350d819542ec7 8f453f19fa9396a7824662341ce2b233 1de9b71f35b51b56c59350d819542ec7 494fd6deccdfb5cd5051fbeeb2dff27f 10b54fe832a00c3ec59350d819542ec7 23b8cec330bc7699c59350d819542ec7 9bcfb450ed3046a74da5feafe6f1c8fc 38c9f4bc9c5583d7824662341ce2b233 a01619556405ba3f2633ff66beb9cf31 2175d15f93051f0bc59350d819542ec7 429638b99d096c89c59350d819542ec7 6bd87f32df22ffe2854a6619c08bff6d 56f7c9a029b6b40d12de5317fe5b354f 2d7bad601f84c83686d53ab0fe94e911 48555a476cfcd222c59350d819542ec7 40df2ce55ea8f002c59350d819542ec7 21d4a168aa6fd6c74da5feafe6f1c8fc 818043d8e0cc040cc59350d819542ec7 28bd3151d50a4d78c59350d819542ec7 295502bcb6d0c0f5c59350d819542ec7 9a7263ce1cb720d7c59350d819542ec7 3700aafc0160b162c59350d819542ec7 3106e06eb594238c59350d819542ec7 39d9512e482ef253c59350d819542ec7 b4e35d962847fb8e86d53ab0fe94e911 1819a4e03dd67e6c59350d819542ec7 2d13507d53d201cfc59350d819542ec7 158134028cc664b5c59350d819542ec7 9dcc7002210e6660824662341ce2b233 8914b82447db43a8c59350d819542ec7 1aeff9aef2610ee1c59350d819542ec7 c48151eb47f0e4ffc59350d819542ec7 47b069b828d9fae54692707833167ca3 14b5e16ba851e17ac59350d819542ec7 76271327a3224e56c59350d819542ec7 c07a52687cad81a4824662341ce2b233 2b80c8d68550986bc59350d819542ec7 aee149ff795d5a7ac59350d819542ec7 20d92bdc128be29c59350d819542ec7 68257aab07479c64854a6619c08bff6d 123994ddd751ef58c59350d819542ec7 36d62d9dcba0e3ec4da5feafe6f1c8fc 28195efc838cbb6a4da5feafe6f1c8fc 9d75f1513c57e433c8f56fd282ce5ea1 14c527e2b76f8942c59350d819542ec7 636ca387c40fa8adc59350d819542ec7 adb7c7229f4871c2c59350d819542ec7 1222c37fc0c37124824662341ce2b233 22e77a41cc388839824662341ce2b233 3a0492e3892bb29f12de5317fe5b354f 2bb2456b272a23dc59350d819542ec7 aa3e41a51b1aa79a4da5feafe6f1c8fc 29832b9c3d644c744da5feafe6f1c8fc 2fff20fe8b4b4a6cc59350d819542ec7 391d1f98ffc6f8cf4da5feafe6f1c8fc 920b27c2d3c83a0c59350d819542ec7 1e73a722906872b64da5feafe6f1c8fc 147eb60e7a6cadde4da5feafe6f1c8fc 253c1fd3743c47234da5feafe6f1c8fc 2f0a56c30e384642c59350d819542ec7 29b34b5121639a65c59350d819542ec7 953f545f33716fd01d860ee2ad2a42e1 c28ae120a2d2829e50e9662c8e47fff 77d1cf70e480af7e6a400d4015c42de 365b6a92fc2f46294da5feafe6f1c8fc 4d3df5ede83cd26e661673811de66400 41472c96b430a1c44f03bfce55719739 aac3c6db20d3248579cea75b38cb7ce a0dfc5cd7e2331e6166ddaef2c2c61ae 87c85956b41a7fc541d86c17c15247b0 4bda28b19b2f6f865cd4f7d5b0608a 72d950ea1c029bf2369c46027bce7af 154f41bbdd20cd9d8430b7446f9e1252 d894ca00249da3fbecbb1f16dced7a99 c7dd92386b9d18bac502b42dc3551a09 36853ef4167300c86e5b9257c4084ca2 1258a7bae01e349fa320e34dad7c78bd b29f2d0d278e938914038d588fd1342f 3735e7c2bdcdcd7eebf9241bfabf12f1 a69a97674b732b6e951c1fffab4f5807 94d10abadfa0d88bf51f77a6d7299806 4f168576511489f91439869d172d3897 b64d237b3718134b6e5b9257c4084ca2 8504af8851175efd253d6f91951c4f58 1cf9f1ead192b6c9824662341ce2b233 8714a704af18d44b11a97ee9284a563 23637357c4e5efb653c80c0a3ef7382 5d765603dfb0f151e367f8f62a7e9398 62e1a04718635c981c7fe5be55ca5cfd 4d9152d6df9883529c75eb4326997fae bd0388dc8384961ccf004563556ddb36 55d1668a7d33f8ebc0b2397831029b54 b29de5206eb16c146ec91c2f4565a1ff 31de44d559904485f51f77a6d7299806 b12c3a046c326ca1d9b228d02c3319a3 c129e7434b33f3cf1b17743c18fb63dc ab096629bed6f8e0f51f77a6d7299806 b278c93f18480b362ea98d69e91ba870 4de45ae952657a45330a170e9ceed373 8a758b29a751764d14038d588fd1342f 6ff13af4d409fd25c3c22f38f0cbdf9f 3297041a1a8de1d3d0f3f1f5f6accdb1 d6523ff3e0acb768490ad276cd2af3a4 b7a9d8b469cb06037824b732b006daaa da3a71168ea830dcc82d9accadcc9c9e 39b50a129ff530efb4ba4a53b97265b 74104e62e8fbcbeed0b36851d61b6fca 34e80aa7b579469bb163e775a4d52465 53e5fe30d92d6733e6c5cd45aa112726 81cc63cbfa6e492154cd2a0ea6cb618b a909c649ca19e9c9a45565492492fdbe 7a48b295d6c3956fa96fd0f479def5ab 150a5e3deaacaad4983f6ae6d409aac8 515df524aefbb9c2376a431c347bc40a 1d898bbd8bbad8f98430b7446f9e1252 c0b055d5060f7f6b4470f9a1ecf7bbc 11694171ff49a7521ee0429e004db48d cafb0ae07b0e2fb055f46d55537192b6 aba010c771d153069c7285ae7854d4b4 d2dc852235fe39ca1112a51947cf2b61 18d84c10a5068315fe5c8ffd0f5eba47 407a485c7d711903ae25f6fe802a8997 6eb88254824387bfc59350d819542ec7 2e6c2878b005b5c8bd7feb85baf9225b 29faa40d5c0a65a576e9713f57a5fcb6 acbc349caf76e6b171337fa12bff07ad c0d2f9960e0db8957ed335507280450f 4bbac921678eb957614319d7d997614c c031c55d7ff5bd7d824080f516909671 24b3f8b6bf4a9a7391a3d45e8887248a 3bb0b093c66b1af37a0a46ab3b36f780 adece72df027acd6658fc1ad354006c7 4c44e4124118a2521e4b67452ae5160 6f113f2baf10463635836c728d324152 575d99ba4197caf041ba999b450870a8 8094a6efa5efa16776d812857a5be1ce 7fd938d174a81474b4aed946870413c3 4c4043756b3aac2ba80ff03f6dc10926 86838c0e4486ee7a8369c37b40e82efa 44e48c541b5466342f38c0d2792fb5e 6adbd040ec2f9fb53f07ca1042ba5dfc 3891210a28be585fb9ac96152ab66583 5b6195448cbcfc04b8cac7fbb9e49985 6b984c6b1e49d9dc59f8e31ca87c470e 94bb7157062d59a5f51f77a6d7299806 7c12c2a7a1957abc8bf788ad2aab0947 cd781f0ec08ba028af232a5661e85835 cdc3762d2846133adc26ec30fe28341a b4da5084ae0237fca4ab444e58fa9bdc 31a142710610023cf51f77a6d7299806 ce85ce0eb106d409b8a453d61eaf046c 9572162eb971e75dc7cb20726c4d6c81 ae20b4fa1b552b62614d87bbb5364f6a a992c3b41cc3027a9e1c34656195f3c2 a2dcaeb9f64566672027cee422df2aa3 8488c41b4c17d0a81a8dfe268f567c25 c365225746f2eb94ce5d6e9371bb5c33 851274c7a38bedb5f55057dede601621 d6bd6fb5d0149227fa242b893d7c243a d347f6e236975a6b7c4767a4f4c46bba 202ea0a26125f716ce5d6e9371bb5c33 d4277bc8f1301983a77c359d9fe71e62 cc198051642f31029a88326b888756d7 25ed0233d292deb413cf34dbb0dd8875 2de782c81c89f704c2b64c0adffbe398 a477a301e1e1a67fc2185cc0ca1b306b b5a6edf04474c327ded35d98d26f9668 68220c134171d105f0fb3e3d2a0d34c9 1074bdcb3c2032fe0f3f8b6e1796773 1d7b35cda1bbd2e6eb1f243bab39fb29 c99ec52d66a6e89c3c8d0fdfb1cc2535 acd46f0b09a84c226b987ec2db2ce6b1 c04c1766fcc28fe886c701087a194026 bcee1a76f453723c4cc1952ae0d6e81a 6de399f706f2972970365ad078f710ff 49b69d5e4330ae2457b1c0b6d5084bcf 40470660e2b7a9ad6fa0ab61d9f9d96d 8c7cff4d76ceef7cff900d986c9dc4b4 381d0eb848eaaa07eee615e75bc3b77 5a3428f5690f57a7cf004563556ddb36 7aee2d4c1e70d27c921dd903dd0b8b17 510fa8653c10b0d1ccd0340812259a39 7a9feaea9793b570fc9d1bd1b5b90d13 785b58a111b0498b9572486e5a924845 a1f901768250762d4f60f15da4c665d0 92c111f0456557c14da5feafe6f1c8fc 5135a234fe18481235836c728d324152 a1daa27571e67bf7239d26686a11c3 3105e7ff7fbf3e423e72cffee9fc75b0 2c177b47d18940c735b355b56bb31701 819a1fd8c7bea7f3984cd513e00e13ae 152a850e5016fdd6e0771d4c079a0ec2 b67d58cd774ebeaea480742f4529182b c52cc29136169ea014038d588fd1342f a55b6196e3402ba340789cf33f2f1153 56e1f35c70ad2859c59350d819542ec7 429488f8be42c9ed73149e0cf45b2c4e 575d4aa0c1b95b0836d8dd30a594b2af 94883014b900c6d6647872b8585e132f 5984042b95305aee4da5feafe6f1c8fc 21a6906ec6cc806182db9fca4b68095 5e6c95a93849d3a9cf004563556ddb36 763d3c4ebccee884da5feafe6f1c8fc 4fca24001a151a43d7bd133fd14c164d 4aedc26af43f08d08f7d9678498f2295 716b2e87f41b14cf48d22c298c611495 5b04efb9a9e392f7f51f77a6d7299806 c3dd5d3f16f231c7cb0c0d433974e32b c73ebca7db882f3ef26c21d3bbafae87 e3f3d58fe3cd9746a485daf2a997e28 26d924cab0c8e8f348d189f942cedc62 14ef9da3809148601b17743c18fb63dc 78d36740730c94a4490ad276cd2af3a4 11224ef64e1702b412e0c474ff07001f a746b71bbbb56c93c59350d819542ec7 1459b403c084a33e7694593a26340e 4a30aaec0e83f992c59350d819542ec7 9a2c9e5bda713668674056261e8e6523 956c437be87a2be5f51f77a6d7299806 2375dfeeab7fd8678430b7446f9e1252 87e7c6e590eaab04f42a90fe4baf4591 740eb7316c76854ace5d6e9371bb5c33 68d23effdc37ff8ab59213b4b43189c1 4e33ef381f5be0e165b61ce1124a4806 108295ef2f00c9aa9d886ab2fa5ee681 cece5afa11b5ea16d2096b2fa6f98cc7 248ff0771f1eb286f51f77a6d7299806 aa722d165b5ede74f8832716537767a4 b1e2647ec67a6402d616724413b4089e 1919dec93dff59e0ed3ffec8035a48e8 221c831217721399ac043ebb2140dae 9ea0005f3d702b4f6cc679ef84e06ad6 8e2f81ceda8e42ee4b4e980f23aaee7 28ad7242b0bd168ec59350d819542ec7 a0beaab9a8c2f0954e7d60def15dcb8b 6e4407e2b40dac9eda9c49a653a829eb c700103d0294eb186c66754c2bdaefab 2cd30f8ab084d274391fb969ff1ec5ce 5fec62a43a64ecb6f51f77a6d7299806 8d4833c24a4e983fcf004563556ddb36 9bf9e8d47f7b996263d977b06bbd429d 5ab3129036e7b69e278d386bfa54545 4768d015c33de0acc6e4e9360ed1cfdb b6392ba0cc9448b353a5b360543fbe7 14e612a7cd0311905b539ad6c08a7283 47ffa354257d2e3b20f4d1b537b5ee90 65dcdb468234c4f64e2e1b2af0cc59a7 59d2e972374292c19dadd90fffe49008 ab7b9934fa7d4768c0f947750540fb22 9166dfd18ac60504f0fb3e3d2a0d34c9 c55498c03c913177d200faae04ce3f8 225e398e99d98995b0c71e21a9386658 cd3c926cf4ae4564a80ff03f6dc10926 8b24699e1351a78ef8e7f2c38fe37243 4ec97e83a1e9725c77a332e31ab74b68 a3407d2fdef7386c278d386bfa54545 9402e5123bd831e276f1f48f36df7df4 1b269019c7698355a8737fcf23389014 70eddd0ddf5c9ba21c1b3b2ed8d13bf8 1b6e680e76d452a097144612c70a9099 c7c782fd5976ed7214038d588fd1342f a6565be9e3fb8e1095bea7c29e873d16 2f87d7d3c522f07b297936c81e7f6629 94f4f2342f6335c5875c4d98e634f167 985eb4a8f9914873738e43095496b061 4c7cc0a0e83f995ad40c07d3c15cc681 568a719ffacc4e12f648065fbcc749bc c66e77615d80399466e506c113d5d05e 243cea3dfd6619944b8710a3469971b1 932abcefa2fa0d5960e37b3f76995f8b 817e119f087cf8f8f44880b8ee951142 4dbf616f15f8818ba3f600c356573d21 433b0fe363861867b25e7c54df7809b7 4d97127bea831058b26ee99f2f592682 93eaa414c043264910a7acb23a71a618 61f79a63ee5315693fb45d07cfab7906 c09fe6e32490f4511b17743c18fb63dc 763c7a6a8821cc75ed40cf95f720995f d6138b5bee8f009ebd9c9454e3d4e73d 580a7733e55e08be3c8d0fdfb1cc2535 5a5e9a046d79bcc7859a7164d38b0d13 4a007c5263b36c35f51f77a6d7299806 c33ab47f610b64e6ccab809eba079ca0 370608d5fd4f39745e7493df1bf8fac5 98a1211469f6c6a7c7ac935603e09651 43552fecbd07876acac27d617fa518f5 cb506ccfb07faa60f51f77a6d7299806 132185edbe4f2c5fb4c161851ed2b4e4 af99a90272d8f5d7776cc3eef7148ace aac417d5df45cfd7605de7eae9f0b0f4 8b35178a614ee2f462023490a1e05c18 86905b35aca5a3f11f8d8332ee17945a 3e858a898accc14132f8567794723a79 c1f419412a6960a27775562146ecea9 b92e2c18c0eeb8cba80ff03f6dc10926 165c00d292773865ae6eaa32356aaf3b 7227b96bff4e94a86f9e9f74beb7c348 9ffc432bb61dff9f339797c21e8801b1 1a146144063c778cd0d447e37edd880d a8bb33c995207084bed1bd9593e318c cb75de930881a633f51f77a6d7299806 4dcec5b89f1e9e4915dd7d7985e749c1 12de47490769694e490ad276cd2af3a4 65f11f7cb5c5106eac00fd1150223027 d707228baece2270c473585373fc1fd0 d88116de5721301298fc1d0403f6ad0 e2d06603fba3bf3310af74324aae27f c08dacfd5dd248374e9bcf25298f80d 8f30bc2f3ae12300a4669f677ccd56a9 a53a96efb6b9f29a490ad276cd2af3a4 c5aa72cca5cafd3f842982c980a38094 7e06d12a3db817df7f07552c1b0b212 3c1f9b42e848c740c59350d819542ec7 aff3488d05343a89e42b7a6468e7283f cb84d931a90fbb8e91ea3afb2749822f 5893f6c94b15ba204f3443b22038d340 a593528259cf4d78c0f947750540fb22 386bf465df74b1321d860ee2ad2a42e1 d8bf8dcbd5cae04094beb1f48b8b494b a640e7214f7c5393a5b7c9f0974d595e 25c3964cf7a607b1f51fa0238791f5dc 278d1992a0aa9116ce8f46fabe978829 1f822298caef0302143802691fd0e33f 7eecf98d3b8f93a684c210032662e046 d15097b4c6fdd9001b6eef8565b06678 a9ade7de80ee8cc8ae25f6fe802a8997 736e810b71d009bbd40c07d3c15cc681 e4523c675fb6a103d08b0f17fdc8a28 b4130f8f597c8f38986f688b80d667f0 31ab6947975f5747c62ff677c806df30 22cc22fa33c8203ef1bd05634b542a1a 3483076cc008fff0d9826d0ff198257e d30f01d6e50f128d2822b5101b06e070 12f1e4964078850cc7113d9e058b9db7 3aabe5c704cf7a6d1db624f8d6f26a7e 18d94e539b0ed30d105e720ebc569399 b261964d7c920a4cd8a45f471fe2ac0 8994e11588b62bdfed208c42f7ada5c4 1ceaae0aaeeeaa1e5a8eba5f6050bab 5f55127e04171d6435836c728d324152 4cbb978cef36a5b9c60fe2650bbe2bf8 d08027b0f50619ef5c2f6ec7d4720d0b 1f1484649f0b2d9f6820cc0e7030e15e a248de70fda12c5af27383fc5a5a711c 5584ec27aa657c65ad329b1997e89fc7 63f3ea0c41eedd19f51f77a6d7299806 c55a7e2cb3ab9aea8ca4aeb5e3b33af7 4d0ee9779956b74490a9ce3e4b15521e 7b7067ed1bfcfb62377b9297f3055210 a5b61e473c6ceef9f51f77a6d7299806 c7a7a1254c5d98b8449f1c29830da6c6 a2dc947048077f4bd0b36851d61b6fca 919591b27262702ad0b36851d61b6fca 3e4d14a8716d2418999b33727fe6db14 6d54014c7e0847376bad80b4002b9511 a2dcea3f88c397f487d0ef3f1f8b9c07 931fcaa08876700e788f926f4d51e733 ca6712dace1e32a548d8ff57878739ca 2856634c4c0551a814038d588fd1342f 69949f47106c9140391e4d6c585a697a 962d112db5d7c687e82effbd6750a761 9ffdd44e709142551b4e9ccf27cd840d 4dabd28be1615419546a56a24fdd418a 97c6b3099a406960d3dad974dc098fa1 267aa08f20a000a3b15194162f658e87 cb70b087e5bc5e9522e46d8e163c0f81 2e38fe7e4cd74bec76e9713f57a5fcb6 acee69c7c5517899af4d0096b3f9aa03 a71fa3fbcd132c39cf44224546cb0306 6ee01e861f10b1f044175b4dddf5be08 548996207fe62d4a89ecd28750d46ac 5c80714fa7f21981bf2e25c697250b54 7238faf31667078b2ea98d69e91ba870 1e18f136798cb3f0c59350d819542ec7 6754e64c37f7318c824662341ce2b233 13bae5728bec802034ea40f5d8767c57 19127cb1f535bf2c62c9e7b595148d6a 64f02390a1487f791e4b67452ae5160 24eb9773fec0eb609e4965f0106e00d9 4669d272f690a18dc016d21df34cd8ce 60d8c707c5f8278e3c8d0fdfb1cc2535 4eb789e7b91d1c7374fd54817454ba03 d5fc42532aac8ea8ad046fea8c3e99d0 aa28deb4dd304d12f51f77a6d7299806 d22fae260519b9cc52051c3ad59857ed 3a910cc1f575b08339d3717288022c20 77ead277434621b5343087e1efdee691 1838f9b62a102d704c7384dbb75cab0d 35faa6d255a474f3dde9018a607defc5 b8880afd2b1038c8ea7cdfccad65e7e9 7e2e24fed142bb20310af74324aae27f 77342f11ba666144d71237b3923fc09 c8f5521a1f0ddac6c59350d819542ec7 696c0051a5d5db993bd5bed2701d5593 b60bf64c7402978555a060c097fa68cc 3761d6523fb9d7a73f7e27638e63d848 6e765437962f4c578e51433393e177c0 863deff7bdee8cdff51f77a6d7299806 47e09607098c43b5768049e7324c832a 5a6715ef95a99bf59856fa70a578baeb c21853b4876b7078684b7bc3f8a9aa55 bcf7688f64a642e3fb266533561ee98a 74126116f42f09e2e6e130a30b5ed875 51d9a60e0654e3622ea98d69e91ba870 1ee6393153a3146ebc19762eaa7ba40f 7aa00b5d006a7e8de6860aa648421493 850bd3a9b96e3ac67d3aa3bae1f7b494 15d7f54338bcca35e82e35fa57516a45 73c2405d760e35adf51f77a6d7299806 89ddbdf6366df2a93c2e50348f23d3d 740f399fea35db05490ad276cd2af3a4 584b055cbd62b8572d7ead8d9eea29b1 6352c69907b70c0480fa521a9c7198a 31590e22b5abce1191c352d02061b3f7 2726971c1ed929eaa733727fd41bdb33 832fa486c60335f66ca64288cf1b7ee0 a874dcff3bcf8a802aca02f099166182 8317fd220232e3be11fc2b865c2a185b bd0a87c4356e53d4630bc2b026b477b8 93ee050394f3b15e3c8d0fdfb1cc2535 54d9053622deb8866ffe0f6a1d92eb85 19a0d9e5e036290bfe9e4fbec1f7cb98 d6a55d2dece36ca0e3f7a74e12a274ef 2d2ce6dc51aa6c7a9856fa70a578baeb cd251287fd34d7e0e3f7a74e12a274ef 64b8884bcd36c6fef94d7e6d8577c8ff 4417497ef6af4cad74555f58f0503de3 ca6d108120fa949163d977b06bbd429d 47fa0f6c9b9f019742cc639a26c5af8c 70c0c5438f0da757307c5c16466b10c6 c6a306867328d90fe42c2d012c73c412 d6724f5b2761dd49ffd5817f210f277d 25cd31f334358e0260bec33edd014356 d56ac97208393d54bc8967b0321bd9d2 2018d0713d4c22df480fa521a9c7198a bc1298b1c55849b14e82b8d74b98baba 906d4fb94d86c4f0f0c255b2dfb0a92a 5abaee58835d67975f9f6f4c95ed18d0 576170f154143ff2de421c2ab5cfb52 3216246565768e2fa716f601854e234e 5d8c63fce0f30a46f251828d7c328331 a6d90c5628a598a1598a453fd9fbd988 62a332e54cca36f547b925ad5d9d8738 a80ad4eafdb304edb6b975d10a10702 9990d6c43d95c521c4df475ad1a6d009 9f07ee5bcf6a4b11151b305e5243d9f8 d89866af0e191e40c4ac7545c4775b33 247ef69bd111e8f026cd8d83e7ef5b6d 28b381915e04c62934b6da227fd64942 49485d1e98629d0c1c76f329bc4666d1 babe716e40b3aa81a54c1b71c072d546 54a7817fcd0919697753725ea42159e8 9d7338e6d5da1acd353a90f87b8ecab5 1dcd59ab33d275705ac7b7ceda74ec30 975884e7d9cb74ff39974e6e2bbe1adb e05be650930e7eadab9ab77fc8888129 54daf9093eabf27a34d6aa31914c287d 34850728ad9af669490ad276cd2af3a4 bde4addb689c2ba55841240ed5c62c36 dbcf0d09a1cef0aecfaf287992b2065b 87708c9ebd845c21854c6e2381cc9350 5c306efe5d4409c31190e285a2cbc9c 7470935c77e340f31781dae1261f1d28 557cf522ec6be06ffc5195fbc9cb6806 7155c1f2abcd7dd2e3f7a74e12a274ef 75c26ffff01ea7063ab3dfa44f5fab01 2f0fd2a5e181b82a4267f85fb94fa2e7 a46d947577ecb54a6bdcd672c2b17215 37ba0371250bcd6de117ecc943aca233 bd2bcee265b1ee1c7c373e0e7470a338 8a2aadf8fc4f092c5ee1a94f1da3a5e 654c0a2db749c63a56b67b833e192171 97b415cd78587de5fa29682ba98e856d 3e52f25b8f66d9a8adf3df9d9e46d0 3fcb5eaa202513bd2f815a05dcd7ddb5 743366dfb72897be1ba9fd11dc8bf457 75c4595a4d1c3bf9fd2b139960f72a73 e16c0191973a25f02d63c890dc92b5 3332c4ac1fd931d01586ac387fea1cf9 ab7ad8afde03897aa52fef6f94fcc8a 8390466432e2c364298a4bdd07dbdc0 e0c8d4f4c31b26f6d295b24579cf55b8 1d442f753e2d7d3cb90e13b20a8dfddb ab9e20f3f9d2f1d1d77c088a902d8fa1 c11449b64486b4df4240b2500b599345 1f6d5268afb826c38b424343280aeccb 73789bb6c0286415db823df37b893ef4 40209ed0c2a718bd82ef94da039e491f 7cb7d54954caa7a2d3cedcecf1ed3b27 7728f0ae18c58d067e427098d75ece6a 77aff49eccafcf2726831803d0b48347 b8be007c703f1a9eb336215553415709 948709ebfb6cd6ff6f2222642bd41c09 b3328bd358d7ace07c68e936cd219e1b 623c347d2d5cd6b4a66c900acb409285 abcac243e3ed325b34943af333340cd2 b1bb6113dcdc8a65ffa51bfffbc09ebb 443a726ba9fa8d04d99265061a435799 3aa643b4eb4a165675a4e003752c1044 d4c4d991f9fdf0b654affd783a718eb caa4f65053f07a64548804f91c2c5c3d 9fe8af4bc8683818579c9a60a6b30a2a bc1bca3cce664ab11fc2b865c2a185b 8238404daa0a13bfce5d6e9371bb5c33 5556112e5f36cf2755f46d55537192b6 37e5fcf70007bc26788f926f4d51e733 178529522942bd9e11fc2b865c2a185b 9702a1fa518b960784db07849359372d 2af2279b9331aa9916c6f599d5622764 46629a0cff77972aa47e6c0a5f3e8240 8e46f3a871f86befdb955a8e38fc7dc8 cb9c0c90b5c6cc9c189d4f3a6cc879f7 c5212968cd5ef1dc3c6e7539caf3791c a268283b0fab6092eb835f4eccb92a70 26657a42d9ec207ee30ec6a0c7ae873f 41d9c4bc97447c4530ed3cf7f7e32c4a 4293fa9040a1790f5e30943bb32d54af 7f60f68c48e67cfb422ac19d4a83319e d0af907a612856e964b62a9cc93b56f5 be4c2bb409fb8374b5f72e2923ab992 77df125bac962fbe4c5470734f591843 55f08c36c20f161be186198f40d88f09 b37d269e1ec64992ee71ee29c2167097 9524af09747661fbe0f91080da8431d7 59e0e7f6eaa54e359cf7640f6c7f518b 1d7b04fd768eccb5f838a2212356e267 c3755418f2df9369e7e684d25d4dcaf0 9178722c21d03d3ca12fd542784d2033 695002fbea3c5e4a9a6b496c6e9f4c2 552b14104b7add4049cca13fb3e44bf 323c85aa6d1949abaec7b0e2cd000db4 63c195f60442eb5a32cdc35a3ef7141 6ed6e797fbb6f0c9b4979bfe197a8c89 7759a26614f6c4fdf815c17ff5624f52 1f319101d3c05a16886a4b751e0cc0b5 d6a58b80b6f1a4f9a14bb1d7e401bf06 a9bc0de459504729eca1c556848f5db1 636c4d449f17b6a8b47cc2471d9dd7e6 992e569c61916848e26ab56647fa5b85 ccf5eb1023d22445762406157deca112 3d21c803cfa3bf504c96d44e0e286fe7 8697ab2a0da98ba65588a2543ef0b0b4 6d42969890762ef2ec8eb53ffeeadc85 5a639987ce024c8223dd83e725809894 c5eb5577e728c4c1ab4753fa80886181 878383dee814d727fd2b139960f72a73 e0d37d661f26e9eb4b8710a3469971b1 cf57b6a6baeb421c8c180d5d98aa66c6 c184edddd3530a8161e1dc6d433ab6c3 5f2f90d83db6bcafe7e684d25d4dcaf0 64af194c4c53040e492d9da2668ec34c 94b497f0a8606eb96dc1f81f95db52d6 8fcaa6e3a07bcf5038169f16cecf9bd 7bbdaeb0633738e611fc2b865c2a185b 169d64acd930adb12871cc0b3cc1a485 a82276d1ca28e11a4d87481e09b681b3 d4be807e568ae84d7b386db5665a1b3 ba6c211ed08d5c1b292e33b9f44edab7 8e1a1e2879cfa2d6fe395915d44df772 b1bdcc7bcb3148aaa23949c21eddef76 7261f3eee6d5cac0e7ae87d20a4fdaa5 7664b9208a84674926a555721514c9d0 534d0386ab0bb650ae96150e4aa362f9 3fc6e2baf40f4377f5afb395b99ae069 7abc6f3fcabd914157d513bbf87f8d1a 71c2c44dd20ae153353a90f87b8ecab5 6343efcc64b331b3e3f7a74e12a274ef 63cb49d18eef102a5c910a98e42d23d 740392e1c6522664c20c4293bea04a44 c9ead211b387ce0c5c59c6146ff01de4 be7d2a1a7fa7ce0b11fc2b865c2a185b 350be7f9f7eaf2667dcf5135889d9f2 8b23fc57517a57d0523cc82298d77b36 8e42a0d11784c74fc6a5c971c030877d 4116f2d56897d9ec1bc4df4f6291380a a58e77d8a9b37e0280b9485fe431cb14 1b3d4f2291545e472dc6c96daf8fd5ea c86f009c4d1e1d2941e1a63759e8b225 622dadb90004f49fb84959963148f2a2 2ce5e1eb83f4510319f778c7a8b12264 243284bf14a193771f6fe06b2fa3ab21 7328b4c001a249ca39d3717288022c20 718f8fe82bc186a086d53ab0fe94e911 433082675f5505c3c59350d819542ec7 3f51197359289bf839d3717288022c20 1767bd876a8b8c6e4da5feafe6f1c8fc 4e2d3dee0f6c8e18754e8957cd76ff02 140c308db70cd2674da5feafe6f1c8fc 87b62cc2f0368983824662341ce2b233 83db7fe5bdd2df12824662341ce2b233 1700d057c9e0c88cc59350d819542ec7 88a1a68c64ef85394da5feafe6f1c8fc 5f7b88ac9256976cc59350d819542ec7 195b0fd745df898d86d53ab0fe94e911 bbdaeb32d4229d70c59350d819542ec7 ac8cdb6289d3d446c59350d819542ec7 40f90a159f03321cc59350d819542ec7 10798ccb7072393e86d53ab0fe94e911 59b0ac376af08592824662341ce2b233 dfb5415f3bb999a4c59350d819542ec7 96969d7adc540bf686d53ab0fe94e911 2d1b4c33c0a40653c59350d819542ec7 226873c8d34e38286d53ab0fe94e911 3b577e2c7bbb8ca4c59350d819542ec7 329f11a156aee39ac59350d819542ec7 587315cfb22617a1d37a1bae74ee50a2 31c94abeda52273286d53ab0fe94e911 18efc77e6837f7d311e76965808086c8 932ae6a9eaca65a03f4b30b8df1dd26b 663cf5c8c88a187b6fa3ef67a69ab460 513cc5132f0543d0b47cc2471d9dd7e6 475907f4b97bc1da25ae8e5e777da782 bf4aed04442c31e4f759a9b042055cc 7aac04fa0361f0da2f8bc0d6e7c6775 62f5c85919a21aee7868105076bde789 b4cb08749e099f0a899736e5d685d0c2 a4c79586ed938b5ecd81cf227afdf993 b5a0f4e52687b87ea5cbb6810d19a105 7324733dbe394447e78cc773ba5d9e52 9c15e8897adce40c963aff3ec12fdcb 33ad208b1b1468bc558ef7f77265c6c3 88a30428b822f8ad630e9aba042fe4f 1f4ccbdbd0162e9be3f7a74e12a274ef 401960cb8526894f4b8710a3469971b1 891e56eed3fe1debeca22c501ad0a77a b0709afab8a3d9ce7e65d4ecde1c77ce 3e881be7e5289fcb77a8ecb4b9a890c5 329f80229edd920a82ef94da039e491f 85b82499e3ce7aea3a5893ad04c930a0 d33e54d1880f70c310cd758d9b7cf 6686c3a7dc39cb59d2f1945599cd5176 8f8a2633debaeb96c2b64c0adffbe398 cc492f2749d63136504721639e19f609 8b63c8e0d3959c961e1dc6d433ab6c3 6c6e14968b5e951de7e684d25d4dcaf0 2df3eafe6c699c1a6baba085b51d97 4bd1e17e8bfe8d5622309d9bc2301ff1 7177dc5922252f1311fc2b865c2a185b 7fbb7a6e017d3bd1921dd903dd0b8b17 70d390b1e9b3053a22ca415af010d9a2 80a3b5b036021b8e404dc8be84d677e3 4f9b95af6720c7fc11fc2b865c2a185b 21dcc3c0485b43136473d8f2b21437da 6c4fa2f9e7e938a15cc8912051dd9ae3 274b2b7de6654d7ce6619119a89ba92d 7f726fa36a428c0e11fc2b865c2a185b 9705e66769fe130add7092ed47061a36 a4caf30bbf028b63713f083e39bce318 ac7935b217aeb58e19ca41cdb396f36 9b885f40e2d36819e4e346ee2650d150 ccf7d017b67b51b7b9349bb36676bc81 c35d287217403cf3236641942dd4b3c 11f59587596e3bf1a9958063063ce065 a62c9f6091337b5cd5382f3f8f33a9f4 7e881ebf38366c6b5c91aedc71c80652 54c4eb19c59440128f7c4148465d43b6 9029a5f19440d04e6b19a27bc4c01b1d 45bb41433302f3f5490ad276cd2af3a4 69932a9f53ce20bbe4e346ee2650d150 cdc2c14b62e110fbf8bf793ac0a3a901 6788de26abc86a8480fa521a9c7198a 22cbdf59fb7fdae277b4d8470453cb5 b539b0bdf5c760b1c0eeb4326d5ba9e6 4d36c59bd32fd885aadbf8208284c675 ba1230fc38050b1bbf1d236bec6d905 53b396d2ff7af087d01673c7c57450c9 bae2eb7c426570752c91206be77753e3 5f44807953f9babdaf31a22c7bed177d a256bf234c60a150c226a4421a1fedeb ac4e80d4ad2d0ce98060a555dcc63fd1 5b2201c133876813f8333d818f5f80e1 b4d82c9706931d29d1d193a59606317a aa249df1e594036f730fe631274bee9c 8af204f53bc871a2c05575120a46cd3b a65df9374a1492d7fff2ea4466fc1c5e 18f41e91af76c77de25f00a04866d020 cb12bf5a4429ed4c4639ab25a6c4afd9 346419b6e2131dda5785f58f071c8c43 ca9e248cdcca240f11a59b122fb65ee9 9140ef4099eadf73887c1a82cf8c6eea 3bb80aa0267a12bed00bff798ed59ff5 68582049d02c7c979ebcda765f4eafa1 3e662f9afbe62838f0f8b2d752b1c7a1 71bca48ccefa3cd080f94e6470f7d263 8fa86c85b7985962598f1102685df4cd 98e47ed9746cbc88ef9b1f19ef4b8cc0 21ffe8bb21951feb5c8adc541f88498 8cfbb0ecb20361e8a7cb178ec63a7c4a 768564ef92377d886549bee1ee0ae3d0 5fc881594598fd937eee615e75bc3b77 7bd5510b4451cb651d6ac856ecde9eb2 9f88eb11fd20541b4f759a9b042055cc 4b75b3d199523a91f8d6a4359d6a181b 663c290dd2e02f03e3f8b005c90fbce8 25d7aeb2970030371733347bc72de5f9 3763bd1d86776ac397022448220c7d6a d3759f1bd6dc9652f51f77a6d7299806 148180c71c8ad4e3a1bfe809f99d2951 7c68771e303eddc16adc061043e7c712 2988d5b3d61d80c276555d27f71ae823 b8300f2e4a8adf9b31de0931bd5b560c 1a2c199d7c8cb7f83d724fd1eb6db6b9 2f2a87c3626ff6fe1aae34e8209c4d10 2b45de8320e0b2ca55d7f0828042fbd 1a9a91aa5e3306ec5938fc2058ab2dbe 5172c96ea99b9f5fde533fa000314311 6c01e409fb522789b664d1885442ba70 85502157d9e253d411fc2b865c2a185b 238e8b7747e7a2503c4f66791e25960f 1f610516a159e0ce8916d0991ded06e 124cd036611b65b514038d588fd1342f 5bfc4cb92e9d3b1f79b0363dd1368699 83ce531fdc507e34f51f77a6d7299806 580add3e9e4bd75939a06c149bd5b5b3 33ebdfbed1aff9fb12d532e9deb7e02b 17ad636e45c233bef79e00aae9a7dcf8 a07f3b931238a5c3fe618e12c7f65698 17e3997117f88d921ba9fd11dc8bf457 b1f23b772bfe59c2f766c600156dc40b 9c802e8971c1b25f480fa521a9c7198a 11beea78b1d558d4b246c4171f2c393b 9e6434ba1ad59fa611fc2b865c2a185b b13778ff6594e980605de7eae9f0b0f4 731733f855e5ec4ae4c30caf4bfa735e 942e67160b47dee1b27fe5b4f7a28eec c65b640e9a3838f91d76d38b3dec9476 9aedc18053d412048ca998f0f87d0c84 6e03d2f837cfeb8ee75ac485a81d5fa9 594128786d7aacf26f2c2a3461eaa93 e2716932c4739645e0958c0e3fc3eaab 45679a0d39b500533dd5cc05646564a4 a5ce16faa5ecbc4bc6a5c971c030877d d6edc4c02e38c7dda5737ca21e62ad39 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02958343_test.lst ================================================ 71a1122469df0bb8cc8ad0deed05da5c 323c9dc2a8911e146f2f07de403e98d8 125a4780c2d5095d19454008aa267bf 1be075751d7cfbf9ee8e9bd690a19ec1 1d82451a55d19cdd711f9e3a79a13dcf bd8654fbca233e41ddb8f37b1865d989 f3760c5e8b97149163b803b494079757 36190ce6fe041e452d647b1c17442c93 42f45d024ab3309eff673973a435017f 604d915e7bf91cbca22cf2b42142a7ea a72134cd499fd1c4f79e091fa09130a f66180e68fb1c98469f2880702ff1c7d 36cf21268838ce6011718baa6d4afc0b 383f8d508b6f25f565d21723f535417 f850f5ddc42bdc3a117db354abf0d721 31389308f2b032ddf09fb258eb4b1e60 1f8aee726cbf44c23d27832ab9ea6d92 1e987cad6ca8a97a7a24dbc42a104ca8 7c5e0fd7e8c62d047eed1e11d741a3f1 4d1dc1ad555807559b0a29632c8d0005 12410830e8a5067c69576518bd9bfe48 d86119f06459e996897844133a297d65 eaf664eaf6b27cd1905f30c879d154be aeac711326961038939aeffada2c0c5 9f3c463272d13d39eb7780cdb3ece367 f04f2fa810b6a66994abc9429888948c cfac6b6374bc4fedeb7780cdb3ece367 381332377d8aff57573c99f10261e25a aa78d4465ae18312711f9e3a79a13dcf cba0b54cd104c411e9d8921ebe6d5b8e 1710ff46ca275e171df27141dea8c9a abb2cf2ed0d8679e9cace18601e5d3b5 aa9f41bc3925ffc4be9358e8c18dc481 265f0587e4018f7aff6fa400d1cc4c85 8e05e4f955eaf140ff673973a435017f 99311deac352b9a5873751b4c304dae7 b50f9931670e25ef44ccce632b473b8c 72d4deb3b797c03dd4f6529a209c5dc0 c8fd6ee4bdbfa5cfbda3e4f05af7d436 4a5bd025a2500b3b3967c36b4916b4de 219a0021526791d18bb5c0bf5eec83fc d482029701573b9a43fb5689d5ce14d3 346917af7c9659e3814085552234c955 cfb4626f879c8355b4d8ed7f5558a6a6 751a2e8afd998768fb8f6150ea0ae369 d63110386a6bbd52d647b1c17442c93 2c6b14bcd5a5546d6a2992e9465c023b c896260b935971fc65d21723f535417 8478439998e4af846602d94d941a9c9 9609eee1c5f60dcd610425baad975046 49b67421f1aecb54619e733243629008 1cf14b4004e1d2e22c6ce678c9114ba5 457ef8db81db726909e2381adbddb4b 5f2ae8bd2d571e7c6436916a86a90ed7 56332360ecedaf4fb095dfb45b5ad0ce f7f7b1b4021be11afaeea7738551d104 cd8956854d515c47374462542bf2aa29 156d4748560997c9a848f24544821b25 1d82316d98f620513b86a9df4269733 a5a6c94b8a93c11b679506fe2f937c34 c916164d0e5c667a75ef328fc121b1c5 ed2e4dafc745bdd661fd7e090d4d0d45 318eaf9f125d8296541e8704b64e3884 3469d3ab2d353da43a3afd30f2e86bd7 a0a1b0377d72e86bab3dd76bf33b0f5e acdb7b476fc5a1ca96f65931c8819eb 3ea2b72ba08a2e8097df6383472cc5b6 2830f11dbd7172222214ff09b39580e9 acf64e44b021fd4613b86a9df4269733 2359486974efded33121f82ae456ac81 817bb8c69e4ac23ec81ddeca50aa3117 92f697d036addb55ed576c2966428f d142c919254dba0e41ab8016efaf0266 4dbf4e0654d0c234e811106a82796d20 73df85f3bb763fcf148474f05635eadd 6d714f7b7170a581da8e502a3c6cb4fb 405cb7dcad3d6f2f65af93d4326737fe a8d3020b33543bdce64131b695068ec5 eea7f5d02088d49dfdb3c05088c091ae 68f06cde1b907c44e9e6d625d754e501 34211d29d94cbd52b7c4f0665aafbacd fa234addf8fe4f7fbda733a39f84326d 232a1bf61d6d80ffab0e638d7c0cfd7b 8320c70894c3cdfdff1370452e3a0154 7a756a1c54cd3a5a1b3611fc576bceff 18f6df600df7341ab0bbc6f39febba97 d04fd72c36fbc71731d383b4a9dce77c 5a9a67bb92fbfca3b1bb46d2556ba67d 4359a0878f823f5b96e24f86f1144c52 af2f10112f943f54c730b513773cf286 6bbcd5608ddf871a4cdd04162f008888 1f191e0327ce54474cdd04162f008888 9c827e532de4967285089a13cc567dbd 5be0fa6b0bb7a281a170b3adf3b6f220 667f7509425dbc60c43644e93a8d03ff 61348ed95aac6b3799cbdd78ced2546 92c882d35dfca864acee48fc4abca0f4 ae0058d9ae9bd33d51a95aaa6caba1d3 e24f388736f4e6fd2cdd250493632937 e27019b4147f868dbda733a39f84326d 3ec7f0347638f7a891eea2fc80d4a25f 8212b62591234c743a0daf3e5400b95c 74b73c2cca45cf483c1d9add3a87bd2d 8269284992bbd0c886dad8a79e570561 c6e3d9cf26016b5752aa494042b7c9db 56b6c950f4c5de80ce27281f3b76d1f5 bae4b861b5cf87275b182da8c76b7238 f48dcef252683ce552aa494042b7c9db cb19594e73992a3d51008e496c6cfd2e ba0ac1d1e25d3fad63f2c3a55558a78f eface8341d001e9ceb01ae4a4788bd4f 7b0ed2e4d59ad5261d5011bbe723eeee 648ceaad362345518a6cf8c6b92417f2 81c52d54f9719736ce27281f3b76d1f5 936702a0367e95185b03bc28c642bc 8545a6862135379c813e8e6859b9f2f6 5c542cd5371a631d6436916a86a90ed7 988108a7536d686824065b218dc1b5b9 eadebe4328e2c7d7c10520be41d00de2 86b488c74b27d70ace27281f3b76d1f5 588c2d2567fd900aefe5f291bc2f5fd0 fe6749c82c57137b28044fe9244db50a 6b642c1c62ae5b49247a5be450795511 82a783a1ea4e34b8d7755e7baabe8a6f a5dcd1196a1ffa9739f20966eb25504f b1f75a8e8b9e921a8a6cf8c6b92417f2 7b067be3aa39b1a124853ec273f6c1d2 ccca16b8302bc8bd13ded1857c15b5b6 30c86c4764df9f795686045783681fbc dd35ef6632cf507804272696dc83193 e213d976734431773a3afd30f2e86bd7 abc42e7c5ffaa41d1466737d5c4b4246 8f715205d2e70c1ebda733a39f84326d 3ef7cfbc172840b2393bf61b30c528bb 3c310afdf363201cefe5f291bc2f5fd0 3cad25b218e0cd506436916a86a90ed7 30f4617775480bcce27281f3b76d1f5 ef3ed9f139571826ce27281f3b76d1f5 b5a25bcf42cdfb15523270fc16562838 cd67376cac9f989151008e496c6cfd2e 83e537cd6bb435e91d1a964dea8a7aab c48a804986a819b4bda733a39f84326d ced56d51c144b40373dc6d54075665ea c8d8089dade71547d2350421a9405ba db8eb94d24f5d8a2350dd0b332d84c76 df34c25a1e1abe9428044fe9244db50a ca0f99974520bde12776450c3e3bf20a bf37249fc8e16fd8f9a88cc63b910f3 edb2ab8a1d7e20f36436916a86a90ed7 99cc91ea3f0b646be79303516c6edeef 188621bbfc7d9477ce27281f3b76d1f5 12243301d1c8148e33d7c9e122eec9b6 91440448603dffb62c8b6ee41d7d5d62 707d1e19b465d075adbfb30d8d1b297e 4c1504f3463445dbbda733a39f84326d b5b6b09711cbee6daa44bfa127abe4bb 174f1a421f652029d577c0ac53e96823 bafacc7f28509d4157abc6fa0d632bc7 c1186d49101dcd513a0daf3e5400b95c 84498085850b19d11673e1c313348a01 57f592c3ec49318661c6c61410fc904b 6026684ab31d567328044fe9244db50a a358931939481311bda733a39f84326d a6d494af391a97686436916a86a90ed7 af94283a61eafc7183a0f773f3852fbf 86d9b82220d7ba342e56818be5fde856 3c685bf24a135262e88791d6267b8a1a 7751f6695ce5013bbda733a39f84326d decdf28e46edc632bda733a39f84326d 4f17af1ca7ae689d409b2c4484d833cc 6bf75ddeac192594bda733a39f84326d 4bb89ac11d478c0a71fc473170b0a51b 3e2c3cb4f4c65b9cde9d4070fcdfa604 a5dc2526c9ef78b96212c8f6cd06e 67c229c70e64a25e69c2e0a91b39f742 26cc3a9cc0c28174ae30cad08127b470 4ff291758d03aab8d935b10ea652d50e 7203130a35ab20a4b1bb46d2556ba67d 23bfcd49917919006a34aa94ca8a3355 78c0bec338fa1c01d6b98bf27ff43caf 355e7a7bde7d43c1ace5721ccacba16 ded68cb3b5318425bb164ad50a9faee3 fee1c13922c07e8711b978ff9450f61b bc86f6cdcac3e6a5afe1d4530f4c6e24 3d3a1207dac28b9340d2ba94749368ce e4cd5b3cbe9082f536699018d15f07da 2acbb7959e6388236d068062d5d5809b 3476290a1220338ffa975bcfd21f6dfb 5768ae99da7499feadca4990256df2c6 e729c1d5c3cccfb3bda733a39f84326d c6a7b37a33b5eef728af9bd424dcd6fa 30feb9f00597aa2a3781057335c8a2e8 a81d28a70bb06e18bda733a39f84326d e673f203b40ef869567880160b3acb12 42e6ce03b361102ab86e0633bb69faea 270b0846304e3d66bda733a39f84326d 9f4bbcf9f51fe1e42957c02bdefc95c8 65e3e2893669a09cc7b48e36e31209b9 afb36ab0a7bb906bd95840a0da458be0 12941cb870df79b9815337ac44abb964 6f3887b3b8253284de541e973ae662b5 650238554cb16926bda733a39f84326d b67af8c92198eab432e9b7d6df5ccd43 5b7985f5dd37dec2c2509a0026f2a07d 2ccc8183090b97cb21a66e8dfcce514a e5a3ffca76415acc33529abacbef3013 ea7d39fcc3cf045dfc73a41845471b0e 891b06955bdd04a7909e2381adbddb4b 2c3a5d170774da5ae4a44d0583e1bb01 f723dd6b7a95e230c75bcb366ed55ad8 26c2c91d8eb660ecbeaa545f7f633287 970ebe02365dd05bfd7e1079f2e4956b 2999f005f1eba724bda733a39f84326d 39279457a4bc87285e717a211c863fc6 e624da8cd22f6d289bc0c5b67eaafbc b3f1ad55fa401c35e8c505ac322336cc 900c32b154c0dced994a3466f8481f8a e75846320e6aa623960b997a49ac99a7 f36ce0c0cd0cfacba7742c4ce47c2229 c487e9850891e1ec2d15396b7bcc6366 bbc4f08aacdff9c7a8ed0bb390c8ebb7 5d353140bc7569a48772afa45900d07f 59e01fab310fa8c49c9f1f5abaab90a7 30ad4418703c8cd2f1da888faee23fa4 67aebe9ff1f103e18d1e606155667e23 613bf2e7f987553220d9307ef0bda318 1079efee042629d4ce28f0f1b509eda 88fc7d197310ea4b961b666ad9ed1438 505ab718b8083f02ff1370452e3a0154 3b41ffcb4bec60cc21a66e8dfcce514a 45ff3c9bc849f2e33a2844e8778fdc6 fdb16a8648016157994a3466f8481f8a a471cdae8ec5df5c9e317a6cc797b629 38f9aa4c68327bec760191d847b7480 ff3c8e21a48ed17cc1bcae9def1986da a2fa9237519db867f606d4ef0b8dbe5b 39d161909e94d99e61b9ff60b1be412 6af177bc78ee06a0e8acba6ad3725ca8 26569f96aa6c4ed880af23b535873bb9 600ab6a1f116a5ac994a3466f8481f8a 37a75534a7a006ffbda733a39f84326d 6a737d71a4c4d81958943aeb17f0d326 c6ca5b48d1e5f5ab89442e34f9143192 510df40932e79779a324deea8acbeebe 4f31142fb24b4814ff1370452e3a0154 36c2770d00fdd0bdf1ee968c9039cc3 e56749ccdc861495b9e97c7f06f23bd5 29fc55965346a53733d7c9e122eec9b6 f60f11a1a8c8f89992691fb966926839 ddea3123599a628ebecf71e2e014ff6f ef15b938dcfa9893c4d922e8a1141322 1523402e11400b75becf71e2e014ff6f 54514b3e6ea7ad944361eef216dfeaa6 60d8d7776789b4b1fe11eeaa72c8aa36 a166f97f10557feae7a7d875eac9a93 f7b61de5d6d919a8953536e7c905b301 943be90f18274083becf71e2e014ff6f 33f95e59143938ddb490a9cf145bf702 5c997a7c241190937cbd61b2affd051d 86f1cbcda59640594dde7b6e74a2cede f10f279643fbb3276a78cd0552215cff 9698be0fd3516f01fbeda5389ab05f5f f24129eb2169197c203f35d9b3b48203 1ae530f49a914595b491214a0cc2380 da92c8d35fabe4093a67185d75524e9c 705840df46a582e2ac826a3c82da491 a50a46d3423e7dcad1eb2a2149d13665 74f7b559d6af926012f2e446484bbaf7 65c225fae513a6dbe7b23463fd9b0ba1 6333b9c777384ad14362be10a3fc8255 c6978e2a0ef9f0df866f1a483075a782 8242b114695b68286f522b2bb8ded829 4d0115d72892d27531780fdd33037c9d d32cd105c2dd79259d959a8bee08198a 259bf3c89b0b2152c1f18a2d53a6674a b61b7103e8d8af91fe21694bd5f519d1 c6038e4cf08de1a7c805dfe4ca9f2fdb a836fc66c01eccca58c27e607f6e2d4c c35ebd98decdebb9db7706d93442f2a7 928a5f0e95e7aae5780bcccc86c008c3 5057c9dbf72e0352728fa2df514c65d4 69aaf42f0b8d0e2da37127a27e431e39 90ba6416acd424e06d8db5f653b07b4b 5351646fca246bc989c6f1079da7a8d4 a57e65f0c8f21ebc31780fdd33037c9d db216ae493f303f35b4953d8add91f 37ad66d0433beb633df8f4ac45647158 8fc3cde1054cc1aaceb4167db4d0e4de c6441f127d51e478f0fb72d24c42a39 11a96098620b2ebac2f9fb5458a091d1 c907a6cb1b178999c805dfe4ca9f2fdb 8053e014516531ddc3f500d7b182f6 2c407d592623011eda2ff65a113288d b44b09bdef8fa2209473806fbdf65cb6 e4886a4d0c6ea960fe21694bd5f519d1 db392da8d05ec4d4f6d01abc93dc7d8d 97831a753d80d66dfd24692312e9de8c bbf84d45735af3314dde7b6e74a2cede 6d493677c8dfb9d8321338b7ef756ea5 8bd6b3e216ac44d2d1e34356c50bf8 d22a2d20acbdca70c972ff3f74d38438 6c339c89246fe6a651db49e653372c20 3aa2614f69105d0f31780fdd33037c9d 1e3f494626a24badf35b4953d8add91f 863f9284eec4a256e9d8921ebe6d5b8e 7b2ad420c7829e881cae32f43c09c982 7046566750f129126aa0f1550c0a545d d34b0494fc4d756ab927782fc69a1fbb 52f2a2472411fe2e6b418c7d9fedcaa9 19042f5a90290859441c11ab4641b257 5bab0881b7a18b12733269057ed164db 2131d5bcea38ce3a68bdb39538968e8e eb59c9376d1e04ab49352dd33f95cb9e 9e4380de95fea34a11718baa6d4afc0b 9c4a3879c71df693af0f25977186b501 167a645149efed1fdca2ca2624f821d9 c887bed724f4a30c31d6c59225b395cb 56e0fef0632aed0f1d27be7764701cfe f9fbc58e3692c4d5583d20ad0a6b981d 6ddb807414fa23e0d9f8911ce020a037 1abeca7159db7ed9f200a72c9245aee7 b4250be25fbd19a994abc9429888948c 294331fc6c86a51ec805dfe4ca9f2fdb ff5ad56515bc0167500fb89d8b5ec70a e93f88a9beb9ddbeaff90a85d875467 e66bbdf57fa6f7f575f257e5fe0a71cb 2fb5fe84c28b8b35cc02882a83047172 511962626501e4abf500cc506a763c18 dca8ed788347b28c171cf359a50c99bc 3ac664a7486a0bdff200a72c9245aee7 dfa6c32dec07727ee9d8921ebe6d5b8e 420d1b7af7ceaad59ad3ae277a5ccc98 31055873d40dc262c7477eb29831a699 39ec376b0df877986483e7894702b192 1714b6e57c8c4983fb1aad5dae793ff4 97bcc7a1f73bfba93e5399147a5b4763 49e8bd4cf55ea566d97f019cb91636fd 55e0897c0ac089a6da5cb3be8feeaadc 530234273d5e31a57c7baeeaa3dedfc fcd90d547fdeb629f200a72c9245aee7 9e5faa247753ad479289f0a3d35e8de4 f51555db645f14468bac13e007a6e9 4a1b48e1b53cb6547a3295b198e908bf 20649c88556a7e7a113ef105f1affa3f 91c12a0bdf98f5d220f29d4da2b76f7a 6976cc9f5982474e9aae70753d127b0b 83fb99fe62dab5308b55a52bfd1cce7a f4498022df553505c35f22936e5aea5c 48debbfd63725a743978555bf44cfc9a f9c2bc7b4ef896e7146ff63b4c7525d9 1ae184691a39e3d3e0e8bce75d28b114 d1acd4916d3d3b57c48db2ed8f5e994c cdc8453c63ffc13e20f29d4da2b76f7a b55112c3c09949846a0cf750aa55c4f3 43874d4b5154b6a0e3a6d6259addf247 c3a1e04f49e80d22a10cf495b6dc4ef 7448f1cba230298fcd61ab83ca5e9957 e1d2157def9f3ff469856ab03b318817 36a5117c64d8ca6ca10cf495b6dc4ef 787a38da42c2026ec29f776eec462c6d 1e0ada2b1891ea39e79e3bf25d5c768e 5686e48a700bf4c989439bf55b857b9 c6b98edfbb65320654b49557f8ea8b42 d47353fc60390df85d918097f81825e3 e703fadeba32d912452ffe4552686849 eafa5935e963b0035e875676652081cd 15f605c6fffea827e7436c0fba14b4d2 a78990822fd4836a12615f8be9c552d d2e1dc21db9b45df6436916a86a90ed7 e2ceb9bf23b498dda7431386d9d22644 5ad845ccc1a5795ecc19d582c2bc11b6 2a82a66ce6273dce601c8ebc794de3f4 a8f2c3adc0671c15c64e95fc6a597455 9702eb7f07f013532764cfba57a5de73 1ae9732840a315afab2c2809513f396e 46adf74e07a86c55e370ad7734071a37 16ba461c0d7c8435dd141480e2c154d3 d373922da2a6c73b616f13ee256019e3 25c292692638406620f29d4da2b76f7a 8922c6c3435f16fee694960c91796f38 4270f4f3372a1b24546b7395fb17f97e bd188c1db4c52a2ac35f22936e5aea5c d8f813278a49463db203f960004c7382 6246696b7db8ab34eeae8bcbf655eede 2180046932174984a10cf495b6dc4ef 8decf42b145f98d148d2ba4615e03b21 f49155170c175dff176be984cf2a7f4e 8e308d28d463427f43f0e92e826556b8 47716b1acaae5b8083653a771e25099b 4b092065568af127d64c207b9313bbaf 76680f2bc0d53c6e3112e33afb0a091c 3d0308da43d52e3ef56f8ea3d9016e55 3dab4ef100f906c2bda733a39f84326d 6f7ba033fc5c0784468bac13e007a6e9 43319fbb378083669d5b1db3ffcc1210 8141677722f680076a2345809e2bb169 4a8aaa19c413328d2557e2b5350c7e1f ed4fb30733bd0979b1bb46d2556ba67d 1328a95d69cefe32f200a72c9245aee7 965000959c53a8612fdbcd3e1b829315 86fa16c6da908e6b44221994b043fd86 3ab98667cabf774e3343f5fadc4a2136 b809864c779761ab7ac2a2313c9e8844 d9838c0fcfd30659d9f8911ce020a037 8d78c8489dc927dcb07f27f3519a9cd4 ddc63b22552ef13b734650590bacf709 c8bd4d0ac34266ffaaa232d0915adae9 598f0aea814b1d0f8db98a39370e7faf 38e30aa86d7bd4e0574fbf5e869a42b6 7c4aa4b3f916d26c9cdc71dce6a3b485 4b841ea5b31090fe2bc9f17412005422 2ccaaa66525d7f095473e57e894e0ef5 488fc8215ab4e5e02edf5935f10637d1 afeb58fbf8c45924cdf21e49b4ebfe68 5785192c95cdd67b704715417c0f83c1 1d234607fafd576b6dede2eec861f76 dd1bc8c4063a6521456a647a9e7d914e c8fb314a1866d1d2428df271ebc70bc0 189c2b53ef76d02978a20fe14185667 4b7b3b54dc04df53c19f1e8ed99ac2fa 8c0fd2f204d6008da1b543d55837199 6165a435160e69bef997a8fb55b67177 5e014eb2bd03daab9fbe97de4a41d527 17bfc66c6bc0a99d68c415156b102065 8590a6c8270375e34b5a812ecf553410 b09f4d5af99be6c5f5f45e906b41d1f0 4d24f5e0f3f394c030e91498c0369393 afa0436d9cb1b19ec8c241cb24f7e0ac ac488b046b024bdc3aa029ace5323fc1 bb9109ffb1789e98e55e3289e5df0916 9aec89a595e4682fbc5845a373118df7 a49107f738b26379428df271ebc70bc0 56d5921f58898cbc56e8a11c9bc9a7f 7c44aa72f314ee8e634b31c394824611 4489a777dd90ebcce28605e174815eef 3bb3b6b85e4e42873680ae1a67758160 e1c16a07b6e974b951a95aaa6caba1d3 6dbae14e481e8fb9333e0bf0b765fa12 b70d970f8020c25dd141480e2c154d3 998f600899c76e4583653a771e25099b 974c3d82f8726f086b418c7d9fedcaa9 695bc26f67e001e65bcdedfa3370f5e1 45189b11f0524a85e921d7ca67acd2a 61b40cc1d7e054cfaeea7738551d104 9c35f00f81110738783854950b26f0d3 d3d121f2e2d57b5cc5903e2355330295 a1c337c71f246f0b1d1a964dea8a7aab ee1d28a50a2b71e129348d14ca881f7d 552233e882a65b6431f5c3d8b8dbfe3 a75ff576da012340468bac13e007a6e9 ad1d30f2294f40dc622ac2f50deaba1f fe860c6a74a86905468bac13e007a6e9 3d85915d8726cc1845aa033a20004998 fd50bc89fc1c1cfb7041f1c5e7744b16 5316fab78a6732f0428df271ebc70bc0 b782800ed15ae74c6227cba038bf7c95 b3aea199d8f8945d3c8089ca2f2a9299 f7c84d18011f76fe5e18329bdc55fc9 d3f5e04481e69974d1521952154c90ff 35e4f3bca48aad294361eef216dfeaa6 c08d4483e70f02e5322b377b3e7c8ad8 a242c0446b186585852e57cec5098e60 d09039d34746615fbb164ad50a9faee3 d810d7f83632da71556235a31d374eb5 ca7202152b84a70fc6a4281cffc3c014 34ab29cea66952f16f48edd113a40fce a49df2707037f82a94ce9d7b04676231 144d0880f61d813ef7b860bd772a37 625861912ac0d62651a95aaa6caba1d3 6b44be4025c966d4672601793664460d 1cd4a2c1b3b4a9661487189ebf835715 aa7f127bb8cd9db73755eb267a6f3b6b 9e0eb55ae7af7f8a61fbb658aa965606 3b56b3bd4f874de23781057335c8a2e8 f1b928427f5a3a7fc6d5ebddbbbc39f 28bdade3806ef2f328044fe9244db50a e20b8a9c388eeb012c8b6ee41d7d5d62 3980afb8f986988daf285e0d3f56d074 247de29743ed24c5e61b9ff60b1be412 35d8d94bdd379556a37f3fc191551700 85e54cec1c6808009bc0c5b67eaafbc 29e9a4beeaeea1becf71e2e014ff6f 88ad6f5df57cf8ea16abce8cb03e7794 88fda6df0a162605e52943dcb52313c 2ba7ea78b9b6e2a6b420256a03f575c0 7bf6249a031b5095ddd41159baaa3ad5 fd7741b7927726bda37f3fc191551700 60963ce07aa742382a9eb0f146e94477 430941674faedcff6436916a86a90ed7 c6762641f741acc2a19bced881c9e641 e7e94f8dbbe8c1e9784da3853aae78cd 312cfe616ce515be5826faa473422ba6 2cbcc226b4f952f29e1c4d21c8ecae7d f8ccef3ebeaac7c0539e4d34a3035bd8 d0cf2f187acda5736be7348aa770e4ca 48723bca810f80cf7c84d27684eb86f7 844a5b7af9b67510b1bb46d2556ba67d 8dcccd3d9221f9a0d61b6a34f3fd808c 3c6d7c6ce950917b3a93df79ef2b80ef 5dbed4f17ebc271a3aac79fb478fb6b c20ff7778ca2b8ca86ac29addefc0f11 3ca3c91dae8d2cbdf56f8ea3d9016e55 192fdf42f5a2623d673ddeabdcc8c6e 3ff887eaebf0bc7e9d2b99af43da16b3 48f5446e6ac9c1b51f1446551412bde4 a13fa4cf0dfdd5b58f7f0d2c9c57704b d513c968e5bfefd2516624d6e93a68b 768ea3241699f663f1cb19f636b1c2bd a990f6d75c669f4351a95aaa6caba1d3 ec42bd73d57580a85b48f89d50b1db79 9c10e71c06558c3b1bb46d2556ba67d 189cffefcdd5cb071a126804ae24042 354c1c380911fd2f4fa6b747e2cb679 37c5ac3d5b34761add75f724c0ccbe00 468780ef4ace9a422e877e82c90c24d 7486c73293cb8af3175a3b42530b4c51 58dfa36440ada6cf2a9eb0f146e94477 718c595ae03a78208b58723318e7adc2 6c449b92891754c6b8b6b17d4ce17d67 35f6b9780e173878a8c38723d07b122f 9f69ac0aaab969682a9eb0f146e94477 86c8a3137a716d70e742b0b5e87bec54 c1aef2e67a9608511c4ba4758a592406 32e6ee437b8fa3fb5e52943dcb52313c 35d473527fa9bd8cbdb24a67dc08c308 12909f5d613953b8b3c9b3f81618206b 82c6851526bf7350b5554d042286b030 9eaafc3581357b05d52b599fafc842f 92a718b74a2e5e84fd2d6c7ed5a8dbd 63a4e46bbbd855fc2b63d3b2a8c4e8b 7a5eba46ba4cfac35aa429db266f0c30 ffbb51fcc3955d01b67c620b30c63392 4a30d2147d0e27d13ded1857c15b5b6 e920afce255de6ee3781057335c8a2e8 db45ce3926c3ac69e8d8ad3bdef6aca2 39201299cf83ec2577763486d77d1cb 3d2fbd9bfdfe08573a93df79ef2b80ef 5621ebf65ffd38468772afa45900d07f d2efbf5a3b7ddbf94c0aa7c1668459cf 167df2c10c116eb5d61b6a34f3fd808c 5135ad38043cfe64eb766e5a46fceab 5ec7fa8170eee943713e820becfd99b 19d35f3e0c0b402125ddb89f02fe6cc0 27d42437168ccd7ddd75f724c0ccbe00 eb1bd7389854311c14f284ebe538e531 8bbbfdbec9251733ace5721ccacba16 94cfcfb74e246f938acb0ff76f4aec7d b0c2225ab347e28f1a48cf85d161a723 a421aeec78440e40d3a3ff116860ca63 2cb6de89f5b6e702b626f6a649199824 9446a1c34cc06eb518b1741f84b73b 49930a07ed003273fbeda5389ab05f5f 1552f1a6521bb54a4bb135bcd06914d e1c7c7fad8802d67fd6539c5080c830b 876d92ce6a0e4bf399588eee976baae f18093ac0242d439f500cc506a763c18 fad616172dbd52649f06afd991af5139 244a8476648bd073834daea73aa18748 7521398f7ab70a073c1d9add3a87bd2d 6a81b52d03080172ea7256175786076 33211aabfefa14603b05c2ad25b4380f cd7feedd6041209131ac5fb37e6c8324 90917495a9603208c368040825ed335 cf32af5869fee4d34eb766e5a46fceab 8aacf6e90bfa4610becf71e2e014ff6f a17d5aa16a529a88cbc76a30015552a df72f352c7fedcfad9951d9ecda74409 b28d1b3e81f407571c02ebb3dd0baeb1 4c60f32b6efdc7217dfb1ee6a4b12bf8 4e2ca20091449636599389919f6522e6 d164a37bffeb5a83f04c8b6c3407554 704e60e6e5be85e1f500cc506a763c18 5130947e5f18e73a8321b7d65a99d2a e9b2aebf673e516d1f0d59cde6139796 add26d8f4f91ba04c84b95bddf75b22d fce2b933f93d132f4f45033b2f001552 2a9b4308929f91a6e1007bcfcf09901 93bb1cd910f054818c2e7159929c406f 5357fd81d212951a1c64dffb0265c4d6 d953bbe38edbc6f4ea999fe4ffdc2504 441d0b3f687e3721fed6082009db27d 8c2430564a8e3a2354277bd8a941f068 7f42d57ca7041f2df43d27ed950b5659 e9bccdd7a52f13329b3f352e6fa9112e 33395dcb83b43eee21e570d3da54bf9d 9fbcae2f132db088b09b4c3b88665c4c 8d1ef0a2c958b23f22aa128014a842c4 263e3ee9f0182cc48e35db9103756ad5 c3858a8b73dcb137e3bdba9430565083 3f18c23d7628966848368c1a2f71c5f3 f03a4533fe681a155b48f89d50b1db79 5d756a52f6f361abf500cc506a763c18 ccac541c0db2044736815730d7fe4119 1cb102a066270f79db1230abb5fc0167 e23ae6404dae972093c80fb5c792f223 e042d636cfca46f56436916a86a90ed7 c1192c946a99ee529bdb511fb702b5ae d2592adba4e8e62648368c1a2f71c5f3 fe3dc721f5026196d61b6a34f3fd808c ef77d2e622786026d32bfc7a837f790 9a22505d1e6221533c35e65001c8c258 f84ba2039d0a4ec5afe717997470b28d 7f198a2357dec222f98feeb6b46f3cac 85f3dc3318f5200c8672c9b355cd2075 77d9a23f45c888e595551e0d9e50cb0d 1790131f5f74b1ed973aff268eb6b00c 73140624a636925ada37be44e2d84539 b6749c2b917d4aad949b12cf3977a48b 81fad64b8fd8f010b17445a1c29f6d34 28b5cb11ead4c878fd988235de2147e 783f141774ea26e259d587c4b86a22ea de683c906ed97d7456ca31471168385 65ccd33df41999496d6573f48a06281 dee6d83ec808d673c4e77c640c2391c7 90a59a473e9d110ae13bf7a39e9b5432 a295d3ca78e2fa9a6a2345809e2bb169 515492715a04d8756a2345809e2bb169 158a95b4da25aa1fa37f3fc191551700 eec2ea5ac4e048836a2345809e2bb169 c59c26c90a724e84ce27281f3b76d1f5 7015c7c8ee74f69313ded1857c15b5b6 787ba4e958f1bbe88ec77d0d80815cf8 554bfeff3c44a3d6425b2c354eccabaf e9c2c31da871e0d6c203986ffbbb5e4a cbe2dc469c47bb80425b2c354eccabaf ee975a7e62edc7996a2345809e2bb169 ab7eaf660f1bf4db23fa56f2e03fa992 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/02958343_train.lst ================================================ a53c3515eff9f3bc2f732d6dce34e9b3 70b8730b003c345159139efcde1fedcb 78c3bf6ae1bdf75419b43924bf120208 b0801e9d8e004e7758dbdf2b5c6acfca 20a3df3de67f309d8e35db9103756ad5 6fcd4ab4d968a975715e04edb8af9c53 1a30678509a1fdfa7fb5267a071ae23a fe9c6862f758ee056ce6bb1d0811960f 5fc83a88645b1869514e3d96995c555d 40313368870df2c0df59ad08996c77e8 b1736379a44bc475352a2541f8b4515a 66d4d1f28cdbe97559139efcde1fedcb 3ea68e00dff2847f1f0fdc8ac183f8b 4e9a489d830e285b59139efcde1fedcb d6786ef05af6127d58e7058c5c570964 83731bad1b7d6ec531fde3a1e19a4940 b06c5da878580bec3c0146ad3ea2d7d 9907db7f1b96ee9a8b55a52bfd1cce7a 4a423ae9a28afe3588cf40718544e7cc c9b956006607a48c75dadc997718614d bacc3c08f58dd96152c6e8b4fe0351e5 e8745e2d659061ee4a15d27f5dbfc7ba e64dd4ff16eab5752a9eb0f146e94477 19d0843797b8b2216abce8cb03e7794 67a3dfa9fb2d1f2bbda733a39f84326d 586da8cf648767222a9eb0f146e94477 f10e32c6daaf237f13ded1857c15b5b6 74cf231265731c2f8a1aed4fb5fe5280 25de320e58cb3898f43db49cede9f847 ed6bf649ad5b3d82b1bb46d2556ba67d 63b0fcfb7a1ac7efe8d8cc304201f02 9f08e434ad95c4bbbc37558785e0529e bebfba98a5e97c6180360680c1602c7d 1355f3aa779b599b16abce8cb03e7794 ddd17a0d7ca713f2291ea03049d40375 ee9b3f31f40a0161b1fa0b2eada93a95 1104f0924e03f2b6fc5886e868449015 d695f936edcc28d497df6383472cc5b6 145e18e4ec54ed5792abb3e9ac4cd40c 82ede85c805bd5a85af609a73d2c2947 d79f66a4566ff981424db5a60837de26 875bc6efc7f33c052e877e82c90c24d 2521a90182ccc29c253c03b7df20edd5 8cc9aaf75a2fb056dcff2899f073ea9d 985763be7e2b18ec16abce8cb03e7794 2b0207d7f6a6f23bf0ff8cc77ea4c273 5343e944a7753108aa69dfdc5532bb13 e7c4b54fe56d9288dd1e15301c83686f f45268c928a4b3fc8bc584bb94b0b13b 550d6c4149699f4f93de227e8a339990 3ed07ff8b46b2bdcb1bb46d2556ba67d 792a93f2b8dcfe7116abce8cb03e7794 73e977c312f8628b1d65faadf0df8f28 6ad0379c2f24581a1c0f83a9278e7dbc 74b37c2f88e0ef7a469bb3d27ee3bc4e fea2f9ae1e25b74c12f962c15d41de4d 31ae8e03d831a85cafe1d4530f4c6e24 338eb8e836639e09f8f1f8fdb364ff3c 2f0ca88dc76e39a7ff1370452e3a0154 1336353d15efdf010f6f717db02df67 c769d45be62178f516abce8cb03e7794 bfa0a0a7862c2cf3c2179f10f381de6d 792e31b0bc8415a13ded1857c15b5b6 a9876012922192273a8cad69dd295a56 21b8d0946135481a8772afa45900d07f d2064d59beb9f24e8810bd18ea9969c 9fc18cf33ac91041425b2c354eccabaf fb97ee1707f495bbdcff2899f073ea9d bad0a52f07afc2319ed410a010efa019 8efced0ecbd1dd99713391d1ea8d388 344eb3613a1100634591011e8f7af9ba 9539149f41e453052a9eb0f146e94477 46c504c9760fcf0e7540f431cab4686 5fe9cca902d8135aa36fba949f601317 8c710a2319c1a5683f86d898378e5d97 a944ae569bbff87716abce8cb03e7794 414ae320397821af8bf92e87e504146a fffb1660a38af30ba4cf3601fb6b2442 746765dbc0106bfabda733a39f84326d 9e52d425db48a33bbda733a39f84326d 9c846ae63f5fbd9a16abce8cb03e7794 26e2b2920a2330b2cdb8ce1e61248143 84f258f2969c02de6f94a44ce504367 985082c9239527ed728fa2df514c65d4 2ec9a7479a8ece30ebe23ea7d95f2a30 2f503625718536ad5d9d397842621b7 e9573675928b6f1c2a9eb0f146e94477 cd2ac3225eb36c0e1a04a94f2d5fba0a 73dd68fb65a4f4d25d9d397842621b7 12b5e4f52c22b348d8499d8846cb4c3b a3d0bbca6bf8a565dc90bfc1d450ece8 1e12573f2d8ffca667789dfcc3262f70 40f160e49a6d0b3b3e483abd80a2f41 5410d4faab53ce49e9d8921ebe6d5b8e b1c6a021c1c47884c9463ecce7643e8e fe0c5b57b5cf4226bda733a39f84326d a0fe4aac120d5f8a5145cad7315443b3 95d18b69c9624a05473f10e6caaeca56 ea37a9b97e092552b927782fc69a1fbb 8ceb581fe28a6496510c6353f9f7a5e3 7d7af9263109f8aed4fdf31cc2d78fd0 98d4f1e36d400acf5fd7e9b026930cd3 1a1de15e572e039df085b75b20c2db33 9375ded98380ccc77bbf13cb42ad9d73 1a56d596c77ad5936fa87a658faf1d26 6a13836c3bc23bf316d7d2293315a234 4773cf28df771861b112e5ac235c21b7 6dbb3c5d7ce105243afcf7df86a03c60 453164c9199ebec7e80b7eb39c475065 93486febc6ffc1aa7f04cab89c8d2959 a36c53acb3255d1e84b1aa0ed7e58be1 b2e36774150b580e21f6e2b0f75cf9c4 2655a48c8867146bf63ee8a34069b7c5 12f2905dc029f59a2479fbc7da5ed22b e3cf84131f9293a5ea0b6fe51a588e07 97128412dfd802be2a9eb0f146e94477 9bc421a5b0bd481b4e76a17e357a8d36 2b08d1ac4111542f3a2b1a2e5e169910 e0f1de19f0f65ce09123224ebaa118d3 ab7b5025c9e9c1921cb81cb1632a5e 36bc228a8722bf27473f10e6caaeca56 fdd3f02c294518341944f01d3ab2091b 6a758f23f6dbf27923978edad4629e6d 286ce4a8390b317f93680c5a9a367b4a 3d693af6fbae47f9cfb661f69a0dfbbd c3e49f8c560ccc216108f064aff2426d f60779c934ee51eddd1e15301c83686f 92ff3c7b2b8b1f65e2693f33cdca907b caa7b1a7dabd0fd3be0e4b4a1a900aa0 a86655c0ca05c2646d3e11439c6c22c8 fa563c2b77839dafc0e3666c7d0ec7d0 61f70557b8bda7422ee0f9a97b71d505 c16bafa65123cddfce29c905218d4398 eb144af0fef08314f00cd8c386c592fe a262c2044977b6eb52ab7aae4be20d81 d5f1637a5c9479e0185ce5d54f27f6b9 fe29b245be45318c80e6a7abc49befc7 2dd2a5154bcf52c2aeebd3372dbf7ae6 93c56f05dfcd4248274334f2451a8eb 6e76975ba073f2a89ba83e6d08a84f26 3344ba7f18d9623d549733b112275285 6bfc2bf0e72a0f66f500cc506a763c18 7f2b01a53684e72154b49557f8ea8b42 a532b61524432d454ed192f2298faac 690609438d922525ff1370452e3a0154 62b14fc115d98999f0776ca5816850f0 b41bb2a3159a9506977b27045b1d8055 c43b1ebad0ba016a7fd25564c2e888e 7c651c4f55c5ca57d76439fb95cdd2ed ac56c7527df057173c5d25c30835eee9 67e2f8985a28e895a592cf90fabddd34 d5d47fe322179a83473f10e6caaeca56 83c31a4085063873dc2afbe43bc71afa 885a8852bda6bad7774c883319711a53 e15f9acabfa0adc5470d3ca356fc4190 9cdd8cd41303cbdc650bba674124a73b 65f0321c5aa8c303a1936d27bf774e9 f9584908ada1c74bc2b93f7e42be3ac1 97d0903cf8912c3ee9d790a68c844819 75bb1fc144e6d17a6d00e450aa03077c 840f98dcf50b48f9a7fd25564c2e888e 5b925881cf8678cabda733a39f84326d d83fd4f79f16a1313c9d2d3d4dc0edb0 435d3d83b7511e39f44e15caa8fd94b4 42af1d5d3b2524003e241901f2025878 831a3689b2f48664473f10e6caaeca56 425db95a3377f4d6e62a01eefce42a80 17600a4881b1ff6a5c14de0cb75f4d3e 359841936db476cc8cf4cf458d5ff7b c46a940147e6da66ca92a4cdad802b45 d3869e2527ff032623276041d0efb3cb b30efada80553a1d202258c0423dde73 41b4832983f44aa3a7fd25564c2e888e d4434de782382a47a7e7e5ea49ad8e45 f1d902e502f474313fdffa7a79289f65 10e99b1475098c0aaa69dfdc5532bb13 89c7e63c3d3d14aa17b597d473206848 bb3c68db5dc0052e98b54df7430097ce 9aec898631a69b6b5da1f915cad9a74 6c39e401487c95e9ee897525d11b0599 bbc2f2ffeec425a38eac574d099cd5d2 1d2c5ee3b5ef205164bd4e0c23ded276 d4abda76f4db60086d07c55cf995503e d4512a374073ae95199f3841b86452c3 3a7e096d05d688548413778731d6cd28 1b94aad142e6c2b8af9f38a1ee687286 e4be3f3bc271ff71c805dfe4ca9f2fdb df1d1694cb98584cc23e2024862e7f3 6aa8f648cc8df63ab2c17ece4015d55 15c785a7505992c3a9be8fd09fb14f4f ec07cd8db8f2bea851f021b9ed69c58 4fd6fe1f81a83dcee6513d84422cefc4 26bc52b1307fca053e5ddfb0ef6345db a77879318434261612725caceb9cca76 66be76d60405c58ae02ca9d4b3cbc724 62499fa5041de142707223ebf2d3b38 425ba801e904cb50f3aaed7e86215c7b 96e3179460185d889130d420a26edb84 4e009085e3905f2159139efcde1fedcb 1137cd58d6a45c6659a47b1880958de9 634b6b50c7e8912f2ce3f1cb66884331 66baad4c6e4bfa08cfd826dd468a5497 7f09e6522f212f94512af8eced68fa8 903b043072a209ba8290d32865eb3245 7b00e029725c0c96473f10e6caaeca56 62eda45907bcb75c320fa6e2cd857828 5aac7e6813771b2f22cd6c209adfc63b 50f4fff3a26ea3518b3ab49d2e0e41ab df8000281bcfdf0754f3692df239bb9b bd29875d6aa7be1b2a80b185a779af6c 9b4324a33b1dbad5a7fd25564c2e888e ba89184f58f21ff63343f5fadc4a2136 da5ee2c950a848f0af8a2e210ebd5168 40c05e511efd3fa96945ae93118ea9d6 63069a0c741a4d228b7c308bd543da59 7dfe2b1451449501588556e812e00901 ca44101f11f4346a34e8e5a47ae999 82bd66a7ffcb351c1527e35a652f449 12cf05b9f5f2d2c195c8d3a7db4dbe65 f1c277f7fc421492fbe59dad8284dc0 198d8e274c59511b36a1a31af8f59 ebe05fb264a56628d7ef29ade0716b6c 6dd48d74d8bc67e7a7fd25564c2e888e cdef1867e841d4bfafdee870abc9eca db14f415a203403e2d7d789814cae761 b12e8616bb73f5daccaf7041f92bc85b fc86bf465674ec8b7c3c6f82a395b347 f605c1f4d1be8d00f63ee8a34069b7c5 db86af2bec3e48d7beda80d430b92891 faeda504709a7af489d347432ecb438c 7219c2a7e7e04850374462542bf2aa29 cc7f51159a1a12fea7fd25564c2e888e 89eb1c5370b80567473f10e6caaeca56 5da4c0cd066b7d0889d347432ecb438c b7f957411c3353432fedd0aa3d156746 2cccdc287a5329c2ca92a4cdad802b45 b17d638e7def9adbc8a6c4a50ada6f9f 15cc37ac9b3b756acfd826dd468a5497 72a35a471514d6299e317a6cc797b629 2881a09fc1f3d2be9dab4604fbb1a7b4 79d4876cf799516b977b27045b1d8055 2dbfe9c041fc6b3a94ce9d7b04676231 2dbbd2bec94e4a7440eaf79934ff53b6 63f6a2c7ee7c667ba0b677182d16c198 2f7cf2c2d170e3c936f37029483b3e41 e9233510c6e0f2672a9eb0f146e94477 44559a87bc7a0bb3121f82ae456ac81 f6ed076d16960558e6748b6322a06ee3 40f0bac5bcb4f8686ff5dbbe822945fd a238facc26681bac8efc69f75162eba1 40f2f3962e360a3c16abce8cb03e7794 212685bfc2a32cd9fe8cfdfb3bfc3376 fd3b75f7f1e9172fb6f657757c95f74e a7bc9db453e66329abc6b562f9bbf76 d6e27c6523a3f2b58b8cd97e9d1c6a86 9ec59185338edfde4cb9bf7caeb24dd3 52a1d23a09e38c4d50577cf04f3bf74a 22654a0cc1ba382c4eace6243432632 a5b7cc1a5ab2828b28b0b7b876595fb8 72122bdcd4ddcb96a0c0a4b1a1c1a4ad 4b67e004d83d62bca1aea50fbc4b17d 66bdbc812bd0a196e194052f3f12cb2e d569a1b7066ce775b738b317b28286f9 c4744d66623e04b7518f93fcf50bd8df 2f13fc44e7e06816a134736201a79843 bf652fdb40c4cb3696ab9df3b3d7537e edbace6013d1c12ae9e1016860f17753 38b80589a780fc3af63ee8a34069b7c5 e61dadc02535e6e44b6e62b17dc78f70 832a8f6cfe462e48402013bef9b89b74 37887931377037621f71e734a2d317fb 99a7f916d137e69bf2cdad303f49c9f9 8bb2ae81ca9e9a4ed14ae991e75ee782 5bb83a60fb8d5f45a1089359fc10d7fb 1f416598fe329a88b1bb46d2556ba67d dd37570a8876c4a4a513de4eb79b310d a44fb2514e9ab51f79138cc3f6db7577 485df8eb9c410c132a9eb0f146e94477 1cde62b063e14777c9152a706245d48 3b95f46c0133167b80e98029b8cda1b 7e4667d837e39d0945e930a0b8a8cbc8 f60955dcc1d1c48687dc1da2515df8f7 6ee1f28244a72fcadad3ef3f3ebed150 ebb3c22708c9ad3a55064a110bff2f03 13d090612aec3d80ca92a4cdad802b45 bb7fec347b2b57498747b160cf027f1 e5aae7748aac94086228d448ae07dd2b 719912031bd692fbd02bf342687ad381 2fe7e3fc47dad6c7afe1d4530f4c6e24 8d6de65bee9c269bf222d93492cfe0b9 49defa8dd73d03f1a7fd25564c2e888e 2401f097228fdc1348b30181b0729b3 46726bf3daab9d14b1bb46d2556ba67d 6f1888091dcf4ca550577cf04f3bf74a 6ee7fc93288d678e3ab3dfa44f5fab01 a4aede8e488db95220363e2561dd589a dd5eceae670f164ca134736201a79843 80e839edb7aeae0bc54427e2c0943fd5 eee2c0e2912f27b15a49026b22f63b06 e9c5e6d46c47129c5b72003cd427d0c1 8e145be3c332199dd6821061f4432a0 1687b77b048d1aaf635b88185c42637a 7eeebaaf4df31022aaafd94b9f216ef6 cdfe4dc408f4ca84aaafd94b9f216ef6 f9cbd331bd475e07dc1fa1f50eb490cc 2d817a6f23d35494d991a658ca89186 2c8e9ae34ce33a40ab2c2809513f396e 3bfa196d1b48f1e0c5dccef20baf829a aefcbac53b05ed5a27404deef339faa 8c01303b68d30be5b9ad5039d820c924 9aaf299edeecc76e7dfb1ee6a4b12bf8 ea58938dca17f3853c9cf79df3851b10 f37c7ab91bef514b4125854591376336 ae1c1141ce4bfde9d66a73de5847ea37 be1929020e6bb4c9c2920de4c5efc2ee 4c3b9ecbafc80b9cd485372bb746f3c7 8db161338795c215b1bb46d2556ba67d 924e1a54fad65f4de74f89cd7bde93ef df672140efe7b8ca89e9a9eee39907f e66cb97aabb79193da5cb3be8feeaadc 119033fe083145e22f31600ac759c763 e57092f6c51ed37dafa781871c8b9ebb 75b8fc64f98a71969d69712f9d08c005 fbe6ff98196a8ddf1992fbc3c9e8b937 7275ca45638f16041899a3ad18d10126 3093f587c5660c7a473f10e6caaeca56 55c545ac0d94ea16becf71e2e014ff6f 8824c06f737f2888e35db9103756ad5 c29ff3df2cb0139f635939ef1a7d59b4 d21ffd4838ff2ca75a30f4aa03635c5a e6643b95e245410b8efc69f75162eba1 9ab8a24e82568c598c2c132c71e94f7c 72d4244540e81c671d9826a79afd9186 5876e90c8f0b15e112ed57dd1bc82aa3 924599eb8b6aa6429ed410a010efa019 25a44213579e75782e877e82c90c24d 24d7494c6b92c6e7c1bbb501b1d87871 9f7b4a82becac9cd5568b8cbf53329df ea6d538fb5cf3c0bacdcbcbaae0ea58b c54dbefca6290ee8a3b392b986583 d224a01422266fc51b3c1c9f0ad4025 8997065fe94841771ef06e9b490109d8 2fc27dad23406a2a7ae33d942430658c 535f244d5b6043e8cbc76a30015552a 93942ab3fc970415c596a26318046886 45bbe9d4f12433cf4f2af69a26c97402 1641efa5c92514d86c4f4dbcda5f2fc0 5c8f71dcfe980f714f3a54559bf4cbcb 7c46bfff2f90f11044592db9be5db5c8 2228a428bfa91e4f771592b49641a847 dbd67f5f505a795161c6c61410fc904b 72b2c7b2a49d46ac2a9eb0f146e94477 60c6194b6f164cdc30276fff5ca3093a a2179820a01ca67f1a144f5cf9567bf5 db1e6a78a84615b83c9d2d3d4dc0edb0 d4e7286d53a7236374b5e1a654a4b1fc bf1893badd1c6bef59a47b1880958de9 43cb6a878cf18fd92a9eb0f146e94477 eebc48c480032e45473f10e6caaeca56 a4d535e1b1d3c153ff23af07d9064736 29b714c4aee36c9d6108f064aff2426d 4024c9fccd9fce80bda733a39f84326d 90f85f62885afeec65ca154580c5c7a 7be86bfa8edd04fdced2b3ef33cc51ac 637a26dc6b1a3f47e7540f431cab4686 82b9bbf2c5c630d9acc1f3191aab65d4 6d89098a33908cbd77b59844decf6d46 911029433b8ff0f1afe1d4530f4c6e24 4bdcae58e18e4c94c1bbb501b1d87871 9909e197f7383a976d07c55cf995503e e1c3687f400be151cd21a68c6dc7b5e3 2df4b1797723b140419bf2f84339ec5c bfa01c632be2eb06e8a3b392b986583 6d7472ea15dd5c18433f1e7c64b884cb 21eba3c73a705597db2c2b0116c82e56 bb39689b3e6568e85ea174ca141ad66c 2ecbacde09270d49cbf57aaa2ef6598c 30f4b931145acc98a3049d0dcf503cdf fab45f900797908bbda733a39f84326d ef7f623beb7260287b5adf84ce6f7865 3da0d2ecb594ceae348b30181b0729b3 a74c1aa71334c6af20363e2561dd589a 4a6dea7ffa04531cf63ee8a34069b7c5 6dda1440d653d0c3bc5845a373118df7 411d95c06a7e9456b3b0f00a15b90e0a d894c407d7fcca0d36294458115cf41c 77a170eab59d866d8a1aed4fb5fe5280 dcdee01d7fe6e1a76ad064d1c5fdd7c 36c4d31969a8c1111a31578ee9a364cd 6615a61a799c144e84306f3bf0a1f2d7 324434f8eea2839bf63ee8a34069b7c5 d4e611a541a5b01473f10e6caaeca56 7bd15f738bf2a402d4fdf31cc2d78fd0 b0945cdea946d1a363c65629bee30ef9 360cc5c25fd6bf20ea50ea60f77ab4cb d474f5971b5e8ecae9795e5d56b7e9f 115170b8b44f9e2e5b2bb28aa7453162 721ef3846535bfad179005454847728d 83f26e6b8298c3a0a134736201a79843 298e8c0d9ce547b4e1e2aee44e822aa9 32f458e413dfce699cf7b84b43bdd8f d0bf09ffa93ba912582e5e3e7771ea25 e39215e03ab8e65e68428aabd2c41ee8 40e7559b88089f4ba7fd25564c2e888e f882454f6fe1c5bcc0e3666c7d0ec7d0 492f36ac59d2d3eb450d7227edc25975 1c351358afff1cc582e5e3e7771ea25 490812763fa965b8473f10e6caaeca56 62128b128c9a54c6389cb55d070b61d3 406ff3d73672bb2b21669bcdba443569 7fb5dcec8e6745554ddfff13f461e46e b790d70257a8191a29984c4afd2e98a4 2e37a9a6abbdf6cf25d175f53644eac1 94edffd805dc965ca5626f7e1b38f05f dd240a8334032434bda733a39f84326d b216e194c572e9ff99ef493efb31e54 a16ff37768fe676473d32960f279a9cb c8b196595745bbd241c181f4a7e1bfa5 ff809d58a66fb4e85174ee1075ae80c1 42ccff0d88276152e341b5704aa568bd cde88b5900e8dfba725a7749daae1afa 21205bdb7ca9be1d977e464a4b82757d 46a71fe0e651986fcfd826dd468a5497 e7b9a6485b15921d51a95aaa6caba1d3 f643555dde0f0838346c6b68550f2695 de1564379b1315a3efadfa67efa023c 61ff6beffb91b6a82a9eb0f146e94477 c9d53c90471eeb06ed3696d854eee1ec 86736cf3dc841eafde5db5d0d11befd1 9648aaf755e6556e2a9eb0f146e94477 7112c1cb9b6461c9a551e6372afde900 64ee682c9dd2ee467cfc46ae22f84c92 ec994111db1da0d6927e12317acf49e7 373cf6c8f79376482d7d789814cae761 d55179fa8bec81799779c759176b96e3 cac12f8e291f3d1fe43409f9be327bbe 570a9903fc7fa557d0a4f72b67c7f064 9fb89a485c814f7e18f8769175b6766b 6d3d67957e1ca228ca92a4cdad802b45 f4b86f895a221f353b0907d01b34682a e7141fa81a2828841e8bd72b0feca0a8 9fa56c19e4d54cca99c8d14f483ffc82 dc3c6748e5f96cee9b3f352e6fa9112e 63599f1dc1511c25d76439fb95cdd2ed 8b22da6bba6c81452af3f274e91bb46f dd184b3f41891cd317c40808ff7018fc 9e2e375fd5fd55b02a9eb0f146e94477 18d9ac72442260e0e97c6bb243ef67d ad6572f7ac90b9bf2949d5274e5ab643 6af0ad6553d3f42f21f6e2b0f75cf9c4 2076be423fa5bb9f9e908ecb03b3d6fb 7b57af1bd2d83363ea1216357e7f0768 caa26e8b5033be6ac02f176e44f0fcec c911f8a7084e7929593b8de380af24a3 a8f7a7271a02fd56afe1d4530f4c6e24 cb5fd4e2c29b9193a134736201a79843 e7f94161bd90444f8cf4cf458d5ff7b b5367bf3cb07b8ea593fee7ac9114e04 e90b0381a7c8841c1c65421fe734e7bc 7c85e6cf9c4f46e91cc13e432d5756b8 26b7a9c6c7e74829eabc798aaf5f039f b21bc9621960f418c330b66f68c70be2 4e42e2b6986a3d86a20249b45c17a5c9 a3672e5ee27e389ab19dbf7b5aff7ec6 52f592a68c828a1e190cf42afcf85660 bcc3a1e280cb9153618e9d35559b7aa 2254e63f695a1cccbbae182929bb7dd 785cb635a01fb7ab2a9eb0f146e94477 193ec1089f0a98a36518e6cd1fbc5fab f94003409831db21f2cdad303f49c9f9 82b9ce9740bfd28fe9fab7ec4b8a907e dc8aef6a8c88997a582e5e3e7771ea25 793a8675d7a5fecd653effc8a32f84f1 381bf84829066031a134736201a79843 85cb3207e15a1bf8582e5e3e7771ea25 cb5a320fbd846fac28e9ca8e8fb04e0a a4017ff2cc8b9150f4d6a46019767b57 884014d60de73249af551becaeca18e5 4cecc9df9c777804816bd8f64e08b2bc f2a990659efa05c5452d05118c2bf489 a3d77c6b58ea6e75e4b68d3b17c43658 9a63aef0a99f7bfab2c2809513f396e 354274e1c27653a318d9ca1acf6633f6 14330011009dacfed49701eac14326ae bca97563f170ff4ad2bcce019eeaafbe 272791fdabf46b2d5921daf0138cfe67 e09c2528f56f04d03e241901f2025878 ba0fa0e807fd275e0445fc6d980dd5c a51b3b0cbd9c24f3a7fd25564c2e888e a2c9c1b4bf918cf6d2dcdf586ee56d5a 6fce36e4df1eac4fa7fd25564c2e888e e97d26f05a68f833cd89498c213958c8 8a28abfb5751e767b9f455b31f6fc3b6 eb5e956c2dbd44248bb11dbc05ffaa74 cb0bffd770644cebcfd826dd468a5497 d6dab47acb946364f0cf9a4b3162f487 fd765ab34e7907db186bed5098d348af 15d6cd7877c6601d9ed410a010efa019 25378c7370a06c497ef186a2ac298b0c 22428fd70b02b83ffc567bb1bd08c1ae b5a6e71a63189e53e8a3b392b986583 e01a56af0788551e7aa225b44626f301 42134787c805fffe1ab9df4be75138d0 702edad0d2fa9eda2a9eb0f146e94477 f0d16187cae178e7e9d8921ebe6d5b8e 5ebe8c53a7b1f554f445715e3bbcd7d0 beef4a450e0d42db6436916a86a90ed7 de6b2f1796b1887d84e2301109bd5b05 9a0365ab56ae57ffdf6ad3edb04a4bc5 4e488242b665d85f40bc3b36a331b786 86ab1c2ea989fda9ab15905beabd3f20 206e39a5f67f4a4a81d0c86cc18e6647 ffe0a5b165461eb66a2345809e2bb169 6a8058611e45e7d243ff4cf09319bd2 ce375f51744396e52a9eb0f146e94477 28fe2af4fd6ab3848772afa45900d07f ee63549013035c385e28caa3b26a73fd 6265f0745d3f40546bcd32c43682e841 7db943b676cd86d5729c04438af8eabf 8fadf13734ff86b5f9e6f9c7735c6b41 7e65e7db2b227946631a8860374e7eed d07300cbf12c42c3c427f8508e3d634b 296c92e4e7233de47d1dd50d46b1e3d1 f90ffde4e5ac04bcc627f7f719e1032 66828747e0e7671021c7b87f47c77e12 a1b7a3cc11b25b3a82c0a051a54c0e33 8498fb254e1669faaaafd94b9f216ef6 755717e2f9edd1e36782fc9cb2c37844 8d560e44c4eb588d4fdf31cc2d78fd0 1782558e47730989b96212c8f6cd06e 5c5908b7a19d8df7402ac33e676077b1 1cd50bde9a3e711637b0898eccd7168 9ff9c8287fdb49be8b55a52bfd1cce7a 584a78bbf7932674d4fdf31cc2d78fd0 4271d0c8cdad6a84e572d3df5e4fc85f bf0e8d944ba4843e94e7e8e27399daf7 da59928c982bc34a2a9eb0f146e94477 293c7cf5fdde18258acb0ff76f4aec7d 2cbe6850de4fa5a34a6a7ab072f22d7d 99606d5346d6b958b96244559b61fdc2 62fa029fb8053560a37f3fc191551700 49e4cffd7736c34362b21e1bf23b9ba8 ba03db3866faadf0dd27b2ba4335b978 f9cad36ae25540a0bb20fd1bc4860856 3363bde33b9abfbf7c5640de9da0cd4 9d5c0108ce2c848e977b27045b1d8055 73723a79817b594098c11e8f05368fe ac85727971fe63dd2c67ef33d7521ade e5247d798b4538094046e8fe9dfc34b5 8ee2dfd1460eded9473f10e6caaeca56 b61f6554d83c50684fa22c482c32995d 90f2e2d8f9b89074425b2c354eccabaf 2e6a9622bf83f04c38ee77d0178bbf4a 59ed9bf99fd1262fd77312c90516c805 ea76015145946dffc0896a3cd08800fe 425431f166ea35bdbfed25440ee4185e 2650ad9e7a1d0ebf6df8cb2765f8ec95 85d04dc3f455bc56ceb5044e1e1e9739 f4da249169898dd915212cd62adf957e c18c78cf54b60f078e62780ddf14e62c bccf69e2dd7de293ab2c2809513f396e cc8b44ddf6ec80fffd8e7b05498794b9 28c83c5adf799340f2cc18e077b7ba53 7fc1cbdf81a1edf5bda733a39f84326d ee2b541ccee732254c938921b509ee11 536b6629c4f60d07e78002a96f52ef26 2b800f158324986ab6f657757c95f74e a9aea98c1e79a2e6e99225f2edcc7982 6f2e76e362ba6c73c0e3666c7d0ec7d0 5d0e79c02907bb8f5cde8c99e4b182f9 b2f06baf5851e7a36df8cb2765f8ec95 7e3349b2d3e833b0364d334d86d85d 29487596941c12dd99f6b4f86609dd6a 5c960f83d0eab69cc9463ecce7643e8e ceb561c72a407ddfdc50a691c68014fd 8b2f030e604925c92a9eb0f146e94477 76f35efa4083dc6a4d31b03e74c723a3 a42b6210fa2682adeb4ea3744b7acd6c 55785c5e30e293e03146b856dc99bd62 9752827fb7788c2d5c893a899536502e 99dd952f49606ba01669695e4df59de 7b01d9b011361e82a7fd25564c2e888e b866d7e1b0336aff7c719d2d87c850d8 dd06b4149a6f876341ca08f10af9385b 48260abd4ff73f99473f10e6caaeca56 2bfea38242ba63cce77aa0b62eed1492 2894449c2f1992bc3a65ca10b9ee2981 139df45393b6847838805e546aa28d99 e7b500cc55c8f13b4512af8eced68fa8 11d1fdaedf3ab83b8fb28f8a689c8ba3 c4bad2da39f8021b3554e683803baa4c 19541db644551287ee0112963a7e11e3 6c08a180a3437f316dea32b07f945478 9f2721257bcbfc70dc1fa1f50eb490cc 21999849a6a8aad752470de2774d6099 3a5ce33bac316d8f6379c5e421c1d27 60458c0d233ccf9daa69dfdc5532bb13 797804cd4594553156b22cefbc2dcb87 361f3fa1f09d25f07a5533ecb7691f17 a2d1b78e03f3cc39d1e95557cb698cdf 4dc19314aab40eb83a93df79ef2b80ef 7bb54d802ac6156ab96212c8f6cd06e c5f77a00c9cae334cfd826dd468a5497 3c1ecfc2dc88c1919214bcda3ade39f4 8ed0533fb22f972cd76439fb95cdd2ed cfd7228f455912dd9618aa9e2febbf80 1fb16b5399a4b3a710bd1697bfc4e3eb 48863925f0e70aafdf8e4da0a37cb43e d443e86ae023ceeb16abce8cb03e7794 68b62b9b9d49f262b12ea83455b0f44 b0f1e8e11aea5f622fdea40a56b4c57d 41f087af6d5af9e1c05a03162270a7ea 3163c8037d5782365688db6590f826c8 a56dca5eab44489ca7fd25564c2e888e 2205a3f2c102f180a134736201a79843 9e3a69fc219ef73d37c910d2f91b3d73 9497f33086b582b7473f10e6caaeca56 d22cec9b9f500ade28e9ca8e8fb04e0a 54b10fd57a55e249ad07230f53fe98be b9ae3fb6b027dc4294a553cca1043426 1d4eaafea3ae8303ce94fde2d6224f79 8b177994dc29a707e363d824c14767b2 fa9897315ee8b6ba67789dfcc3262f70 ba7a583467ff8aee8cfac9da0ff28f62 9e3a2cfb3c8a25909b2ccdf5f1fe9097 6eba2ec65e8e44ed5545896d1a9ff5d3 4d12d72baa7641a1d1debe6139d9c454 f2422eb6b55e8fb0ef3ecc8551d2c1fa 9e44269655ec3df9afe1d4530f4c6e24 e7add7a018da8056bda733a39f84326d 7cd83953000adce622cd6c209adfc63b fa8ecf7278bb320bb7ecd40416f4e39 9c06490e82e122093f599d94ae17ce2b 54473bc01457b7291b3636ad9ef344ff cf39999d7c9e2b4788ea3c115b90ce56 45563d97886d68eb12d484f58f506441 186646b16a670b7d69a949ac99a843c4 4836466e85175a462c4cef95ae3d6c50 30774e3218da1f793eccc98914b46c47 808e19aed606f10cf919864ecec729ac bf7efe509caf42cb7481cee66aa2b2f4 f92aab09a6a1c6556c23793d085f1519 279adb2c37867b3a18d9ca1acf6633f6 57ce5193c3ecd067c05c2f3d0d461abf cea62d812396c31a88ed7b6315c3b4a 51d9af66315d76f9e6b335b85df4d203 d20990638711f55967bf54a1f364120 aff67f837a958d2329984c4afd2e98a4 728f6f29382b70053ce4e6f97016bd5a 88161acf1ef955c5d76439fb95cdd2ed d0e68e14e8012b497d6d702dc488f23a 3b1ad5c98cd92726b60a292fcb118b54 64f940ade3f61f976a106c3e1a10b659 1ee4f19fa617ec5949493d905c02fa86 f478cd5a04d2220a25af19d380ae3a 47aa50eef6b59ddbc552d162ae439d98 4510559f5587f601147d1b898220921a 96bf8cb730f728414a383db4764d5432 8976e05f72b43a742a9eb0f146e94477 9cea9b79ea255dde56ffccfd33efbc84 397d2e2b3e0988a2d3901a534bc610d8 9d3fd293f6b9e46f28044fe9244db50a b6abe0f00fd452fa4101e38beb790a92 216d910f71942f205df3c6413d40ccb2 e859ef0e793c43dc159a969baa659ca7 30e84a2b779b0e89473f10e6caaeca56 f1eb3f6c5a5313564c7d8ebbbb68f5 b9786e1b059a1712ca92a4cdad802b45 4618489fc34c3367323a23bddac1281c 75c4085b3315688aca92a4cdad802b45 813bedf2a45f5681ca92a4cdad802b45 5ebc7e111e9d0b5d473f10e6caaeca56 e00169580fda5461473f10e6caaeca56 e06082fd22dbd3d425da9962b829b47 f2e433cab0ddc755ca3ba83abff10be 2996a60389105deb649a971570be83d 543a6562ae746ed45daf03c341f7f599 21a1f2a7b7e671826405999d829064fa 4d39e6f28ce8970530515cb6d98a6c44 5efb2b4cda03da10e047028ded406033 e9ae93e6ddd5bc1e6047f64eee8fcb68 202648a87dd6ad2573e10a7135e947fe 9eef7b2c492bc1181f4a259ef9bb479d 7bf415dbff028a3d4470fce578e2b84c 42147d774e08199564c7d8ebbbb68f5 f2f62db1a9e5823a7aaf6e2fd8453e07 65ea0311528b1e5f16abce8cb03e7794 30456a19dc588d9461c6c61410fc904b dff1f351bb34fbbabecf71e2e014ff6f 7a12f058a0474559a7fd25564c2e888e 7d4fd8ed77355364fa98472c1d231070 1089cbe82dc0e72133d7c9e122eec9b6 61251733434b9b0c15a23f2b45e10de5 a89dd60aadccd84be04e0c24d5a9d818 17bf28a8d9b5a7ccb5e3401710af905a 4dca2e572dc278d563f2c3a55558a78f 4571e0fbe9cfb5f8fd52c8b6dd37752d 6ca41d6e48d8cda0e7c0978ffb411d3f a37a9d8847ca3b90e6052439e5a76d12 d43dc96daed9ba0f91bfeeca48a08b93 5cad9a0e7e69c6dfc427f8508e3d634b 5d851496c2acbd8cd03e665be0237104 70048a705ad4363642db06daf723ec44 c07bbf672b56b02aafe1d4530f4c6e24 4b6e6fa36c1e6f865cb51d79fcf5dad4 d0552c332fd0182df3cf3d2cc3dcb043 20b03fde0d55a99fbecf71e2e014ff6f bf523e37ff88cb10e23d60a1b706b44f ac3585c59a80b822b4d8eb72d337b2e3 52abca690cceb7c634a65e2e5c663c7e 3cdb021c923034c68bb386c7dede359e 2a844013c66dd19d32e3a970ba4fb82b c24892528799ccf486b4d991d5310067 dfc08488e2ec687d1c64dffb0265c4d6 40a30a8e56fa4a6c7b48e36e31209b9 63959ab016687a50618e9d35559b7aa 36f17730152ac28116abce8cb03e7794 e2d98e5fa33b5b0daf8a2e210ebd5168 7bf95b4dad8c1244d928f30a3aa85f67 202fbaeffaf49f4b61c6c61410fc904b c631ec6f38a5e1d7fdc1d9a76d31d55 58f2baf01b8a3baf24da76692f3228e0 d4f910cd784c38dc90b4e3bfacd1b5e3 b9e20b751d869418ce2714c5fa8be19d 1a4ef4a2a639f172f13d1237e1429e9e 993bd3b6fe7c6e32cbb047938846b5c7 fe16b8e790f23ab8c6fcb4b4f04936c2 f378404d31ce9db1afe1d4530f4c6e24 78f9e32385dd7db27996cb12b5662363 af0a12fa33b063ee38ceb1581969287d 4fd5c18c1536d65be129fc90649e41d3 1f43243b81df21277925d1ea63246010 1d5872004edf12038644d87f4c93cda7 c72e9ce6c6f16bb83b8642d7bb5bef13 476a54545e873ddf6cfecb6c9c824fc6 aeeb2fb31215f3249acee38782dd9680 44f30f4c65c3142a16abce8cb03e7794 80b5df2ecf1051fd61c6c61410fc904b b12841de144ea6fbee3362a8d2d8318f 494e45d11299de95c571e4850ce1413 4458ed2a746e61a3b11647ffa4306609 84e4dd1c6306a582a97e62e669e9544d 94a78fc51f84fa839ea5c205086e2a63 54d525937d9c6921afe717997470b28d 8648667e03bde366b17445a1c29f6d34 8202d2165aaff4c05fb2da48d9c8120d 23ae5d6c60ab3f60ee3362a8d2d8318f 4c2412cf0f720bb9618e9d35559b7aa 35a32cbdfd9e7ba460ed0d611ab79ae0 15a5e859e0de30e2afe1d4530f4c6e24 f934155d32f9ed5b4101e38beb790a92 ac3f9387cd4319592a9eb0f146e94477 355e2c8d8d10e8227541c0a826e78e18 180d1e3463c29355bda72093f9b5aa73 f4c4bc930957be4951e9a28466112d97 7e63db420468e1b1bda733a39f84326d 2e27309be42276bebecf71e2e014ff6f eef8e5bd46755164eb2d90cf3f6fcb8c 9b0d7aac4500546911718baa6d4afc0b 127b9ba77b54ba59bda733a39f84326d 7a226f6c9c37c8f7253c03b7df20edd5 65332c9a15126b924b3ff698267962d8 3ef364afe692557edd344a2b29517bb e1c6002b98b4cb2c32f56cbc65681ab5 d80658a2f50c753cf1335b4fef92b83f 2485b755d54f95b17461dc7993bb5c2a a387407d49e209fdeea60824a43a0b d679b2dd7a7d6b1da71ed5958a35c6 31cfc24310109174b11647ffa4306609 175a289947f549b0e088606e38104b2 ee5e6649db524dc2eb22840c40c3154b 148ba646cf954b9249352dd33f95cb9e 53a604e4037c650beedcafe524c3dc4c de78fc3652596d3e9ceaa43540dc0e9a b4a0711a46f9e2bdba3e2415e22cd45c 919b95beccb25d2eaa3fe7369efb56d4 a83c45069b2925efa7e7e5ea49ad8e45 a1d85821a0666a4d8dc995728b1ad443 2861ac374a2ea7f997692eea6221681c 854bb96a96a4d1b338acbabdc1252e2f bb5264bf7306327abecf71e2e014ff6f 953531696c554fb275dadc997718614d 3044f0bf0ab7fd8d476502dcb0dc5465 ddb4ad84abca0edcdb8ce1e61248143 ea7ce310216a5a64a1bc65068a7d3cef 51ae6558e6914920253c03b7df20edd5 b8cee2711b84bebb425b2c354eccabaf 18244d93dbd2afbebda733a39f84326d 5dcbc04a1ce783eb73f41773bda9db5c 1acfbda4ce0ec524bedced414fad522f ebc59fa7d366b486122181f48ecf7852 7376511fb191429eff1370452e3a0154 53328de5c7e18b752350d856e276adb8 e914040a57618eb6d3e11439c6c22c8 d776d298be6bfe88e78002a96f52ef26 d1a54cb41a88702b1e8e2692714b2614 306f684fa89eb73ee151bdef07e713a2 4c2c33070c6597ca9004afc0d5dfd164 f87f654f056b3679f4103381793c29f7 d3f0b077f7134654e20af544ce47dd47 b12bcd0ba039b8d09362b924f11fb193 efe74cae23f8061382fe9569faf087db c004e655af0b35e3bda72093f9b5aa73 c951be855f20a1bfb2a29f45da811562 90b4f0d3187ad88c26a3125b78368401 c8bc71dadbdaa890becf71e2e014ff6f 9dd5fb440759181035fea498c4ba7c5a b72355cdbf1127f4becf71e2e014ff6f e05680db6f028c15bda733a39f84326d b8f6994a33f4f1adbda733a39f84326d c00e0066715c2226921cb81cb1632a5e 488e4530f2b157c2e877e82c90c24d 2bbea02b59ed2bab944bfc22204b55bb 3ef0d561be7aeb3080275d4a88484513 1c66dbe15a6be89a7bfe055aeab68431 c2adec4dfc0dd05b2e877e82c90c24d f21bd46dced01bd835da01f298003d56 3e36e7b04fbd55a0f691b4bfa2a7ff4e f21188e5f1a6468050bb0437668bebb7 ce63abf6d78ea5bf4f39b2731f699e34 dc9bb9540228dbd4a8977f240035577b f82b9a21855ef3feb1bb46d2556ba67d 80cae0cc66dcb8a88acb0ff76f4aec7d 56478692749392a19dfd5136ef0f2af 641a0da53609ee3028920f0e0293b366 14d47aa57151ae4baa93570ec0c0afff d922b4f3ba23cf43780575af49bfeda6 f7362613dfd3772faa69dfdc5532bb13 614d683fa574cd817fea5423f91210c9 bc75e8adfee9ad70bda733a39f84326d d8c7f76320624fef02d716c401defb1 93c647af0338e9f35a06092d926a13ca 92cc3ad1d3da26955fcb05674109534a d014af11d76dbf667aaf79c2db0c7371 7e7cc90bb7f265d2b3cf5236f651a8e6 c73e146596486bdac427f8508e3d634b 9c0f4c3c72190a6ebda733a39f84326d e885df5686133eeef43db49cede9f847 40953c3fd24e9d65ecf689885b7c1e59 415c24869f57fec9d9e74b7f1cf9cf3c ef686b06e51b00601c9427735f8d544f a6a1c91c92f86c463a93df79ef2b80ef 7c13a71834d2b97687cc3b689b9b258d 79b99595059c53108540dd23f35aa602 8fc2691025a48e21381a9e1cee6d0b00 1ab80bc91a45b7d0a31091d2234b9f68 ee5839537440f8b6f2e4b4084cb7a07d e3d7957c7a9b95382e877e82c90c24d 89026c748b9cf721bda72093f9b5aa73 1d4b2404a00ef4bb627014ff98c41eb1 52ee842db08cd881979ef391885ee5d2 f78bf954495be532afe1d4530f4c6e24 96762f5d7f7e93343f9daeef6b843610 9ee32f514a4ee4a043c34c097f2ab3af 9586fcdd105347123ed4cb179e56ad61 846f4ad1db06d8791e0b067dee925db4 1a1dcd236a1e6133860800e6696b8284 3973846825fc4d857cb2a55fa21392b7 7dac31838b627748eb631ba05bd8dfe 3cd83324de4a2fecbecf71e2e014ff6f 2d096d5dc0e0eeb370a43c2d978e502e 26eb9c499fe0ff9edc10f9c1726304b1 7e3237619d96b6e551a95aaa6caba1d3 35fc22147c160f501636a25380d820df c44111ca55c697117fbfaeeb4819ffd2 37f9b2735bc9e80eeebdc06b146e1752 d72ffa185738bccd10b75223b5be6dbb c06a5f0315b3784dcece4698ae3579cc 8577f3f82d5ce3ecc2fe329dd557eb52 4036332be89511e31141a7d4d06dc13 909422a9d1b42e1380360680c1602c7d 14121abc9e2a868e52ab7aae4be20d81 38326e6ede45e5ab7b1fe308bc94d4e0 8aeeed96e4597ca6853c6f214c15e60f ccdd144f89a78f5c554ecfc23d9fc570 2ab27beb8a37ba37ac00fd1150223027 1dc58be25e1b6e5675cad724c63e222e 7240a21ee34bef83dd141480e2c154d3 2bfcb2381581c05a95551e0d9e50cb0d cf9e82b3235f62c949956811ccd3041 a476444d87bc7aeb1699b1ed8dbb7ad7 db86af2f9e7669559ea4d0696ca601de 4cabd6d81c0a9e8c6436916a86a90ed7 7bdcd746432bf123416a3426987b1133 f31eae8f1f64638c2a9eb0f146e94477 5bb7b111a3835592531e940de4b7770d 8601cca4ddfd28af18bc22abef3f86ce ec11fb287c9a68475de701ebc922ac2c d2ec7caaf8cc7a9fbda72093f9b5aa73 90573f5d0156d6e23ffe0e5069bf1eb5 2fc99d3fe3f1f3b3b5e3401710af905a 21fcf7b6cfcd2c7933d7c9e122eec9b6 10247b51a42b41603ffe0e5069bf1eb5 b8599e22b152b96e55e3ad998a1ecb4 3d358a98f90e8b4d5b1edf5d4f643136 27e267f0570f121869a949ac99a843c4 d28ad2ed7b1ba665b1bb46d2556ba67d 20a967d68b6d291512da0dbf3c68e847 9e136de952f33de0a1830153974050c 139718b631cbca546a36136419d55d5c 2c8e9ff5fd58ff3fcd046ccc4d5c3da2 2f03e5379f3e9b6857652684714945f 70899bf99412a69db38722563212fa4b c1ac2aee4851937c8e30bdcd3135786b 7de59e150d4712b7b3cf5236f651a8e6 83491cab81e3a330bda733a39f84326d 50ba203c086c496df43db49cede9f847 6b0238b41337365a3330c5ee7577e4de b16a147485ec40b25a70c4e5328e0b9f 53e7ed598e9c3a09405f29f7fa3f25df fdcc09ad608e95b4b631b59d5abd1cf8 b31c2984546d2746becf71e2e014ff6f d306a61faada97eda43f80a4a74d521b 2e1178d969bdb3849ea5c205086e2a63 5e5d7901f587c39726d36807b4d406ea 52ff21d1ba10add4bda72093f9b5aa73 691bf14434c590f212a6200f1680863 c53256341ac5693c66d89345e534c861 b56bfe0649294ebecb02238be5da228 78c5d8e9acc120ce16abce8cb03e7794 12cd99c20b1a5a932e877e82c90c24d 7d099ac5bcc09250e61b9ff60b1be412 2be8bd6b150a9fee97df6383472cc5b6 492a339ce5da3fe8e4b68d3b17c43658 5c04452276a26b80d97e5ba4dc9a93c3 1f8fc7a787f254e6428df271ebc70bc0 4db6c644912bfbb3e0445fc6d980dd5c fe78ad3863e25cb3253c03b7df20edd5 63316c4cff51de417fb21fb4ec0d8d1b c34f37b1bdd6fd62247035fb6ff31a15 2dd174957a2053345fcb05674109534a a5476137d0f2f930425b2c354eccabaf d1bf2bf3302c0ec0e21186de41a0101 c5079a5b8d59220bc3fb0d224baae2a 7000274ad11a419715ed2279a90f8f38 99fce87e4e80e053374462542bf2aa29 99f9ab439e890e79aff8ec395bcde91f 2a0a53917dde654c3196f09f71403d35 30e971ea6fceac68f5cb3ca022cf045c 5b4243556369155858c383066ceeaaec 2a2a1822fcf96394ed3696d854eee1ec 3373140534463359fc82e75321e09f82 bf8c14637ee36251ae3e053f6a533410 68e733f38f957332afe1d4530f4c6e24 a03c7c73c067afa9e5bf84cdd88910df 3d681ed2a7eef0df28f46021c78a3723 a7b76ead88d243133ffe0e5069bf1eb5 5ec3322293a39816ad7e7cea4034d226 ae54e2952eae6ce4473f10e6caaeca56 c59e3f28f42e6ca3186fee06ae26176f 37249c6f16b203de2e877e82c90c24d 8c264b10c4ec3e91fdeea60824a43a0b dee6c7e696048330ccd4ba9035439a85 a17bdad065a0e008a2e48b029cec5d4b de0cbca344b9de834f36122a581b2941 c41fc68f756437b2511afe12ef4fe731 c31891b69780886ffb907109397a6c7a c23a65ae787245248580e2c19c4f9aaf 6291f064e64c6eb9d18a5bd35f0d115b 8cbc8e27e885eb763ffe0e5069bf1eb5 8e72ff1064eef473714e6c6511843d28 e3dff7195a2026dba4db43fa521d5c03 a077e24f8983d3d3476c231adfa21265 e607a20da6c5132dd141480e2c154d3 cd3db50308c852a02630fc4a206fe3d7 15fcfe91d44c0e15e5c9256f048d92d2 70e27da90dec2de49604bf8c981ad1eb 96e164d8347ff4d8d61b6a34f3fd808c 7887e8306742cf844ca84d60642ec7e8 c4f6540454e65939921cb81cb1632a5e 35d1938e4ab14fa79ea5c205086e2a63 151bebc457224c2733d7c9e122eec9b6 beedf39c8f5709bea9fe1734a6086750 52cff656189850a2546b7395fb17f97e 56dafc275ef1367d307cb03f4c762959 b35117b7e025a012bda733a39f84326d 3154c3dce06ae7e216abce8cb03e7794 3232d99c41dd949a8b257f8b62755068 83cbe72c4b5e9268ec89747d864c8515 597c9eee5a5ba96b313436e774fa02eb 368583768dbe789980360680c1602c7d 3d81e36e5252c8f0becf71e2e014ff6f 50af70a51a2db34d777b3c68b2536729 8364ea0a27342c9d16abce8cb03e7794 cdd00143a3e1e33bbecf71e2e014ff6f 10716a366de708b8fac96522b26f7fd 2d1718bda87f59dc673ddeabdcc8c6e b27c818401f48e5220453276fad563e4 abd0aa2e0ca4fc4793249f89773e858 25480875a6be8e11afe1d4530f4c6e24 8df9feeed8678aa6bdc56c6b6d74b51a 1ef8f98842f2a388a4dbb766064f8bbf 44c7a7a13fdc673abda72093f9b5aa73 b688cde1a09ea5d3b1bb46d2556ba67d efd9059d23b9c01f46f8ee02bd8f9824 2cbd461545e71ffcd3b83549e73dc79d 7478183ebde9c6c2afe717997470b28d fda43d663587c7a9caf180c847b8b75 43553b5efc2674cee4b68d3b17c43658 fb6c92a80dd9af59b528c0abff96f586 300c1f29d253f94a97e6e890ac2fb198 96c404939bdba58331ec7db1bc2ab2b4 149978eefad83cbafd8e7b05498794b9 bbf01f037b55306f8c2fb4d10f176f65 bf52cda8de7e5eff36dfef0450f0ee37 ce93ae42d9cba64c8dcad5127c74b8e0 dfec37059dcbf6e64819e00d73fd49e1 fc620f7906f444f1ec403de85b47bd60 6c5c45f7a474daa9a134736201a79843 9698778dc63d5874eee70745894f83bc 2650c2325b7a8d0c811f8dcd8963ced5 b2f412545dce6e8266ff862bad2bb0ba a19d008c68e9c942a78cb4f1b66f009e e6846796e15020e02bc9f17412005422 5b1f078a81df862ec2c2c81e2232aa95 292f6606c6072b96715e04edb8af9c53 372ceb40210589f8f500cc506a763c18 481999bad4bfe8bd3dc7f272b20d8426 be86ce7f7aec3ad4f9e07ddc212a2f71 5a5f53455c2b400579206bf213559607 24b9180ac3f89ba4715e04edb8af9c53 d4919d3f70b699152b12ea83455b0f44 a6fe523f0ef082a2715e04edb8af9c53 12a034b6be9afb50ae983613a2e0a741 29c0b746704727593030e8e3910d2b3b e0901a0a26daebea59139efcde1fedcb ace409d84c89d7258a0683934fae3156 a70703613b83063d27c34dcc9b552d03 1a7125aefa9af6b6597505fd7d99b613 18ff13d7f181e7625fa21635eac9e4ed 9511b5ded804a33f597505fd7d99b613 45e69263902d77304dde7b6e74a2cede fc6f6309eefa5178590462ce3bd1e59f 67ec617aa2352596ce6bb1d0811960f 78471673cb8ef99f78ae9714eeb937af 5fc2334bf83f4c0e3505c0c7d5679ae2 6a348343b90f8f06a78cb4f1b66f009e 40c2b97577b43161aaafd94b9f216ef6 6acb271397e6f9b9e858db1dc3499392 ea0d722f312d1262e0095a904eb93647 857a3a01bd311511f200a72c9245aee7 e13ea26b1b229e74bbc8d784a25de148 3a3d23c4d325252aaaafd94b9f216ef6 86aedfff061c5b96f500cc506a763c18 5389c96e84e9e0582b1e8dc2f1faa8cb 85f6145747a203becc08ff8f1f541268 890e61bfb197190e6382e1684e46349f 7492ced6cb6289c556de8db8652eec4e 24c46b3a467bb4954b1bdab82d834140 4c456e47a09ec8c96c13d41607812b45 479f89af38e88bc9715e04edb8af9c53 ad45b2d40c7801ef2074a73831d8a3a2 ece361a95a2ede4e629cf5743e29cdb3 df00eb409d4e8fcec07224da8e53476 bbca92f53f04d80d8bb5c0bf5eec83fc ca85286b0ff3b33b16abce8cb03e7794 1eb3cb637ccffd14597505fd7d99b613 f88b4156c5e8d35ff500cc506a763c18 4af41048861594b4897e805df74453bf a2d50ee31621c3e059139efcde1fedcb 664b8ab637c1fb54a78cb4f1b66f009e e28490350bdbdf679ad3ae277a5ccc98 25d92177ec6bd745deadc9ca0263db5a 4de80d6104368f4be194052f3f12cb2e e90a136270c03eebaaafd94b9f216ef6 341b474e01e039af59139efcde1fedcb 37fb762e57f343a7aaafd94b9f216ef6 84bc3155bc5c95bfaaafd94b9f216ef6 c234638891f21417ec5e3fe5c33367cf 8a2d335efbf40060481c5c74462bb8fa dda10fc985eea0868c368040825ed335 79aafe31e4f2677b1f0fdc8ac183f8b 39b307361b650db073a425eed3ac7a0b ef2655aecd7d8f2b6fca0ec9a39d7a9 2a1523ee15233761d9f8911ce020a037 abcabe3968a64d4f16abce8cb03e7794 2cd119ce9ec61f1af63ee8a34069b7c5 732ed918e2bca89ae6e1c83427eed339 3428307ad66c58c53a0daf3e5400b95c 98fa551211d228ef6a089bd459bbc1be 3c059c7851eafc192a9eb0f146e94477 eb5f04670263d8bd075955b404dedb5 894e186c1224c14f86590219e6a70ff0 3027a9d3b70435416abce8cb03e7794 69126951b42485ff88cf40718544e7cc 854881671316e926f63ee8a34069b7c5 95d8510258f7f919c9be4fc52f26b7f5 1548f5fb0684d08c63155b8ebc275bd1 b619910e7e51d8e176ad064d1c5fdd7c 99c2ddb7e6169412cb9ff477a2867fc 1ebb7511feac4d62381a9e1cee6d0b00 4d2daaa14ab2f051bbfdd95a15649dec e5ba98879f06d013b2d3f2371f6b0762 a61488f91b2837f8473f10e6caaeca56 b8de49dd963c0669afe1d4530f4c6e24 97b9c8ae37e6480e1912cbd26ffcad1c 53c118280e60df0bd2350421a9405ba 3db560d20e40c3b835ac1a825225d411 f55e967e8617484fe565b03326f48ebc 657ea4181e337213fa7c23b34a0b219 94b52d2fb55004d5ab2c2809513f396e eb471949c658f39eca736b1d30b87e32 afc23aacd3e166d9f513bf8e198d377a 36d0b6beaffc68ceafe1d4530f4c6e24 709ebbf3588849b88b55a52bfd1cce7a 9f703e578b4b36295b74572d48ff6382 30c2364393514c5b1c685cd768514e67 bcf0b18a19bce6d91ad107790a9e2d51 80bdcb908765eb9ec349f2dfac43a4cf 3b578ddeae9eeb9ffb8de648691848ea b7909c8d862ac27a82c3507e44bb5d92 963a4fdf819cc5ab3174b45571ecff3d 18c7b5644290ce2caf0c754abe32de 3f702ea027037a5c4d18baf048fb19eb 6b79cfceb6f614527e7afb83f93db294 45c88ab8a670797a134736201a79843 8b090b8ab3172dad2d7a27ffaafaaddb 88a476c48a4cb5e72d0c578824da8af5 7fee48354a144b5604a60621dcde9e6 1a48d03a977a6f0aeda0253452893d75 2faff2861e87020a4d9558e8f1b57178 6cc0924f1ad64faf8c2e7159929c406f 7edb40d76dff7455c2ff7551a4114669 95ea282dbee00d45ffe141441005acc5 aaa54ba9345b6784967bf54a1f364120 5dc3ec70f394965368d733072f36728 c5758de60af178a11922758510ef0672 ae6827651ce624f6f5a0534aa77bf2 1f5e1b0661b340fc81dcc09cafd93d2e 8f7520f908ee54e2391da6d66c78fad2 9c65624c5d94aa29801b0db1d49ea10c fe7c536197065436b3030c76de18d16a f48659c519f422132d54e7222448a731 9a556cde3d153c6230e527480f210909 12097984d9c51437b84d944e8a1952a5 6cd6f11fe76058089ed785be4fd72d3 8c1664cc8771aa3fce95c44a0ed1e01b 911d8dad65dd79948e35db9103756ad5 f2e1db1997b5e2568926f812d9083f89 c5bdc334a3df466e8e1630a4c009bdc0 301d1c48d321d29f5d2921c9c16f3c69 788612c1f9b2efccb1bb46d2556ba67d 7e7f0637d6798113ddb4014f0e8d0dac b38361e0d9eace2fcf2b292150d31034 bfc1822c1d6a529d531e940de4b7770d d43eae16d1c14f48788f2ee06c24b7b1 df5a4ebff89f02cc25508ed649b952cb 56d463162ff5352cbd835ce3c63f4d10 4c53afe560e36d8380ba2a9340bf2d77 e4b1de221f2d66352638397725e10cf9 72ba2195087f80d8b7e8c57d131d2ca7 41d317b520eec9d38d3d01fa03326bb0 9d2b7938d426633b28044fe9244db50a 579bc3731a8a25f7c639b4cb04d4d746 d94f5345be1d81a751a95aaa6caba1d3 7f6031f1738d52546436916a86a90ed7 9dee0ea5da388102e6d91d458fe44a15 ae852f7f30bfdbcdf9d73bbb584eaa42 282293948b21262769416db9b743e50b 5c3fe4057ef12b6886ac29addefc0f11 5a56285761f2d6cf261c731730128248 cc0c058e2eca523051fb05589f6b0d0e ed91b2509171fdc1c48492b454f1615a f296f3a83e09de75afe1d4530f4c6e24 b11c0c16e0eed1f4b8671dc42cc45273 9d77d4c959974035fab60fc805223a73 1c7ddd2735778013ce50f18f6100cef6 8402d2237afac94a1cf6f8e565096a1e 9676e8250cdd90307d5394224a6aa067 2df225b8df2633c231141a7d4d06dc13 2f1001870f90e06bc48492b454f1615a 5a5b0e1cbb38bdb12d08a76380360b3b 5ce9ef613933a245538f2c6e5c51cc7e fb8adbcf67d858fc28044fe9244db50a 55181c34dadb4f032db09455d18fca0 dd0817b9757b74c75d3a87a5c4dd9ce4 7c7e5b4fa56d8ed654b40bc735c6fdf6 db432e9f280ffb1e3dd4bdc1dbab98bd e46d79a5d356436f23a5d95daeb50835 88c884dd867d221984ae8a5736280c 957a686c3c9f956a3d982653fc5fd75b d05aa55f9e5b4d10afe1d4530f4c6e24 bc9c588a00ae179fa2645d665a7d8fa 7c768295f93290391d0ca8334e014176 19c25429d34ce9748c844a5e3a5e1a93 c30bf6d1ae428497c7f3070d3c7b9f30 f1b97d671bb93ad928044fe9244db50a 30045ee0751d6ee88b3ab49d2e0e41ab b4d258dc5a12f9f7ade7f700b19bcf4a 56dc27e4374cf87132eaaf3b7c9989f6 501ac8493044eff04d44f5db04bf14b8 781b45d3eb625148248a78e10a40d8eb dc8765720d8d3828b3cf5236f651a8e6 c0aeb1f7a3fa4e2aea914417bf582f8a c9b49f7b355528e5632dc979097a3ec0 3586f47af775e5158aa8c3cca6f13406 96ca20dd7caff0bb851f021b9ed69c58 ff564f7ec327ed83391a2a133df993ee d5c046451e5bd6826a9c18480b4632cb e0978173fcfc5203510556e7c3123591 36b211593bfa7c2f7f33a9b0659de0d7 e17065d11b36ab37f9d73bbb584eaa42 ac7e674eb67488dcafe1d4530f4c6e24 e2e9b87d7aba1dfb28044fe9244db50a ca93e4d0ca75ab1bafe1d4530f4c6e24 a3e7603c0d9ef56280e74058ee862f05 a5d32daf96820ca5f63ee8a34069b7c5 982448cbcbe56bb78f89cf8d2f8a85b0 4ef6af15bcc78650bedced414fad522f 45186c083231f2207b5338996083748c ba9097cf9c836c0f2a9eb0f146e94477 498e4295b3aeca9fefddc097534e4553 d41c66c7b1ff1f57979ef391885ee5d2 20ece5093ff8da0bbda72093f9b5aa73 c0b9eb823b9fff9a2764cfba57a5de73 1e17510abe8f98bea697d949e28d773c 1dc757e77f3cfad0253c03b7df20edd5 95a6e03656bdff26f69bc9777f9c3c39 baa1e44e6e086c233e320a6703976361 b40c9e44350f95aa1b9234e4ab67a3eb 1cf17a1e1841d10c9e6a3356df3f3d9a c7205c6c657daed1ecabc5c9d5c21b7f b6525d69681e4f56813498cc26c2aee a9a86444fd7402cac69ef68baeaf5d49 325ce7d1af0e0621221f497d46720397 10f158d2f43926ac80360680c1602c7d 5e236dc6f4381ed37af61b3a12bec0aa c558c64b6b97a529658e57fd275f6bed 7ff4c1fdfd0e9bc7b99adc532ba20916 100715345ee54d7ae38b52b4ee9d36a3 a88c4427e1f0e871d7755e7baabe8a6f 5a9cb2d24a3591aa27fda8a7465c0e0b 673ee096916a5440a96c7d9d13cfe9b4 12a445770f7d6f2b70a43c2d978e502e ec5c003421112630f53148c8cdf6fc9b f9b9b12c6061d32ab910dc0e33e50abd baa424fcf0badeedd485372bb746f3c7 1b85c850cb4b93a6e9415adaaf77fdbf d67f5ba8950be214aa69dfdc5532bb13 1254c6ad2b420879d7622e6da48b19e5 17e146cb10c72fcfa2b80c598d71bf14 64ea044763ab4d742a9eb0f146e94477 bfae73d79c066a1fcc0c0cae12126488 432efbe7784cba3ba65b1575070b0b4a 4eb276926f620fa831354a729b0d6b5c 9c7cbe5b36b7ae9216abce8cb03e7794 ce8dae15de55bc57ec96068985a57399 45e9059c3ac5825661c6c61410fc904b 96905400f6122662473f10e6caaeca56 4dca3760ae9748b6b0aa56928723eca5 fe61764c0552c837d76439fb95cdd2ed 7483c242d7feb3a5b9da62c54efcb32b 9f610a7b0be81dfa3a0daf3e5400b95c 7c72e179b251171d4d1780ed2b3fe073 6f7cc4940eee83e57bcd1993e004117a 536477e0842580e0c3c4805a61e06841 ff267b1a6d986426c6df82b90873315e 1836f75baa094cd9372ca62e6806c5c3 2181653ec5313196d2c8600344d8bfab cd24768b45ef5efcb1bb46d2556ba67d 2307ced410b955a8cf1e58caa15acb49 ffb4d9920493f1e5c29076ad43b687b5 bf493207165e9359492225f5fc55e666 99f49d11dad8ee25e517b5f5894c76d9 51b8011a2eaaed85cde8c99e4b182f9 33e897abe9e7df46a9aa61915b4add2d 3df6230b2382ec12473f10e6caaeca56 53502c15c30d06496e4e9b7d32a4f90d 19cd3489f05d203f9ed410a010efa019 862a345b6328d641ef3ecc8551d2c1fa 5503658520e08b519b58a6529594c9d 913b747502e92aa34d1780ed2b3fe073 609f09c6ce74d6c44c06afea25f8c085 4eb9dbe42616e407b112e5ac235c21b7 9aaeb0852a4cca28471ac7b6a0462075 c6eebcd03aaa9060e7a6de039856f1eb 28151fb21f5a3c94887b6e2409779132 f76b9a9455b20cd875a45359f7e88a3d a74409e07d1a9e1a2925dcb663974b0 a4548c56bea7f927ad02214e86fd5091 879121a1bb623324eb79f1a2fb4e869b 9c27cdc4feb2fa5d4244558fce818712 b963de806d271377935310097e7751 12796524ffbadb755400f0dc3171dfcd dadcc1200b43a12be8b7f81712644c1e b4f06573afbb3c1d9a997e8df355a668 d28d00d6488ad1a78079d5a13e411210 7f2acaeb45b72793ce6183244062e7c 9031339141bad8608f89f9805dc3c90e 7121e0332f0c2e0551a95aaa6caba1d3 3af1559045965b6f1f1bf16cb0b58c6d 783bafaa18e8e5a0bda72093f9b5aa73 4b339f645507508aa83aa2c84a424148 ced46f74119cdb36a7fc8832cd5fa42b 51062ec9b0dadf971c65421fe734e7bc f9e91a22776f3d8be9415adaaf77fdbf b15c72a5ce982b9ddc90bfc1d450ece8 9fe68c848c1385a2a9733fa2ac6b95bc 685f2b388b018ab78cab9eeff9aeaee2 f73858d58e6371f7d76439fb95cdd2ed 1f0d149b320aa4faafe1d4530f4c6e24 3587079f3146273faf8b8a34d449f60b ef8e257ca685d594473f10e6caaeca56 fd5a6dd153a455bdb112e5ac235c21b7 84ffded0ab4b499588ed7b6315c3b4a 94c75ba9c6747f1bb491214a0cc2380 83f205b7de8e65e517f9d94e6661a9ab 5c29bf38845b4ecbea0f3fb9c87b9c6a c38cba0ec9d1a74f38f3979791e64082 ec0555ccba700387b45e6d6d9af21f30 616279642d73621812f039db97ce1ef abda34ccba30a7dd80360680c1602c7d 7ccdf7bc2af0b068e43ab89cb5563740 885207d4e9d28f317bcd1993e004117a 1a87a329781b15763820d8f180caa23a 1284876ac0e2371aa4dbb766064f8bbf d838c8cb52c92df3b112e5ac235c21b7 c849164176944e08e39b6a0d304ab967 712826b933a6818c7e003129afd0cbfe c4d49c0625be70c417da7541f1b2fa76 8aa1b368270797bdca92a4cdad802b45 719487aa97fd9af513345bcbe0ee623d a5c969e3401228d2c92e66330b5ca173 e297de736f8f0b3f67738c2420579616 feefd0978ed8e256bc050b2495b2b4ff 1ca64f9d6e008fb35fcb05674109534a 641e43fc49e754edbcfa8eb5a2d224d7 5ff285283e8ec610434fdb742d7e0cea 491df319c52dccdafb5c1b0f759e2bc1 ba1b8956b1d84856369912a1ddf80ef7 8b7b6c2a5c664ca6efe5f291bc2f5fd0 5523a6798194043146810e868f84ab51 e0b9bb886c578be86e9dcc2d1ea2784d fa1b3bcdbda309a439cc19d48e3f4f5 312da43baca104262c98dffdf7adc4e3 1be81460e620aea65cde8c99e4b182f9 82d37fceb984256bf200a72c9245aee7 1724ae84377e0b9ba6c2c95b41a5446d 4b94cdc9c703d00fef3ecc8551d2c1fa 287f4c8f87099957473f10e6caaeca56 1213742aa7815fd0e23d60a1b706b44f 2d730665526ee755a134736201a79843 f45022f442368e60c038d3a33427a80e e3181dcc6b60432f658e57fd275f6bed 10d388f6f578e4e8851f021b9ed69c58 57ad55aefd13445c94a5ecac47d28f09 7d4c3d9795570647657231d17e42d06f cf698011f90ac05f253c03b7df20edd5 923007b377bb1cab473f10e6caaeca56 b098f1db2f190a71d61b6a34f3fd808c 8fc220461ea512f3abeba927b56dd398 525c1f2526cf22be5909c35c7b6459c6 9c686d6ec470f280473f10e6caaeca56 aee2d4cae2954ffde51212f97a7d9486 d9034b15c7f295551a46c391b387480b 6482b8e8c8516a3b473f10e6caaeca56 e19292592dd67f1f5400f0dc3171dfcd 6ee6fa5c8d664f1349314ffcec1f2f7f 626738526152dd13d76439fb95cdd2ed f9eaaf5abb238c22851f021b9ed69c58 348fe55c1976b64c45aa033a20004998 4c427f14f21f128ffa38d2670ab5169c a88baf98bc73649fdd61bedeefabbeb6 187b002f0af1ab5a473f10e6caaeca56 53b6f9eb4337276473f10e6caaeca56 db79ceb1bf94fd81851f021b9ed69c58 b52486fac51d119110c18c6084937a7 fa37419c844e77076489e70b7c61a054 5d2e0f8fa5d5bc1496bb71fec38e082d 65b9b2df0985821463e6a626b8b4d07a 107a17c6f2dd9c488924120dfad0e290 3844e637bc560e6298a55e96872d31f 2f839e1e2072a11be55e3ad998a1ecb4 ea529cacc239f82989a8ac0e4c77f4d2 b36c9481f71c2428ca92a4cdad802b45 2e5dbf98157a53a55cde8c99e4b182f9 73a58e58e26e7e20e55e3ad998a1ecb4 7d343bbf3265164fb2d2900ee0ae7e0 dc5c1b1d9bf826b8851f021b9ed69c58 a52f704da0d3c947ca92a4cdad802b45 7a228c811e7e18ad18e1879dc4ad8784 d9cfad911b26b2ae5690f18c88ad5b9e 3ea856c52fbb213fe151fba1241f1efa be28d4b681ab04ecca92a4cdad802b45 80642f8965edbc51ba01f2d8d5d9ff0 59a8ea75a9c70f51a0e1f1086c88ba71 709d6b2cf528e10296d1882ee61d6c58 21e028eacc690c9de13f97dcb961e16 75221b7668e145b549415f1fb7067088 6e25d6cd4b112d0654ed192f2298faac f044724a6fb07ec73b294ac02412e874 a0ba66028d22cef6975be43df8325f3d 38ddc240001c3bd147a34c33abd32f7e cd5223d35c9cf611ea7efa739175072 18a9275b78be4b9ec6d3267fc5334296 631aae18861692042026875442db8f4d f7cca46c4c8efdc6fa5eb13ccb8cd2c6 300f9c418d6ec9f6473f10e6caaeca56 d9ee9de8527d309cc0c0cae12126488 30776fb35aa99150ee3dd0c47654345b 95d36965fc6d1f7de2d4c157e5bf1dde 1b1a7af332f8f154487edd538b3d83f6 beec9297d087a1677e19c609c6e24294 8e0572912893a657c697c8c1c6e09e0 664473a5493912f4650bba674124a73b 204b1b3e35df174859fcf77704d7f1e8 d98b63a9e35f50b46a835a8530f31f70 9901e5d7520df242c61cbe35764dfac1 f1f78226ed08465f801b0db1d49ea10c 395d86efa3a1a55a49ddf31673a8d73d 9a3bf26f461a1973b8013668e30e23b0 c54586fc90acb4d0a46498323e7a9af5 d6b7bb6c6203fd9590f0aa5ae25c9b7e 41bd68dd23107cc4b0aa56928723eca5 92c4d4bcb122509aafe1d4530f4c6e24 e0bf76446d320aa9aa69dfdc5532bb13 d0ea101dad5bc464a134736201a79843 e7f40f595169f1b44a383db4764d5432 d8879578d668b458cf899c77ac8ff2f4 fd98badd65df71f5abfee5fef2dd81c8 c34ef43ef8ccc3a701a8678a1e8d9e5 692a66739b9ed5e14c88b7369bd6883d c4d4de90ce7839107dcee93b87532f65 2696ef55dc264b8cbba9b483d5f3874e 8549c4948c7285f438acd89c0735f4f7 3b3a3b0d9082236cba77eb053523da42 3ba5bce1b29f0be725f689444c7effe2 6b896508bdd231887c3c6f82a395b347 7e5b55d43322de49295eb8d2a941a3e1 5cf1f82c6fd31a73e0445fc6d980dd5c 1c3c8952b92d567e61c6c61410fc904b afd73137221d690761c6c61410fc904b 8606a6353a2c0f7a453660f3d68cae6e a3e1cb03e1af7c6161c6c61410fc904b 7323fab0a83b9598f11a194d0ae1bf8 69e99923c3cbcbcca9fe1734a6086750 ebbbc8673928ad37308fb27494afe372 c975716963b72b72236804c5ee26a2ab 402d1624e1c28422383a5be3771c595c 50840e502ec2a45aafe1d4530f4c6e24 ccccf7342390d139ff1370452e3a0154 4fa9b14789c8af5e3781057335c8a2e8 17c08a4bf8224f47473f10e6caaeca56 1c86d4441f5f38d552c4c70ef22e33be 9e1e61f67c4a41e09783918b4b55c30a 6e5340cfe979238998ff545c3abe3e44 b51d8c15d8f603c350937622ac92802 c6709eb00a557c9785af3668c1cb30b 687253f72301b508c9c0a46cc4ca6589 c179735c4d9f65d7d1521952154c90ff 6e1d942233917ae996c458818630d123 7b2dcc7c4c879e9116f7ad0d1093bd39 596bbe4864580ded5833b7f8c91b5b48 3c97b002e510db11e23d60a1b706b44f 4c36e3b0210fb9e899232e04f9a28249 8c04413559b71fccbda72093f9b5aa73 f1a20b5b20366d5378df335b5e4f64d1 368c8d09c88404999be54f79e28fa49d 6b2766e55b6de7779d34b5c385de0e34 2ef03b91692d6dae5828087fef11ba9b 43be650d6fd7468fd9952f9e00a53f0e 8bf8a7694267756e3ab3dfa44f5fab01 c3d23ea4f3d1e18180360680c1602c7d f5a54f0cf2b575fa9fe1734a6086750 a5047d31a855ffd1f339a7f0f377393e 51e74bc165f2cb21e2a6bd02594b7cd0 57e16ac1b026db4e350d065ac10959e0 709774861793cca453da660a6567c5ff b47070a91102db1abe40bb45ea25a041 1c7a2752e1d170e099399ee63318a21b 3587008282540864673ddeabdcc8c6e fff64da26715b520e40201fea1ad0f1 6c28f87aebb33c294386e619c2d3f83e 269676546548fba38e271c56304de147 4ac021653126a29e98618a1ba17f086b 97119a85ec049e1df59757e1209f2c7 ef6b9ea0fbba6af828ea89475d3a158d 7e6da78c8dde0479f30da7304391ba9f 5b1c430ced749ac3897e805df74453bf 654bf6800566c8ed95b02c654da6c998 b25bd03ac3b1ce39d5238b9ecc7822b0 a8ee57eddfe30b35553fca48ce732862 445185842d893b6978fe949fc1419876 71ea237c598aad1becf71e2e014ff6f 5ef8eeb5ba5d2c6ff6efcf1cf084a608 7076464b3733aa38d2c2bfa672ed621f 6c7ed2d306fc7cfa4ccaa6b556a5ccc5 4ebf1a8cbbd4a05228044fe9244db50a 147889b73fa491d82e877e82c90c24d b4715a33fe6d1bb7f63ee8a34069b7c5 cce33c56b1c83237c7b48e36e31209b9 cd85df142f1999e5f38ed4497f2c53c 3f6e9baa4657276f97df6383472cc5b6 1e6ba139bec5e49dd9f9c2955f462abf c5ef2eaae2b2d8673cd3add5aad1c863 90c4864afa329be1fac5c51be36c9fa6 39e10c5d24fee4a6311f5d9a1681aa3b be348430ab5fa5cfb1bb46d2556ba67d e915bd270032eb0cafb617f7e8ac7576 d2b847baf4a6d1a5ff1370452e3a0154 2cc4573bb9441493d12568d09c2fba02 6c5a34971e2bd518d571d7357468d0a2 6782126a676ca77d7a04ba129c539b64 b7707e9f69d6c0ec6c23793d085f1519 fe1ec9b9ff75e947d56a18f240de5e54 513e2ad82336f56bc0e3666c7d0ec7d0 b2f3ab0b028eaabe443ea0e3853eed5d b40436b4639e80b8d61b6a34f3fd808c 8a5b15ec0ed8e9aaba44b506f43666fc c5b67d87b22583dc13ca2951bd3ea3d2 8c346443d2feeaf916abce8cb03e7794 57a2d812153fa225c740046119b36696 9757fd5be93ee0fc82b157e7120744ea 56a3f3d118f350a516abce8cb03e7794 a08b151ac5254df184bf231ea6363fab efd87861810e35ca921cb81cb1632a5e dbe713c83afe559316abce8cb03e7794 36ba5d46f034ec58236804c5ee26a2ab 2e8c4fd40a1be2fa5f38ed4497f2c53c 51c957fc4a2690ea7af49dac67ce8f 2e5ab446d0767e1aa6dd909dc6fc8d4 19245fb8ee79038fcd059a326bfe20ef 365af82203c96fbca92a4cdad802b45 4fea9b67188b830f6a2345809e2bb169 7f7bec6423847a583002e98d41e915cd 8fe901ed95e115ed70a5d1d8432b5405 63428e5fb6fb627aea5698f3cf7b2f4b 3dddc113e114b64a63b716db3275cef8 47fcc0e1aee36584b1bb46d2556ba67d 9cd875a215c8806731b76be6623555e0 846e6c678f53bf422e877e82c90c24d 4c8280d581df259716abce8cb03e7794 2a554a704a27618ea37f3fc191551700 18e16129375e723e6f8f8c736fcc7940 371c5e74c66d22d451973ec97171fea3 7b8bcc3cafd34efa8b7227eb0fb9adaf 86d5ba5d14672ae7becf71e2e014ff6f bb1afdd76bd9555abf3af70ab74680f8 36d0591781587d9fb1bb46d2556ba67d 8feac5dae8852d2e175f8ba1fccc4d0a 88aae5646dcad7062a9eb0f146e94477 5e93dfb8e4d59a0630714334794526d4 8680d89294724815d9976212be28e1b 4d52395f788af7e5a413908c0e169330 bc803cea33d77530a5038167d6f08983 4c3fe644e76bb94fb3cf5236f651a8e6 5caad0d7bc6524531e51722eeef6dfef 48071634bdeb66e271a126804ae24042 7cdfcbaec700fb98d230ef808f13e7a9 f3dc4ff3cecb4eaf8ee29572addd5275 2a5df4956f694efe829e2483ba27ce0a 2928f77d711bf46eaa69dfdc5532bb13 6710c87e34056a29aa69dfdc5532bb13 b4d7ad07dbcefefaafe1d4530f4c6e24 ca5236a5d06b9bb13fcfdd465734daf8 e92786612a9d60455dca6305fb9f97ca 413fcc9afd53136a16abce8cb03e7794 c92ef17bef6471f72a9eb0f146e94477 215da971831129bf63ee8a34069b7c5 8109ca22dd6b5772bb54d0b0194b4764 74b4d0c4ba72eba8473f10e6caaeca56 39957ba700c2461d6b6786771012aae1 8e7475bb6c54d39f398bc3e9fa82bf3 9aca55eb91a9b348ab7ba9bb57593f51 1736b8494abf38ba4eb766e5a46fceab 633dd9755319ce369dfd5136ef0f2af e333b5c405fbbb98457cfef9186c20c7 e84eb770bb6cedf3bda733a39f84326d aebaeaf0dfeb9fbe13ded1857c15b5b6 7c35cd27ae8d673bb1bb46d2556ba67d 11e5b7d67058e1d75f67208653687b70 6c1568ee8807fb73aa69dfdc5532bb13 97970b4b0f351f5a9697635485e4aab7 c4a2e92c4b79ef3140273d3a78e6b502 330a8f1243e7bf8b2ca8bf2993ca245b a7065cc33270e551a3049d0dcf503cdf d849e0fee026c98aeece2324fbbe339 114b662c64caba81bb07f8c2248e54bc c2467fec08734fc81e1473be174fcabe af08f280395cd31719f6a4bcc93433 4f2ef861d32a6f0b45594023db7cd10b 54dfce0866b65c4778254b98f5b75eb aebd98c5d7e8150b709ce7955adef61b 6188f5bafcd88523215d73d375c978d5 6be5a91bdd709a42634d30cd3ecea7e5 c6191031c1d685d580360680c1602c7d a53f8a03871fd1d1c4e15ee0eb85afd9 86c31c04c436f5932e877e82c90c24d aaa31209c049647d190d02a746694d92 47638c9573ee7ba3d8a1849b0098a5e7 7cfd1dad90b79cadfe2e8ee5c450bb81 7197ec7776d4e23f10a4b3894aadc04 3b800720bd8d41657810f4dc287137e0 558404e6c17c58997302a5e36ce363de 163786646ae2578749a5fc144a874235 7ed6fdece737f0118bb11dbc05ffaa74 b481b928be9f2bb0e71f141b16973142 79f4f7378074d3478e42313717d27982 620e8aac415e9805ea752ba39dde460 8bd0d26352ea9de9becf71e2e014ff6f 1c1bd2dcbb13aa5a6b652ed61c4ad126 44eb9496921072b6e5f9082491d52810 647faf34f7fdb50c16abce8cb03e7794 4ceeed48d1a48d4ce09e4fc69d1a2697 47748464909a5af473f10e6caaeca56 c7c3736ad5f3b252e56947f054952694 3bf15c48eb9110d16abce8cb03e7794 7da7ba42dbd0a0f9be40bb45ea25a041 933b88ebf7eff4c095551e0d9e50cb0d 6cbadb3a39216f12ac6dec6f3725ccf b67d3833e6991de8dd141480e2c154d3 9167cb083368cc6be3d59d595daeefd7 6d61759c3f8636f816abce8cb03e7794 5a728c7371f8fa3f1e0401312b984eca 2a07432c2860b54becf71e2e014ff6f 780d41c78c60794a6a2345809e2bb169 6208166202d795a2272523adb0c9ecd0 93f298a78be6883916abce8cb03e7794 470fc68779da0f923d68b6d025852738 6df1aadb0dbc696cf568f785e33a81d8 330645ba272910524376d2685f42f96f d4d7d596cf08754e2dfac2620a0cf07b 4244e025c4a5de67ad411f846a866947 3335fb305afa0494d3c820a40c219fa9 380e0c29c9ea00e9ce158c6cc0278580 7bce50c36d8166608e35db9103756ad5 6c85063bf5e983a3d14b144052416695 bc9cd53b74743dcc8772afa45900d07f 679a25d96d21cae4a7feb903e89a6153 6ee9f222a540a905e4b68d3b17c43658 4212ae43231ba858b1bb46d2556ba67d 2fcec17ab09a42782a9eb0f146e94477 f8857237df1717e3aa562f24645e326 e0762bd3cd381408bda72093f9b5aa73 67e1b04f88c88a5c6d07c55cf995503e 87918f9d328b535befe5f291bc2f5fd0 ed799c077fdf7dc47e5246097b57ccd 2668f2d9b8a2daad95551e0d9e50cb0d 6355bc126ff0c2d9ef923467520bd6ef 7337679ad4bb8f4016abce8cb03e7794 c83458f94ae8752f63ee8a34069b7c5 82fdfc4ecc49072c3ffe0e5069bf1eb5 6ee903e016ebbd66921cb81cb1632a5e b811c3c5ac8eeeb2f63ee8a34069b7c5 651497ec47e9d1182e877e82c90c24d 239783ded35d9a4e9f40394aed156c70 8fdc090f498ddb39f63ee8a34069b7c5 d060adfab4c02ec616abce8cb03e7794 868af17aaa07b069bda72093f9b5aa73 f655d1adac9c96d53b05c2ad25b4380f 828c32ae594a5409b1bb46d2556ba67d fe2e5f0993bbd4726fadd0e0ad926818 910ba017e13a2220473f10e6caaeca56 fd3c767468a825ba860800e6696b8284 3462d5da3654b52d4a47c09276b7f6b1 42ad4b456bb964e1d57c4849288ce494 70d46fce66801e0f16abce8cb03e7794 508b9f9da70d70dc809a9c98ca4d300a cf3a2894431c55f43b5ec9bc4ed9097 ea954837920f94e6f58ff156bb8fae0c 165aec174bb93968a114c8c036e29a08 d862b3766583ace6c2aae5fbcd555ab4 707c8930b987b1f3a6c0381be0943b0e c3cfbe068adab0579583ff717105f70d 2d4ccc24a821360f8acb0ff76f4aec7d 89431ed41e43bbc816abce8cb03e7794 a2f658d639f46d95c6d2c2010c35d0b9 1bb6b1ff46096f592dfac2620a0cf07b e2a4635c392e750abecf71e2e014ff6f 28009514ec0e2b4ebda733a39f84326d 5f148a8b824ed7e72a9eb0f146e94477 3261855155346979473f10e6caaeca56 59c39dc0b47f338c25a535f4350429ed eebbce8b77bdb53c82382fde2cafeb9 3302dbdd74d978eeb1bb46d2556ba67d ca9a4a00209632808acb0ff76f4aec7d 6d03ff05596201e6d8df13fb69e08d76 d157bd15ee2d92b0bda733a39f84326d b370e4c0d05df8eaf48062edccab3fbd 5ac9d85db6c0d396249cfd7cdcfe814e ca6baf5768bc105ace827f20895c88ad c0b2a4cec94f10436f0bd9fb2f72f93d e0a8ac5ece3222ea16abce8cb03e7794 dab0cd8adac9404780575af49bfeda6 46befc634315de3f1ccbd9e5bb82dd04 5f742b43bd5884c6a352068a7fd7afee d1f100f660eae4548acb0ff76f4aec7d be7fe5cfda34ba052e877e82c90c24d 8ffc484a850350f916abce8cb03e7794 11b09de6631b3b3ad997cda1a938a10d a26b62fa78e9d6e016abce8cb03e7794 53a031dd120e81dc3aa562f24645e326 4d8a4808e9bf605b11647ffa4306609 2e0051c6acf7798d2c581ef6c05d52ce 3339caa48a18e4c358db0ef36af1d3c5 9232d8834704e5f9dd141480e2c154d3 572edac8bce600c56f2b832ee4c8c232 5e87b04efd58cc8922412d2a728de1d5 3a0c0927ed24090355f11dda63ed3832 398a791990b106dda5a4c80d90b70728 c8849755b29ad49b9af07fbc15eb8427 60aadbf4a0a42360ab62a01524fcb1ec 38b2bb3bf698f38ac2920de4c5efc2ee 605be4facdcdfb194dcb1867559ba976 f578a26ffc6771b21767453ad70570c6 7cba7b4a6e106bfa2bc5065d4094ca0a 7f4dbefeaeda54628ccbb4eb8965b05 2468ceab72b4be041d9cc9d194c8533 b812523dddd4a34a473f10e6caaeca56 24c0a08cf0f7421d979ef391885ee5d2 996354bbe7baa2b2f24437126510c3c7 7f0f750d6ca959b6ac5eab1f4e9b0f1a d6390f62d9e036efb1bb46d2556ba67d 45953aa831508fb51e0d92ae9d1b10cb 952160c39258af7616abce8cb03e7794 4e7d91a6e2300d88a3049d0dcf503cdf c09c9e2d85df1abf6a3f171e9d98eb02 e899ede8bbc146278746a6bea8ba48d 6d296f7fae3f7f34981c1fca8c617850 28d7a23b2311b1029dce0c74b747947 96c84869cb3c6657e49167a1ad5be1be e67e3e3a21393927df59757e1209f2c7 18aad9d102afbca57ba2273581c30cb 303bbfd0c5862496ec8ca19d7516cb42 69986baabb9cfdd1b1bb46d2556ba67d 12d7c4013415ea147f5b0cb87a91de52 791e45f93e9ba58071a126804ae24042 6aef84dbaa69dfd8becf71e2e014ff6f 37954fb8bb9a7e351076d1567fc9aa51 7a2cb890271a361799b92ac6181b3e5e 19f52dd4592c3fb5531e940de4b7770d 3500ccddade6926233307cdc293a210c f374adc8c35b9a0b3eb5f91920765edb 44108b58784ea6a1b5c12c7484d0ec31 949f6240e1a760992dc53e2d2dfd58d0 c12a701bbdcb3df7473f10e6caaeca56 f4822aa5b83b28cb35840786ceee5cd2 8f8bd59f17f122a163739f01ec1d22b0 45d94dee6634efd516abce8cb03e7794 8df7178ab0f02bd7a795ba688a0bfdb4 6749e5a1458ead5abda733a39f84326d aebcf0140cd6206ed6dec0e17c3e2971 2854a948ff81145d2d7d789814cae761 dd84236f0ef27765a134736201a79843 a55f4932b0f8a212402257734064a917 3ada93d04b72256df63ee8a34069b7c5 15c3b923c85d22796d8b9531f93cc8de 98a1a92a94a025aed28935fb3c99dc7e 363ddd7ab72bd485be40bb45ea25a041 33ce4837f282443258c27e607f6e2d4c 3671b83524f48dc5801b0db1d49ea10c cded640727157c18c6142312719d87cf 51048ab1eeca5e8dee79ed7216eaef91 3776e4d1e2587fd3253c03b7df20edd5 ec18723333333a6e2fb4628a7a8b337f e738466fb6cc90530714334794526d4 7e12d83df581424ee61b9ff60b1be412 63e0df089d6c1442f3aed64053e21b3c a8ab20351c2e7542912749d867981a40 9171272d0e357c40435b5ce06ecf3e86 504e8dbdccd8beea7e488037e176d2f0 233ac4ee75d1ff0c6d111cf7e70d924e b6f76fc67324911616abce8cb03e7794 2490227846d06e5a2387c64d55d0b4e5 a015b428cf628af3522dcdfaad316d22 7cb387de84bfd2f5fcf949f5ffa7ff6 57e91b50c5420cbb4628d74a95bb7fe c033fb1c91079242ed3696d854eee1ec 5ad82d706e57607ce4b68d3b17c43658 29b558ed31fcbb48a2cf64b275615f0b 28093822cc7fe487ed3696d854eee1ec 7272b7e028737097f200a72c9245aee7 b1ad30609c2fa8a2d63b3823877bfa70 bc36588d4095dc0975c67b3b1e763fcf d01a821c8b2c43cea0061ac8d975ad8 ef966d85be54c98ab002e5b0265e7e9d 706671ef8c7b5e28a6c2c95b41a5446d d153b871182b8b3df6aa1413413c923 f2b28cd6e6eaa9679393793f9cf3dbea e6ec389325de7ae5becf71e2e014ff6f 385d82108ff7ee1be2720e351c87b6fe 606c0050a2ed4e19d834dead2eb68d68 932363431a35b189898b91227342b00c de58645e0e00e6be73905da0c7336cf4 777365016f4b7febb623d8d239f6c6ae a7f8cb46717528edace5721ccacba16 3905d1dcfd5e702333d445f141c62a67 f4532b1f55191eb7b9ad5039d820c924 f1bcdbe16690a985ca92a4cdad802b45 e1a694f11100ace082d20fd7268a10a 8e9f7699e30cdd8c247a5be450795511 171c20ce4de5ee8730f65ce13e7c1910 ab8b6d39057d2f6cc86779a6788ad464 1c53bc6a3992b0843677ee89898ae463 6fd6bb6ccf11968c5242705df8faa8e5 3a6a1feb338c884a8079d5a13e411210 ad00611d36e535f266d77f2d6fcbca33 347ffb0b0761c6ba8514fc08fc0d2ea6 8058b048fcc7730ffaf9aa0fdafb5e7c 4f9db143aa853e69b207e9cc82f7c858 6979a814a64f6da8becf71e2e014ff6f 1f5a6d3c74f32053b6163196882ac0ca 1f604bfb8fb95171ac94768c3754c895 523673c5b3c12ffcf2c89d2df097ef4 e8a8d47957d15bbf8079d5a13e411210 34080e679c1ae08aca92a4cdad802b45 cf4c819d9deb6533108499aad0a89b28 6f61af12304781b1297cfecdd0d5b071 e4d1edc4cda4a6445fb81d6394b59c19 e5da1a1fa675c704a2edbcbb0bd69bcb 713b7eaeea5580af1f71b98bc1f8bb06 3a98adfdc309cca9cec94038e2141ac1 6d79f2cde0340b5fbecf71e2e014ff6f 83afcd8ba9cf63cba7094e4ecf18eecd b10794a03c59e42d32a4e3dd3a89488f 60066a5369f1354e631a23fef2ba638b b059f09a0b26d4b5cfc78902445ccff8 3ffd5155eaeab76bb17445a1c29f6d34 d255a6f670c3ec18d12568d09c2fba02 3ed25ebb78e48a84ca92a4cdad802b45 1d700f9bfc275cd23681114f72c10d56 2fceea2bce91439ca26fdd1a1e470de9 7825218160564f137039b7b9eba2e0f7 b8d3a079edbc04fe51a95aaa6caba1d3 48aaa1fcf8da645c68925c742a212a74 e4c4167bc6b8e77dccdeba95a15fc6d1 1100f9eac1ca426a3dc399576707b67 9dd02330c7c4ec88ec455839e63f83dc 5fb19e8ecfe42bd170bc1eaaf2d60138 999007a25b5f3db3d92073757fe1175e 52c0adae9be5dba12e877e82c90c24d 642b4f6a2ce0e388284432ce2f42f498 4de61edaa8e41c3a53c5346b68828e77 18927999d0c5a9687ba2618ede0d52ff e625eb804f2fb6caa26598ab726b7540 77065a7bc997bae82d5feb260eec50c 292ade37cba7f109e5eb989e223f7e7e 1dbb24dedcb23beab1bb46d2556ba67d 7e7e5752ce2aebd46034a921cc85e098 b2b2f4952e4068d955fe55d6e406ecd4 87a7ebcb0dc2285d77471d13a466f5f7 e8c48b9ed916910ec800bf2938639a70 cf176e853cc739bbca92a4cdad802b45 83c21f0f383524e9bdd7ac383509f04c 389cc4b8b1e28d1770905bc56bbeab9f 9a92ea1009f6b5127b5d9dbd93af5e1a 6b7f573997bc6f8c953536e7c905b301 1bef8891f35535ac2e877e82c90c24d 6f1c766eeafc7740e5424e4e99c9576 4b7f9ec47ede386222f104fd8dca95f6 cf88ac755b07beb2becf71e2e014ff6f ec9f938ad52f98abbda72093f9b5aa73 5d62b276cf9582e2473f10e6caaeca56 dd0b595b15a7203e185ce5d54f27f6b9 aa9cb692a7ca1070b2d2900ee0ae7e0 6fd9b065c795d915473f10e6caaeca56 3870022ab97149605697f65a2d559457 b18e5aaa86cd8716a7fd25564c2e888e cadd53fdbf69727721f6e2b0f75cf9c4 1f167c74bca9ec83622a8f038ee88042 72ad8ebcd7dfbc87368990af61c704f7 18d2959d79af059e476502dcb0dc5465 22c0b90fbda00bb9a3a61aa922ccc66 58a500adc776ffd5a9655fa3e976d18a 43a723b6845f6f90b1eebe42821a51d7 a07227a41b866d26473f10e6caaeca56 5db9380876853a6eb690ce0453406d16 6208c5fcc94fb6ddafec9b6a5ecfd79d 27f7336ff6ace6d460c94cf1a48e53cb 1aef0af3cdafb118c6a40bdf315062da fe8850296592f2b16abce8cb03e7794 3fefe1e60f5683db247a5be450795511 b47d993a5e2dd15e3a3aa1d2d3319a4 8c835911f332db4ca92a4cdad802b45 edc9a70958a17433b1bb46d2556ba67d 5721c147ce05684d613dc416ee51531e 575266906372ef117cc922af3684d251 dedd7ee03210ff8a1ccbd9e5bb82dd04 5a2d4ea15ef5c18abab6b34711b43bed 4493638824352150940e51eee9dd2409 a9e8123feadc58d5983c36827cbbba97 29043510fd903bae457cdd14086d7361 666beb2570f33c64f64801ad2940cdd5 7b2c86b542f822b1b8cf782e8c539948 dca1e82e7d39edcbc2c2c81e2232aa95 863d6f24aa1a478e569564f61ef539e3 9d82d5874349f623d834dead2eb68d68 e4bc9cf3aaff441f19d740e0f6a9a113 83db7e16a49191e5ed3696d854eee1ec 8aa9a549372e44143765ee7ffdfef49f 44c278891ddcab2dc0e3666c7d0ec7d0 2f369806f69ba9cb55048eb8b7ed14b6 1dbb02c20bb93af81c1b3b2ed8d13bf8 6a06a8905edb576edb976bf16d451bb2 8e1e365bb6202682f43c51e53897fea cdec84be0cc9364eecfe83f5db813c4f 9472d19187081c62fce798408476568b 7af4a575dc3883afab355379ede04b04 ad4b1cd62d72089e200c039929e0446f 73beb19621b7547af8a3d805c6a10776 a26d63de878b28fd52980f173b56924f 10fda5aa525f6232be8100817bfe3c8a 30f96aa701d4e088becf71e2e014ff6f e1197a4adc50d16abecf71e2e014ff6f 31546074e22ec0b69ce1b0be9ab0ab75 881cf849fb2d003514d92936db4784c4 555a48617127033c25ad20bb66839d61 bf506399c934c6b3c3eedd6d54e2a52 a1e3c4be68cfe110d9e74b7f1cf9cf3c 556ec1ccfcb79f08a7fd25564c2e888e 4415ef6ca1d9a6a3ed734d5df4ac741 41175e2053fb636852e23117ce8d150e d17acdc9dd449748ca92a4cdad802b45 528fffd59eee9bc5851f021b9ed69c58 84dc5b9d1a60419b7cbc6cda01aaca49 44f4bebe8b14badf314b3b3dfd6337f4 ea3561150f4f2790253c03b7df20edd5 eb575f66bedfeaf629ebc23acefb248a 98aa3b11abac3d73b7e1a37f8df80928 b05d651c17e9e626ca92a4cdad802b45 11dba0c2ec8127356c2fe9dcfa1ee2f8 1c6591c3fc686bf24132f89b3e69f40f df037c72470d33217fbbc45f009914a6 c2d2e3f46f7cc1e8ba69e14689f7b974 ac813039f9a4468ccc777d23edf2f8d8 b6bcc1b1ccbf0ea0996e71cb10be68ac aa5fac5424a05c6be092951e627bdb8b 84394f62a86ddab875c67b3b1e763fcf 5662d48de15dcacee1c2519ec6f06d41 58da19fef63348a56b6ef877dc525506 7dbf6379da9fc6c3a4ee0fb6a51564c3 9a58eccb0ab51d2fa790ab932daff416 1bfe2cb495f63c8f6bd865f153842b49 4e384de22a760ef72e877e82c90c24d e3d7833469729b2024da76692f3228e0 e1134a7e936b516fb1bb46d2556ba67d bd33b9efe58ebefa99f8616cdb5dd27c c7bd3c33967a3f80d292079a67d9d7f4 7c0bad8b2b62cb7c673ddeabdcc8c6e 71304f56bb1165e7f42b5c72b4901f94 37e8db361d61971b184a07a6c7fa882a 238c6d6da1c8ce2970097c1b40e1ea6 c1daf553ebba8c07e4b68d3b17c43658 36b28d2fd1085c53b6581f6f0cdd370e 6c6254a92c485787f1ca7626ddabf47 8c6c271a149d8b68949b12cf3977a48b 752a3ce746670be176ad064d1c5fdd7c b2e13c37cfaba983321ad52c1815971d 22bc49837550bed21e570d3da54bf9d 1eae4fcec701c176e742b0b5e87bec54 4eb5fe734f4eee71c6fc5b6f6b2a70c f6a93b95e10a8b2d6aea15d30373dbc0 4856ef1e80d356d111f983eb293b51a 8fac42d0e74f5b454ca84d60642ec7e8 bb7ca919b59a3a2e6b418c7d9fedcaa9 527d52b26bc5b397d8f9dd7647048a0c fc1840952ac878c99b63159808b36877 dfe114950aa726f1cfd826dd468a5497 e5c45e408595abe2bfff0ff366de48fe d45b86de9175d1c8becf71e2e014ff6f 5695a98b66b2b9a9c81ddeca50aa3117 437f3ed08c32f2b9092ea6b09901598 f70df58949dcb108b682148e4ffe282d 49da37115bf906a7548ac25911d2130a d0cd9b6ca511c6b9920355ae987b66f1 1d0a46cfc2799eefdeea60824a43a0b 9ec13da6190ab1a3dd141480e2c154d3 df7c767eba9455f651a95aaa6caba1d3 26f20ab8033f6937ea859f774de0c90c ab2759c8e0cf3b8da9d243597c4c2c2e 554a04784b2f0eccbc513bbf92336c2a eeac3253fc4c0b429092ea6b09901598 6e651b2230b8474c2de77cee5dfe5031 f16194da236b7c595264a3f45260d821 53d9995a0b94fd37428df271ebc70bc0 77a759df0166630adeb0f0d7312576e9 d471c4f43f008df5c1bcae9def1986da c41580019d43348d3a3afd30f2e86bd7 cb9577139b34703945e8a12904b50643 8aa5d1c7ca4e3f2e61b9ff60b1be412 f3e467dba61ebb972a84c9dfab949065 5823e5205bc7eb46cebc874b6631de1 2a0dad4f32251b353ffe0e5069bf1eb5 2b5a333c1a5aede3b5449ea1678de914 9ca127580ac4f9712aba37016d02e162 34d28083d9f0c31fa2e586b3e41e79ff 2f2ed1fa349d50f3bb15a692385994d1 1e2f9cb6b33c92ea82381b04bbe0ce6d 886246c286351bc6cc010a80df5d3c87 abbd90920a240df2ed3696d854eee1ec 836c3205338292d3a696fea828ec5eef 81bb9f249771d31ac675ce607c2b4b5f c8fa4fd7fc424121932abeb6e2fd4072 4b1227b5dbf1cad92e877e82c90c24d a3881c3f4e8c807f2a9eb0f146e94477 af814b4b43fd826a3a0daf3e5400b95c e97af5444370eaa95fae7711b4095f8 fc521be0cb604c1aee4687e8f2543e 66d89101c69cd1fc1e4f5422b970bb55 e2ea542d46c76a002a025f627835d975 63dceacb54c3c170fc7fcf88dfdc47f1 bc8e978655bb60c19fec71e8f4aac226 d10226fc9aee707972a38ac2b8f5cd48 260f0644b293fccbfbc06ad9015523cf 49a114b29a54300e51a95aaa6caba1d3 eb46e6071b4f72659bc0c5b67eaafbc ba1a26acae4b773431141a7d4d06dc13 1159faf9bf78998493680c5a9a367b4a eb1d1ac801d6bafbf949c235bf4afe6e fc2b81391e185db9f1335b4fef92b83f b18899d2b002ce0f80360680c1602c7d d6f8cfdb1659142814fccfc8a25361e 5b74aff38b82c58f453226473c9b5a05 85abcf26aa761e9b21e570d3da54bf9d ac6977ed53e041392b03387fa8b1d3d5 9025ac13eac31cccf5cb3ca022cf045c ed6780486efd79a9fc3898548dce2392 274bb81c9dd9420b748999a5d81a158c 4baaabaced0c9e0ac0e3666c7d0ec7d0 b4f385b36ef0918d9393793f9cf3dbea 1cff510c0630c3cc673ddeabdcc8c6e fed8994632223d52afe1d4530f4c6e24 f8dc466677c26ac6f63ee8a34069b7c5 173669aeeba92aaec4929b8bd41b8bc6 37a049a9e32c17b2afe1d4530f4c6e24 27645458fec3d7ed514e3d96995c555d df741c5b5cf87b16c85067e81ba6deda 335b3ad6f7a96bf251a95aaa6caba1d3 77e3ac704a2933d0921cb81cb1632a5e dee83e7ab66cd504d88da0963249578d e9bdc6c0a9e4675bbecf71e2e014ff6f 2c08c221f7c6ccdcca92a4cdad802b45 f4814bc5063ee3a95f0ad3f281ff385b 1b5b5a43e0281030b96212c8f6cd06e 5042d8f781a58c4c9be457a8c6fa099b da73c98813b82014d94cee2a22cdfdd2 61abf78387c84ab67bc163a1196fba48 6cd11fccae408795a99406d7384c870d 91b636d0c4729cda1d9cc9d194c8533 2236a1b9cde71eff13d31c5a107f3c4 6283a8fcea4976fe47bff85f09fd66b 42dae5b435c27851b11647ffa4306609 2e8a1ae108dd0d89e8a3b392b986583 f9f50e199b706caaa148ed368ea0303 ad1db5ce98d385fdd1e15301c83686f 19d49c8015948b742d60c8689a64d7a0 2c3e7991d4b900ab35fea498c4ba7c5a d9b2fc71e809140bbe40bb45ea25a041 51f4aebb148459a45fae7711b4095f8 a6acea161250379aba3e2415e22cd45c 76cd991287a5aac9acc9e84c45e9a610 b3047118a9b0d7b7e858db1dc3499392 c778e4d590417da82205cec171865d70 50e3333f66829c8fbe40bb45ea25a041 16bd0438de54fc91b1bb46d2556ba67d 7611c8605cb47d74b11647ffa4306609 261f4a30328cd40960a676833b21afd4 e21ff1f90750ab24b8085998d32fb54 8bf2d0d0b01f6476c3fe7930fce05ded fabcb04fc015f822ca8bf2993ca245b 30f0ba361010ea11e66cabd11ba41eae 372b1a139379f5198e42313717d27982 b659b096b9cd0de093532d4a06abe81 2b246a989e9e8be151db49e653372c20 128ad72f92a3e96db96212c8f6cd06e 1151e7cd24f5bd21ccbd9e5bb82dd04 62032b070c02c6b1570673441ebdaf2b 1feeeaeb8b56e46d2dfaf88f42097063 3f16d6ac013aa946977e464a4b82757d 2961e679a651dd5ad95ed6bb7181c98f 1f6ce6dd6720436642534f02c8e8b5ac 618e8b78bfa803dab1bb46d2556ba67d f7da98a59900ab60becf71e2e014ff6f 85bb9748c3836e566f81b21e2305c824 a86ab6f8af60c6afe1d4530f4c6e24 868a5166e31428b16d8aac72cf093e59 100c3076c74ee1874eb766e5a46fceab 5edaef36af2826762bf75f4335c3829b 1660d6b7221223708a49a62fbc70ff9a c58db3209e58872556f3b9566f5b3b77 ff794bcc5ffe460169e495ca617c20a7 1768f55a3c29cd483337cb9d908ce86e a838af854310e283e8d78fb938bac492 69c6599f55cbe2474eb766e5a46fceab 47a0e5448c4a3bcbb1bb46d2556ba67d 532070461b869aa7468dbcd58a793b1 5b0710d5e9467e847d80f0c0ccad8837 e6b8fe458aba5b0da86ce1de1d1e7ff6 1c5a350ea0f55f793fbce9ec40e1f047 2525b83c84bd3afbde2d51ea8231791 9a2854600f24017949b12cf3977a48b 4bb61e5a72bea4506ca2b6e5474aad11 676ea229aaf8f90858c27e607f6e2d4c c8ab7f11ecdbf873921cb81cb1632a5e 3975b2350688e38c65552c4ac8607d25 1e54527efa629c37a047cd0a07d473f1 1a64bf1e658652ddb11647ffa4306609 383a4d1ee8022e9a61fd7e090d4d0d45 4e201189ae860008bc1bdcb65bf3d926 6056451a4b65a12858dbdf2b5c6acfca 109567d7d55b8fe515a520abec2f04dd bacf0105f617a750becf71e2e014ff6f f61888bca4392106bc790478b4a84bf2 470f53291d23cf0abecf71e2e014ff6f bd3130013af1d709be95cf6cfd2d0f0e b2b22a1454f2c88bf63ee8a34069b7c5 ec67edc59aef93d9f5274507f44ab711 4e6131bad4ae8b6c91af0bf49336b8c6 b57bdd19852e0084f7a5eccf728c3b75 498b7c799350d1f7c4acded0fc8a9118 332ac5346c7d3c0f8e35db9103756ad5 676e3e6067fc1b065552c4ac8607d25 3220cc9f67cd763af63ee8a34069b7c5 2dd397a57b35e57f2c6000457712c234 a6842a04cef3e5ce69a949ac99a843c4 8b049c92888475f67c3c6f82a395b347 5822af4cda46d8c2f952aa5aa5267659 3264f78bfc3bc58c9213ea6cb12e4e3c 72502c40fc59b62f4fb68b983a4df738 872e01a1c34494b737fd267fe4b3a5ee 22abdb50fcc189d58a1aed4fb5fe5280 d000ef0c691489c9801b0db1d49ea10c 41c5c3955dc6525a402257734064a917 6a23da6a9ab0771caa69dfdc5532bb13 d0aa115eb63f6f0c97df6383472cc5b6 8df83b28d786ccfc10f2ef3071342a2e b8c8758f8ee058182a9eb0f146e94477 a5464210795a915f9aa6f213afdff14d d691906c87bb2850a9733fa2ac6b95bc f64f81f7cfcb74033a2b1a2e5e169910 8e2f0f7f5ca505b56227cba038bf7c95 f795a928e1c7136f94d732a98738804e b0fa729f031a97d2c3c561b608f78503 7db6c18d976e52e451553ea674d2701f 40b272e537fae1418277d1ad96e14e9a 718bfae0c87ad9fdb04112587bd2b79 bef5b9686c2f93f46a2345809e2bb169 f120085da70b2913627279ad10ae805a 38f323fd119d14ed2a9eb0f146e94477 dbded0816afdfcf776ad064d1c5fdd7c 783577d449be4ded3121f82ae456ac81 49a93fdbcaa0302ae434963ea517a487 d6089d1b75c35945b7e8c57d131d2ca7 d4251f9cf7f1e0a7cac1226cb3e860ca 730608de801837b495b02c654da6c998 29793366c4b45bf6f43c51e53897fea 3a735f1a5fe8906cab0fd77f2e9aa584 1b25c745164e53b822d2fb8fec68f2a1 94c0575659c6cdf2091b4cb93147ff9 7022a37dd7fc841ce98e65cfc071e8a0 c21cb9575910e30bf0174ad879a5b1cc 3645fce32715e0a4bda72093f9b5aa73 53895830484cd75d9a68e1b6bb3d1631 c9e555bb1a17cfbc5d918097f81825e3 3bd66fc2782bd2019766e05e7d6c9088 a111cef175177b3cd89cde5d5f759ea7 c52a2f6396ad8d5f97df6383472cc5b6 f91d1032b7cfae618e4e882feb9b406a 5c4bb9e23c6cd8511371f3c322b54f2c c4941d6a2266813c3a2b1a2e5e169910 ee0232b37ee6265bda72093f9b5aa73 e6581335186f5f6d8f01b3789ded1e40 dfa6e60e478d5053705278f93079331 7d59691881b13cc5702956de1b65c053 137f67657cdc9da5f985cd98f7d73e9a b6755cab505f437375cad724c63e222e 72d1eb25d911b6d8913eef1194316fef 209c79dbd4f7ad944ee32d005103a21a 26d201a532879a60a7fd25564c2e888e 1963641a15916c03709ce7955adef61b f2b350b6c36eb73d1fac59b924f395d9 cab3b584786dda8c85c68dc758ce6c5 5d385a0a87d0df4a51a95aaa6caba1d3 816f9a529bf7b14817d5c90faf553cc9 663bec87ecf2e0adad0e351bfd714e3b 5dd97775bf24ffa2283aaea3c1a7dc36 61f4cd45f477fc7a48a1f672d5ac8560 7dda382210dd768680e74058ee862f05 94b3689f899c8cfbd575863af568c85 57aa7560dcfecea81edf5a868fdffb8d 77d884ef56bc97a8b7ddd670a53fb311 58d9741ad324623e9872e22d6b8eb647 43fc65dfe952a7f4cf6923c08156107b 5e857724d62912969acee38782dd9680 491653e537f1a701697b84068abf146c 5dde5594b4e9e86ce60ff101126e254 e98955e5d46a492c036e20efe5e5ca8 744f3661d9030c059cc32a851e7d6f32 58569e7feac27d3e5da8146fec888d45 52a988b361f6cefd685753e73124c6e8 1bace29924c0ae42226fc3902f16303f 8d14c94dd325400d93b973d059f27e65 a3e8a28918af7b07e3857ce739e6606f 1399eab8ad7262eb7f3efc94c2d31dc5 906e2e532b7156b612be63c74304797c ba0c32b3feba49b0b40adee184c371d0 63cc90709837d314a0b2db16370345f0 d18817af1a2591d751a95aaa6caba1d3 9e6156aea0c7e60ff7d6fd2038bf9a11 5ea6bb423b1600141d225d751745cd28 528c01214da6d4bca7fd25564c2e888e f34c03711c3fc44ac10e9d4ee4bae4f4 26c382bda051376daebb91b7dc4caa91 98b30f0a29fe2a1ba7fd25564c2e888e 98a4518ee8e706c94e84ac3ac08acdb2 69492fdcd530eb3da6ce6972f601a2e9 dc2c49d8617d400daa44bfa127abe4bb 5d2e6410d4fb760befdff89bf9a96890 8798825a3c68e5c7e0470509f60266ee e717bcb56d012a48b1bb46d2556ba67d af834c760bf3c75043f0e92e826556b8 34412b56217de1112b12ea83455b0f44 b9c0f9dbfb5a1c0f99684c8184952917 a39ed639d1da66876d57cf36a7addb49 f81db986082fd0562ac826a3c82da491 95844f86f4f0a6b58a6cf8c6b92417f2 6f793e0f29f6b0b4da82e7357e8ee170 48862b67f5932cd4473f10e6caaeca56 d0a906517e0ec98589fc8cf5232ee9c 2d41d907b7cb558db6f3ca49e992ad8 6c22203e5ed35df9ca4aeb694e04f8df d652c35de82c3f3141fd6622cb2ed89d 30964e51b5218487577fbd27130e143 ec469722be9d015c1ef32d215d1c8df5 1ec1c4aa9190e767da5421a736792418 ef0703db8a04f8c0c0e3666c7d0ec7d0 a34dc1b89a52e2c92b12ea83455b0f44 6d01a15517fcec07a546b0c1c6a4821 e128a506f2e29a6796cceb824e3c56b0 8fedb0c03a49bddaa8c38723d07b122f c7ce82b4b1e795b0cfd826dd468a5497 22d57b895b9cd22137ca7da637f7c918 aadf8736528b0f46857652684714945f f414e36d6daba864d9bd5ae694086d5 baa2f488ec67a0a7c66e38c3984e156f 2262d8b1d5fc79b67211919686015200 fa997987367ed84ef15cbb7bb6511cb8 b4ea44416a06834af200a72c9245aee7 2c304c54a6141d214ff3c6764341833 52c589e86fd500cd4a42886683bb52d2 3d6e798bed67ab81f00cd8c386c592fe c12424d1cb48ce0fd0a4f72b67c7f064 aa41aa1837c809e1e12eceaa46673a5d c683e8e57b20ceeab927782fc69a1fbb 6c50a9b8e01fbca27dfb1ee6a4b12bf8 cfc8e5925bbec93de20af544ce47dd47 d07c8208ad9dc35780e74058ee862f05 9807c1d0bcec85fcc3c0146ad3ea2d7d f045547c7c6e5d0ae74479f4823fa2bd 1c14ef4c48b7d95d61c6c61410fc904b b0a659083ec6e936ca92a4cdad802b45 95ebb3fd80f885ad676f197a68a5168a 12498dd65e8d65ac3b6f5204eb590354 da34cb394fb3caa58dcad5127c74b8e0 61645b21c344e22a65dc1e664bdf2e6b e999dfb757ddca4830e7f6cd6fb3f1b9 ffbebc7c9a32a6f88ec8762dea278247 e95d4b7aa9617eb05c58fd6a60e080a ccc6b5ace9f5164d26068f53fe0ecf07 3026dc837dc5dd7a157e36ecb370d387 7434c137695be0eaf691355a196da5f 85914342038de6f160190e29962cb3e7 1f7393970917e558b4a20251cec15600 6ae21b4b5aa92db4c79d3cf109867c13 1f37a6fbdf7c807e7d439639178556bc 477ffb061f40e10e148f8c864a546424 706083fa2a8c2b50bc97decb713a2619 24dc3903b254fe41b448bf2dc92c4fab cdd58286e3e428ec1fabf3cbd0fc77bc 9009d75263e350ffb3b0f00a15b90e0a 72f6c3c3078ef567dfb1ee6a4b12bf8 3c02c18d64d3f13b8c988ea512260358 791885fd798b1981c1006ed55bc1a3fc 9abfdc63aa88be60733269057ed164db 9240401e750395b456fd4619a315629d a281de4b24f5500d4c40f34de8f3bdb8 a54ce961d973443a0daf3e5400b95c 1176dff7f0ec879719d740e0f6a9a113 eb40501934995e1a6560c47a91b4db1 5d8476a9aecbbe1e9ec9fbf723f60ac0 a583ea14f9da98936436916a86a90ed7 a59c142ed6850a26ad4bd5fc1269475a d1dcddb5b1d7404dd9b0c189eb588ce6 79d9cd9a0cc2184ffcc96966174e5650 baf3415a57e6f282b23c333ee1a445e 88a814d2107f882d3d30c6f269d07627 9e4a79d30930cc2fcefa74f1d0bc6e6 f15ba529063317d241b8aedea2034739 d4cec810b46292ff1f759e96682e340e 9de10b4469cdc435afe1d4530f4c6e24 7faf7e8c2f383eafca92a4cdad802b45 7aff83bed75b6778e5e8ebca62d4509c 350be6825c19fb14e0675251723e1e08 fc99fdfd71b5662a669a6bfc71569d a495bebb2ebd72f3dd7cb6e3ad90d3ea ae9b244f9bee122ba35db63c2ad6fc71 a886262ac3be5ca7c126a452758c84e7 13d0f68f32a86bdfe3857ce739e6606f 5e4a1ac9bdce2766473f10e6caaeca56 167ec61fc29df46460593c98e3e63028 70d31e0100cab3fd77954285e7764e1b 1713a1ac8aedcc522b12ea83455b0f44 ac482136fc30fd5ad8f405c5ec4e8cb0 23e8adb3bf1961f85332d3b92481b499 819b98c138192c88e5e79d9024e2fcae 5801f9eb726b56448b9c28e7b121fdbc 4dd97a6805c2797d18d95feceda870ca 93d49d2e5e4ab1b7ae33d942430658c 2b043f3cae45d4937cbc6cda01aaca49 431ca41fdf0897c628ccbb4eb8965b05 6ea4111bb47039b3d1de96b5c1ba002d 7ee2193b072afa652935bed12a852dcf 79db6e5fa70b39467df67c910758dfc1 36b23cc38786599285089a13cc567dbd 1b2ef0809ca1abc7ca92a4cdad802b45 37e781aa8ae8933a61c6c61410fc904b 38334022b922a9d4e7540f431cab4686 752d240eb33f328cbf95baecbc060806 f8c4bfc065e35555aa44bfa127abe4bb b554614b14148e4ec0ed6ec757ca50f5 471673f3f062abd473f10e6caaeca56 4fcf76fa7f07a0008bb11dbc05ffaa74 f6e0b8a0746d36d74eb766e5a46fceab d5c4532a34ba10e6f9798a883006064f 4c6aa3e7a8130295b528c0abff96f586 8b74a58c28cac774753d1d86ac1bdfce 3b2e74068fee2458dd1e15301c83686f 90902c72c195d3ce8256c497dfca7529 8b722405131e569db927782fc69a1fbb 545abd37dd50dad953536e7c905b301 3ddda21d4496fbc693680c5a9a367b4a ee0edec0ac0578082ea8e4c752a397ac 2e37013195d95f494470fce578e2b84c bc7ca9eec356ce21ad32396cbf7f43dc 35155f8cacf6d72471fc7d1bbf34b979 34762df3ff8961188bb11dbc05ffaa74 95ddaba8142bb8572b12ea83455b0f44 3dd52c850785a6ebbaf1745483a8b34a 692001fd91d8328ef421855cd210fbe9 1e6e7bfb08b6b44d615949fb78ffe44f d76c9eb102316ac631a8860374e7eed da82ba81a8fb0737d06f1bbd2acc051 870086475e8af25bae57d337a2e5e53 3831ed7bc22100f7c3c8fbe62717803d aec393b8c73d3a8ae4bee94a37836d67 e337e9940356e866b82298c7ee2fcc7 575ac5c53ab9fe21a26fdd1a1e470de9 a49041daedac3ecf2fdea40a56b4c57d b0810f509a3c4cf895cad68eb5eb0e38 1ad321f067ffbe7e51a95aaa6caba1d3 662cd6478fa3dd482d7d789814cae761 a720d17573022d9ac00fd1150223027 9748063440a449ab3db642d8dff7fbe6 7a8f5c085be36a8052aa494042b7c9db 2c1c8c4aee1e79d52aa494042b7c9db bbca0e2391217de71e95a82bd2f5907a 9fda50a84e042ff1a7e7e5ea49ad8e45 8c1b20c4c37dc679301fa882a9655049 3ef041182cc1d037a9d3767c58267708 c6dbb4874805a2c6c2998c73c3c35adb b76bdcfc277f54007f3efc94c2d31dc5 2cc413c3ea9800b3cf1e58caa15acb49 bc533f9881b0775c3a0daf3e5400b95c 62393db2dee065956e28ffc6e1f368fe 9f5d5b655ebbbb9c4d31b03e74c723a3 87ee241d3d0d1dda4ff3c6764341833 7a0f252961e5bffad95840a0da458be0 8361aa7ae1f7dcb582ea71649733f2a6 f7b9529fb166ee56ac922d597da8f180 20e01ed9c14d4659e61b9ff60b1be412 f238821689b42db5d95840a0da458be0 affba519865b72fc2c95ae1829869305 a34260b8cdb1ec95b63de680261b9e1b 15e52e44cdcc80ed13ded1857c15b5b6 24c0c6d558d4d01d8772618b7452025 12d463649ed6c176ab98a7077c964a60 5ad4cc3f8e191c61d31d4c555d4c5a0 3ac08e66bd7da4c35da01f298003d56 e4b5734836d9519aa8a84951596cc1 b87ae16029527cf3fa87597d91a3e9a2 cfb6c8867c6dd84c80e74058ee862f05 f8b92a0ea7f4705c9fec71e8f4aac226 8e39ba11949027ce14914b7641b2fd67 b990ae1858bb82c133f84f942f9a2bf5 e4d396067b97f3676dd84bc138e22252 5f32aca282eb9167ff1370452e3a0154 17f89c25a3142ee09d2b99af43da16b3 e67509fb6192be6a7e7e5ea49ad8e45 6482e3afc2664e32d30f2d8d219e111c c2283d62367d637249b991141ee51d9a 420519a0f7390564f500cc506a763c18 87020c25b9166cf11d27be7764701cfe 56cca58a4f37323bd0889537a7d54003 56c056544a2fba1614d5081e13f5a1db b48b8791a3b09753b8d3554bd033ee9b 3c103561d9a29ae7ddacb20b6a591772 db91e70ebe09d5edf446f92b52bbd82a cc7dfb5ecdf370a178c14a9d99ecf91 49f3932e6fe0828951cc889a6330ab15 d8b50ce6cbfb56a4786993ccbbbff425 1a0bc9ab92c915167ae33d942430658c c2d2eae7ef1a34e1f500cc506a763c18 2ef61a1083304211d27be7764701cfe fc5d8e25052fb713f559279c88cd9a37 fb20b20452ef661f500cc506a763c18 6c85bbbbbea160bd81bcd6355b440fd5 e2bdf01abc79a8d054b49557f8ea8b42 358ddbe8b39125e9e81913b1de19c3f7 d967be366b99ac00bac978d4dc005d3 5881807902ace2dc7d26edf2a8ffb68 936eb7eec6b76e4b421c2195de5e56c4 5a841a8269d3560d756e18912340de0e 481c55b1fa36f6c7d834dead2eb68d68 ffbf897d9867fadff9a62a8acc9e8cfe c721c1e89e68e01fec4be884ee173bab 35de0d0cc71179dc1a98dff5b6c5dec6 626a407fd0fa17d3aa1fca93ac59c77e 9cabc9b21a7c5fcab02964031d37f87 3134927c492c39e241d7734b73edc062 2fe4a878e34bd3bab8013668e30e23b0 62a7e17ce83e2f9cc0ed6ec757ca50f5 7f701224ca471b2ab8013668e30e23b0 23e7ae83601f893b575116d39d0ffbba 70cf106dd369bf3ac427f8508e3d634b bbaef5a610b0b4d5368f3995546e59c8 10555502fa7b3027283ffcfc40c29975 fdf2a756a86b2946c427f8508e3d634b 4eb5ec5502561124875fb780d36841f 79c9b9b6e2cb15a2dc1f7c6230f38f00 468be6b80d1c7dd655ac255cda83e91 ddd5e2bb26c82862b41ac95a0a9b3aa0 a2fa0bfd39718f1688a610ac9b7aaa40 921f87f3d9a4cb8ddb37d391409760c4 93357732c6306cb51673e1c313348a01 fcbf9e1dd55ab172ce27281f3b76d1f5 9a806af16e5a102786d01a5629641c74 107699ca67fcdf3fea999fe4ffdc2504 3a46c9b9e8b18d6a61c6c61410fc904b 2d1adb247cc7a1e353da660a6567c5ff 42ca4f6a7d7a39712a9eb0f146e94477 38f403b915d950d3ce8f4a5eeb103d2 27495a8836ead3d55c5dd9508493909b d13d0612c64c1c872457c273ba02ebf 6201a29763c2256a2bb5796f842ca661 49d6a631f23a324cde361784b4e1f04 8b8f4f12e5b142c016abce8cb03e7794 dda0d7e01642f399d4118745f38eac76 ba817f535c2668081f757787330d376f 61c4db4cd886250f473f10e6caaeca56 31998170afc1a0b9d13bda570aea1f6d 24819ffdc34b28efe4bee94a37836d67 191f9cd970e5b0cc174ee7ebab9d8065 c8c51e709d1cdbe0673ddeabdcc8c6e 7b74eb8f053aabe64eb766e5a46fceab 4dad98955a47e81a8b3877a62f2cbe1d 307e83044ed81f6c473f10e6caaeca56 5089b134ef31941edacf4de272c1e30 8e8da02ac0168a47ec5e3fe5c33367cf 3efdb762f2663a014c9dc258dd1682ab 5fe3753b18cb01ae1b581e1887fa67b 1feaf720692bdacc27a1a7fdc1941283 4eeac6360031021b8141ca5f94f1242d d9867d92edba3d0cb96212c8f6cd06e 794fc3e07d3c5954514e3d96995c555d ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03001627_test.lst ================================================ ed751e0c20f48b3226fc87e2982c8a2b d72f27e4240bd7d0283b00891f680579 5fa533f71e7e041efebad4f49b26ec52 8bb332c5afe67f8d917b96045c9b6dea 9a82269e56737217e16571f1d370cad9 d9159a24fb0259b7febad4f49b26ec52 e642ac79a2517d0054f92a30b31f64e caa330f85a6d6db7a17ae19fa77775ff 4171071eb30dcb412dd4967de4160123 1d9dbebcbb82682bf27a705edb2f9ba6 df51cb83f0e55b81d85934de5898f0b 7fe08cd7a9b76c1dcbde89e0c48a01bf 33c4f94e97c3fefd19fb4103277a6b93 764866604b035caacd0362ae35d1beb4 6bd633162adccd29c3bd24f986301745 ed7b1be61b8e78ac5d8eba92952b9366 4719c75b8ce30de84b3c42e318f3affc 6b32d3a9198f8b03d1dcc55e36186e4e ed953e5d1ce7a4bee7697d561711bd2b eb04d1bffae6038c4c7384dbb75cab0d 64f6991a3688f8a0e49fc3668cb02f74 5ee976518fc4f5c8664b3b9b23ddfcbc 72da95dd6a486a4d4056b9c3d62d1efd 18bf93e893e4069e4b3c42e318f3affc 92e6546c4aca4ed14b96b665a8ac321 c520bc9dde7c0a19d2afe8d5254a0d04 875925d42780159ffebad4f49b26ec52 953a6c4d742f1e44d1dcc55e36186e4e 64ef0e07129b6bc4c3bd24f986301745 b3a9c49a1924f99815f855bb1d7c4f07 73b7d6df845221fa9a2041f674671d05 6a00357a35d0574b8d7d306df70cbb46 ff8921eb06e95b9cfebad4f49b26ec52 9b902b5c6570acb314b96b665a8ac321 8176364215748b23490ad276cd2af3a4 6dfb7b5b4bd0d5f9febad4f49b26ec52 b9d60d124e24849d37b2bb75885cfc44 cf24fc2d10f8da31283b00891f680579 c709aa613431c0538a653a9f65a410f6 5141e8716b98a16d632786b910371d31 4a329240c6a9d2547b11ae648ea92233 25196058a95b4fc3359e362142e70c8d 6d78523e939aedd482e23b5f9fd46e1e 60c0c32187f4e2ddf51f77a6d7299806 7facccfa81369078a8930422448288ea 55eeb952519ceb87c3bd24f986301745 2499541ace317cbb8cb5d9909aeb1309 9979c8433d92fd80d1dcc55e36186e4e b72342e210414024e3e472a115551ec9 8a5d60067de905336c183a120a388982 776c1d1857a4ea3d853c3fc864dd58b7 bc76dfa9e0a91e131e06124bec25a766 a094ba480568333819fb4103277a6b93 d621bfa4a44a98e3829e1f3c4926c485 97da84d5d78d84cc2360e5e238139587 a1e6226c3a23ec808a653a9f65a410f6 1e53d84e48bb7d25febad4f49b26ec52 106a0dbaead5066519fb4103277a6b93 22ada577361ed0374b3c42e318f3affc a4d7c8b97066cb74f63e8e405d49b8ce 5623d0ec9efedbc9d4da89766e80607a a2824df0ddb58c0617b431cae0dd70ed 9b4d530487df4aa94b3c42e318f3affc 8f0deb6b599006a22cc460e9d064e57d 2718b1d46ca52df052bfb1d5ec273240 2403b6769a03c8a466ab323d8f805a57 a345ea2820d2f4af7ff6ace05b36a5 1f501c5ed6423e259c89c86daa5af59d e440059fcf6f36496ebf11292bdb9130 b1add8182311f2a9f71e06115e9c3b3e e4a890f2330ebd7e4a11872aa986426d 9d0b25421c13008e35836c728d324152 7661a325724ae00acd0362ae35d1beb4 f551bf7431e0fd7cf937a9747c26991f 7727d0eef3eeb3ba73b2b620da30da86 5607b02869c1f8a019fb4103277a6b93 6dddf2b95ca09bf5febad4f49b26ec52 77e7660d71c6f3befebad4f49b26ec52 8affc6302970a589febad4f49b26ec52 47cd848a5584867b1e8791c225564ae0 7f2f8dd929421cd130e6a28391d443c5 97326604c5fdff1febad4f49b26ec52 8ec79ed07c19aa5cfebad4f49b26ec52 c0c823f094d972c94b3c42e318f3affc 780aec25d416fa07ca9b40e76e725878 317a2cc9f3b54a48283b00891f680579 77fbfd2f194ed73975aa7f24a9b6003a 4246c8c293c56ea34b3c42e318f3affc 9b12d223347d4bdd4a11872aa986426d cc3d9160369d09845e61ef8e2af97499 e69e032ca0bd60a4febad4f49b26ec52 9dac39c51680daa2f71e06115e9c3b3e 31a3884f500d9fa2025d98fb9de28cb 19ce953da9aa8065d747a43c11e738e9 fdef0425d385c1cadef295ef48e5307c d48dac046436a29ec3bd24f986301745 c65cd2f7588764872b70eac6546e93fd 1e6f06d182094d4ffebad4f49b26ec52 695a02a5620aae6e78eec18a8a3356a2 bd0918d75e22cbf9febad4f49b26ec52 cfb40e7b9990da99c2f927df125f5ce4 cc5b5e367ad8eaf19fb4103277a6b93 d0894aed032460fafebad4f49b26ec52 650d540bac31f56ffebad4f49b26ec52 88bdfdfb2a8b94ca1b17743c18fb63dc fb794b0b3260794bfebad4f49b26ec52 c1e8b1bd34874c83febad4f49b26ec52 fd8c375d0a267d20283b00891f680579 8c0a0360a7353ec26dd3cca80cedd415 1e68489b0dc2bfc3327289c00b6dc9ca 689f7ad63ed9a7baa75d03186a0409e2 46d7e85d80411f50a094848ea4d06501 ea5c19a6ea9b13719fb4103277a6b93 325bf2aee84a1fcdfebad4f49b26ec52 59fd3d1409c0ee2e47bc3701b998a7d5 8707cf0c311ba8f34b3c42e318f3affc c9dc5d85ea3bf4d8a1088e4f586b1246 b1c221e3ec7fe34782b50ea5cffa80bd e4a93adf5399b23419fb4103277a6b93 453a678dec4e9d40f36ea1eb6542fe7e 9a91a491a9e74ab132c074e5313866f2 d04d854533d618fbfebad4f49b26ec52 a5df9c511f51228f19fb4103277a6b93 6af8d7bfa508b8d23759750e8db40476 ce474d7c415941acfebad4f49b26ec52 46c8f742ae31294cb4a4ddb21cda79e5 de3e082195346ca419fb4103277a6b93 5d3060a3470d853dfebad4f49b26ec52 5a3ac1ba6f751bed79368d1198f406e7 dfeb8d914d8b28ab5bb58f1e92d30bf7 810cac0d137efb1d21bdbc0445d9f748 fb912528e642f6ea7c7cfdf5546967dd d3a38afe0a0341cefebad4f49b26ec52 fb369c50dc8fdcc5ff2c92c2a4f65876 bf52432c9b1b5e11f98c0761af40e04 bb04dc0b336abf4b263915c09bc4854f c394dfc3c8573d1b19fb4103277a6b93 94b39e206f1bd77c69e31bb722067900 a58f8f1bd61094b3ff2c92c2a4f65876 fb4e388b57e36e7ceca29403b7226aa1 56fd0fa3863cd4c17d63360731b4227a 250e0d866303abedfebad4f49b26ec52 90e67facc9af413abc19762eaa7ba40f 44ddb3d46266bb0ffebad4f49b26ec52 990d8c0c0008081fff2c92c2a4f65876 fdb00b6e3c3a8c6e9e7154e1e649e020 60ec0611befb7102dbca69f936e89647 699fb3293e219808599dcc439b161a52 fdf0fd3b18066cd7e8b2b8dc0c816caf cbc76d55a04d5b2e1d9a8cea064f5297 96e83c79e8d76d4519fb4103277a6b93 935f5e58e9e15231febad4f49b26ec52 fee36ec8c8ae503fc68456e8da5b9a30 3421ad5a45b85f7a4b3c42e318f3affc 9b42da9217caaed8f51fa0238791f5dc d71d9d23d786cc8dfebad4f49b26ec52 d4b4d348cfdc2aa5f99372bbf9c0b8a8 311c07b96ce39f82c70d3fe6f2ca143f 5f355e2a9fa2f0db4b3c42e318f3affc cc6d6035bb5074261f98c0761af40e04 dff768695c3013aaee3907b60a74e8f8 4a9d3ce54c09a2da696b74614952b2d0 60a5795c905f3bb157f5033576317e1 46a6c470367cb57ec5facc3cc8dc041e 103b75dfd146976563ed57e35c972b4b b60fb4126e9e7c2aee3907b60a74e8f8 6eebd118abb1b4146d60aef5fe7e2185 ebf1982ccb77cf7d4c37b9ce3a3de242 632a5ea290b0730c6ad8177a9d42d3c9 da6cbcac794d377df9111ef49c078dbe 247dd48e4b6c029e4b3c42e318f3affc 225ef5d1a73d0e24febad4f49b26ec52 b8bf7e161cbff74066ab323d8f805a57 4abbd2b632d3aeae4b3c42e318f3affc 44ce5f9acd418c7dfebad4f49b26ec52 b2f125cba550eb8bfebad4f49b26ec52 69e6f0a5e903cda466ab323d8f805a57 c0e667218359978d94ba68807fec4bf4 9a0571ae6169a6ebfebad4f49b26ec52 6897c2665267cca39eea64ae4d2b4158 3f36e261cc87648ac3bd24f986301745 9aece6c6436cde6fd9ac1bf1eddffd24 367dc1e6752cabbcc34bba142e6e15e6 d7b8189fe69cebedc41b07b1627c4b43 4a672cf09d7fdb7c83b06dcdd869d9ac e30b412be565a1026efe57da6d3d385e a565a80b093f12005481bf9052f50100 1c17cc67b8c747c3febad4f49b26ec52 1cc3513e4d81516267510d684b7bfd11 bcadc00cd1bdc19494db33559ec0df30 ba56f02dee485974c242632b2a8c3129 32b7f9324c56d6131b02cde7e81f0fc3 662f95ed8d41a24bf63bf7d908efc575 9191445d1c215cf09a8ef44e1d2c5b75 u481ebf18-4bbb-4b49-90c9-7a1e9348b647 3936ef166d22e60ff7628281ecb18112 4b01dfb6fa24eb4c4b3c42e318f3affc d1e9d5b534c77a2a14b96b665a8ac321 1aeb17f89e1bea954c6deb9ede0648df c7da2d72f9927f1881dff5c2e57ad46e e41e8329ed0c0b88d93768e7b9b1eabf 9c499d86350d32a28639ef683ea7ed9b e6c7e75046f8946b27bf2eac25b523a6 d2304054a8dc7ea4febad4f49b26ec52 858e512945d4544644175b4dddf5be08 67713c9a313ece7226f51cb1aef0ea9c 939383f36692508afebad4f49b26ec52 c51937167dd0db45f7628281ecb18112 c31a206ddb92909e84f0c4075db76b7c f46ccdbf92b738e64b3c42e318f3affc e4114b81f793628fe8f8c11a24c52ebb a38cfc9d2003117e19fb4103277a6b93 3aad9ca0d7fa80d76beba0439e85fb62 9231ef07326eae09b04cb542e2c50eb4 7eb4a453070b3f090d1267f8054d8a8 4a19f4e47476ee654b3c42e318f3affc c91eb95b40e4b6f8e83221ad0d21775 c0e5edb2602a7bbbab3d781e4dcb85cd 75716acbe4ace649854cb2d2b60c3da8 d57c9aac973c3722197c43c7dc584772 4f7523a3d276bfae4b3c42e318f3affc 80415f427a9368227678f114ae956b82 62f442aaa230eb34e7697d561711bd2b bc184c3cbe3349b19fb4103277a6b93 3c8864b07a5c0718861df5a407858f2 27ea798c55699b6d2c528d33bca1ac2 1da29597f89c2b004b3c42e318f3affc ee2ea12a2a2f8eb71335bcae6f5543ce cc2639f8c584001a922dfe32810651d0 cc30a723aeba69a139e0f39f5249b0ba 4372b33dfc84c2f56a9ab6fc87e1604e bfbc5e6ebe1813a5d9fad8aba2c312b7 d9bbd1a1eaf6d2259d3ea1c6b57a0095 6634fdee517153e7e8523833000f615 72669be1815b2bb81e4fe86c4ad3ec90 8b3619396de4df10db8860d0872e9c55 e6b77b99ea085896c862eec8232fff1e ed47d02d4518fb5d9cc2d4308810279e a93aac9ad86008e69fc01fb65ca37d30 39911f927331db1c8687ff9b0b4e4ac a3e4639ff201f69b22a3043dcd383f68 2742c0a5e984d92fa0dcc52ca811e565 ffdc46ab1cfe759ce6fe3612af521500 40168f46019eb867be7e1d42d63ca9f0 d3302b7fa6504cab1a461b43b8f257f b8e4dfe08a43badabaed5cf8a752d243 8654342caec219e07cbc6cda01aaca49 b3e4c494a862986b9226550f5173ae53 cd939609247df917d9d3572bbd9cf789 d274fc14092387c1e17e1cb731e2fa4f c24ac9257d6392bcf284804023c6c8a e8fcc8054e445a0c20768660cf080d12 1b05971a4373c7d2463600025db2266 f51ab8433184dfd2c8687ff9b0b4e4ac 3e8ad99691e8ea4c504721639e19f609 8ff4ba87d700054546992ce9fde1b2c2 2bbf00f0c583fd8a4b3c42e318f3affc 47b37ce8f304dd0bbababe11fcea8796 2b55385a63cf62f6bababe11fcea8796 b97dc64d0406c07259d43b06ede1b24 5e44499940fc3dbe57a847db7547c1f3 feab80af7f3e459120523e15ec10a342 19666f52289092a3394a3bbfc81460 4f5639e943b60edc600515ec9ccc96a4 cbfa51dd6b795262774ba10f0bcc178a be9d5105e48ae27e713decb1a0563b12 bd41ed35fcfc0ab7b5e2296ee51ed515 3df44d30265f697e7e684d25d4dcaf0 ed56af61297594bf1c4300651205adf3 8bce3b7b7f0f48ad28a1548e344f0e2e aa80259311e2a8c0d8bd0a659ff7eef6 5b68a6c2baf0ad61d0de9c949c366777 37235898ebd06b3b504721639e19f609 9fae8d94a028e9ec2818b21315fe1bde ff2223a085d32243696b74614952b2d0 701300d51960efc8932a5c2746cd09a4 f2b2448978785cf5fb63369d5dd85d25 30378faa6bf5b245fdef1c01cbd4ae0c 4e358c2dc0513971f98c0761af40e04 3d67836a3bff5f733aaa67d66207f5e3 871243bc93615a758df4f3f615062e0 ffa1e25f499e586694e98ee4fdfd7464 52c32b187590e8f3bba5aaac798c64af 7fcde5fc8e023dd2a6fee8e2140acec9 5a60c649a221293d72ed554eb3baedcc c8265e04c94bcb5a1346e336f65f96f6 f68ecc9ec512915f36d8dd30a594b2af 2ce61518f138b7f75d009c98a5b96836 748957972cae6b03c56be62b05937331 6a3d2feff3783804387379bbd607d69e 6e1e73e14637a28da1c367d7a459a9b7 5d4252d082ae613a2fa77440dcb93214 e68bb6f55e2454fac7f1f7c0570e288d 2de04227fae28e70b6eb6f056d511fe1 3fa1eeed2e8e2534febad4f49b26ec52 895be5f65513a7d09a8ef44e1d2c5b75 d32fafb61e1e4a5bb0d5741be7de64b1 49b38e22f104005ecbde89e0c48a01bf 808fa82fe9ad86d9f1cc184b6fa3e1f9 3b788994cd578990c35131da26f8061a b7a04fb7a5fb790d96626c84a010ee5c 70aaed71e394259c87a0ca36e3a00f4e fe31beab802cfc56c2bcda262700befe a48e359faed3da88d3519c62a8100783 ec5d90a37ec99980e2b417d08f69e019 c48014610839bde3b8e687cbf40e9e47 184b4797cea77beb5ca1c42bb8ac17a 97cd4ed02e022ce7174150bd56e389a8 a8b5f5b6bf0cb2d6876b399a99a15c0f 103d77d63f0d68a044e6721e9db29c1b d619fd50c4d0fb46dea83bbf303af433 76919a456a23b9779368d1198f406e7 7a1de77ca204eaf28a514cac7cb18507 b13a4df698183bf9afb6676a5cd782b6 d2c465e85d2e8f1fcea003eff0268278 86199aed92fa1f68fd60059ad8523f1a bc21c95f766502a78b03575bb54dfd4 2f0a94efe6d1da7f8616812464c86290 f9bb302961c91d7220160736f02bc9e4 91f867d862e6c96c3ea242d1c18c3489 355fa0f35b61fdd7aa74a6b5ee13e775 ee4858f78dc33591100e9bd5c4b0af54 3b1b0186ebeb8ea579bb09dc5605a57 6e46e4cce527abc114d449899f34bd9d d1b2d8868ca506f2a248097aeae36abc c552529c54b0612e53041c49040be3d5 8a9af7d8a83d90fcd53e36731300f5b4 a8f6ca4151f966f5c2e24dd3e5cf2d2f 2ca371de1093a3867c9386abeb61de4d d990c996a67bab91d9233930731da67 519d19f3adebd20aba49014d9a3afe99 b1f4b2c32f8a2fa77ee217c21e683487 2b85487133b04a543f86d4a1692234ec 587ebb2aa71acfe644dd3aaee16d3f4c ca4900c42b8016ef8397cd720acaa508 c7e590c0390e8d5debe67d9b32c3ddf8 81b27636162e148bb3fb065fa3089331 e0a0d5c2ba6fdca215b55266697a17be 3ae022522800685c610195e4fb10d1de 80fab0c55a60abb7dafb0be26f6b45d5 fdac1f9c0b030841c8687ff9b0b4e4ac f19e8da9d8f369c531e63f1270e2b445 a9a1147eae9936f76f1e07a56c129dfc e325f573905ff945b8183a4a81361b94 6abdb0b46d2a3fd02813aa30be7ebdbc 3af90da238ac4ddbf91663a74ccd2338 63da17eda9d415b5319c5e90e9cc9126 9a54daea9071a536bf80985a99195eb8 cff9e23014880e20b2e8bfcc2dfe93cd a09a88c11d0b27368821ad3452f1c8c9 90b181de9005fbd04cd0eccf52b625bc 8df0910897498e764d183b64817fa09d 42140baad25c8598baa1a4ff2c45ffc9 734ac9809aada180d18df440db206fb1 bd0b06e158bcee8ac0d89fc15154c9a2 6678f63c9b584a549d9e5580ae9f8738 51f4ea68be319fe8990e5087098e19c f1d6552ca66b2e37713decb1a0563b12 9e6b834449ed2db86199d6fe090be061 499c4b519c708ae84cd08aa7c510fb85 80784cc9f549e4abc3bd24f986301745 e3d23dc47ddd9620c9be65dfbd21428b f1a1bb6ad29d703078d928ba1c4a6f75 e3adf2e6b3c3b015b63c025d1a57d1e5 3466b6ecd040e252c215f685ba622927 6de012f3ce256e9930c7810cba6da248 8f4c2a7243b571f3b21450114b9ae3a 2b454a3d18d5efba615debb484b4c30 41ce60d5443c203eb31c248b8665b2e7 95fe1f3dec357704e27790b0ec8671f7 5490efbdadce792f524f4eb395a8604 a682c4bf731e3af2ca6a405498436716 87e11c9e61442510b21450114b9ae3a e682c43e2f4e7463d0ad32b8d8cec005 51c8f249e778e84a5bae8923b29985ad c12da8acb2c7973597e755dddca14449 3f04adffb69b5ebee95cd0dc8c2f0e83 9ab18a33335373b2659dda512294c744 cc5dea482768651ed0e93cdb469eb63 3aab16309520fb21dc0a8cba62d9a78a ec78623a598fb6d67fa68300c57bff0a 9d395454d6de675d2025ebfdd95f4ba7 cff9a523a9e20eaeb40f0ac0fb9a650d 52240b141c70e6d8a5901d93c937a07e 513686d6d63a1d8e577b5d737869717e 3774a2b8c71e70b9f18a36d57b7cced0 fee248777c9c4807f8bc1f8036e08e44 d454f99b99248bf337c99625b0c170be c9d8573a048c0e959c0ca344f487323e b6c9495629c00419940806ade53ef2f 9ee4b9c97bcf4b3715dec43ae6a12831 68b88c0be088c21d5e0096fb2d3266a 2641f174d2d240ea788a5c6586b10c59 5edfec789343e0c3319f1c1eee46f332 c66a19f08d86386430bbd4cddd04c77b 8d2a4106de2e0e9f952334e469766710 7f5d8154877887727efcd98cd5f24de a598b87a9e37a438617c72672c86a49 d2992fd5e6715bad3bbf93f83cbaf271 ccfc857f35c138ede785b88cc9024b2a d9558dccfe8e3381e45ef4135c266a12 eac5ffc4c4a7da80b13f3ad708be4bf6 5107542cfbf142f36209799e55a657c f1787517791764e74b3c42e318f3affc 9a42cff883cbd358106f706dac6c58f0 5516e76a34984182b6f6d1d58b7b1311 49aa713bec70ee1f1104b8f54582c707 25d40c79ac57891cfebad4f49b26ec52 80c1f7ee486e7b5aa61649b05d63e9bb ed948a3d2ece4b3b71a782a4379556c7 efc684ff4dc6ff49ccd42a2d6eea63ed f444df40dadd83e22cedd65b2f6d1fdf df2b7e697ab6ca0f155d75bbf62b80 8c8efbe62a1547942b90a0fb76278f6f 951fb0d7ad8ab2bec5b5bea66ef4576d d0fad7458cdb5178d3f6d823f04dd65 11e0f0dfd3d0b22130ddb6ead95f49cc 8a232028c2b2cfad43649af30eba8304 5d02aed0e9c93e829b9f2eb77f5e247e ce2d77c8b0436db4f5d0dadcce96e179 c826c65111c867ab45a1df43bcd9e471 81628a0b5f7f9ad7ba94feecf6f7a200 e8126f9e2d106620d2f33aaf794b5932 d3f31fd0fc99f45e8b3f6b4a44a70e52 20fbab2b8770a1cbf51f77a6d7299806 4702e6196503ff84f1c0e03f321d0b20 a0654bdfc12e9e1ac64aef1ba2bec54e 4519d91ba59f0267cc0484ea4f50062 43897195d7f893d759c257be4c612509 f495c500ef468ea781a172d69c52a28a c47f71319ead4eb8a4fb72f4f3b0e317 28bdf067b9fea968f17e3402958be9f 8cb44a50906b827615e7ec87bf4cc5ab 43d38ad2f5d103adf9b9977a2406713a d2b9e98373e96afec8d65ca96e6b18ef 38afa26a419ea3abed040525648fc6d7 8ec16015c0956f847acc6457762e6ee6 3853339519aca1bdfcd4910413c446d9 6a01eed3a575987211e48e4bcdc4a2a3 d417795442cb0f75593ebeeedbff73b b631b78c2dcc748cba5342d638d0c267 e2c16ac7606317b3e85a21e38833ddcd 74c06950e3f8d25157f40ff86fe708ff d0fa70e45dee680fa45b742ddc5add59 3cc90d903e0ec7aa61e11d707ecb7fa0 117bd6da01905949a81116f5456ee312 eb51e814c3f44a07914ced7dab3536b9 3f7808c221b01668b4d174e5c61f344 183974726abab0454aa6191ddaf4b676 5f7615668d2a7b313b8d5c0ebdd194c8 a8dd9990ecd74c45435897641a7ee684 d50a49368f5d0e7c284432ce2f42f498 c67a255a26e30abb6b9f3980da0b1dff b07c1560f5c3bf20525319ccc5eeb31d 9a6061dc962c0480ec2a7a1f5fe7365d 6015aaa9ef170d9bfdef1c01cbd4ae0c 1b81441b7e597235d61420a53a0cb96d 94371ddd6d62f7b762ec387b772e9e1 97d75ad96c2c08268cbb8bac2032149c e052eaa1d5bbe795ded10515704c9720 d13eb19745344ae5fb0eb7e753c06942 2b6cbad4ba1e9a0645881d7eab1353ba e476879972230ca719d8721fec72f0c 20eebdb573142c4eb0a9829865a5e240 f36e83dff72cba53ba9ae5e8f97b3d4 b2ba1569509cdb439451566a8c6563ed 9c3d7b65c739a618285330f26226f8fb bf236db6dfa517aa456cbf78e1e89022 b021f7d705c4113ac7bed72580dc30f 71c83afeb7e203e1bb7d8446afd650f5 e89689500a1e3b95fa935eb36a2e89fe 688af6f43377f16bc3bd24f986301745 c6409b289ef9aa2176f028c3dd1719d5 9a864d5de972a8c7cb686b8b855fed61 6df1ecffaa0abdbf327289c00b6dc9ca 735b16d075ad6ce3d197f67767b32741 e35d7d19dcdc9e5c30e06a011e63236a c9d68e1e5309ac25ac57e7d566628472 a5a2d09e5384237869513d0907f19c8f 986e49bd8314d7424addf6a5f8726274 b65c3e0800f1c67cf70828d0af10edf3 b16f1858c1a7c0a65001cb19c4a0eee4 c98b7e1952c2c7bb85f6153ed2033a1c 5563067c7c05518415aea01a869de65 671d34c27cc0f1bf2deeb5ec76cf103b 4a24652fbf2bed7e93583c67df8faf1 445d6cef46b853ee713decb1a0563b12 eeaac38269e8f591e55fdfa049133df8 6e71bcc876af0e319b75b6346baf0c12 d5360f2b0b0299c29b9f2eb77f5e247e 7e2ef2a1256f2dc1ebe13e25a6ad0d e8788e6f0292f503f4b6538438a0b930 5d959b0f79a22e8c67c9124d122355ab c2956c43f763e135c9bfaa062f2e9d4c 7293291b3fe8233fdef1c01cbd4ae0c 5c9d582488732ee0d7f7a4c4609b0913 b3fd987b330d0d2acda56795a6fbde1f 5a61caff5d5b3e22424f8f8e828c9ab9 78e1977bc5f0f4041552c6ecbda964b 4bc5a889b3ef967b9de7cc399bc9b2b3 e84b5bbe91e0636cb21bc3cf138f79e uca24feec-f0c0-454c-baaf-561530686f40 48b257f80c7434cb56f6fc4b4ce1db04 34d3960d35d8d5219b9f2eb77f5e247e 6ecec258a1b6fe2a6fee8e2140acec9 328df096e089c4eafebad4f49b26ec52 e93649e36377a12050e52c25df21b57b e6ea5e70c2f29d881e8fd793667dc14f e2c7903ad9e8f497a7be81e6de3c404c 8031478c3fe31ddcc337647acafe65f0 b30517fab8b8300bfed6ad7429dd8443 4428b7dc4b6696812905b6e26038a78 f3fa7bd00b76f6a87a8a6b9421844d96 3aaa59b19eebcb5f41552c6ecbda964b 44a2a3952ea2315ff51f77a6d7299806 4a0b61d33846824ab1f04c301b6ccc90 9ec08262ef59d69d6412cccabcef91eb 4c97f421c4ea4396d8ac5d7ad0953104 e00b802d5b93172741052e43309393de c8938f54fecab41e77cd061c90fcdb44 43f762270b438fe618a36258eabc2b9c 5ef73c9bee1b4adcd019a8a03d4a2a3 56b171b1f1521d27291d12adef12641b 89dd53d0377c28207f7114254c4286d2 d4edd167061dac5f52a3901fa1436b1a d9156f5552178de2713decb1a0563b12 bf7e8e0dc4f4038cc2567be77cb7ab45 fb00ea443c74c00617c72672c86a49 795f38ce5d8519938077cafed2bb8242 8a845bb67ee8486d6199d6fe090be061 61b984febe54b752d61420a53a0cb96d d1ec6e9b8063b7efd7f7a4c4609b0913 e6a5c9fdb609d00a5ff6fe84f53e00a5 c8daa8e9496580667b9c6deef486a7d8 4647b2b982deda84217ad902ee02afb5 813be9a8485050571563f0911e3e5fc0 3622d983fd6d7b98e3a73d090627e9ba 564f5f96bc718194166420d06689fcf 862f70e73fa70c9b1a719e2a845bdada c67b7b62e529295dfc30525e763ef5eb ec41d22862df4aa7eca29403b7226aa1 d7b22da1174eade770bc652a18e29c3d 77f5b356fa515f1f396bfe08dd5ca134 5bb5b15807158f71504721639e19f609 2d44744a7ea0bf724b3c42e318f3affc 9ef3323c6ced7dfef313a0fb5fd4d79 d6e0a95f00c7af6fbae0ffb97058b7cc 672e20cc6ffa29d41c6aa36e5af1449 1d6faeb6d77d1f2cf95cd8df6bebbc3a 951f1376751fc7294b87db09ac4cfa73 1de733a48e5607b22d9c1884c92fce12 6272c21e439e0205c8687ff9b0b4e4ac 670b6b7d3fe6e4a77c5a5393686fdcfc e31d71ed32273fede42ac999db581f5e b899182610c12c78ed88a55f92d81d7d c53fa6829ec9a947d13b7d13ee32497 6419887905d9d67b7d3115a956c20163 21fb308ca737174e22f2f93459bd863e b39ebd5957397e6a5dca6305fb9f97ca e09466e9c122dbfdf51f77a6d7299806 5510d5af1ab5714b3c42e318f3affc 9d443b06a03742b9bf6931cd2a81bae5 9a35f15e924e19db637adadafee6f182 39825fb4341ebd1ccb002c1e2b5fc68b 2c14e910ad4173a898d5fc0473d00a1c eeebe3fe14ee4d3aebefe6b1d594ad2e cbaca6a6edfa2d512b520984c067934c 873c017f35957717b56a13a4b2372aa4 884a239f3dc6a91cad484915511ccff6 1ee92a9d78cccbda98d2e7dbe701ca48 3c3b33293af7459f2677042d71d00b91 93556cf01e19f638bf80985a99195eb8 88cb38c612cf60dfab50b8ae6c38666 2ed8d45343a442097869557127addfc0 bd1787066323c7a64424fc4d3c9cb157 d9a1f2e7290cd2c3baab0c7159046dc4 69d6d2835bdf709b6df61a30cc649b07 73828d9eba46266c4b2e4a0ad7c25461 284463280e6a4d003719086e0b4ab8be 283e59109ef763ba2168ec2d80dee966 fb847cd696ec711197f2016c3d6097c9 d4f194efb445914e4b3d6a0fb5682cc4 e175bc785390e8f6c05575120a46cd3b 47a45ce9fb219083411e8b42940aba04 c4cab2a416a4537e2871cc0b3cc1a485 fa7347547e290732bf65e1af50b5b7d4 5283a98b5c693e64ebefe6b1d594ad2e 5a95f4fbfbfc55bd93768e7b9b1eabf e4931ffa06d7b05cb04cb542e2c50eb4 27c476533e66bc04b21bc3cf138f79e 3c786ff99885e95c685d4893e4ba8951 d15c94b08b5d92e57962800be79c6e52 9c88f3031c4a660da6fee8e2140acec9 35d62c8a02fc15b1a2c5a50ad2499011 404bfa75a054791920e791c9b6d759b2 477dfe89f1d5df337fa68300c57bff0a 9682d28e03acd2e3735013f3db728e20 6621723f7af35f2dcd344c2b2cefcda6 374bec02e71fe06528b4c5ec471dc963 38bba5755f7d97ee70205dfbbf1e6bb6 6d6e634ff34bd350c511e6b9b3b344f3 fd43278c60023763d4da89766e80607a 8c76176c82e3e42d283b00891f680579 a7d124f0c0d9b27479b3e1be3524f72f dfd92aab082e4915e3d9492680c47206 d97c5945e9449a58737e4e0df09d751 1d828c69106609f8cd783766d090e665 bc78aefe3bbceb4617b431cae0dd70ed 249f3eb6a7236ff7593ebeeedbff73b 95e5f6e550761aefe65b629e4a22f51e a2441f03fed7c13def31f91fe6afc8fa c79532846cee59c35a4549f761d78642 485831d92925bf03f3d7c13662c10792 375aab9251b2df59b7a68845946bb67f df23ca11080bb439676c272956dad3c2 d2af105ee87bc66dae981a300c94a911 e5ce55d61830cc017f1cdfc0a8f38f2e 7ee09fdece7d9142afdb9a672b7d3b8a 594d5b7f3e705a1ab3234e0da44b11e4 bffe3e68857faf7f4d1242a685303c47 5fc6b04623ae6a9963ed57e35c972b4b d36de0f850783d8fd6b3090036b71698 483cfed0659965ed73c478529c40c4e6 914c92a6b9d8e7956160139444912022 3f8d0d53e2bd74124b3c42e318f3affc d5939ecbcb583dea9753496ba23f2183 70f57047512c2eb84104b1c5cb7f9280 d02eda9e00688d71d0c63a304a95442d b987a2ca54c6ddecb74697ced5978572 7f6858bd9d4af9df97316612e1a4343a 19c8189116dd7cd3e95c611687989498 7e6b4a7b4dd60c40cc8bd7a04c9659f1 79e5eb7be94f5479696b74614952b2d0 9db73a6184c82d33f28699debac30ad6 3ccc4efe519087c470ef1a9d40467de ea572cc193b804399c66df0f068d2a36 1d6f4020cab4ec1962d6a66a1a314d66 b70600293bab55c0593ebeeedbff73b a3688350b1556cbe65ba78ad9601cf1b 1c758127bc4fdb18be27e423fd45ffe7 731a357bca179804951c1fffab4f5807 43e74f15a986eb626a90f735365ac29e 2c76aaa00e55c26836c07750784b6bc6 9c50878c91aeb8126bb6bc0db07c71e8 3586ceeaea45b3598f5bccb3529a48d bdd29e651e5f6fb2b079317292bdc5d4 fc3d4268406b396e71a782a4379556c7 8e7714615a4b1e6f82390c5f604e0d9b a578b0027e7d9ec7b2ca3ea77e53abe 257deb231ce652169f2349486c570dd4 ea1bfe81b88395fcaa29e9f0529e8ef7 d6f2d44c693d2e857062f2d72cde5c95 94b779e6bdf6c3d171a782a4379556c7 ba9ce924d452795f519259b5fe9bdf5d ce1237c5ad42dd7b737a00f007529fbf ea7be2b97e78d5b35a4480134e0cdd21 9e9dc51a4e0db2e4c3bd24f986301745 3b2710b509c3df0ea5e8cf3aa1686d66 d2597d18fdc3594e1dc59d2adbe5297d 971539fb57b476d5c40593250b73d0c7 5ce323f8499cf60ce51e3cd2b72fbf02 6072a4739c12979baa69dfdc5532bb13 37ea477f2b894c6ca72559fc4f86f700 a1133464132d65fcfce0ccdae30f97db e8eedd37cb054e37b59d74a7c956bd18 6cd8056d4dd6b3c799b17588a5699c72 ef76b9cbf76bad40586ef70b3cee4240 27f4207dce674969c3bd24f986301745 5eaa2730f10054d0f6cabe1df6f4c9d9 4e26eab28703c12bdd5f3f2440a93d21 a3aa7e473a8059133087f84b199fd297 483d22dbbee32ee54e5c7d89bdfc49a3 97bbc8970b05c4a3fcde6bcb709edd9a 2a75b2bb82d7f77c3f9d6e0ade5188b0 8778c23fd21bdebf8a80d99ff4e76c20 9c8d3c5779871705d22218517e73100 3a74e3d5172ee94fdef1c01cbd4ae0c 4b79197258fad3363efeda73d60343e4 1c9d7e56ae8c90c87ac6ce513ae497d3 d7e26a070ee3b35cdf6cfab91d65bb91 ea281c9e968757dc351f7b956f3bf26a df609533cd186278398c7598b0d2e5d5 2dc5055b8d900ec7db4b0ee93cf61ed1 fd2fbaa023b5e3a81718a174f9ac28ba fc2a1c4c332f7731e45ef4135c266a12 ca01fd0de2534323c594a0e804f37c1a 312b3fc351fc0998660e7db8c993ec8 def03f645b3fbd665bb93149cc0adf0 6caccdad9f8d4f0a7f1cdfc0a8f38f2e f4f1aba65ebe48eb70930286c914896b 7f271ecbdeb7610d637adadafee6f182 2621666fa21488a4e922ceea1248b9b0 75d0664363f418efe461a9a9741d9415 b33a3b1627ad61eb8ca4809dcf42fe1 d915d2f1664bf76e71a70be9f12ce8b0 804cc836409c921ea666d560e4dc80d2 2bc587e0b4c0a0aa5a99858ad1805187 56cc047440e7c999a23949c21eddef76 ff034050f7ca727ea64c9c407ff9dbfa f2dd3bc7d6c85a8f2813aa30be7ebdbc a5898fefb1733333a82b0d8d157287f5 cdf733e544e6646f9b75b6346baf0c12 78c9204b2eac432b65b77a565916c7f 17aeeadccf0e560e274b862d3a151946 e6c11fed9469141ace8fba09dd640742 738395f54b301d80b1f5d603f931c1aa b1adda06d8846afcb96f0049223adf04 e803b31e2185d0405784b22e1081a3e1 5ef3e4abd4386c8871bc6030acc85f1e 74cc57ea0e2e06dbe4106b1d06dc89b3 ee665ce6679ac8cfb502ac2eb9128f9a 2a05ae00b701fda36567137a59cb1a56 f2e2993abf4c952b2e69a7e134f91051 cce9ffdcc7ca8ddea300840c9d7bfa74 e279758e8a5b6a8d492d9da2668ec34c 17883ea5a837f5731250f48219951972 956063d67b939431f56aa11cd5e0c3e 6a9dce6566cd61652b339ec555ba3bfc be0c5a0e91c99e804e1a714ee619465a e4b40369894a16ce6821a1e68ba5ebab 525776b59266140381dff5c2e57ad46e bb0c057df2dff54fba4b91e89f6f35cb 8ade914cd21b6e49656f29b05c68d39f 273fe8996937648ac8744f5d8b9af88e 31a77c04ac5df53e9429176ba100075f d2815e678f173616e6cfc789522bfbab eafec1b145972dcd815b2b467e8e2eac ec9f1fc13f2e4ae2c3bd24f986301745 bb90094030f369e4305a3b2fd9173d6f 5695fd37d1e673cebf964fc57f6a7d6d 2f0318b23d899a84493f17f4fe9b9eb2 3010d6ca1b1e8ce3bf54ca9b2f215141 b80122c3a0543a7b7eaeab1f0c9120b7 8f226d6b3089d3b7bca860dd9b04c52c 2a98a638f675f46e7d44dc16af152638 517880899d26080471a782a4379556c7 815f436a40c28da51f56aa11cd5e0c3e a3ce9ba74ab50352e6fe3612af521500 80dabf9ddbdc92f681806e3880250dff b267d11790325e6cec7cbf3284585a40 e4274fc2b9e4a5511882515d09f3979e cd5ad4afabaed0d3e762624dc3c8fa2a f595abef9bc7320944b2fa2cac0778f5 9343df9a7ed6cbba1923501fcdd899bb b41aaea5754adae0444b41d6d7f557fa 8c81ff18e04584547f409062bafc8e2 d6da5457b0682e24696b74614952b2d0 ca1cfcf4d5060ead8610f0b48b38e644 d7867d215f52107ba5e8cf3aa1686d66 35053caa62eea36c116cc4e115d5fd2 3b3a9f4e3aa9f2f4d39a194653571dfc fd5ca05b59b30241d838ae16242881dc 40e73a326cf95d0361c93c4994c91bd1 47c540c2e9c3483ce79a6b87656a120a faef9e4cff5fa61987be36ce60737655 6251b398004a02fffebad4f49b26ec52 76d5bec920a9796a5e91295f1f8b2c67 30fafef5c734f926781ba0fdb47276df 2bd045838a2282ab5205884f75aba3a c5ee6b77f9f84adeed52100e321c9f3e b6457a76f24de9f67aa6f8353fce2005 e1897a4391784bc2e8b2b8dc0c816caf b5877df9f111bb91222f2fee97f8bdcd 948f1555282e27da190c615a2115d2f7 3a5c8d46fdc6793b956abdbfba57903a 18fd8342fa5d1d4f5268b70948af88b2 ef463d298bb401b3ce1493daf6a835b0 7a79fdfdd72f06e9f8bc1f8036e08e44 8b8fa92f9c677b0713decb1a0563b12 4b3c381658cfe96d4db79ead79f57b22 1d1c829a54f0ae426cdb122727dd360f 6e98c5d61e008b4c2871cc0b3cc1a485 54e9203b65ca4989bfac64b1ae78ad6e 260768554aa1a64f2180a9964be89fad d4d9b991ff7d31e8c8687ff9b0b4e4ac f09af71bebd4bea8a2651abaf391628e 3d3b7f63f5525b1ae37f5a622d383617 e6f37dff25ec4ca4f815ebdb2df45512 f23d3a85baabd7ae32d9baba75737e72 2e0b6f6d19078424c3bd24f986301745 7275cb0572b1c0042725cbc5586c6d7b 1049953406c81b237eaeab1f0c9120b7 6db2255a51caf84e823e7e244bf84209 d51112040176efccd5cb6d178687b980 c86cfe147872280463626070a93463cf 3f4f1d18c61a07f134b707eb14b2a4a5 408631c881e3b33cefb90719a33cc920 98a1f8651c962402492d9da2668ec34c 884341d10af51df9737a00f007529fbf 8e5568ec663ae1b7e7526b618f37b43f 758bc4143fceac844224ee0743294f79 52a96a3c89305673504721639e19f609 b0531a0d44fc22144224ee0743294f79 46789c1fb150dfaf51f77a6d7299806 4913388a4c94547a81806e3880250dff 2e0beb3b6927a2b7e45ef4135c266a12 5bc916f8b9d0a7c6b40f0ac0fb9a650d d49ce87d43cf4c8f1679065e1c457f94 91819d15c2c044ebd47ffa500636d198 bbe36f91f3f0de06fbbc7c456d85ce59 e779cf261cf04a77acd8c40fddcf9ca 708e7ef3c2afc842febad4f49b26ec52 89d62702b266b20a58a2d0ecf7ace1c2 f6810de4042cc5ce57bd4bc6eae9b341 d7e4851fb3001a10f652f706160dc96d d38129a3301d31350b1fc43ca5e85e fbddac94cfa74a7b5c0228148b88226c 93a6876247c7a015d84b8ba651dfb8ac b998016472e9dd7a9b9f2eb77f5e247e 3dc252fd90d82b18c9be65dfbd21428b 659a60740eb6bfa930bbd4cddd04c77b eab859ac65d47f4e6412cccabcef91eb ff8efd10f5e6c5c7c6c0380e62f2644 2aacbdaf7dfbc5adb1a98fe8994d06b6 892d8090f05c136dd93768e7b9b1eabf 8c2a3ae39c683fde3ae7d83fae2b798 366118e316f03a35327289c00b6dc9ca 26e8033e59a3adf6bb53a6a5f5051240 3ab3c9d99fcaa66bebd676e3a69dcf6 88376e3d3a23d263de29d28278a34a18 6c25ec1178e9bab6e545858398955dd1 bdd57499bf64fab6bf80985a99195eb8 c4a4710012ee39bd19f4b416b31c46e0 bfbb19b74bb5973e14de2a9aaff52ac7 d9aa42439dc6f1b1c63608961819b578 f0ca6f9383ee9aae517376ab44a447e5 c6cb59e7645dd14d661ff085a0f14b7 64fcd1ba0df5d54d79b3e1be3524f72f 893c689b192bbe33ebadcdfba7971b71 487040c5fdc68fdfe6cfc789522bfbab 400ae609e39ff49639d5fb08047c894e 3c27660aacbcf99886327adaa986dff 6b91f4fb8cdcd6f46fe24f5659031935 ccc4b5366a6dc7c4cffab2c8f8bf5951 7228d43e00af4c1e2746490e2236e9a8 e807c535765fbbbab40f0ac0fb9a650d a20df07368113438ac59dcddec3b075 ca3670f77268f899febad4f49b26ec52 6b7a74a6a77b0699c3bd24f986301745 ce463d63d8771c5ccf19858fd1963d10 4fe20ed873d1a80e21d25a6a55757584 4c513ea0804fc008c8687ff9b0b4e4ac 85be4b6c37bd1e801d45bcf0f68506fa cc6840207c0cf55db30e42459dcb06f cee5c4ec2b284e7317b431cae0dd70ed ed97d1c954fca49851ceffe90913a32 2cf7ccf97b09187fcb7547c95fbdff26 7ea38c936513f5df3772b104757a4809 a97e09489b46f7492933f312813ce997 2c40da664d4e736b972d35c68e1bdca3 e401be99c5a51d8bef8e9284f76f3024 5ac8b44ff77e5490c8687ff9b0b4e4ac 1e304b967d5253d5dd079f8cece51712 85c2609fc7a511ece32cefe0e484fed3 3895b96949fd81c5f07fee5fc5c45ee2 c04660caf4670baed40fb6f8053555de ec00ee8e8345be7a852028c7654a8ec8 df8440d8678f3a91c8687ff9b0b4e4ac 74500999671b4c99d7bf6fb68df7f786 1a8bbf2994788e2743e99e0cae970928 1e283319d1f2782ff2c92c2a4f65876 60622d74c0712934a5817f81a1efa3cc bc523df998d94c7223ac0bd64c9cb255 2ae1dc95e09b858128fda76c378c923 f29cbdb2c7bb10f9953d950bcd7de7a 645022ea9ce898648b442b160bcfb7fd d324baae6630d7c8fb60456da917147 92f79b8e45269847f0efa341b439d741 2c03bcb2a133ce28bb6caad47eee6580 3d32d89db2286377e63c6421b71f17c8 b24ed89d85b74771216fff6094e6695c 383ab6330284af461fc4ae93e00c18e5 e02949c5e582d20682574dfd1b102fb6 b38d05caee69c7ac8fc6229eb64e56a 4a12589099b05c51e13b3410f3683610 63b2f7846c561efc20768660cf080d12 9253f198c06794cdc7689830acac6e59 26aa22bd1da8b8c5b1a5c6ecbc81953c 8fd6ca8f2d0ce46b846c0e4d54382ad6 2783a969fa42cdecbe31379a5751d820 bf3f14225e8f899db62f9fb4b7f0626 95e1571acdd75922afdb9a672b7d3b8a e2a7604ce1b5e6c4c3c6a889ee0bd115 1e44e3c128b667b4fdef1c01cbd4ae0c be0890a6a0f3fcf841f91bc9e1dece3b e467cfa616850a4a990561fc34164364 3dc8243b17bc790620768660cf080d12 8e678a54f2ee4e5e492d9da2668ec34c 1767c5e3771b0510f5225bf5a419e95 1f83e49ecdf209ddd7f81f50826c13f0 9225e57e34334ee019cb07ecb5b4102 88042e6d331ffba0f63e8e405d49b8ce c535629f9661293dc16ef5c633c71b56 6fd76577d0df60669b9f2eb77f5e247e 1b4071814d1c1ae6e2367b9e27f16a71 ef3377832d90dbbacfe150564cb24aad beb4c42cfa1c3b282811d30bba54859 7f8d63acb7b4b5e84d2f52566c6c4e9 8b39b501c9fa4d349b9f2eb77f5e247e ec25a41ca233ed096e5a467428553af2 3f41b4339ebd59c1c397356311cbeea4 d554adc917b635c0fdef1c01cbd4ae0c fc97c771d058556f593de14e4664635a 5822ae77b06bea3091da37ff8bdd2524 a3ba5f8fdc8f17ee95bea7c29e873d16 d58df0968070bf3b4b3c42e318f3affc 9c3e53d9d1e653c0bf80985a99195eb8 3b1f1913f2bc0dc171dbe96559c7bcae c4ebef05a72fc4f39d62eb3fdc2d3f8a 4bdbecfbc925219157915a20ae9ec6b6 49a3b0242c13f92da6fee8e2140acec9 d4b5f8edc72b4676f4175ee3a177350a 6829ec525eab85671f2351826b1ffa67 efd0411eaf2396c4de7ed732f5aeea4 7238d2ade707fd1e6c63b8b48495261a 70f1f85d47c970bb78dd615a59de5f05 dfae4f9155877a1ef57b53e86a4ec824 577d1c446658fdc7ebc935c637c3e3a0 403b4eb7194f563f79b3e1be3524f72f 508306f8ddf1b54c41cc9e8c39b4e399 fd5ac9b342fe518b9d3ea1c6b57a0095 46f6a6e0f239282fc8687ff9b0b4e4ac 8cb34663a9e42f95c3bd24f986301745 a1213da0e7efffcafebad4f49b26ec52 8117c55b8bbdbbc54c5c5c89015f1980 ee5ee3f6759aabacf2f43e6f841bd32b b884ff155c4117a7508dd48e67ad44bc fe5310a3457bf0e5c4e8952b27b5f370 55e1cde05a99f6c7d1d34366ca81fb3b 3ffd794e5100258483bc207d8a5912e3 5346017af72c1843169d299c5f567c18 3126c6e9277b775b245ac1812a4e4d0c 1f8e18d42ddded6a4b3c42e318f3affc 2d711c85c60a0785c3bd24f986301745 40e6fb27aeb9c9ab44f999802029a79a 4b2ede169dcc83ce4591019e9d133858 b360f2264526521f1dee989d1177ef4e c46eb7460be602b6bf80985a99195eb8 271012d5de261d08101accd22c701b9 d8e2bf1107567774504721639e19f609 a91b2c89e543a4b3aa3d970c5602cd4a 2f6b0ddf12d1311795bea7c29e873d16 40f188600cf8362b654ea6737b0d3597 b34b1a7cd8b645829d0103304b799f18 ece1a921c1bfd44947f5e245ee376525 20627f21d8681503f2aa3fc45e8202cf 49795a9ebd9a9c6d2c697f0a1454869 46bd3baefe788d166c05d60b45815 e65d2f0ed75a786a37b2bb75885cfc44 c1b64fef5f3efa0a129905ebfd12d5cd 85ce56c719ed2a1df30b232143ef026b 323fc7b1d2b44cb7ff2b8acf844d34d2 d708c7ed9201ec45d29e20ec5f479208 3fdef0a7606c397331ad067823a3f0ce cdc2a53559d3db78febad4f49b26ec52 4ac17ecd78880859e302b6082b0ffc09 5d3eff6a1b9a119da011ccf7cbabf68e 6a28919186eb55ecf69d0cf4fdc89b12 37e2b82d5e9dde21cbde89e0c48a01bf b8b5e172ee58899df2d9e72ba502035 77ed9ca45b928542266f89139e159db9 63e2d9ab50536799b2b9c1746713a87e f3573756e64259f2b29d280b4e59c527 fc14c1aa7831f4cbcaef18b2fd3fb17c 6f7a337878543c07c3bd24f986301745 112cee32461c31d1d84b8ba651dfb8ac 9b6f17ce2db29c4c9ae35d137ece64f9 bd0fab2e72b445bd1e722bceee6e83aa 52310bca00e6a3671201d487ecde379e 4e1948cb03956c9079b3e1be3524f72f 4206cdb567679c0dd197f67767b32741 ea87765cf9dbe2fe55f46d55537192b6 3c81fab5678a3872327289c00b6dc9ca a521fba02ca7f9aa822215026d1e8d82 11a06e6f68b1d99c8687ff9b0b4e4ac 4030ea84b560b857febad4f49b26ec52 ce2ff5c3a103b2c17ad11050da24bb12 6534f04a1c349a3c8c6540fe6bc16d6f 8e19d2ec95c45186a6fd617b2ff5d2d 5d346bdb7db27accf3588493d5c284 d90e76683d11f75fde11596dfa0db02e e20a22906784e3d08758c89c2f45caa8 704179dd47a2282e676de9b6e111da8b 9515e377c1ec86529b9f2eb77f5e247e a7200578bd7bea065dc3653f8341633a 2acd3a3e50e8e068fae61b8c1512b8af f23c1bb951fa8909bc01640b1b5116e7 9582e42453da574f37bf42a4ca375618 3ff879e891701079ea07bd8096c66582 9c7b2ed3770d1a6ea6fee8e2140acec9 98ac0106ad244505e04fc3fcc1c852e0 d239d38424429a9a4626612b5d655dc 5e706e87ca60bd19ecb01bc908e8cea6 6844180c300bbf852edea1c2bfa3bc56 18005751014e6ee9747c474f2e537e26 984900a401b412368412406fac9aee 5e5121cc58c4fea78ce66f12ba927a2b 2343e2c4fa69f33a2ff834514c92e8fd eea2622d5a8ad64bcb23db7a28593905 3a1b54325b3565e72ca4b544d68c52 e5b8d52826245f3937b2bb75885cfc44 62d87dab8cb3fd16c050719ed29b64cf 8cedc8e684d60ff42a06d8c81262ef96 efa83c67ce47bfca304edcf7c4314468 3eb60e6679d1df1dde7eedbb2790491b 5d20adaf6d8f89fa2f1c10544d7d6f cbee0f33a45bc8231adfc48ece0d7031 a08ad49c281128ea53615647c93fc704 428b77d0ffe6ab456e06155d245f15d6 f5f18fccf9e16800dbd185de408ea209 920af478601258e24762da3a3017ade 285931af369b12c2ccd42a2d6eea63ed 61d29e8133da0b58d1fd43e2bf80195 45833f137eb7b1fb77591d1bf8931b62 34898c36e711fbde713decb1a0563b12 eb8d2003087a27cf63e9f3319eb5ebb 98e1936d3f25389bc3c6a889ee0bd115 37ec57f6376fce6d19fb4103277a6b93 d1b03eeb33fd441d8189e5e3786f2290 a128eda00983dd01fb7d9615be5ab4b0 179b88264e7f96468b442b160bcfb7fd 8e664a0bcaf9d2a45ca1aaa0789db621 e0df9f745fe38b389bac1502ed0eb150 8ddaa112e6ba36b5b1e23c7675c49239 6b9c3d42724275cf7a5c8cd74a7bc29a 43f222e3b4b0952c1a4cdca72ed38d39 17e916fc863540ee3def89b32cef8e45 5073d7a546b9a4d0e810eba61b778ebb 697cfbe6e043136b737a00f007529fbf 49c955a80749d2e1a5ffdf44ff86b795 7ab99231f6a6cc282ca32e2623a35d99 bce7ff621a5440bb34ee5c94ebdf7f1d bd6a8b133fa4d269491d6cee03fef2a9 1ab8a3b55c14a7b27eaeab1f0c9120b7 df7735e2bce09a511f98c0761af40e04 6b385a32489bab4abbc7a6acbd8f058b 18052e6175456b9e7984fb9ec7e40829 bd6a5c01b9c6f17a82db9fca4b68095 3a52c8cd645f40b4670786463e520f4d e94089cce370e7d1aae894b47cf9777e 36cb782fbc164ac312591a3ac05fadf1 da5aa9fe015114731a1272c8e47f5670 42d5b7df0524a3aaf785f45147f3e474 22b8498e1ee46520737a00f007529fbf 4362e715455f42ba9b9f2eb77f5e247e 174019d47144a9462fa77440dcb93214 bdfc3a43eccaac7e908cb3a44391b80 66f18d05d960ffe0bcd12732b5a4b789 cdea84a63ad8c44febad4f49b26ec52 c2b898dd5601454d626d7e3d07da8352 798a46965d9e0edfcea003eff0268278 9233077bbe6926c239465fa20b0ba7fb 631e102e9a689339b0ec386df15ab64f 3885255ca5d75e69da2260dc4a1fc2c6 a6ab184a68bc67d179b3e1be3524f72f 58ad100d70e436bece93f2bb0b6d036 369caaf3ee33837ff2c0848478a667ca bb5791b1d4cb5fe81c1b3b2ed8d13bf8 9850d225049f987e9b9f2eb77f5e247e 7f73cc6c1c9121a9b9f2eb77f5e247e 5b3fd3199d1bc950c1ae25a29e9d46d3 fe99f16c2532cdd07ba99ad16fdc05cd 507a5070cde81fd867936ca58e67cec6 a32febea4a0ac30171a782a4379556c7 4275718494dd309bc7d25fde6b97816 e696f4c7cd88b8b52ff834514c92e8fd 3ea40a75f22515557dcf230d8b7d162e e45fb6b81247cef0ad312873b158ac49 f5d8dd0309401ebac47a35332c17cce2 6fd485a2345c3dd69233bf560301e53 d73e46e07bdb3fe75fe4ecea39e8bd40 1e276a016b664e424d678187b8261d95 1e0580f443a9e6d2593ebeeedbff73b fc7d038dc7fe2911a75d03186a0409e2 70cb8d70d961ca48b04cb542e2c50eb4 e3479f55f5894bb3c7f1f7c0570e288d 41896e1532fe1e63bda72093f9b5aa73 3b4292989394ba62f51f77a6d7299806 a5f300f3975497fa9dcf2183c858e6e5 d1237422881f4d22ff25b0c2db862d19 5402eecc67e489502fa77440dcb93214 4c0983329afcd06f730e89ca0d2d13c3 1e1b70bdfafb9d22df2fa7eaa812363c b8f4ce34b44620cc9b9f2eb77f5e247e f229c56eca8c0ecdc3bd24f986301745 58409b308683d908ca2bec46a3b47519 46557f689f4cf5dd2acd2bb6205825cb 71372c1f20b6a04c43c40c5aa3d5c5b7 4019ee7cc7cc5f9e74dc49346c29fd4d 421472e991acb24490267536df1b0cc6 11506b96d41f7d3dd7c4a943f33e0384 3776f058b918372899b00821ae388810 3c8362c1e57c30d7e6c5cd45aa112726 30beaf15d2d2beb1febad4f49b26ec52 40d202afdcc49c6d35836c728d324152 72da26fc9b49ecd3c3bd24f986301745 d4f5c3e3eab52d0a3334fb6668ccd834 9d28a066df22319cca2e16d6cd76503c c585ee093bfd52af6512b7b24f3d84 e2ced471afce616454bfa32aa0766acb fd9e909b082d8175d319c38340319ae4 8d458ab12073c371caa2c06fded3ca21 197ae965385b8187ae663e348bd216d3 30bbee7ab9026c5e4b3c42e318f3affc d5bd6ea417eba6ce456cbf78e1e89022 ca032d3b6dcbe1cea3056fa1e8da3997 58867a00409c47c0813a1237d2827540 f4b6bf9253918b52944d8f8e13d63fde e2dbad7996e7e13430c589758b4b5646 9bb6d3d76d4f5ba94b3c42e318f3affc 2af09bd8df40506c9e646678ef50aa3d cbc9014bb6ce3d902ff834514c92e8fd be1ac2a0b4c75bb9940806ade53ef2f fa27c1b8dac76b6d1f285be552b78f9a 3684490885c259e688235335f9e630b0 3e1a5042dcff313971a782a4379556c7 71b53a5f441d45b742b7e4c0136bdb7e 2fed64c67552aa689c1db271ad9472a7 fdfedb5bb8cd35374233148ffd345970 bb9efb4912a018b3c329e2758ab09ecb 550dd11407c28f9f3bd04286517a8395 e6daa4f9485362aa37ecff2686b754f4 a6420c4ed13cf628945a77b945b7b70f eb6e55bb557701e37df0e9a69c97c97d c0857de5101f704f3c5e1addd9922bf2 cd238045ebff9be59186f15d520c12ad f0f04644e071d9348ca588a3264b9f86 d095dd9f3dbf4083a7e870da1ab2a36d d8e2e2a923b372731cf97e154cc62f43 4231883e92a3c1a21c62d11641ffbd35 c166f67f391022d31205bd848315f04 2a1184b04dd8f30e3e92f39ce48d644 8eceb15a3c79b1b8719d8721fec72f0c 597f2b2153af0c544aabcf2a7cb640f9 f9e386d968653602d68fb8f5d99affa0 79a3115a6f96eef7c151419181ef256 2b110b833111b38c420adf24e49f74c8 54a6748359055b5ae5e2f0eaeb6aa550 f5caa9b5ada31a8b3cf15c77de45986 8a9d8dad6800d55ff37af16b2893f1d4 1b67a3a1101a9acb905477d2a8504646 9d9d69e5f2bc80a867903707764646db 657790bc7fd16326c132086242d50af2 76fe7cf10c5dbf1edcb466b6f48b5810 96c0ecd1ef80e818c8687ff9b0b4e4ac c7fe45610d10cb108ad3a7d07aac2767 918145be863f7aeaf050758b903e6054 bd504539074e453721a08935eb37d792 b058cc77e628ac01c433ba3e0e025e8c ece627bd883d9bbfb0eb7e753c06942 1c173d970e21e9a8be95ff480950e9ef e6a4d6fbdf722dbcc6ec74cc40a0a09a b117b01ab380362db8134b0fbf68257d 95317d46812e4ed4df5aea2392d894b4 680eec559a71dcdba023804ba421cf6b 807f08096308af5e28c0cecb7de2397a 35bcb52fea44850bb97ad864945165a1 bd98d493766949a8c05575120a46cd3b 2bd6800d64c01d677721fafb59ea099 99e4c4b39b75a06b30e06a011e63236a 3d9dce1953180fe6f9c9f9697d1ec60 8d2fd4b9c583e1e6a12cdfe22cdc2f5d e199b1f6a70c9f56df44d20a516c07b3 9e0a0ad80be6df7789d2595edb5088ee c4912ddaf24ee0fe7ea88ba060407992 76283716a2c6586e266d673a6188bf4c 59f1f818fce72660ac285e4454a089f0 31569815c88e79de4458bae25a4e518a 28bbb851dd01a162a5615d35d4766b93 47aca56ff3a7b8a71a782a4379556c7 8be8093e99b94bd9cf320c31965db5a1 40e5d8e71ee3902a31358207d42bcb21 19d7da928d179a07febad4f49b26ec52 93001617daca67ebc8687ff9b0b4e4ac e19214cabca496a3f7b54e04c7238d7 e22e9f5088838675a72559fc4f86f700 b1f50d8d41a8c53b6197fd390b16d14d 86fed830cd355f591c0f52f4ec8b820b e53b07b648e8d041107a17cfae0b6df6 b6b911aecb417295e8f8c11a24c52ebb 595379651cc8199abf3c0fb77f1e5110 548ab6b6e8b2dc505ff61a3a2a0e2484 590d04438aeffbb58f447453fccbd9d3 ff5a945aef7a68ffcf9ff3ee543c2925 7ebbce44a6001e71268677b0fbb8a262 7929676e756dcd41577b5d737869717e 80f9fb95252e6e535bc104fbace43d56 26a6ce644504c5fa22963ea1e168015d fbc87a27b5691196bd3b190b59dd9fb7 589cd6a1f4367fd834b707eb14b2a4a5 475e2c8f7a2c1bbd9acf9a86c283d1a2 70ac5cb405df84575e62305d14755686 bcdcb4928e07e4174a623eb2e3317415 51e14c516e45ec3b18ed59365c9648a7 ce242d5e5e3f4befb13cfeddf8d6bfe0 e2dbe84030167f1ca5aad165050e534c bb7755090f984ba85dd1bba5b1310523 226704c72560008421ceb39dc3069834 975ea4be01c7488611bc8e8361bc5303 7efeece3b5cf2853d706779c93538ee1 1b5e876f3559c231532a8e162f399205 75ceda9606ede8d2ea98d69e91ba870 593f7c848e6246ad8c37cfe791015e2f 9dc454ec0b5b7b50e45ef4135c266a12 bcc4ea0133864bfe4d4c0769270d8651 67d296fd51dddfd4bda72093f9b5aa73 bf89775d876f6849f2b7580a739cd4d5 63f6bb7487f81a03bdfa5e0753fa3240 6c554635dcd6123a35fd8a41e49d8421 2f282d5e4f140119e493511b69cc95d0 1ac6531a337de85f2f7628d6bf38bcc4 fa8f7c225d3b9f1def4a09e7eb872bd9 9ea39b8f5a9b88d56eb9b08c8a74d159 379f0efc898d7a7e9fe74a48bbc553d7 434cee44934612a81f98c0761af40e04 98d37b373c0207915dca6305fb9f97ca 7eedcb6d76b8c23a9cdb421f6af95e5f 7fb336186da77367962800be79c6e52 22af872ac796ed26ff8d7c1096fae070 4e4570768f981ca7b95617254e8005c0 c80c0b8107583898c1956375af82917f 61d313bb88532dcb74039aeb9f7d295 cb8f3b4355d891514a87d579b680d4d6 763bccb675b7439ab9afb6208cab1d 4499729e53c858ae71a782a4379556c7 1c45b266d3c879dab36dcc661f3905d 3ce9a0301f36ecf4cb32c5fb502d0e18 2ae4f1392d44ca24654a275ea978255 9a711bb7070ae88de948e3d64826c640 bd3941eb3bcca6ad9055f83d11955109 df8c98028d8ff2435dc3653f8341633a e158f7ba6828db5c654ea6737b0d3597 f33b6f791e9d64387d01b77e04a0bc7b e93714e5553f63619215045784774049 440e02f574afa478ac38b834d5dbcdb3 b44d32061d313fc1b7a3c315f744bdd8 9a41550ba7dd31e3bf80985a99195eb8 f3f31db17715ee0c327289c00b6dc9ca a42aa59fa23b4a4d9c0ca344f487323e 1ec5a88141aefca9cf6e4dd7ee69d71f 69709cb300ae3784ee72e5c46412e9a7 66b7533af3449aa820b64028d2efc877 458356b9c5a8d7bd7cc86734cb2f5062 c6b6f0e604d6a5fe78a7b08b50e4d193 d29445f24bbf1b1814c05b481f895c37 fdd21f7f2ca9f0bcbdcbca499b446e89 452115e132539be4daaaeef365d8f6e5 81ba38f4d3b7eac1f82a35e8b19afa86 cb7a4324fdfa690e96dd43aa0ec847c9 93dc91115a9002e1663fcfd6703c85f3 ff02a89047d6eca2f95b04490c0648a1 43c71ca7f9d3dceb8b0742c681b435de d29971cef754cc91cd8c5d1ba690a2c3 e30bd575bbd6c68c9710e093c764abec 6aaa9bd6e835eb0f9b9f2eb77f5e247e 8191bad981637a71b356ab8b24c147 66e37e1831d3e49843638dabe1eb5336 ed0d65c68a1fa5c485e2f8b1d3a373fe 37607ea19e352af4fffc97a61124b1a9 97b3a1b718278c09bababe11fcea8796 3109a0b9f9bc5fecb4cd1bd556007aed 195464ae11f6bfe1cba091e036bf65ed 96e8a51b1680b756e99481ddc3bbddfb 8b5f8b83715a378e473f10e6caaeca56 56f9ae090d2fe856ad5067eac75a07f7 4a89a789f817ab5414038d588fd1342f 439418b35f600f4bb10dc0fca58d0b2c 7a962a612d7cd0feb7611322d07bb05e 85b16941984902f8facfa12c7d71c89f 9fd6bb18dc21c70766ef9dd2f3ef27d3 e56087cd55cce8b4f41a4361d0ca9bc8 866e1be9f53830ed7a6617a3ecd0b52e 6fcb8bf770b8606697e2a21b8bc2d948 6870fbd4a7b733b0674f1c30a8cad95a cd06d0034224a701fb7c76304cb719f8 48fb419e9273c10a936e8f01c80c6ffe 67ce9e1ac8e41027bd16d4490a10a752 9a8dfc7a6831749f504721639e19f609 59155eb9123a9aa330bbd4cddd04c77b 5a3228a34ec0572b4b3c42e318f3affc 5555c24767e66a3384633b41c8a09fa0 eaf5428e15655d0b3c8d0fdfb1cc2535 d7307a92178e74e055c774cb358c4539 b92bfb13727f6659e45ef4135c266a12 7114ef00fe68d053cccbd142483bf2e7 3526528270d5f3f766268502c798b9af 9fe840a156a5647c9ce67e77fac3db9 43290694390ad1adfc735c9ceab0161a e14e8241e0bb563f64810cc21086da42 758b4dd493ebb4b34ec0aa53d814a8cb d80ea722df716bd0b15194162f658e87 e1623d4ae16bb17989e686021e3387cd 1886b3e3f3d4af3ace522e6dda26fb51 7f4f73ad1b3f882ba14472becb07b261 47caca00f993bc4e4b3c42e318f3affc 6ec4d5fa96861bcd70311dea98ba710d 28b605f55e21acffaf88fb4321b22872 60790035c8126a677645b4fdaedbc34 99a4ced5a15438131ff008919d662aea 465ea1eb1c76c1478d1fe8cdc415f4c5 6c7a07030e673b0b9c9eed7651b77d0f ff9915c51ece4848cfc689934e433906 5fe56a4a9d5508c3b2373df00b89e5d d561ff6788ab46517b016084e2ae95e 2df8d2af1bc4b9972056b4bd5d870b47 490941bf4a532b62492d9da2668ec34c cdfa898eadf316122056b4bd5d870b47 1fc918b0e5c7cf2da5c25aecef10278f f4b141ab64a6c4e771a782a4379556c7 52d747ca443134da81dff5c2e57ad46e 37b432326fecc8a1327289c00b6dc9ca ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03001627_train.lst ================================================ c763d59c0b5c73394925bc492489de9c 19f597c6dbff03c114038d588fd1342f aa300965dead4fa33f09c790ddd20f8c 86e15a077ee6f438910979f825490a99 9978e73fef1857bcac6b8e58caf61f95 a4b32d26e0962bf74a4ab00b9639232 5509f56ce625c42aff2b8acf844d34d2 6def527e32885b7888dcbe86402c7c15 5fe6b94dce63fc59d4589db494f55afa 9b8c50f5b9e67dec35836c728d324152 28844eb55fc82dc8f4b6538438a0b930 26ece83dc8763b34d2b12aa6a0f050b3 5b6a608c22d77fbcb04cb542e2c50eb4 c3cfd2188fe7ae365fe4ecea39e8bd40 e7aa94a2dd59a5ed492d9da2668ec34c e9f83e38241515a7438d8caa9ae106fa 5cc0b0e0035170434733824eae5cd9ae c3ebc70a348051e1af7c7ad2549a1b15 df55d3e445f11f909a8ef44e1d2c5b75 89a13017c0d517319fb4103277a6b93 7d3b7916dc5325a9c862eec8232fff1e 65a1f4ac3e5b57dffff16555386d173d ce8f3a0c0c0bb0b9b20716e5484f7807 6af67c2dcb4c38bc67f0a77fbca7cda2 c571ff6f3231fe861e1a7bd9d68b88a6 fc5f813d499cfd84d540c52e6ddbbebc df59c2ab638e5bf47c4b9c3e153dc1c0 2e079c4e7bb26dce9d1cedd9b694fb2 9245c7a6d33320da7b707c797539b200 4b95e968966fafc6e0675251723e1e08 3f83565ed40f87c5593ebeeedbff73b 4dcf1f64f70f22d7b4569422e5e8ba0 928678562a6a57db698a862d11861eaa df2b3ab36704f9e944ebbc705ad8c07 e5ce7b150310f288b04cb542e2c50eb4 f230308627e5edaa9d796919a8d71368 2280197ac01a58912dbc66eac8105387 878eee28ccc28b2e4c7384dbb75cab0d 22fe855981e97ec5a1bada754e9e91 e908c290fb506f2e19fb4103277a6b93 736e9ee917f741193b908295ece2b069 3b472a135aefdc2943a0e2e54f038a60 323bae92774d8def78aac1ce4ecb73b6 312df229ef2675c4492d9da2668ec34c a89450b61d786e4d115013480320769f 65b21a2af8709510f91663a74ccd2338 49345c62f63818a036be1486373f076 c2076591d588586719fb4103277a6b93 9d151e778dd4a3f7f91663a74ccd2338 bf1dce61ba47209189343fd44bd400d2 ce055b7a4cccc7e182db9fca4b68095 dee24ea8622e2005dd0e1ff930f92c75 fa263643fb3f45c7492d9da2668ec34c eb3029393f6e60713ae92e362c52d19d dacbb2d9dad289b1492d9da2668ec34c 9d05b0a242a5ee06639159c697a89e8c f4a2478ebfac3e56b0957d845ac33749 5a52b62f564eb7e117b431cae0dd70ed 27317a0db349369c8b74e4684f0d409d 5e907bb5204ec4a9a16baf954c1d99bc 11e521e41ff6a64922e4620665c23c97 e07c55b60987e8fa4067a397c01042d9 3823798ca4fe0b439710e093c764abec 50faa1777b012058492d9da2668ec34c 7e097351b98060b8a8dad913bb47fe00 9a789be179253acd66c580e84dfb7998 828d2c47bf56b15c49560f24b21df85 9e65e8fdde35dcbef91663a74ccd2338 8a38d65b4909e79d727e9f790cd597 4b7cf20cac8f2344664b3b9b23ddfcbc 29d5a6ae911ef708f51f77a6d7299806 5cf7a44b8cd841d01f0ce9df23303cc0 13e29ccc0722f4f958df8eeaf3dad1c 9cabf21d12d271c5d295b24579cf55b8 33bfe7ad9544eb93d7f25634a7c65cae 4c30d612b8663402492d9da2668ec34c 2bf1fdef16967a929753496ba23f2183 1c2b230840baac57df3c82bbe2e3ca02 dcfd665cdc0b01e7b04cb542e2c50eb4 3186f9dd5179358b79368d1198f406e7 3dd04235c696c117db6d2ff65cc5b310 dec4d499ce2ff518dc732bd0305fe3a3 63f6ff0ad9cf9d17adb532bf77da46c2 e08add655395ce8df51f77a6d7299806 e3079223f4714116ad484915511ccff6 741db054bd52c8884733824eae5cd9ae 8f668f18d84a6960b27c368aa9b96968 47eff1e5c09cec7435836c728d324152 866d6243ed67de2ee0a87b67b4933300 c0689f191df5cfe1c785f06f424b9d06 eaa4ea82bc814005e6fe3612af521500 486863b7fbd169fe67903707764646db a49fc9bab5834df95b1f17dc9a05edeb 9aa05f609e6731bbec19069e387c0327 3b5364e2f1624ef992979c651b40698c 428bd9c7c8a0a6bc7ff6ace05b36a5 23e80d93926a45f7f7628281ecb18112 e79b6815925c07acb0957d845ac33749 4ef623a1f272c40019fb4103277a6b93 18845d9336d8be637b11ae648ea92233 408b8f2a75350af98ce66f12ba927a2b 32f2998a16e477163c4f66791e25960f d8ea454fb35e38887b11ae648ea92233 bc75933af4146bd3fdce5d02dd243c32 5fb53dd1dc9453e77eaeab1f0c9120b7 bb660ca2ed9e0155f51763a096bdff1e ce23daa630833de7d9fad8aba2c312b7 79780c35666f045d7ff7b6423ebfebc7 4bd7a49e63e0e97936e3b2fa8d1eb4eb 8becb5888c900f3a610c2a68437007d6 8ce2e49ab9f58811610c2a68437007d6 d1af84d4d2af1181c442c1fbb1afe9c5 b56829d48d66fd0bf368f5bd754a08c3 e64275c95e41605caf7c7ad2549a1b15 72a40501ded8a8dd2c2f29cee8379a34 b490ed3bdc9debe6cad73d9df5957ce 3b2c9428da926e939ae03736d955651b 9a83000e9128d677b04cb542e2c50eb4 d2f844904a5cf31db93d537020ed867c 680b3add007725792feb9fdea8e07927 d8592dc28b9f0afa387379bbd607d69e a67a09662c39430bc8687ff9b0b4e4ac 997853f8fa3678df5ac8254dd793f590 64d07a909361ccdd1a8a283df3396be6 c5beb566f512bc8d9e989ccbad3213ca 9b42dd8043ba84f7492d9da2668ec34c a2e1ddca35161484f4b35f4029eb1ecf 592cf5363737550cedee0bb2b729f22b 2fe5d78dfd82bafbcec24f0586fc0928 341fcdd8a40a2612456cbf78e1e89022 7530bff8f0c2b45719fb4103277a6b93 b8ca8a0c021d152887bcae7a654cc37 128517f2992b6fb92057e1ae1c4cc928 e984974d54645e8328c54e8f8953f499 51c858aec859bafad1e274d497440a3e 5eb6ad0960250dddffc127a39b3c57b1 4a48b39219bb7d64457ba044c28858b1 af7331f7b96ebed663b2acb037dfbcde cc2930e7ceb24691febad4f49b26ec52 b510aa817f9aa6795906036a9b83f8d5 2ac88058053d5c2671a782a4379556c7 2f4b0d6e2faf22d68c18ac3fe1584a6 a12d6ad9561fd39bca2bec46a3b47519 7aabc57856fc6659597976c675750537 efc62fa0fd71d739d42ec7e303174a87 2ac24756c1adbd62c1a25f36f85c3fd6 dae6ba7440a71e5152470de2774d6099 74346aabf555ee0295122b1ef21ee4c7 31ab0936f07c21ba7b11ae648ea92233 af0831d39fd8f794492d9da2668ec34c c2d0bea1edd835b6e874cd29a3bc467c 663b17baebd39695398b2b77aa0c22b 7824e41c86f9be776383f517a315e69e 2a2e5ecd0ef6ab2f80360680c1602c7d 8a26a4d0726014065a4867cafb45a61d 7186f1e8dbcb3e8a116162acefe23592 7e7e130acfcdf64b1dec8546fd5980a9 69314c01e2b6ef2a95a4f7ae0be930ac d27be0741f13327efc66b92945eed242 d20de927fd1b15ef104c86562c321749 46c6dec63dd7c45854ca97f654da3901 62d160f560c31e0ff1d6726679b21945 3b88922c44e2311519fb4103277a6b93 24a83977b422b081eedb66d04882750d 198bd40d94930950df6cfab91d65bb91 654ff4d929914b7ff91663a74ccd2338 4179c276ee8dacfc8cbd400aa99bee96 41fd861b4f4b8baf3adc3470b30138f3 a021adf9bdfdcff68d12adb6778d2a90 412b79b2d0572c6afb76895427c01995 fa0e922a339bc7dfeb9a9ca952f63e23 20fd21021f3c8e5fcce6278f5ffb13a 11d9817e65d7ead6b87028a4b477349f 31d48d6b3951ea8e1191025061735ea3 fd4cce51df6571ecd204c1ad14be926b 82ac145a471e406f35836c728d324152 1bcd9c3fe6c9087e593ebeeedbff73b e7b1407e16d9d644c681404257d94ad9 44b317a5dc651210e76bc197b3a3ffc0 5c427d9fe3c76b356c07fcbf2661d108 beb8876f47c5d4287eaeab1f0c9120b7 7ee46c6f7c028fc6d661ff085a0f14b7 1762c260d358a1751b17743c18fb63dc 371ebb9ac02ecfd09710e093c764abec 2f2da13322d30ccaf4b6538438a0b930 465cb28961d2680bbda72093f9b5aa73 f83f1cbaf6c41a5db04cb542e2c50eb4 9e519ddc82bb9417813635269a32e293 9e0a1e2857b13b5853353c404519f02f 74b3e4fa65510952e6fe3612af521500 f2d03c1b46ff3c387bb504f750cf6e27 210115ebbbd9eefe5fdc736bcab9da58 d2b334ad08ac9857c3cf9ae716575390 384dc36226d1d4deb7f1aaa55af02518 e82136f5c8b2c3156cdce1333d517d16 a1adf14b24469f8835acfdef2ece21c0 878c70bddd336f6019fb4103277a6b93 60763dc3cbf36974b0957d845ac33749 268e15d6c73f3495f2c6f9bb81f9e3f6 ff2deccbef73ff5a349bb1cbbf9a4206 53fc74fb69742cab20768660cf080d12 4c775cfff4afba83b02c91492945da50 3669c9b2954c730e492d9da2668ec34c 54b6c08ddcd0762adbbc9440457e303e 8cc5a1e56c814d86c3cbab763f583b3 9e14d77634cf619f174b6156db666192 d9af882ab6d1cbbd492d9da2668ec34c 7fe64a3a70f8f6b28cd4e3ad2fcaf039 614347b0e864cdc7492d9da2668ec34c 2b5953c986dd08f2f91663a74ccd2338 ee1c0e545ab8dce862b3a719b353f115 4d6c67174bdab63ff11cd7e1bac77b0e 5421802bb8e6e9781ea54e1e7afcaee9 73b96acec1ea41d1ad484915511ccff6 6aba15a68e745c8d48fda83c10428379 b2d91caf3615a9a7f51f77a6d7299806 d10ed00430a61909793b1150bb246dc0 5609756359a6dd2c1933ffef19678834 87e11555e7233fb4a9bdc22a1e02e82 d0500d229baf05b0e83221ad0d21775 3d57e65ff4cc42df70a7748e958c62a2 8a5b706a57166350bc3c6c80ccbccb1e 720fd0a6c8cf65e772ee08e78374a212 9e39c4ea1d69b2f19b1e9677d6cddea0 db86d16a95437f3898cfd47a860803c5 570ee99e247c6cb0492d9da2668ec34c fb9f11f128e006d2498725b9a1405ebb fd3d59ad4d0ddb44e15475f0b1eb22aa 6ac89c723fcd7a55467971b4d8320221 bb380888cf0ac2e79c0b027ae5b223d6 6dc02b1884fb578492d9da2668ec34c e9068bd3f1f5e59b3fa02fd212ba0e5f 9281f52d6c5908987ca6caab209ed3be 5f76562ab6c843cb575f9747ff6fb5e8 7b4dc28c2d3268a09af25a2e608033f ac9cb6f769bf90c824d8364776ff163c 57a54d8b1594c399423a79096715f202 f68b7c3a1ed7506bedd9ab1253e1a9c4 e39308cd84103a47f4b6538438a0b930 69a7ed6a13ef4b2edf6cfab91d65bb91 32d67f875ead7f1eaf46128407fbd2a0 fa041b0276dcaaaf98e0d1738edd4f19 acbcfebf917e708b2b5bf1f191733d75 73aeafc0af4f1a62e1c624539dfec6c4 2d1f6e50aad6d88721fbac718728a36d 1033ee86cc8bac4390962e4fb7072b86 13d4fceabfda96c0bff8d8db0f9298ac 2ed17abd0ff67d4f71a782a4379556c7 aaba865e99c23e7082db9fca4b68095 2b66adf2ba9858eb19fb4103277a6b93 d221f07c0921e4d2b9576c1fc1b047de 646ce5490817ceef4b6538438a0b930 e9df7789d02eb998c8687ff9b0b4e4ac a18a82b239fc07cf433619555ecca8aa 77d71ae4116844e02025d98fb9de28cb 8a1187956642c3895331e304403f2050 e015df603fbf0852f58087d377226538 9189415b98c9981cc2b6cd34eca9d8c1 fb8c3a832eec2ffe627fec6651ed13bb b10798977605fd017a4de8972b988aa 5b38b467c20ac734f7c5e1744a5e6f5 38d623b46d07a93fb7d9d23574a480ae d1291956cb0983ee7085b4353236aad 7d4aff5680062f0b1143841839c8c312 8b005a01cf4ae50dab49dceef0d15b99 709204dcd233483f242f861207c6d189 708fabd1e1a39a77aa6bb5920f533ce3 fed8ee6ce00ab015d8f27b2e727c3511 eb7c48d1729fc4ceb04cb542e2c50eb4 3af3096611c8eb363d658c402d71b967 6ecc9a0b03cb8bc2d2b12aa6a0f050b3 1953d62a63721f17df6cfab91d65bb91 c1b312919af633f8f51f77a6d7299806 fb5ba735ef95fe417ca68e217a316e15 539ddc43afec160e57b8f616df7adf9a 68b26c9353e65419c3e46f55b34610cf 5f30af30db19dd23afd330d4b2aa45c9 e7304e89fb763e45507243968c1db8f3 11f1511799d033ff7962150cab9888d6 ae1650cc10002a69d65a961d7336a090 314c04d32f9e42c5f91663a74ccd2338 c6856ffc6e9afdaf680876614ed35a7f 780441a4b2e033f2796c584ff1fcf56d 49e3ef3939d7a6ec6bcd32c43682e841 1d498876c8890f7786470a1318504fef 9e145541bf7e278d19fb4103277a6b93 b08dfb07c78a348b19fb4103277a6b93 76fa373d984bd515504d5af97121b5f 5bd08666f29e946c988a5637d6d8f36a dae8b3ac69d80cf1b94e60a139ac4b1c 90fb9a742f5a0cedc9736640ccf985f5 71a0fe77f0bc1cf94187eeeb0dea4986 75f4282ca1df236ebf08050442fade6c 2f1a67cdabe2a70c492d9da2668ec34c 29827b7059783559febad4f49b26ec52 9ee7a2dafbcc731319fb4103277a6b93 545e984b290a7398e8b2b8dc0c816caf 54e2aa868107826f3dbc2ce6b9d89f11 6aa86c295de207dcedad5734e2d87ca2 107ed94869ed6f1be13496cd332ce78f 3a0e392db610f1a1504d5af97121b5f a99285df8c6d4578b980c976a65c0d7f 351705e42490c3506764a784715fb668 31dbef39a3c46b07bb8e07e9ebf0b9cb 57dfb295c3e699ab2875319f84a135b4 c7739fa5e32a7218a5f9d52c12457194 e18776689e00c8b84f871aa82358858b 8e212bac2103bd626c518c577d808035 17d4c0f1b707e6dd19fb4103277a6b93 4dd46b9657c0e998b4d5420f7c27d2df a1ee33aadb4754a492d9da2668ec34c 447e5db7c84797272127b77d9c9dbf6a 2b3da2a8773d2571c3bd24f986301745 fe57bad06e1f6dd9a9fe51c710ac111b 802c46001be93276283b00891f680579 cb6ddcf169bb7a0aa9bdc22a1e02e82 d66b701631851e7b4b19d2c99e22ffe0 88c39cf1485b497bfbb8cbddab1c2002 85f1b136e6935b7baec8a763854c53a1 7fbdef802b9e160cc242632b2a8c3129 2fa044df89ef13b0e5c1abd833032715 23b0da45f23e5fb4f4b6538438a0b930 2a39dbeb52262b975babe43b460dfe6e e1092c9dfe55273876f83644d71a31ee 6aa1ba85285feb756306d83fc23a955a 8eb33e21e03b8f84db039d8689a74349 ef1152b1660592d413f0924ccc9628e5 d02f9ae175fa83d3e6fe3612af521500 ef10235a28cdf7cda16af3198c99de08 2ad0943e70c0bd1481f667e2a25e0619 5cf55d9c3a3c7907489452a0032ea575 228d5702c588fc1cf7628281ecb18112 13cdc9e018a811a3ad484915511ccff6 a272771d6e9a29c2f4eefa83fb709ec6 96929c12a4a6b15a492d9da2668ec34c 710a0a005ba7b0cd6a6b5838ef6b356 1055f78d441d170c4f3443b22038d340 5e89f5cc834553622acd2bb6205825cb f4de0c72715e193deb1f243bab39fb29 f3e50f6d0b7b293035836c728d324152 904ddb7762488b1b5dc3653f8341633a 97c5ee9d477c82146c7e21b4ce9a4103 bc80b0b638f8a4e61a54bcb8e47577d6 5b69cc96d156f286e7c7920f6a65a54d 4fa8eaacaaad472819fb4103277a6b93 d490f77bed3bded5af7c7ad2549a1b15 633110fedf1efac0f7628281ecb18112 b467cd6baaaf5bf282db9fca4b68095 5c8ea11840795cb5f1783a44a88d6274 eee8b6fafd8af9d1ea54e1e7afcaee9 362f53ee8de161fac653c0205ce8ff57 1997d5827caf81df67d783b4714d4324 cef1f5c49e5de64f593ebeeedbff73b 6281a6537c8c4bdce6fe3612af521500 d987dc40c90907276bc601efa799c927 badfcd24d9b640fdf74aae127b28c047 8617fc907ff8cb36597976c675750537 d2fe67741e0f3cc845613f5c2df1029a 474b82a849e5064fa9dea4db53ba3dd c2ad96f56ec726d270a43c2d978e502e 59b79461f64a41c3d225e12279334514 cd9e22cfd389e5d9d330ae3d046a415c c8cb59cef2f091e78a44b4d4aac56cc 7250e86b4feb699aa08cd647a48e605d e12ac2c1c707b7b2f45a7a3d26bcb6ad 460eef2b90867427d9fad8aba2c312b7 cecbaaf284d32574e669ded0ef71cc0d b46361e53253c07b6fa2cfca412075ea 484a7d924c952e51af7c7ad2549a1b15 9d2cf09ddd9a05fa1f8b303c0da5108d e6b2017501b20ce1eff1a662025674bf ed9a4172130d3d5baf1a85b857ec9afc e77d7eb8a4e8f1816f1e07a56c129dfc c106cbd7794c6b6868661782af60b711 5ebe4b9a29d5c0274de7ed732f5aeea4 7217176942b8fb42fa7b9a6c80e4e324 39b1cdf79b58062dfff16555386d173d 360b02dcfeabe768492d9da2668ec34c 75acccc933a08ebd2afe8d5254a0d04 48fd6cc3f407f1d650c04806fcb7ceb6 64d535abf6fe5ec46874ce99dea28d5 b04f736cd05361d1cf63f06c65fa88b2 99ee0185fa2492859be1712545749b62 8d5866194748bb3492d9da2668ec34c 9dfaa9b599fced446f1e07a56c129dfc 5ea01d852c88e30a6f2222642bd41c09 bced50190a0b63cf19fb4103277a6b93 ff546450fb0bd81f6e7c5546c1dbd220 74615c2f7098738ca9764f2d2db668a 741ea721bf610a9b9225fc8da7ab1c1a 64a585a441f2ffa336c8b9bf2576aca2 52b667b2014bdf0482db9fca4b68095 78952b099c650a85d42ec7e303174a87 111720e8cd4c613492d9da2668ec34c ff8efdd26382bb863769fe68c3ec842 2669d4df8adda44571a782a4379556c7 91e4eb92e010047d3fc7406e820e0781 4b495abfcbcf4b76ad484915511ccff6 9b9a114cfee79bfb492d9da2668ec34c e8c1417f4eec96d228a7992bee4d8cde 2a56e3e2a6505ec492d9da2668ec34c 1166b15756ed9b8897317616969032 a374415a1ccc05aa283b00891f680579 6455bf241fcbe3a03adc3470b30138f3 c3b6c4563e5f3dc4166ddaef2c2c61ae 88ef1cc314d8dc0423500a5b036df62e 68d41388f8a62fce19abd93be2967664 5fe6b79e75130974e8f8c11a24c52ebb 4353aa4950c32e12f1783a44a88d6274 b2bfe0be6956fe34f51f77a6d7299806 a33c519a3d90184f504721639e19f609 be4c88a130e622a21961e650f3cfa396 54bdda983ea87dc9d727e9f790cd597 cebe4dbc363265ce46746f657ed598 c93860b7f38bf628bda72093f9b5aa73 d3ff300de7ab36bfc8528ab560ff5e59 9adb6a665f99addc8a4fd70ea4c8b4d9 f6096649f87c37f1af7c7ad2549a1b15 7573185356240f5e2b4f3c9a4b815590 c89a9a38e300cb502c10b2c975aee2eb bf9f2ecb581640bdf91663a74ccd2338 9894e30c8c7f7e56eaf35c5a2cc7d71d 2828b98d980480cec3bd24f986301745 4c9b6e0823be25ae52bee19dc0453f5e 5a94a4638e8d548cf7628281ecb18112 df487c3660e7030dc5ed74d70201d4c 546c4449b8001f0815d1fabef5f236ab c4af5a5858b4f40082db9fca4b68095 e118a2870622acaf65ba78ad9601cf1b 74ae50b70108ca1118775c05a821f9ab 1eb8558d0f6885a1268ecf2838ad6f15 2b8e3e95616a5fedabf945c9a80683d1 769df6463d9f566e1bdd2be5d322fe48 b9a7bbf1e0b08853bed1bd9593e318c 98dc530eeece9f0ac3d18d4b522a4e80 c2180f4b2d79f55cee30e9904f2fffb0 fd3759f684abe981d85b29704f5fc7f2 bb4f5cd713a817727d4f8900c5174db0 70bf905fc0d62ebcb1ab5f3e2ac4cb05 85654bf43265664eca5d1f82257fb9d9 4ed2bc57d5fcfbd82c37553db37ec752 9de69e28a07c6e10592cc471d13e2037 6ccd1ba0e0d4408e56c513edc77abd33 d045654d572bc46f19fb4103277a6b93 a808d40b66123c7ae9602306ed19eab0 cee98619dbdb0e34c5fc2b846c38d941 90c8ae65e3ec4ef119fb4103277a6b93 58a1e9909542abbae48dacf1789d97b 2fc85613e0c1fd7c6ff6a1869fe2467f 730a4d879380fc78990561fc34164364 f112035c6413080a664b3b9b23ddfcbc bc722985df07090d51c4deb11af7079e f58ac8ac63d5a52d19fb4103277a6b93 2c548222017955df4530ae9f1281950f 2975a651cf06a21260902b587804b688 4f188d1f92b859fc283b00891f680579 2ae70fbab330779e3bff5a09107428a5 97131916969631a379a212fc9db8be5e 54fc8ae4211e121a55450780441af433 e1ab1f421891fb01f302352a74d4e413 d90b1021dc6e09b455369e3e5b79b017 e5b6a3cf96b36a1613660685f1489e72 2c149e5ab744616f60ac8f16dfbc3b59 c06b5a7aa4557182f51f77a6d7299806 324b0bc4363cf4e382db9fca4b68095 2276d36a40335c19215045784774049 9e03f57afb7bbfb21b356ab8b24c147 94e5d7fb2ff59ff98a94168388287ad5 41e5e9ecb83b9a45504d5af97121b5f 736589cbc46fe6b059f8e31ca87c470e b81b9e3fe60a49bc55182f299fe41fdc 866552d994de3a252ea98d69e91ba870 5e94fe6e318670d310da6117f2797a4c e5da52f5d1ae95f75a8ae8f7c307d01c 8d0c04c99429ba8919fb4103277a6b93 a5de4210ba131f0e6ac7817035f206f9 24d3d4259b35fb93490ad276cd2af3a4 d9346fab44b6308f40ef1c8b63a628f9 fa172f7f09f785bb492d9da2668ec34c 34ed902dfa2d8eec2cafe1b125cab8fb 713d9d23bb3eccc17fb8cf8a85dcfe23 70207d8482c135f8410594e2fa0c101 a734ccbcbd430e8c9eea64ae4d2b4158 d43f7db89fe864691e046801e2748f1a 9b82e2d4714b97827eaeab1f0c9120b7 116a9cd5ac9a008ee8cb931b01d0a372 4527cc19d2f09853a718067b9ac932e1 9ab888a92d73e4d4a6ffec31b6fb775 ed5b718c4efc65f148ff063e62e02115 4217f023367a28b06747dd1c5ab1ba16 40db46d8496af369c605aeab73103431 c5c90d3e84be70a11b17743c18fb63dc 9ff6c78f309d55471449a39c0fb09f2f 4f66b8a004a1515df33978a307b45373 c472a815afff5ff0e6c5cd45aa112726 ed40add41826f68ab76e29c9c43bc7aa fbc560d04067a6b58ce66f12ba927a2b 47ae91f47ffb34c6f7628281ecb18112 f1a5a9aec0b63b91f487e71bd57b6e0c 5752f7caf0dbbe4d94210977e5394f26 3b25f03d2f7be870fff16555386d173d 6f194ba6ba254aacf51f77a6d7299806 8dccb87a61e565cfd4713685ae50fa13 fcfb3a50acf5e83ecc0484ea4f50062 4a1510e398260ba36b31862e09495f2 d69aad24d253474dc984897483a49e2b 13076ebf8b5cc457b8d6f69a14683de3 edef00af1cdfbe1419fb4103277a6b93 2df489b6a14404b3febad4f49b26ec52 7a1515106a9dbd2bae4c6ed7474cdaa3 9303d374253d8e7f377b9297f3055210 4a54684f8ab00cf5a4e0cb207f311458 4b9ccf80a846432095bea7c29e873d16 28cace7066ffa9c2f4b6538438a0b930 3aa81c6d6d7d7d66c08256cf85537e 480d483b508469d1a42913f1450ecdb8 380a5345fda8e97492d9da2668ec34c 8914307dbc15a20387f0bafef1e13471 8ad35dbc44f40be1492d9da2668ec34c 5cc61516525325f55e0d6e917505f52f 865551d21a4b2c09ad484915511ccff6 96a03b164315d2b65dc3653f8341633a c6bdf057e1a5e900548360e92af6377 8e77d0965bd1ebc598e0d1738edd4f19 b98b73f29673d7fb6da16f7df2c9a5b0 483308834b307b75d5f1108744f02f1 790d554d7f9b040299513f98ce033426 1b83311557e48d6328145ddc1e2c18e1 fb0c9739b5bd880ec15f2f972dbc5c17 ccd5e24c9b96febd5208aab875b932bc 2a79d429e9effa6de7c7920f6a65a54d 28445d445cb8b3aa5de04aad18bd94c3 c405857cd7d8aa04d225e12279334514 10d5c2f88b60bbf5febad4f49b26ec52 d4d18aea46db0b4d42e792292462a0ce 8a2349fc21f48ca78ce66f12ba927a2b b19c970b2b8d6795492d9da2668ec34c 4e294d057291c50fc8687ff9b0b4e4ac 52f9bde46afeecc5dc3653f8341633a 2d4efb02b4369af2473f10e6caaeca56 bf37159b9ca55259e6fe3612af521500 671a43756d51eb613d4c64859ad102f7 f347f2a3d85c9a823fa92d98173c06f 4a9ac9e0b3a804bc8fb952c92850e1dc 6d4ce042f204e89db413bc67c6e4035a 53d88f50e3abc2888dcbe86402c7c15 fd726084724adeea492d9da2668ec34c c41ece3374d0e860e32cefe0e484fed3 99d4e65625b32a1d151f08387c3363cb 8bb74c3e07557ba9177f2a3a0c71fbcd 6a72bf1b1ba3254c51c4deb11af7079e 33aaad494817a6f4ab705559ec99536f 39ac0b216df14eecd225e12279334514 678ae2d4a386f4e4d0250aa1ac19fcf9 49d6f3affe205cc4b04cb542e2c50eb4 2b9ca6deb278a10cffc21cb5f21201cc 1861715e59337785dd7092ed47061a36 8f2e3c9cb5f25021492d9da2668ec34c 1b7bef12c554c1244c686b8271245d1b 94ef9a352eefe9455ac8254dd793f590 e545ff0d2058b382c3bd24f986301745 a95df2063ec98e429e6aed0cfb3be6d6 b9f80c27c118564a9a318f18e43edb72 33fa27b08aee4432e8f8c11a24c52ebb 5974ff38b45265bb352fc7e973ba7787 46185164829c492c9dcf2183c858e6e5 942a10a33418205819fb4103277a6b93 3f23ed37910bbb589eb12cef6be5d578 5df875e6f0cc0e37f838a2212356e267 4aafa7600e0aacbf7b11ae648ea92233 8ad1db95b5b9d60136d9cfd13835101 77d48297d441c7f5bbc0e8a3b6521117 73a7e497299da43885a2d2169cad3428 bff224175aed2816597976c675750537 1926843fb9da47ad8852b93498ca8c83 e6778535d7fcbf6fff16555386d173d fad907934656c52ba1abaa6eee3840a6 383b4dbf090a73dd597eda2e51f31317 7252a2c022a1a3b21f285be552b78f9a 35e8b034d84f60cb4d226702c1bfe9e2 b7aabc0069ea63e096d5fa1ee6ada8d1 2d6ec4afb0ef827e2c5b2f528cea9dd6 91dbbc203e8562e6238f27554ec73a59 4e9475fea6f3ca32c4cb3d6800567627 5ef9991f0985302c2526940b0dd3ff94 5229209bf66b6657b11ae648ea92233 64c80a33436b8a84541e733f245fd038 6e53d494768386ca8579483a049f2a91 a1734a851af178bee15475f0b1eb22aa acef669b784a4fec1b17743c18fb63dc 36447db5cf7b5a27ab5c60fa85a57ffd 352bfa764478b1602bc694a93134e562 7f1164e82e3a975fcc1908493f380315 fd9c60e969f83e6086debb0a33c851f8 1b8c83552010440d490ad276cd2af3a4 9e9e6025f821c2bdb6d6d1ff246c4885 269698853d294f595761a0b53ed37cec 1145248e1eba424d492d9da2668ec34c 398c1d570b642b6cf91663a74ccd2338 2952ec189e993eeb17e114a7b3c6fb1 90bbf2bd1acca50fd684faddec3c0090 5b2b23120a4607dff7628281ecb18112 99c8513bc738a21d440d6814caa3115e b9415bc240e074837e76245c0a9e51ab 29883092cdaabd09b41b7625e8c42dfa 47fc279d7f0c2a492d9da2668ec34c f5b08ab02727922b738dd0d3509c7e47 52621a97e5036dabba18ade30e563d37 21f9dcdadcca16227ad11050da24bb12 c7786437606ac263b04cb542e2c50eb4 b78f64455e41db28341ebff340b2c71a dc182335876fbebbe6fe3612af521500 8c1c53ff86f59a97d2f33aaf794b5932 cf662e6564c5c3c5ce60514f9a637ce 2de1c5525d24c1c988dcbe86402c7c15 df8374d8f3563be8f1783a44a88d6274 2560232741878aa1ed0003a3eb88f6ca cbc47018135fc1b1462977c6d3c24550 5a28539d01a0bbfa8ccbef2c1e41835e a248417b6ba82801610c2a68437007d6 5d92fd12417a9405cf004563556ddb36 421746966acf9b175ecd29875b6f0d44 7049a1875e1b82d71f8d8332ee17945a d0a3e48a84f68a9143dbb6421d614c0d 4b785965d54454a4e82cbac5cad4b7d3 7910a6262ad8fc113fa02fd212ba0e5f c465b7ee24741eea9edd9a0b28d406e9 6f754a2c354b17642c0eb4a518e123ac 1ad766f9e95ce308aa425ecb668e59de c5abc457162ec704bfffd5d6a62e360c bae3e35109b939cfe7c7920f6a65a54d 3ea6a179fdc3c01daac8336231c53cd1 9663b0a707ba9753983e0ae0e9b98f24 17b558e72a4d76ef8517036a5ca6b1c7 ffcb8206f907e663eac685b1b2988af d81327c591d1a709377b9297f3055210 47ad261baf9609ffc27c29012942420f b8db5d63c7042d447cbf7cf495477037 eee08ec7de613898567232766992241d b3ef1c8790d42507d0dd5269e5b9cc8 1f8eaa7aededc7e637b2bb75885cfc44 eb8073ac89cf7b4181f667e2a25e0619 bbef7baa438869dd52bee19dc0453f5e e4cc5cee7b011df316037b4c09d66880 5f562c9c8f0df90fd2f33aaf794b5932 45f9f54b9e7cf6897886c5f50906be82 8fbf9ce2c9cb77bd9cb48411c757aef6 4707a1494196ef829917ad57402f53f1 6cfc437d8ec6ce7413d48601aed73697 d388617a719f23a191d0dff7aea42471 19319101e064eb1019fb4103277a6b93 a9e2b04bb60240d0febad4f49b26ec52 b0b75045d06201f9329df33f4ef71f97 bd50871647e3712f79121b38af0e3f47 359331da71ed26eca6c03a53cf0a14c9 c149718d89776eb5f71db1fd522c9a79 6cf6140483ba1b347b11ae648ea92233 2eaab78d6e4c4f2d7b0c85d2effc7e09 ef7d9ace8098733b8e80abc614a52973 5fa5f75741e94598e6fe3612af521500 7a2d21eddb89c8242058afcc28d23393 4dbddd8f3f658821ad484915511ccff6 8e55684da4fb8219d3f6d823f04dd65 df8311076b838c7ea5f9d52c12457194 78393a855f214f387fdfb54d66251309 8363376d07da8aebb76e29c9c43bc7aa c7f0d32287191563bf22a5ca4fa4678e a08870dc5fc0c8aca19799a9cde9e06f fd5f6ed4a873c5ec300fe8666348bd38 87cdc53aec65aa0ff51f77a6d7299806 abe225081bec7d21c5a208307819a3a1 dada2389e96606307aa7cd663df90f18 63b84cdf260ab81b14b86d5282eb8301 b63fb0d22a44ff698cbb8bac2032149c cb17f1916ade6e005d5f1108744f02f1 bec075322d514fc9f51f77a6d7299806 797df32cd5248558f779fe11f536ba12 6673cc5f492f48a229404a50338e24e7 5963e316d9015ff1785d41fe7f67162e fb22d2e3174ed0519fb4103277a6b93 5aa2a53207ff556d473f10e6caaeca56 fc131dfba15fafb2fdeed357dfbe708a b23cd3a93c8adbf56d33c8b6c0fec1f2 ce2982a9b05fef738a075f7da2b32df 536dcddf1ca6cd76d7f81f50826c13f0 c04c5b7d68b4e6481a68dda91fe5259 20310d1bd22d8e28890eb7072fc1df21 4fe3809c20606e5369d8d5b35c38db0d d29c14f180ce319f71271c0017c27c86 4a9ed043cb91fd91b04cb542e2c50eb4 6932261b5c17f0de4733824eae5cd9ae 68dc37f167347d73ea46bea76c64cc3d 66c791cf5f1e61a09753496ba23f2183 1fb9ffbcd38f8ba63eec26c23f5bc80b b80e1766b45076ff492d9da2668ec34c 6690683366993cb1d42ec7e303174a87 1eab4c4c55b8a0f48162e1d15342e13b f854fa8ee2fb6d715936c7265c890fef 41f3a12d9f29f204dbbc9440457e303e a3ba66bb0fbded22c5beea20858a99d5 39031caf2b11a7f665ea3fba7f481d97 d661b52c3763eec020768660cf080d12 d66de4cc1dc6cf5e8f8c11a24c52ebb 6233ebe950c7d44df51f77a6d7299806 ecbb4e4665c7fbb45613f5c2df1029a aa05a0db9ab12c5e3e7d886a315f2350 30074024ad3c581a19fb4103277a6b93 30488c6d05b4848388df69d6c56c6047 3d988ea2b68f48c7492d9da2668ec34c 5da96a876b66cfeb922f1115ce03b77e bce6cb5f92247eb6844690e7ee348ec2 44456e87be145a703c8d0fdfb1cc2535 abf03d43cdf0825ff51f77a6d7299806 6dccf79814289bca5a15b6547f08c8fe 62257f79605faa66e6fe3612af521500 2c8f57bf281dd31119fb4103277a6b93 e4ac472d21d43d3258db0ef36af1d3c5 a037d4ba135bea9472a38ac2b8f5cd48 48091b14719964986d075d8d4fe1141 7e8b24aab1f2681e595557081060d0b 79401adba0311d9b19fb4103277a6b93 929ab79b4f45f747e6fe3612af521500 3776ebfcc23e6d87cfab10986e008a3c f00c1688bd33aae28cbb8bac2032149c 5912ba21e93d2c5b8bd10c3418cc648 89c85a35c353ab4c9a037b4abf810691 a4d7d4203cdec5dffebad4f49b26ec52 9c7c3478edebfc1031d38697be8abe58 5a80c5a35dc1634db87028a4b477349f eab716562b582538f2599a47b2a7e92a 55c9891ac274e076492d9da2668ec34c 46363a10e242999c69d8d5b35c38db0d 473cbfa40ff731d92e75d78b4c7ea93 1d2745e280ea2d513c8d0fdfb1cc2535 26d0416a064d23f1f9aec59741c69cf7 81397314ef43f59e98cfd47a860803c5 67d9afec46e20fd279c4b4a860b67e81 1a6f615e8b1b5ae4dbbc9440457e303e 49f3a28d33c34838d74aae0eb2ddb027 2475ead1cfa0a5a6490ad276cd2af3a4 81ba974369a343d3946b850f0cd29857 675e25ef07ef717cc8bd7a04c9659f1 4978fcb47c15f96dce88197ffe0c21da d91457217673528ef91663a74ccd2338 38ff18330fd5aace162bf7725b3fab02 1c685bc2a93f87a2504721639e19f609 58479a7b7c157865e68f66efebc71317 4cec451d0ffae39b79e99a4e49de900 7ae007a84e6e616d5781796ac0b9d597 e0154380de563d2cd81aa8b56a36ec8 cbb3ece285d9c48ee7e684d25d4dcaf0 40ab45735f526717e25492f5f62d416f cbf18927a23084bd4a62dd9e5e4067d1 2f296d487ade29fe770bec7a2461d9a3 4a4c7abae3929595184740798d03a659 7a7273d390ea180db857892c38c46c13 8c76b1db0a08653ffebad4f49b26ec52 5c92b3aad6c462514b3c42e318f3affc 4f22f44c331ad407166390f4a0367453 55740c07554a726257f40ff86fe708ff f0cbf508a2f27a16504721639e19f609 a40133bc1af575291bd0966183650a4 b1d9c55bd4e8ded1c76575d5e6d323f2 a7f9e2612d0764a0656a19d1d18fdbac 2a197b179994b877f63e8e405d49b8ce 76ab50cc6491e518782f27684f3b650c efefba3f45a9e16dd64ad79e5981cc8f e159d82f67a5953b1fb41007d56c0ca1 e0276adea0d4f4bf1783a44a88d6274 f1c6c74053fe8888c5f49519e3caf51 766d7892fbd7a9f58d6e12c39b2d5023 701551efa4f1f4fe3e478b26cb10ebe4 bc46b7460e4476d351e0e6ea07e9e2e4 5cdf1e5cc2fdacedb01116e8ff585621 24fdf6e5090bc3442370db05a58bf9c6 3de9797fbf88fc35d97fd0ea4791ae93 a6d850761adf6003dc89a28b5e6678e0 a910a4447648af1a35133ba9028a8318 57b043906feef78fbeae145d587f201e e8829b6a1601c109bebd676e3a69dcf6 910bbf8701a4846c2993aa294808121b 56c8c9cfb9e6b1b9fdef1c01cbd4ae0c 9b275819a433a9c733e4fde2bc371944 239a5029476b8a2adb6f46583a3903bd 7fa5ce045ee0a286606aad310bc344b7 1f571e244384bca736b0f2a1430e993a 7309610420ae20c930ddb6ead95f49cc 57406cae1c2978b40c306db1f141b05 31423159297243ded65766fd3c4f994c 586b90e4b5e0530935836c728d324152 c15a1da769c1ffc5be1649add3e36e21 1e7c8833d231178fdcddd0cba5e9fbec fdd7090f3ca12395a7ae19ac44244eae f0f9048f45eed1ab3a8888e78d004b3 64ae981900a1c1a37753393bcfa5f775 4841eb9b6b15d037dfd20491defa4a70 8ef2d2d320e4f3479e3ca99089143c61 110ad013a9ae7a1ab0f4eaf0533e82bb d1bef1cf465da3acdca30639ad4a20ca 57263b7b778ac3a87c076cdc1de5871a c76b2d2e9b7cc59e82eddefc99ebacfd e594b1e2f7a7f677492d9da2668ec34c c98207781087c7c2995e7ab497adca70 b90720eca9bff16c45c481d507018ba 747d2db60ca6b98f3eec26c23f5bc80b f52c7425a47ff55f79c8c47a54f30eb 8f2cc8ff68f3208ec935dd3bb5739fc 17dee0cfe9a370b134bce1184e175df4 68747a56aba6ee318677364bd64735c4 6ddc64415a10f4b7debe318339eaf996 4706461c517a755d4e6ea835fbc6facc 8b38389cef61cf06fa675450a2f0c084 7862b32132af278f45ce8baa9aaad5d5 e66276c70cadd32a3eb520ff7cd241f0 cef1883847c02458cf44224546cb0306 11e6e58798ae5be83e5b5dbd84cdd0f8 7a79745b6bba49114ee3d18ae9bb4bb a3c1460f50bd470dd064b65ccd89778c 92bad575037b0552d7bf6fb68df7f786 602b7217c42d3d365eead856a4605937 f5be22e0a737ca9f2c0658ad22a9a9b 5e2d7d43431eea85364b7ec2e28b3bd 4f58ebeb561bb94bb9e8bdc9c4a49aa2 b7012b9baf6a71526cff9b44fdf0517e 436be9df788b706fb40f0ac0fb9a650d fa89a0401873e5a6bbc7a6acbd8f058b 5ab7fb2f11d26c1c291743ae4bc47673 2a6b8437623a374e504721639e19f609 7fc52894c0d1e26dc433ba3e0e025e8c 540aaf05d1ff41c0c90a83871023986a c487441af8ac37a733718c332b0d7bfd 4e5c18c87a10f050e7469a3f8248f48 fb3cae311c16eae32b18cbea175ad66 68e9a9ebe0475536194b666f21552cb8 ca9023f1c44aa7db82390c5f604e0d9b 908de4d82bfb422ec43a4855019be9b5 40747ff0ea92f134c409eaceb0331214 5a643c0c638fc2c3ff3a3ae710d23d1e 629117f474a4bd482d7c2f5a9f32d6bd 9531ea3018e8bc70f81c330016997d42 4b9278e9f2f4056d1f47fd90378714ec f2ef238e2e4615e92cf8e80367b40c9a aa3e5b5828912c0b5d11e7d6920a72ce 47a661b489119b764b3c42e318f3affc 10709332176024ce9e47e7a22e24daa3 29b3a8cb9595cbe63b7fe46c7c128390 9b8f69874b502bc2742728b30848ed03 529c0a3650d6a7be97e2a21b8bc2d948 e2acc4d276fda3d77d70172a29ade99a cdd2c7251be91ca779b76fdb1a0daddd 2b8c678b99f7b2807ea88ba060407992 e1791ff04ab8348fdb63e6ea2fd66753 b718fe66075a7c952af70677c0b21b90 d57a11d2272f0d9f9c5c7365bb502b0d 19ee0ca97ed377fb69fffd0daafdccbc 8f9f59e023572749acdc3d668e7c804 5f45bb76bdcf883d5adb3ef1dbe9e3b3 307b8798217c08579e392c6acd0dd9b0 da335ee36e78e24988dcbe86402c7c15 e89c76bae2ce47bcf4b6538438a0b930 f029adb6cdf37c402b339ec555ba3bfc e14803278dcc08c4af7c7ad2549a1b15 df7fc0b3b796714fd00dd29272c1070b 98b698b0253d933b72dadd9292b51ceb 94f5c52453dfea0b6606be97908355b5 9c700bfbe8730e6db8f4af915220b65b 5a7ad45fa4672684f63bf7d908efc575 a5a5d118118eb760fee31d33418a3c16 3e5a18ae1c8d5fe068d1b9a1d97e2846 c960ba7a781b6fb9fb7e1f95705d8fb1 27700c06980561845c7f80200eb528f e8e586ccf4dcac74cad9a65dbad13fea 71a52b54d732450bdd766137cdd5195c b7073426bf9332187c564a6b9ce2156f 342d41101756553eb3ad032acba61b79 f609378d4f5c755c9df2fbafa78e52d9 e5ea39e2b4c28ea2a8df8437731d97b4 658c983e6982f6a43b48a711df82173e c7bbb1dfcac15f43e33c1bced7bc2a7 a16b8de490656d03713decb1a0563b12 e39df7339552595febad4f49b26ec52 5ef54fa5d00dbdf8c8687ff9b0b4e4ac 2aa122c56910bad8fb0eb7e753c06942 906608e3146548e6a4e733e4e18a6d05 d959b7666dc2fda41c691caf3fc2f46d fbe64bd927721467dff2bb0129eed40f 717e28c855c935c94d2d89cc1fd36fca 41ea9182aa12effef47265090d8660c7 75ea5a697313a8c214c2f69de20984ee 8cf71cf6f0bf6bb2b5af95b2c842e5a7 6e6ab9da02b8e3bd9bcd01fc6568d728 4ae919ca418d3625d30ba6a673002f3e fffda9f09223a21118ff2740a556cc3 a1296954d5190272327289c00b6dc9ca dfe0e22865575c43cda85f6a3e19b0a1 c48bc68a100e8c24696b74614952b2d0 ffed7e95160f8edcdea0b1aceafe4876 da1ef4e9ccbfab13b3234e0da44b11e4 bdffe559220b8a561b01b8d225cb89ac d792c65f8b1710709b9f2eb77f5e247e 9265413a74278fb5e45ef4135c266a12 11740d372308f12185047f9f654ddc2e 51ee5a84b4afc40be45ef4135c266a12 b6cd2d8af74226a3cd8b5e03f65e1405 3d697c411b8bf8a0df6cfab91d65bb91 c6786aeee29edd1b2bca88fbd368f59a 34bda4dba48231b97a90098a7525b367 7eb7574764b397c3e87e9b3f41906a3d d1436d73b3060f2ffd6176b35397ccd5 331e1247f5672328826fc8d57346a2e4 19cbb7fd3ba9324489a921f93b6641da 6a8e63f10bd6736e713decb1a0563b12 9ce08b44810f03c963cf8719fe855f3e 2c250a89e731a3d16f554fd9e81f2ffc a3d1cc17aff08bc7eab55e294b4eea02 4c1c81cc186dc50fd84b8ba651dfb8ac da918b121ca55feb9b9f2eb77f5e247e 6344b2a2fce93cc3d2f33aaf794b5932 3276361e9e651238ac4ed5495364a497 91ffa0718376a4fb3f7e27638e63d848 2abb64b16e61663ce99b044850de1b87 e8f20141696f143cdb77753d44aa25f6 7846afaf010913e4110b42f6d9481f5b 510a6ee3bc0a0669c8101121c12c3f9 65f065a51800eaa5cd476b195edd95d6 6cc65de3b510406ba0c5548d84070f68 426f02971983126daae8d1cc50964a7d ed1816d4dee58c7ddc809959e304d48 5aeefb539699524044b2fa2cac0778f5 df28bda265e0e5bd2d282edce951a03f f9c4baf01dbe6c488616812464c86290 e7a0200c28cdfea7c3bd24f986301745 c47b50988fef70c9220c18114ccfb3af 9930f9ec8e2e94b4febad4f49b26ec52 184007a6dee70847c2a9692bf3ba76d3 9ad2ee3a38a3d0ce3b32c8e0ac22ac44 6333b3de61610070cb443b1c1b54049e bd7566c32259e41b4c161851ed2b4e4 458637d073cb6e9dc8687ff9b0b4e4ac f2af2483f9fb980cb237f85c0ae7ac77 5128a385e9c90443febad4f49b26ec52 6016c2e4f5d5c2ae181fb5b25ff8403e 4e50015368a4f3ea4eb6addc0d23d122 cd5cc7a5e50478e82b520984c067934c ea3723766e96331ff91663a74ccd2338 4ed0eb4f4e7ea0952efff55e0bb2e42d c69ddb5376e22cb8c4e8952b27b5f370 eb2fabae15f77882139d2c86c9e03ddb a7caeaff5582f54f55f9913e822d5318 c3778a3db3d7060bbb40b038e5e0b7f0 1eeae84f10df85cd74984b9cd0997a52 2b01a7501dd9780075e0fac069101b51 b0849a1c01da76eeffa41024c63fa9db eb039f6a86785f3a9e633556753261cf 92450ce64f51c778f235ab3c41aeb5b6 725184eebea99d42a49e2dd37ae1f85 f268849e43f64861cb3a30f2c37c38a6 20ead42180f1ba43ec7d59bee49bd15 6f6191af40bfc07116f5e76c24d541f3 995ecc9f34e0dc3bfa2cf126b85e1994 64f03da6f61e5b99d858721c5f89c1b8 bbdaf1503b9e2219df6cfab91d65bb91 8e581e01a8b742214e3003b3c5dcc179 939d97b226f11272217ffa735084910f bfa242a09f35dcaa38fba5f798d10731 40bfad5f86a730b29f2349486c570dd4 6e923ab0f28c3c2e7251f1ec40392b93 22f7d658bf2d65da2933f312813ce997 bb48377bba20a712a45aa09d68b87656 73cf718c453779fe346b7e70ad2e57d8 58b1c10a6e1d67b3b0cf2e642b746bfb 297d3e472bf3198fb99cbd993f914184 459bef9cabed55cc593ebeeedbff73b 8aca9f9005d8a8bae36724f611fabaa4 507a5974b24dce2ee1fc1bfd241d8d6a 768acb4029f2d682bfad749b583f6a07 1d0abb4d48b46e3f492d9da2668ec34c ef4e47e54bfc685cb40f0ac0fb9a650d c7cd67d1a9def55aa192483aa282f8e5 917e8fa5d1253398ca6a405498436716 224775a0c7f8fec65780b8d333445e3e d5439bb962c3cc8579170a5f8beda902 d0215a0b82661b82496d6322c763591 42abcded68db4356352fc7e973ba7787 68f1d9f63eae2b5123c1b1df1d480bd3 fe8b246b47321320c3bd24f986301745 f645f79d47e2df0f7dca29e186afcbcf d409dbda0a34a953c9020fbe6b2ff6 9f7dd8cb949fb0971f6138b700829a47 26908ca3183b5a4223500a5b036df62e 9641c65e9a8f9a873f9d6e0ade5188b0 8a87ac1748519dde2fbee880b9f634b4 60a8c55e653a107ca192483aa282f8e5 cca975f4a6a4d9e9614871b18a2b1957 7726993e4b88223fedc32c5c9ec9f827 383bac847e38daa0e8dd9b2c07157c63 308b76aac4b518a43eb67d9fb75cc878 5162651a4c6da72e8a5e49d8f4867e8f 9d177c3174439ae1a48e53188865c070 8fd87d4aac0153a26b28a4cbbb97a012 cbcc5cd1aec9f3413aa677469bbdd68c d2a48ffb6d25f88dfb0eb7e753c06942 efd07df34c1f73cae2367b9e27f16a71 33f5c19e34d74fa97f07eeccaaddf1d0 eabdb3aa920b216820b64028d2efc877 20c6158bbeb2735ed1dcc55e36186e4e 482afdc2ddc5546f764d42eddc669b23 e4c84068e4c56e53bf8b9d530de7a108 3515073c473f4ec94b3c42e318f3affc 2d8f0977b9c6592ffebad4f49b26ec52 573a615f3496ff4b9b9f2eb77f5e247e 6d6a92847f46d8e27b57eb4fc830f67b e1ca70ecc629eb46ca17c984d94453b4 f59627a077dcc2566c63b8b48495261a fde8c87a485a33b78fa2f6eb9fb1de7c 1d8d16c0750f22f5ece93f2bb0b6d036 71eca23b5fc484cc59fe89a0706f1a71 50e97407fe2f7ebaa8135ec53db502ee d94490f503e005cb9eeee305ab9432f0 8e1d232ce609392ebd8eb8ad250e5135 219c603c479be977d5e0096fb2d3266a 489391452ccb38e4c8687ff9b0b4e4ac a4ecc0a3d68dafd44925bc492489de9c e60f50cdb48c2626d61bb0c6c287d278 2db8006b905b54abf88a016bc446405e 6d5c6eee9e25b314b3c42e318f3affc 6ac7b2ef38226e3d26c2e61baa2a8130 e862a41f869a4274ac7f1a00b76bd166 700b11e2ea3e941faffa8ecba9b9d6f4 58ebbe670d03fb65cf19858fd1963d10 96b4422833f806cecb092644051ec279 6f84118b912eabbd4587e90e2fc67ac9 9a28bffd582333ae2af4036e9c51cbc4 a1f46215051dec0871a782a4379556c7 bfb93705c05ecd0d31e7ccd4db190c0d 43849351a4da550b33d93f57729688db 752edd549ca958252b4875f731f71cd 2b82a928c4a81fe1df4cfe396cee719e d38a49a15715c46ec3bd24f986301745 c5be3a0cd25402f0242f43e6bc9e11b1 1f857fce279b761435fbe95f496199e 22b287d232fd062bf51f77a6d7299806 93e183f827d9361cd7c558b0724ffc9e 858e98a193f0d82f1a5838237ecfb290 9b40015761a54e18c29f8b0ac356b8ca 3f0b0feb58008a663ec7ad443e0ae81e 60c328c57efb2a69820018801b237b3d 5bba0c3a964662a6881e525dd6501111 32fcd056e1c474b84f5cfb5dea01f97e df9eede2969408d0bd2b1bd66a734698 5b185142b33f3e45c3bd24f986301745 7e4e9703841f16194e045e9030a39002 b54ae988f5bb6c6b3efeda73d60343e4 c8963b0930306a61781cbff504e4168d a92a13b4968d7780472349060cd3c236 aeb86d8354eaafa232acff7796d8c3b3 cbdfedbf2dbeed3a91f6e3ed62ffa5d1 ea7e09260babc698983c05814b11dc86 fc07472e4dd1b6698ae97f14e63e7e01 2759711dbb8b66ce66e463776e370597 98c78b59a5d97666dcad73f240f03a20 1e92f53f3a191323d42b9650f19dd425 38732a2b4c03e7a8b7a8bf5e3604ae72 9505568d7a277c7bdd7092ed47061a36 886c8d7538d9d7bde2d5f8333c552e26 c18fd0dd722d164f41bb00bd5475793 d5b9579151041cbd9b9f2eb77f5e247e 70ef2b4c4b287c4e3c00c853d8b7ab22 3a8b5f5a627bb2e199b439fff97886d6 955ee3a20ba242414580ed619ae2daa1 41396db6d7b550a411f7226d5cab1e9 41d9bd662687cf503ca22f17e86bab24 ce50c6235cf3ad8855afe589a9f09982 udf068a6b-e65b-430b-bc17-611b062e2e34 d23682341fc187a570732116fb5f6e1 325f9ca506317aeff2c0658ad22a9a9b cd9cd0ec7bc9400b559cb8a953a07d9 c20a354161c28f6ed4da89766e80607a 37b8604d852791651a648655355dc699 2892ab19f2d3a88a3ee8e30b29f70dfc 969730a19872b564fdb60f509d2616e0 61f71cc002f6da561c81652b127a0ec9 6684ddb2b7acc11e975d41ba8f947ac fef17c8f92673dd477b7d69aa83ab6dc b88d8b5e5fbee4fa8336a02debb9923b c7087db2f1ec6e62acd2bb6205825cb 61a6a9dbd3d0efc2c3bd24f986301745 113016635d554d5171fb733891076ecf 896303208667c3e9713decb1a0563b12 7788afe9baeb2410e8e9bfe58361d5c 59879a7a34ee2ca840e8b85dbf5f349 c1a0882e6e8f8b082b722fc42ccb4c6a 80ca57536dfe8de971a782a4379556c7 ca764efc4e76a8b48d69616377752ecc 917707ebea9dc26d7ee217c21e683487 d0c287f11c6cc95012d6d1e9f6b5e761 e4384c55342db206713decb1a0563b12 f39d0db80cf41db9820bd717b66cebfc 61bc4930719717a9492d9da2668ec34c 8f4d7de6fef55f99232ca089ddf0305 bdaaebf065b112da492d9da2668ec34c c6e46dc0afd8b9fdd722b8781cb9911 e1e3796be1c4313f9a59e20336b93b69 c04f515b688f9d97fff16555386d173d 56eca3d859b5e8b4594cea63c14fa879 450cd2f81b38b6fc7ec728abdd798547 4344509d0442364d3f9d6e0ade5188b0 5cf5615844b41442118bf3432a979b3c 77f1880f07fc9805ce5f623508bcaa7e 80bad2242183a77df69c1bc654d8fbbd cd47ea438a9387c0ee088de33038f12a d1caa22978e516655c31590a2627247 e6ec608ccfb38d6247928239f46b6ef1 8fbe7ef85a9c57db784a45ea6efa1d77 36ce26e70eace0a3d9b53420a5458c53 48f0c9b02587b5a8ea0588dd0d874b1e faab798b13ecba08e9f0f0173ae2f184 a8d357344e421ff21e12bb4aebfe8421 469d04bcf9576a8b8cbb8bac2032149c 5d72fa9aea5383384a73e364671ba824 e065edba45aee481490ad276cd2af3a4 ee6f7e45be30b0a5b9b8611336bc3051 ff969b22a8de5eac30e06a011e63236a 297a74e1a658e231f51f77a6d7299806 52cfbd8c8650402ba72559fc4f86f700 21f2927b04e2f22830ddb6ead95f49cc 3a96b4ac78928fadcfd33d85f931f6e8 b85de1f567a654737f8769b595aa12b0 bbe566c26d28ccfb504721639e19f609 2592e69aaa2344292463e74275a0e3c 3b342f2ef792ff6a6006cd11c597105f 2edba114d2e9454295bea7c29e873d16 308e56be04f6214e50ed95708c70cdfe e92bcd55d36a2b70ea934df7efd260bd 463fe7f155dd7279a7635bec8b4f9183 ec0258c40ac29da083deefb07c367f12 2ca6d10b1ba99fbd9784ddd96453bcc2 6072ff799065609b6bc601efa799c927 7b01e2a03e614eba4710269d4bc18736 df6157db2534b72a9a293c6471e6f319 df8bb7ecc402ede384a05e54516915de ce95fa90122dd67e5935ba184b9bc177 5afc95ed2a26ce548644074928ab3f32 8e2b44ec14701d057c2b071b8bda1b69 30e3af034e3dc084ddfd4f4b3d47049a f9e8a5547d89615dfcce6278f5ffb13a 866e7248434968051cc7750d0afca796 ea6c45a1a6accfa7201a419fa3bbf2e4 46cb1e740cf6e9ec7ea88ba060407992 8ec247d0e133ad3ce922ceea1248b9b0 797ad20122fb300659810674e1df4887 7263fe53bb4601efa37f3fc191551700 9e8e454c76cc6815dac5061520ffd33e cb714c518e3607b8ed4feff97703cf03 f1dac1909107c0eef51f77a6d7299806 20d01aedf15d4d1d23561140a396280f 6df97f6b123be35b71a782a4379556c7 f6988e6ca8ed9261492d9da2668ec34c a5f8050192680e993e6a70f59cdd19a6 a77b1abaa28588bb926350348c58b8b2 2f0bda4f2c225e0254141309938df7ee 56fc424a89bb137bf2197da8dec8488d 491eb8f7028d06152966622c3d8ee695 3f194ed2680ac0f4f875094dbf5fec47 f1a1c9f231d2db078a8a3348259a374 23e726da58f115f69b9f2eb77f5e247e d4f38e40aedc67f779368d1198f406e7 8f1e882bdc10f54955f46d55537192b6 cf1e9c2ae3309c65d7bb55f118ea0541 d2c93dac1e088b092561e050fe719ba bd6fcae754203396e34dfbaf829eddf7 b932d245e5e9f98b504721639e19f609 63fb3c970f0051c730bbd4cddd04c77b 8748c7f2041761401fc5750ce9890422 337050c0a5a7f965cc5cf3ad66086732 6e06af0dba36d9d8f3f3ee5e8ea028d6 6326e2f6e17cfc21d43c0a5e70f98227 1e1151a459002e85508f812891696df0 1a74a83fa6d24b3cacd67ce2c72c02e 117c0e0aafc0c3f81015cdff13e6d9f3 5748c2c222d1528deb0a72cc21af76ff d3f4ce51467fb777525211e12d56c55f bd0cdf88217ac15af9e0f15cc1c070db 2724c02bc7797bd1486150a9b7f2cf18 2207db2fa2e4cc4579b3e1be3524f72f b8e5ce05c382b9a3f51f77a6d7299806 4019d848076af6157fee47aa19e2e28c 3075380de1f28ced3d290591da43d03e ea02e94e39a2fd3922963ea1e168015d b526dccbbe8417bd6cf45f1c1a3d29af 5ffc415d0cd8bf1d86db7993cf8d36e1 c976cb3eac6a89d9a0aa42b42238537d 582c67ae4d746d121b356ab8b24c147 3c83d6ad882270287ad11050da24bb12 8d4efa9893f7e49b3a85b56ecd01e269 2da97edb618f05a5b2ccd937df5da28f 7f647aa4750640fdaf192dd05d69c7a2 fd31b09de6b3a75666764c53f1bb4495 a5dc036f882fcbaaeb655fc642cef479 ef9f4de6ad345818b25f0e6fce03dcef 498755187e526e5c1cbcc2e1b14b6d41 a9b75041c8ef8654f2b838d6025155d8 3c408a4ad6d57c3651bc6269fcd1b4c0 432138c30378b2a8e1b6c3a3e12d929a d9ce33c5f448815d7062f2d72cde5c95 ff5e8226b88c6b95741cdb62023d6a2f a10370a1cf036ef82d4725b469da72d 73374d8256f79089c308dc58cdbda034 da7fd2dca5e9f29455f0f54ca9692531 d04a1ec4ac9de6d6eab55e294b4eea02 3171bae36693716126e4d5b5a8cad4da 71dbb37c026cc338eff2e9bdfc79fa2 ebed17a73a2e9e981882515d09f3979e b5ae5354fe7c166319cb07ecb5b4102 59ee0ee98def6f1e14b86d5282eb8301 91534e0a3b0aea7526fc87e2982c8a2b 901cab3f56c74894d7f7a4c4609b0913 cd9702520ad57689bbc7a6acbd8f058b e29fb377ebf475c51b1a00a31bfed97b 263cb748cb81e69cc329e2758ab09ecb 89b05900bf1df4d8c8687ff9b0b4e4ac 5a3fe2c1f1e2009e762ec387b772e9e1 524bfc8159111e4571697d26793100d2 5043b2deab10560fc458ea4eb61fea2b bc78f5fc9b614e357cee0fb3ce7bfbe e9e224bc0a0787d8320f10afdfbaa18 99d5fabe3b8258ce9d4d5dcd2cc33826 807c16e4f6f2c5852cf52ec1a1c9b69d 8c629a89e570c8776a9cd58b3a6e8ee5 9bdb034f30c404edba1028cd22cb8779 48d2769e59e4c2b9febad4f49b26ec52 8bc130dee1e488925a7b0949b519072 67fd2b1f102f4f76ec89626a4213fd07 d7da1c65f996cef2febad4f49b26ec52 8c90c2739c56c5f0327289c00b6dc9ca 40020a5e90c75d94a93412f1b60e6fba 974afa9a51eb74245c26acfe9040fa59 43fc49e4d4ff831b7df0e9a69c97c97d 438e57bab04de55e8544f4ec4dad7a5a 50477d125025879386855a8015309d66 c7dcd3fdd4ccb7563dce8e6b691b2a29 802c4ba91b2d1dde9d03faeacb82516f 11fa9b044482814ef91663a74ccd2338 d528a94f72c994f3e8e5fd5b1798c97 b1b11a70a19492fa5242f8291aafac22 7224a8114ee2daeb0c0a8b87064ef09 3612bf5942858c5976ccfcabdd2d6349 6b719f78721d1eb742559566b871c978 2ad02c9ed22b03727f141968548cdc00 364a43c9f94f315496db593b49da23e5 1ab42ccff0f8235d979516e720d607b8 df91f68fcd968fd0e4f1a5bf17db27b1 f515332dbceba51120768660cf080d12 13c18609602e4ced37b2bb75885cfc44 e62b187f6741283bd8f27b2e727c3511 f215c608fe63e97d4aada2bcdc05aa43 7f523cf6780aaeda2a691a30a5c88605 8b016c4df0e139b660065f613e3a3cf 624339070f8a749260c69156bdab9446 e94befd51c02533b17b431cae0dd70ed 86d77a9e22be4d5773fdbe4b39ff4036 5a96894b5cde0551c8687ff9b0b4e4ac ub5d972a1-de16-4d0a-aa40-85cd3a69aa8a 6a2ae8bc01eef7b25e655c6c6e834498 9eb0c534624408a6ca9b40e76e725878 670c7df7c840f78bcb7547c95fbdff26 877391ca125a5ad07a56985e287037f3 4c1d6b12b48a80b0ebd10747ca93b13b 6cf4bcb8a694242473ae2443c97a1733 2787a03f47ffb80360cc99f89622808e 3334213d3f378a7eacac9cf65380267d 8e93fb99aaf17b9504ca5aa564aebd0 e4214fa7a544e12a37b2bb75885cfc44 f23ecf3348299cf743e99e0cae970928 bc6ca247b19398b89c7dd675565aedce a273d2fa5244c74f654ea6737b0d3597 dd27edca07570d277ad11050da24bb12 59126ed88bf7735b1817f13b030c6f32 e6408c4be8e6502837a346dba83c013b a113c1f24b803d37bc5a6eb75687367 43a275d9bd008a64bb0085d0daabdaea f9fb36db323fb2d2df6cfab91d65bb91 d75d41af68f4bf7f9af4053b8815b239 47dcabdd8618e5c4b3c9a4ebefe3bae0 35c3575340cc8234456cbf78e1e89022 f69b87648aa2c6f52ef787234c3ff353 c29f439d92c7ae8d6d26324fae5ec3af 111cb08c8121b8411749672386e0b711 ffd9387a533fe59e251990397636975f e1f6a4f5c856ac07bf80985a99195eb8 e352bba8524fdbd98f62bdf4e9082924 6c72077d968519bc13e020d985215e3 33e436e30da86f3bc5beea20858a99d5 fbd890f1f0280b884b47ef9f38e7ab27 38b5f764afc9d28f200ad3f421b6c3d0 9884421ce028e9b1d2ad4916ac26e560 58891b4cc3fcdd7622bad8a709de6e5 28e147166eb68b2763ed57e35c972b4b 90a7820e2391509835836c728d324152 c44413bb705968bb71a782a4379556c7 610b1621d1997ee1daf3c002be658861 a643edc1849558eba81634d14a6ca786 4450887b9a8867e6d9b53420a5458c53 51d151853d8d05db639e286420a03c3f 5923697231e1bc86af38a3b0483df58 18fe5de83a17c6b5876b399a99a15c0f 432ec0e5f2a07ab8795bf1abcc63e867 8979c1aaa6675009bf80985a99195eb8 6b9dc32e4d278663c8687ff9b0b4e4ac 787a4db5b3452fc357a847db7547c1f3 beae73bea87f36a8f797b840852566c8 50016cf5a426bd63f9d384ecdcc090b1 40e603e93818760fa7e431436fa7573e 7e66472eb05cca212e77b4bab2489170 d29bc9defb4f021cd1e6c0ed5832129d 72beb9225a841cef24367084627d607d 5eb38d4e556a893a3b832d9b48bc2dd3 d36ecfec3f3c18a9a28fdea8831e592e 3efa8030c71fab9055afe589a9f09982 1959a7d986720364c8687ff9b0b4e4ac bb88bf9eb071f85bb232f4221eaa5610 3569709b421075c730bbd4cddd04c77b 594d1220c2c6df41b04bab4867aadedc a9422478728741108e21d20fbef78328 b3ced617a2923f674c9740802f05a1f4 341a2d3df9800314fa260f4362cac599 3fdc09d3065fa3c524e7e8a625efb2a7 f3955fc72bd9f91e30e06a011e63236a b7a1ec97b8f85127493a4a2a112261d3 b5a741e11438fb83d155b73c25b81001 5987ae6521cfcc53877929062720130b 5627a479e2e7373b11800282ad2afb09 5539a4a9f2f1b45f3eec26c23f5bc80b e564f393acf979683c2e50348f23d3d 3d5c94f748861bcf6038f78d0f44e587 d9943f96dfbdf331b17743c18fb63dc 6e3435d56d8f8465daeb838d0771f3b5 a0196df591bcb5f7e404848d22e4a58b 6dadf2259bec12c6a51c26819f8dbb51 e66ee381e20dec3a44f23566597ec464 a838d73a1ae66934b161f36d4e309050 e3ada26cde5b4de01186ba196e9dda0b 40e2ccbc74d0aae3b398a1cfd1079875 8f6395e2451cafa6473f10e6caaeca56 6fcdcbaa1cbcf217be8211d595eb405d a4da5746b99209f85da16758ae613576 d0255120e3351121c3bd24f986301745 f413955a0f16ae18b76e29c9c43bc7aa 8fe0e6780b3dabbbb098f5649ee97d24 eb32fa1ae8069d0998e0d1738edd4f19 6ad86f428cd45b5b258d4ef9a9977ede 18d391ede29e2edb990561fc34164364 8e2b4f8e0a38d2cdfe74384b8bc69dda 668aa5d430fd6d4e8f7d9678498f2295 1b5fc54e45c8768490ad276cd2af3a4 dfc2328946b2d54a29426a0f57e4d15e 5ca5e3357e5a6d9b45c6cb69e0968783 50d277986a78f9fc3eec26c23f5bc80b be0b0a9b0a7108c6e4f106360437e8c0 60b3d70238246b3e408442c6701ebe92 40acea1827a81a774f7f6d1fb681883b ed9d0bf4b699c2e86393e0168650b62f fa8860d6a0d45a4688dcbe86402c7c15 954a964459d33b8a71a782a4379556c7 71539c627eda703490ad276cd2af3a4 cccc93857d3f5c9950504d983def56c 5ecaad1f7575b3918ce66f12ba927a2b c5be8052dddf9e92283b00891f680579 46c7367eede2d9c5ca2ed12df13a916a 8f09ae17dedc43c6dd7640b87074419f 1013f70851210a618f2e765c4a8ed3d 2b7335c083d04862ca9c7c1ff5a28926 4a45de600363af6bd5cba62773b8025b 8a455c7acaef577824f0493013a8318f 2d75f86921cb919b88dcbe86402c7c15 5b27b7cc16d2b25231f8120b4da8e523 a7b9f9e341c74b8d57ddce8e42aa6e90 d5d18ba694ad228346b9f3b6ee20ff4b 3f5f14f6156261473b194e6e71487571 91cf38c4b99d75374fa746d16faad4f5 7b2d8c9f611071c7d810b14a81e12eca 794e80fd66c833917d20e6f91e9b2f9 d5c67068390ece634060d2cb099a78b3 7f6bcacd96d3b89ef8331f5a5b032c12 c69d5899d85eab9c173b9f28a2caa84d 21da49c5fccfc3e68d861be5b561accd 58f44c0057ae64b525633180ba767a60 9f9c83f3014f19c79e4965f0106e00d9 9c825b20d4e35eb595a6db6161d501d6 6f70a7948c59b49943da6ec23cebe068 63cce233e9e5c33cd8f27b2e727c3511 e936176764be83d029426a0f57e4d15e 6d270bd691a168f48fa2f6eb9fb1de7c 99fcb202acf5d60950cf3715818ccfe8 2be29f8ad81e2742eaf14273fa406ffc fb6c81cc88761a927cf3afd3f215c3ae 2a2ef361fbe78f1e9f3cdee390cffc8e 21ba49d0622c590c8a93d439b5823fb6 7667d0da445e324bba600d75deaf8d3a 9e19e66686ed019f811a574d57de824a 7f14058e6bf50047ea1d47b7c8c17fea 98cb91189f35e5f57c311bdc1462c34a bceab717048f35fea481048c76a35623 226927edcf014278cb94e5b490ba717a e50f1b2d0835bb392764cfba57a5de73 5566ad94be22e7b5d85141a9ad5b3597 6c0b7ec41053d2e463860398b0d16872 4960144353a6dd944c5483fab67d9a50 6ecbaaaebb241ec34b3c42e318f3affc 5bf38f7840d4c8fc8e9d341bc3648f0d c65f9af5b5a6cbfe5936c7265c890fef 287bce5664e168fd744dcb8aae5f2395 a724a8b2ea1ef63954a8e7cfdf35a7ed f43eef7e3991f80346ebf4f1147c3f0f 5b9ebc70e9a79b69c77d45d65dc3714 4217f2ce7ecc286689c81af3a850d0ca fc723b936f8d8443492d9da2668ec34c 2a87cf850dca72a4a886e56ff3d54c4 33abfbb0993473bd71a782a4379556c7 58b7e2dd5eb73b70dc742bd7c6fd1b27 8d3ea5a8630be8c0f51f77a6d7299806 6a5ee2ac74c81e9d470412e9b69c8933 e2cef660d0d7a4629976735d0dd7540d c9d5ff677600b0a1a01ae992b62200ab 7121296a75c725aee8f8c11a24c52ebb f10263256eeb840b732c9e6120e90cf8 9c9f007599018973f51fa0238791f5dc fff29a99be0df71455a52e01ade8eb6a 4dd8f21d05f7d9a99e48f9f4020457c3 69aeeebc9a686862cbacd8aaf9fd8072 ce159c7d983d74136ba14bfd91a75020 7fd10f44a20506ec1b17743c18fb63dc 8b45782142fe42b02314deb821327685 b46ad21b7126049842ca7cc070f21ed3 e4602d2f261da4a314b029b11f36ab2d be7ee770ad59ed0eb07bc9fe525caedf 4ae3ee61ebfd4d7bc05575120a46cd3b 780b18643b4cdd991df85a93cb67ce5f 1da9942b2ab7082b2ba1fdc12ecb5c9e e5a8500223786886995e7ab497adca70 60a1742f1cda02ecce5a69be7dc7d68a 4dff2fded7130c631a8db2c23945f1fa 434405216f00c9654b0375f3afdcad10 671f35148ef1cb2fc0806ee26b689c99 3e5e00868a2dfffa7a31dd5af93fdb5c 13bc03eca6aad4b2d7bf6fb68df7f786 ce774c6584d282ce843ead12644a79bb eb1019c438090004db6175ef18ad3f80 3c02356c918f7365b82b2bbc752d3ebb 751d61e1d2cbbeaebdcc459b19e43a6 5d7b94584595d7a9118486d21a76684f d64a812bb87a822b8380de241b5e0725 bdeb8ea8a146bf69e54cb890e8682c84 4fad9d9b2c73cccccf0517eac2f2d331 3fc616c2b603b333f3369bb203286e75 9fae85a69532d03fda686a7d8e3d0692 fb633f298fd5a44a9a8ef44e1d2c5b75 be50a399623910e1fd03f420a0b8656 2b8380ed4b779be7af7c7ad2549a1b15 8841a35812d5a95f98a4820926b2a786 a2fdf98f85cec8696ca407465d3c74d7 3be2c90d1c2730fa14659d605ff53c6f a6e3c2cecd4b6b6203c870f1209d6b9 6f764c190cdf1629307776da88d1350f 84d783ab90b79f8036b0f2a1430e993a c46ed3a68dcef72039b07b3056a2842b 1f82011c2303fc7babb8f41baefc4b12 66312d6c06a24772a8e75a1a0cf7490b 8e87911087743bdb2314deb821327685 ab62680f067bf94dd6a6b5838ef6b356 934d183065b149d784e40fd1beec9c4 4a671498c6e96238bf8db636a3460ee5 bbef67b2c3d3864e8adc2f75cf0a8389 ea91d70feb603421f74aae127b28c047 3427d2276fb713e5864c004309dc898d 96929d658ba1a01211ffd7c4e1c9d12b 92d87019793c97c636c8b9bf2576aca2 28673322a55c9935183d5461e0e1f71 a6507d76e88e9d68c28a12683f5d3629 2a417b5a946ff7eb2a3f8f484e6c5c4f 6fe690a6f597351162fd10b0938dcb5 6a5be179ac61ab24b07017f7091028ed cec74855ee27972040a35da25154231f 97febe7745f35b9183e0de42574c850a 8114bc9ee0a7a093a094848ea4d06501 c09cab69cc04378cff24fe90298ffa71 8daeb5877bba8cf5936c7265c890fef 6cf3b41688dfc4b4707cdefe012d0353 67d86ed49b1bd1e7af802a9d0ab09410 1b90394dae690dddb53be07817c1dd99 933902ec014c6d487135fc51795b4038 36ced137933c36a3ff085529822a7226 90d35ca55b35d56dd5883ca9b41ac387 7dc902a12843fa60e84c9243a4e577f 8c4fea06a94d7ecffd61677456447e 32e6139951627142a087337e55e3e2e 6079b4aa115d08c28998b3b64a143d42 6c1352ffa574e154ca2ed12df13a916a cc5e3fff3e1325dad67c0f41a0da9c74 fa6636dfa85cd625f63376552552931f 7bb5321d1e63d8bb36b0f2a1430e993a u45c7b89f-d996-4c29-aecf-4b760d1fb2b6 ef66111933d5cb32e46ed8e42660ff49 6bcabd23a81dd790e386ecf78eadd61c c2430d27be01948ab8e1b99345a5afd4 e50825b2477ba5a0dcc52ca811e565 108b9cb292fd811cf51f77a6d7299806 82979f3a00ca7b5b0003dd98e70da8e a4684772b9356ba28fa2f6eb9fb1de7c u6028f63e-4111-4412-9098-fe5f4f0c7c83 e425c1db44d1ec8ac73ddf48fc777dc 4efc68a96296be2ac785f06f424b9d06 6ddb87a44f7f68b89c0ca344f487323e 8d7f0c67789caaa3f415ddcc43feede 710441e3719c99e04b3c42e318f3affc 681b792d7bc9fdf8305e886266e302e1 2c03d0a4c83f0e89488017d48a7f7eb4 da02c479d1284ad38727553325e63baf a0436bbc1e00d9ce6aea2f18ee404fd5 639e40029ef06d6f7e67c36deaaa271e a50cf70c56091637e6fe3612af521500 5faa205b9355a66579ae41e1ea899b06 33319915ae51cbf33542091189dc62b5 71372a09d0dec4f2e3837ef7356e7613 893bc32a68f387b0b675b353faa5a26 dbcea1998258b0fa6f500315ae356942 57cc406d478167a6a6c03a53cf0a14c9 4cc17e003a26a3d5eea9006d9d8918a7 4365a4d98c9b979019149a7f35de06bd 8bb9a20b7090c90bf2356faf7e20b90a d8e5d15cca97d3fcbda72093f9b5aa73 32f007e84efcb9d12cba66dc6aeabcd4 74e14880b5aab8e3490ad276cd2af3a4 6e1e605da1c3d680f9b9977a2406713a f1fc7d26395549ba5ad8ce80f1a173ac 215e557db4c4bb5d837b757304479228 e6719610fd2c44c99295da7959c963a1 9ee5eb90d1176e2547dcda54be6a23ae b7403875e1d7adea331fc18393f04d2a bf179410ad7f9f37af6595f7d3f20cf6 6189b30ed01f7bfa5692a9640d6947fc 682bbcd00c5287a39d365481aaba80e 946f16a9bcc3c2be75aa7f24a9b6003a 98f923c006fdd918e6d206b2ed87676 2588ff9ade9f3c1dff2c92c2a4f65876 e74035d3001deb876fb1d532bc5b4021 4ce5a0d60fc942f2e595afbdc333be49 fead8d07aa53de5871c3cf047830ec1f 57583ba714a883ce71c3cf047830ec1f 92db07d09bb110386bd0aad3d992cb54 ba074c9ff5e36f60e8b2b8dc0c816caf 39fee081ec01fbae4b3c42e318f3affc 6e965fc2145df32f4d678187b8261d95 e905abdafadb48d4155b2bc3322563d5 db0925930500d67d7094f114e4783e96 562e6354049ecbc19f8f9f2bcc40c84c 4ad06cdc2f8929f44733824eae5cd9ae 67bee683e394395d84ea893d074ffaa1 9324b077e28980f3e3dec121245a30 d298e7f6e0e335a0e4197c3ebc03326f e6355bbd9aad146a149098a193698017 72cd991e81a34504d838ae16242881dc 6b00fdf6062389ad738dd0d3509c7e47 fb056f0260d4855d36c8b9bf2576aca2 33fcb31af4c4d039fac1db559484b15b a6bdde9da1322bd5116162acefe23592 bf3c02f71de0260a8dfc31d0ab372d9c 50afe00f341993ae7d63360731b4227a b6b426ede67febd4a413908c0e169330 f3e0042ea11660d0ff2c92c2a4f65876 e039a013f1877fbf42bd71dd667c95ad 53316b8bdd729c87a516ad65be981ae 94461b3e6212f63265b1b65ffcd737a9 89f5cda510eea57a9917ad57402f53f1 f3c0ab68f3dab6071b17743c18fb63dc 3c17fe56ae05d51620768660cf080d12 ceec3aaa6ee72dee613f0dbd986ed6f8 6bd131b9cc3e8b97b2ce8575669c9dbb 31e59dcaa15f2599a52abcb0c06a3598 bafb9c9602d00b3e50b42dfb503f5a87 e9ccf4cc84c085f8c785f06f424b9d06 3e427b76d051cb9ccdea755aedb6e3f3 acfd2b0f06c128d72157d75d50a75b71 eda92b7bd76d8bb0b083574fdbdf0a98 631671b636ab97d4da41a38d2e317241 a554d5e0eee3109762411d0498399c28 e3d3b3e060ef84c93ed60220ff139f8a a14c7700cfc99b03ca6910e4922d61aa c2e50f21663db36af8f5708c6c7585cb 1007e20d5e811b308351982a6e40cf41 53f01d977de993442ea98d69e91ba870 4603969ca86e226affb3dd5191e9a4 712415ce3f126dd921bdbc0445d9f748 eb7c250519101dc22f21cf17406f1f25 f4427ee23d4d51fabbf98dcec5f11066 6be6173e7eea5888a616caf97d73fa02 668857eb0c18b0785dc3653f8341633a 88382b877be91b2a572f8e1c1caad99e 7aaf5573892cfe086e6e0f71258e961c 294406eb0453d6a74aad3d2faf99eb1e 79c9fdc6bba82709c8687ff9b0b4e4ac e388792a151735e57597e1f94410131a 52c4af69336f4d6de9deec47d8412ee 1e7bc7fd20c61944f51f77a6d7299806 a14880ecec87a82bf9b9977a2406713a ce3b2722cdecb0f0b3272b4a93a044ba 2a0f4fe08cec3d25680876614ed35a7f a94eb852d2137621b38821f893bc10f9 6a73ce89c4a941ac0f947750540fb22 40567b0166658623b80ea7d1a9683df8 81276e5b6c8871634af957103f4767ac 52cc5e280c23ea9d490ad276cd2af3a4 375dd87b163dc8a3a3c9394112c76917 3de3774ea9a05f51585ed17f54616d23 4b35795a0ba482cb4f3443b22038d340 923bce0b230f5a1a2c919c0510a0815f 323ab1a1a81ef0f51f77a6d7299806 e5cb5334f18c13c15a7f6c1314f7ac2 8dee8193a06525f51de495b75c95e5ad 569500b7add934625090f949bc5dabd7 cb867c64ea2ecb408043364ed41c1a79 4d6107c32c75ad6b9f4b4145f6688869 d3bf9df2360f0a56731dc97277e95217 9d0ec3530b39e89640f4518b250404ee 83649708d0f14dfb8367ecca203c14ae 726996e3177354cf2095dce957a7a5d 3a123ae34379ea6871a70be9f12ce8b0 73fee38797aeced4de03ab2a27ba7531 e5a65fb8c660ef96dbbc9440457e303e ce387113cca9c0754d33a7fd9c37a7d2 8cb521c0e96b349d65ba78ad9601cf1b 89018ce4961c76cd5a8ae8f7c307d01c b192cda468f9390aa3f22b4b00de6dfb 4a50449de8e26e82eacb498394990f0d 55185010b0b6e42eb98f36033d4304b1 33587d34aab902057add36d8e31831ec b559688f7af76ff5466127bf535bd761 9d20e4d4637e66175836897f0d296c15 7f820a5aef9899d5e2953fd13c76ba9 3374905da20ad76f3c9c1464e55d580 8d18fba375d0545edbbc9440457e303e a8c0ceb67971d0961b17743c18fb63dc 1769c3cf3391d5c1a1d7c136d0e341 d62051da1ac1ef21faf575cbae5008b8 75135e879341721c1cf9f632ab9ad62b 7ad6cfc9aa35aa058573c953964a33bf a4b690e66e3937c88b42931b6e108d6c c61e3ca5004f3e8667816b64852d28f 88aea5f475654e491d77ac5988aa9265 9f5add46af4a41a1305e886266e302e1 daabf4a2afac24c97eaf5bcc4a8beb17 39d1a6007a4a29fe492d9da2668ec34c 5e13ddf9fa4ecf53c62f0847fa177f8c 7aacb2d4940e1af772ee08e78374a212 6e1fbf46f1d0fb73d8cc7a9b2448f97 e8c3582f0413179b47edf0d5b6459616 2c351621045e25351385913bc50a0210 3f0beaab92a08fd74138477d68528833 bee929929700e99fad8a0ee9b106700e d460611ebc267961d838ae16242881dc 4387affd3bc4509a36b41ce3eef1f5be e7316ceb5b944b6fd0a96520c31993ad ca2294ffc664a55afab1bffbdecd7709 69261d58214053d1e6c5cd45aa112726 c8d6e4e789a0c6a7eaeab1f0c9120b7 ced9c5eee916cce089c398a8a379054a 2ab159f83754a93ea6c03a53cf0a14c9 eacc4fa00a65e56e374f33ec97ba7ca2 38141adb391a039ff3c330baa382ded9 4552ab193b8566acea343d0d02e4d3bf 4a89aad97f4c503068d1b9a1d97e2846 e6b822bea1d5a5a9f7b783634bf3f92f 20e1bdd54d4082097962800be79c6e52 9bd5937be6aafe704c29eddba1f2e390 6601d179e754149e2f710dc8afceb40e f9da1bdadc982c7f78ee935ba846606a 406561a447d3f7787f4096327f1fb3a7 842130b6eaaef7a4932471681ea5bcf2 30b0196b3b5431da2f95e2a1e9997b85 e3fba8a576d4d875e1d0950dd1aa903d e27cb29cc3df4d0330989b15eb158e03 3bcbf7c8c8eef525c5b0fe224c67bd68 a7f911657d2ac259177faed93fef7451 c5d58dd0119f0e49503aeac2cbb6e06a 5857dfefaa1b6d071d9fd76961a98198 fc66e46fe850a243f51f77a6d7299806 4148f94098b428095dc3653f8341633a dddbd223b3bbfa8efd93c2ac42357c74 44b0b359d2eab610c2a3b7c9bad24907 2d74dcc00e449a5462a510b8f97c658e fa5dab91cbaecea8ce9a0998abec10aa 632a722f9edbaf607b11ae648ea92233 b960544cfd0ff09f26b2c6e6d8c1e1ab 4c0d8f04f27f96284417bea8868af4d1 2a8b0d30928d3161f7b783634bf3f92f 42635d55c5905a682672e8af102e0b3c 2cbbe7f1f1f75e34d28b52ade6c7e48 26e85b84b3b6eeea21711c78ff413696 c78a6f04268dd802cf004563556ddb36 65b8c99a5ab7eb0492ea5a71c9e33093 a0e9606288d3ac22b61d9ed7bbbb5b3f 956dec7d9cb7d078a9fe51c710ac111b a469bcecc0a03db7d40dff3e049589e9 5a5b11daa1b5344fb516c05d046e8e45 e59cc0fed1520985b21bc3cf138f79e e04ceec8711a6027a6e27bc066049db5 faeb171add09f98cc8687ff9b0b4e4ac 9da67fff6ae787b2eb0f0bdaf192ff28 a8bb7a8d6f2e1c5dbbe43d356df0e955 3c1dc5c4b0c8db31d20c5daab0fdbf5e 3297a632aee6ac55dbbc9440457e303e c5203dae464c264f4e41620d80d9e89c e6b80e51ceb5c2771a782a4379556c7 38c67c695eb4cd819e179bac86183112 a004ad56474501f67eaeab1f0c9120b7 91d84fd5e5ad5c09e63beedfeef0900b 7786f1205337093d6051d49e4b21b83c 40a9dd43155979e7c40cffb9454b27e 3318f55fdfb9a132f83ac1589b0e94a6 60512d74c623484bf27383fc5a5a711c c0f18b32a4124eccad9a0199a27b3d8 2bb65d6612027f18591999955e20a6d0 ec7076f7f37a6e124e234a6f5a66d6d3 a5abf524f9b08432f51f77a6d7299806 8e76d0002b592ef91663a74ccd2338 ec91b1b29b6bccd37eaeab1f0c9120b7 6e50f19c52a760e3cc1159c3b443c932 6cb3d99b20e7fbb5b04cb542e2c50eb4 ed6bc67f247a5aa3e43df8c9a38bf11b bc743137d2070eb1f51f77a6d7299806 74c97be038139e9792d9ebeee84a8909 ca84b42ab1cfc37be25dfc1bbeae5325 88ba4696c25632507b6a13c9370327f2 eb63908dde4b579e25d45769a218937 96bccddaf0034be04e5cf15b26e670ad bc92651fd7cd9ca8cf68feb7ddf815ce dd0eecbd7ad89b2563e7eea06f1f07c8 58b3e0d46af2019bdd7092ed47061a36 88058de808184f3937b2bb75885cfc44 bea846f692c8bdc8ce6fb1d4c6089968 3ec25d235438258d815b20ced9d3b22a d16b62da42fa61f0cbce248a4e686c70 c70c1a6a0e795669f51f77a6d7299806 2ba1779986eb9546f51f77a6d7299806 27559a7e2b0b839d75bd952b0c911144 c2a7da6a1e1f896a301e9490bfb35bc0 a216d6a04494ef6a32485dc6e0b2347 8bb3a13d45c5337d20e3ea5765d7edb 4a2b8f9d13afb39f8f1abd08ebea3018 4ed8015bdbd8c03d2f95e2a1e9997b85 b58909919d9feea6976cd10355a74f40 7fbde9d7cd67587712ad7c55c944504a 746ec5c7c0ab8924fc1f58a995f231d1 61950eabab269b5c530a9fedbeceb83 c0720c8d54745ea8c8687ff9b0b4e4ac c5637356cfc865b33ad3591a780fa12b 2bf69f0fa5be4c3f6ecea8cff53afe1a cc1dac5070d0bb7d5c43d2b61614d0d0 4fae9528f1403fd0f9702e673573a443 bf39672eec1e343284c6c80813d54fe5 802f70c906274da08616812464c86290 b16ae1856433e726786e4057cea53718 37078d0597a05284b05550de345b6d0a f891816329ecee93774476b2e205b9b7 33cd8045bfb42e53dca072a2e97c1839 3795f02c9818a7213b407f4857c15d98 98547d9147a58195f51f77a6d7299806 ffa6c1a509986a5676708f8dec712a28 9af15c2a94ef79844aebea9384ce74e0 ba33781b222ca9346e23a4fabd87b2c e8dc06c3d01d6592f4b6538438a0b930 659fdef8de4769079c251b4a7838829 7f9733a6370440dcc8687ff9b0b4e4ac 5d5e887b9479de0ea9bdc22a1e02e82 95d83e52954e1ff2d19175e7d19b7cb 606cb23f9a7f23ef51f77a6d7299806 10dc303144fe5d668d1b9a1d97e2846 5e259c1b8640f5b7dfe5fb64510022bb 473afe27e45b37101c8d18742f91c015 8763bc46c26ab19957b7bfa2b0e9620b 9527b62eaae8f007259ae7b2899be714 3309d6cdd3f30ece3eec26c23f5bc80b 22bee1d9c6357b295493ccf8f26ab2c b83bebb013e4ddcabd1aeba6ff85928a ff529b9ad2d5c6abf7e98086e1ca9511 fd9b63c23342e57045b799df37b9f05 bfe54fe90c7d99637fffc92abe94e907 b6e662b81c62dc9b688f5a44034a346 9e54053a1b16299153c5215ed09cc4b0 90587a80c1e58a7ecd447b0bcf9cfb5 d810a38ebae55007eaeab1f0c9120b7 fcd25e25dfffff7af51f77a6d7299806 797b37d3462592b9c8687ff9b0b4e4ac 1b92525f3945f486fe24b6f1cb4a9319 1cc6f2ed3d684fa245f213b8994b4a04 947dfd74fc8b2e60643b321651a8f917 69735def3b0f009eb098f5649ee97d24 4e3cc3f6d2c25b904addf6a5f8726274 cd5007a237ffde592b5bf1f191733d75 ca804e0f760537cac4545d2091e9ba5d 96fb86091881d54724894811dd3e6d32 2f42261a7f658407d12a1bc232f6622c c8ccac20f5cc12528ebcc1a99d4058f2 79b65e898b52b197b11ae648ea92233 eae58f128191381de9efec56e07965d4 b431161712ea348cdbbc9440457e303e 2f7a68f4a75dabd41c8c7b57a94dbb2e 55d147c5125f5043e1ddfae8bbce5fe6 9fd0c95e0112f6f8dcbca12e02e87571 fcfb7012968416679c0b027ae5b223d6 3358536e8e7c416ea9ef8e11754eeede 2ede0b0117e75a4315d50c1c4b796b2b 4b1e09314ecc02d53c8d0fdfb1cc2535 6e21df8cb8db3819899718fd4553951 f5ef49d354efe6741cda53280488fc3f 731d9114eecdeff93454e751432992d2 9f6a7ac15495575f6672e04a03e08d1 640f61579181aef13ad3591a780fa12b 4cc4cb9b533e8b84b04cb542e2c50eb4 6ff87a46571c52c4f4b6538438a0b930 70e3e98efc6ec0dc611a1a85a9d58686 eb23621d7ac1094398e0d1738edd4f19 30dc9d9cfbc01e19950c1f85d919ebc2 8e945aa01bbacf7c3fbe480a485feffd 4a367285ab5c22d07548800e3d70d83d a7aafe44f64dd04dfc6afbc561d74a4e 49110d0e41bb90b8b8e1b99345a5afd4 65840c85162994d990de7d30a74bbb6b ebd73aa8ec2fea5c36c26b54df360d91 e0c76c1c82f12df4c1e1aceb66eee9be 23d76c249645228d1e23e0195c502f30 6b796faf03a2806f397aec0de5712401 59f4a5d8390c3c3d5fce6078044eb87 ca53f7ce3b6951ad3991f56363dff980 c658d1006595797e301c83e03ee59295 71dfc2ea8bd6cfaca8e4e5c9426fb9cb 1f65075818c1d832c05575120a46cd3b 34fc767b72047d9ae97426e55fb77981 5a4c550b1b41114c3d2617f9171b5ccb c06a8f95fc273106b0f4a0d43d1e4c23 50e8ca681532bf195fa5d73d8d08a44f 3e53710a62660c60c39d538df4c93695 bfa5964a53730c783136fad73a1be67b 39ac9a459a28e252763d2f5638da324e cffe40b41d0162c46b2befe83a0efe39 2ff12e3a324071c0525a3d382a240768 2ef1e7da7f2a124215d65204573ec4 5c4e1a58eeb3171dad8af6714b643432 19861e56a952fe97b8230112437913fd 6214c8ab2dbae2517eaeab1f0c9120b7 5c027016e14cac15ffff2fb60b0d6e6 4b366b7995cd8d7fce4f274577283b16 d7f35cad0f4ab17788dcbe86402c7c15 a8110dab06c9c72a2c528d33bca1ac2 7710ecf956701938b40f0ac0fb9a650d 21e0ce3ed3e9452c93271d2223fe04be 5932d26671d104d76370a012706ac174 d2771921272ad1536a69760cb58e50e8 dfca4eae14e0bb541f6399f392c887ea 321f8b85785f082685e443e0ea51d93 175e2a8cd6e9866ab37303b6dde16342 799de8b0527ea329c725388bb41d64e3 c993ac723dbaf479a4929a32e32d23f3 67fe832a22b91e6c54ddc93d2b7d3d65 4138f85b00b53185dc3653f8341633a b518d19f55a1e15f5d714c9d7df1c4ed f1933161d8b49d8dfb266533561ee98a a8641cd287bcaa2011fd5138fde4c9dd 6a7050042fbc77d5635418e95eea8a17 243ab0d808fae5b76f1d1c49624bcfed 30d3b99aabb3ce1c4adcf948bcaafbd8 a59a49a0f9e8f4cda249f8489bc060dd a18156a0e60e50391f4c17ff3c45b28e af96bf24c341e56436b0f2a1430e993a f0337929bdf10321d22730b0728b2fc9 3dc79f23cd284bd8ece416489129c313 76f2ead0035fdb2ff94d7e6d8577c8ff 4966ef665c6ed17d4240438e2a9161a e967ee5f0790d685286e59f068d9cd0e e65ca690574bfca53ccbceb68fb352fd 5f33a76ff2e4d25ea7c7a7d30ca93d68 4facf9c7f5555b28c0f947750540fb22 23c4d774910c9ce03c832f0140db42bc 8a2a0cad888b871eaa84c578b771896d 5ef0c3e89d51eda2d62069fe2138d0b8 516c4adba7205cb43e9bdff70754d92c 78f5b44157269f99fd60059ad8523f1a 253ca5aa292b344b7e673473caa41d7f 57d4b5a07e67c24af77e1de7c7a7b6e7 ea1566ac9fe1670d3b622c8598928cdb 7715c9c229d80afaf487e71bd57b6e0c 2a8bb463e116e51de58b00a9dd2403d d657236c764dabdf5de9b4b5ce85d50a 45f32105a1d05455bc996a5f03fd7bf5 983414e34ee6a7966aea2f18ee404fd5 37a05e83e529a1e044f23566597ec464 1016f4debe988507589aae130c1f06fb 86c28989c2edf29a2bb396d08a9b621a b738a4aa965784abd86234e915108e6a 1b7ba5484399d36bc5e50b867ca2d0b9 8538245c2d93c60864c85287e21825c4 ba707bbbc56d1bc319620b61f6587b3e 81c291ab8abc1d0172b24bdfca058442 d609864ada7d0170278d386bfa54545 c605d4742f68a00ece45069973024eb1 43db37a72cbe0f5d4ef0f56ac2c64e7f b4bbc9d05c1872239abed18a788c862a e3b625f979f3a32fb591e8fb800990fa 708cd72e15dfaab8a687729fda50af77 48bb4afc8cf90b4664215ab2598fd5cd 4adde89dd6db1c4845e13b6ba9ac0cd3 ce935c8e977b8c58aa53a70b14c57bcb c94f7f5ec96e10994231039830c7e1d1 9012e4fff3cb71b57773c2e28f019f8a f39d429ab98d5323a1a6556bd50a3110 22ff2267856b5d369158e0f216b27548 40e9fdb477fc0c10f07ea52432becd0a 7a7b08cf81cf358a8616812464c86290 d3a958aa302f198b938da3ea2c9e0e4f 749c3d0d59bf7aface4f274577283b16 87a3ee7e68f360351db0d76a41d718a1 9a6cf471cd7e26566acb4ace974ce36c 26bee1a8ea71545c3a288f3e01ebe3 3d7ebe5de86294b3f6bcd046624c43c9 d375dfbaf1a2a3316b2befe83a0efe39 2195099b0295f692afca3357bb07ab96 e0badcef3c110ec6c4963b39d8846214 825bd436471f47457ef29b55d8edde64 86fc0fd9ed51dc11664b3b9b23ddfcbc 6af354d0e86b1d5ed77c4541cb2e97a4 cd9812c163ddfb3e83bcab979449e28e e3394ec3b63fdc255d59dae8d8b300a8 c9817f6e253b7a93a5ac563ee2a0cd75 bace9433ae54fcb3290d57214c8512a4 6e9a3650b8ff39a02dae74041d029566 dfdc94c658a98c79627fec6651ed13bb 4608b290c2383d7c9730cb37c9a5f63b a62bf8818c8aec7062a510b8f97c658e de9e40c346ad2779f8c3d2002c77ddb a976138678aa74d0d9ed5cacfd88cef9 b2a658572331c578340a1d09e918e861 669a23c329080506d295b24579cf55b8 397a5fd0a95a17e4dd2be59fe725394a b9e9eb2d09981218d3c5964623f1547a d3213947dec793de213c3458a0fe5598 1803116582841b39a8ecfcf20e8cc0a d8d5829083c66bd4f4b6538438a0b930 43c99f65e19e5c657746f1e767f87dbb 81889ad00179daf8adb91c074e672e22 981bbe2950bc9b188f1d1d7c3673dc3d eb9851403aca75937d395837145ded71 7dc91406f30074777b707c797539b200 3f55885c27d84e5951ae1a6e89264401 4042faba97a901aa08cd647a48e605d 37b6df64a97a5c29369151623ac3890b 4566839a362c5c223ec13b32c4d64f06 bf8004c0d88210a291efd008fb89dc2f 83839b89dd91996c7d910d51d878f708 3115864130f4e8188f56c17c21b5509b cfe139c0e8b8cfdae342bce0d924820 98ec1c46805977c33b48a711df82173e 5eb67ecc35e39eb59753496ba23f2183 c927b1352027fd6916d8d4903814cf37 d02fc4ae6bc4278b68c4c9cb55925fb2 2b90701386f1813052db1dda4adf0a0c bd6bc40b3327e5109501f2fa226917d0 94ceeee26248a275e8e2378aa23e4253 3799a4d787d31c0bc580fdeb5460f6d6 cf09618aedde38febda72093f9b5aa73 39d357d7ba9645d4647d4fd8d921152a 4f0fc7761771d073fe2cac60a76c70a e78f25a1f66c19a38a63c123f2a561a6 b541d3afd111d86f265d8abf3d2f9c3 7e4025dcdad5415386c701087a194026 87b576eaf04f1b62305e886266e302e1 9b6d1c0f3a20783af51f77a6d7299806 4133e9d231ca52c6a16baf954c1d99bc fedfc00265711f4193c1e619801da0a6 8c4ffe44076e9d4a15f62f0f1afbe530 2b2510922e763c2443b0708c694aaf46 d30e58a2361785683fb0851e9bc87551 d4c3dd37d27afa8e7c5910dd17778965 cfd2b4a2c8398220731d11154716a6b8 8be5b3b2c8c8f067a341228b21d337a9 774b94fd956a6601194565c2f3f896dc 89e6839589a9b450a3f6a82f1fd27077 2972fd770304663cb3d180f4523082e1 38f8b44fc8dac88ce3c886e48eaa6e2d ecfc0cf5081976323002761e7a3ba3bd 59cc459b0e75c2ec1142c13b71507bca 1cad298ed14e60f866e6ad37fee011e 5ab67b30e17a2ed1c862eec8232fff1e 600f6f126d0b6c046dbda90cc7f3517e ce7cff543f8cd89f8d1dabf86742ec3c d13c7cdbaa6941c2f0f0b1b5588b0b7e 387dc2c22bdf6d2a6df42853f67b5836 280d49c0833e2dcecbdbd70308cc5247 570527a5388977c878ba201e6a414b21 5a2c6a6f832b14ed31251f4428012eaf d040157682f60a7ddf6cfab91d65bb91 6398eb498fa1c291ca22b08889f6ea0c 914f301fd07c20c840ef1c8b63a628f9 250ffcc789426a255f46d55537192b6 aae036d8ebdc472535836c728d324152 944a665e765a13ee6d7db84fa3ca3146 3ff53879d12a2259cf004563556ddb36 6ec9b7c65db28eb32342d056300eceae d350f40e5f04360565ba78ad9601cf1b c18cbe2537859ab6877a4d9f8fd3e241 59c89dc89cf0d34e597976c675750537 b0c70ce8427da34d98e0d1738edd4f19 f619416ed17ca24a5dc688388b7d266 776cdc2ed288076882eddefc99ebacfd 7595d089aefd8ed5af7c7ad2549a1b15 b16dceadabff3976dec8d69f9356ec51 2e9e0711c4f8e6c6f51f77a6d7299806 881e7a45e9f149d8283b00891f680579 23af2a09ca2509f817dc12307fee9432 934f911815518a12862ec27465061d4 d1852e622204dbb0f4b6538438a0b930 a3c4bd89e7570dcc6204511a506beabf 5edb33755a80aded3da27ece6ae88fff 586984ccc3ea15676c441a62670bab86 a3e3eee0669bec82c9f016d57db96408 8ade0afeb517ce00aab45a6fe87e3c10 62aac1b94f2b98cb9f9a4edc4751ad63 29656461b26f620ff3c9c1464e55d580 51d67f7174881679f256a8c3e3396495 533af4a6fa955f2e78cc773ba5d9e52 5952c6c49ace76c5beea20858a99d5 13fdf00cde077f562f6f52615fb75fca 23951f57f090116141bac0aa0782f561 840b73e5066afa12941584a3d730ae7c 22575f5719f3eb3d23bd3a8c035c98ff 98ef942e35e90be3de8d5f2cba401802 236f75a784ed58d62b3e9b6eb52d35df 8c9b2023ecdeb7b049d998127ea6baf9 bd867ce1ff2dd281a0f7d9635ddf7a01 d521a48317d0b14d7ac55d461d1984 9a8e84b82ca17e3f2f21cf17406f1f25 6d30eabb3b56d8f897842bde7f51d0cb a7bc0f5b5d73df73f51f77a6d7299806 5b43111740009e719159f4cd32e8e02d 70230673214644cc7954eb05bbab463f 76ee694df725b5b4664b3b9b23ddfcbc 219c0f0f7ee5c3737f9dcf5672c2dd0f bf0ba9e2ebcfb431e6fe3612af521500 288143f68d5b9f7462acff507939719 923447d348ddd1ff3002761e7a3ba3bd a147244346d84fe398e0d1738edd4f19 c97f8f3d828173607301b41e73e277b0 6ea2aabe267b519537b2bb75885cfc44 75a2cfe5b82e03d2fb0eb7e753c06942 268f73b8f57676a71732dfc96352c472 ba5911cd07d1eebb31475fd256bf1b7a b58f4a6b71759e59de1e664b0a22c4a8 e3e76d624f1f855bcc8a9c365968620 34b1b2ee54ea314486a1cb4b695edbd9 cb87604cf146b4eee897810eac8c21be 9ddec02fc7a03c19a8699b6183baa203 b69401b412d9300454d7082b34825ef0 719f6578bd1450cfe5b7031248b81d78 4c1777173111f2e380a88936375f2ef4 8ac2d831ebeab4896b7c7aa09852a4e0 4e8d8792a3a6390b36b0f2a1430e993a 5ca11d3f35d870e1b724bccd568c5fc1 5c247c042e5fa6077b712dacb1db0737 91b8fe4616208bd4cf752e9bed38184f 26c9e85dfa18af9fcf004563556ddb36 8f521c85697cfb73f51f77a6d7299806 d323e6d19dc58526f2c0effc06a15c11 bf9ea87a9765eed7d53b73fe621a84b4 3896caf2057eed81589929e81650825e 1e4fb9149de6be81f51f77a6d7299806 fdd8b499294575175f1548797747d63 d97a4a6f84f40854f51fa0238791f5dc 7905bbf9abc0c264f3443b22038d340 51e27bd3ee95338588d458757d655e0a faa6255bb4de99d90606ee5fb3c339a 2a28a1658e9b557062c658925896f75e a0d662f047378406a39cf424b6103cce f913501826c588e89753496ba23f2183 2a8d87523e23a01d5f40874aec1ee3a6 10e523060bb5b51f9ee9f382b1dfb770 6f8ce08e77bc27cedb4331c656714a1b f5e5ad69111b96646d6e68ce9f2601c6 56184b3a4ea198af7e14b034d75254c9 e8089df5cd0f9a573a3e9361d5a49edf 6d5d42d1272467953b63c9ead28992f1 522960d8c4a7b7f2e8f8c11a24c52ebb f35abb8246614d7ff38854b09cdc7cc5 bafa7e4e50e0b2bec8687ff9b0b4e4ac 9f3ff62527bf46f237b2bb75885cfc44 6a254cc3d81881c91a3b39b07e4b3d0f bacdce8bc1974ff82c528d33bca1ac2 72fe5266a93c1998dbbc9440457e303e f2440b15f3773299490ad276cd2af3a4 711d131beebd279cf0102d4d10f82457 51704a889ebcadb72cee4bf5d0f11ffe 4f061233795740bb411c679938d00104 329ec98f10af7214ac6962daa1b6ab91 4178e43e2756f1d0af7a8f97983e7906 564b9543fe715f9e1a4047c09ddc83bc 8b886cf32f340c89a9e00c019d029152 43bc4a978115d3f82ff27b24dc18a6e8 8b6f776954e65e7ab05550de345b6d0a 93ee27f70b593cee7b11ae648ea92233 eac0a44a4b4bf460f37e11038ce8fb27 30d2d3c887f9592551ae1a6e89264401 b78fb2778adeba267c26dd76207404f5 1cd152cfd71cd314e2798a633e84d70b 6b9149d69d3140da258ce5fdea186c4d 48d44532ffcdd4a2fc30bf6907b3dbb9 cb1986dd3e968310664b3b9b23ddfcbc 3193949a635d8682648909df12856289 b967ac98b1cbd8fe36a7a71199dc2cb3 38f87e02e850d3bd1d5ccc40b510e4bd c9cc8df04240b27890907a4c1a185a7 ba1adc474cfa2f429ab926a7e944e795 671d51da473849c7369a4f66bf103682 c3bc47657b691c51e6fe3612af521500 4efde5d7dfad17354f13c1c9631f2b03 fc818d6fe03f098fd6f4cef762589739 4dde5285971f0b73ba4ec8b7deb104ae c435de7be7f5bcba65ba78ad9601cf1b 65122866840aaccce3d8061f5c8a6fca f6cb298705842600bd259faf16bdac27 aa5879b3f20ea90c36b0f2a1430e993a eadb3d38d02343ba4d2a756b9ed2c425 fc4d15c15c56aa7baab4888e25356418 a1e16e59abc3fa56bf0788e630e3deb d7dfcd99197d6ae7b6dbfb7eb145012e 56e194146b9e584b3321831d2245cf06 64ed01e4a892fa8e498bd5a555c21b1c 8cebf6dde257cfc591a2a5174703986b 3ea3cfa145794baec2454d017a7fc2b1 be373cf14b9f9b77bb01e8d0bddd5702 d283b1073ceae03f35836c728d324152 4d6f35e7eebab44e2c8a86aeeb3b996e ed108ed496777cf6490ad276cd2af3a4 45214e3010f8c3ddafa9c337f30be0ab 6ae8076b0f9c74199c2009e4fd70d135 573b3fed3942a148c681404257d94ad9 8bdb589e5e0e7f57b04cb542e2c50eb4 8ef2169d274aa2e9b16dca03855925bc 2191f89e65241e7be04d00482f14a156 9d36bf414dde2f1a93a28cbb4bfc693b 668c488e900c2ede62a9eaa32bfe99c4 e63546037077f0847dee16617fd6925f 2e5e60f57621c1e7480c54eaada840a1 26421cc00c639ee55a5324f7626af787 e46d1c2bef1875e2ed30b335ddc8b66b efafddc93951b8fdc975d461b3f97726 5f34521c634a4045c68e0b8b9ee8a0c6 dbf235de67b39c2d25e2408bd7177733 f3249612d067e120384f43a3132c17b6 c3da3ae20c1f92650640e24a5497a2b 8ea007bffdc9a27831aee04639d1b4e0 41ab50680dfef43aba5342d638d0c267 37754da896362bcf28c0cecb7de2397a d50b0c6c006936f8de03ab2a27ba7531 a13a7a1c82bafa56188f1f634a0f116e d24f623af8e7da479dbf298bdf3162be 209a904959643d0eba7afe602821e0d0 401e07ff01b1bfe64d85e9aeb23ad69a 35d60ae4cb2e81979d9fad88e2f4c8ff 6721f13f40f706c31b17743c18fb63dc c5e3ef17d1fc834b3c84e7f4f4c3d556 1031fc859dc3177a2f84cb7932f866fd 3c4ed9c8f76c7a5ef51f77a6d7299806 73428fc75131e0a9d8dd12a67280079f cdfe4ea9d00ce861f77e1de7c7a7b6e7 c5958d1f079b0be47b8e25a5db8c2573 575eb48e4bf8f7b4cccc2bf504407f19 534b0e6e2c53a8e1a7cdfd3874ed3723 d1d9da0da16dbb1a765101d95c92a0e5 1d37a7fbe0810f963e83b2d32ed5f665 736630a749935489f78c99506bdaf97d 2cf960825840947aa903b9ef0ae7fb14 bfe3afaa774eab6e29e17f7efc5a2421 d2a5b42cf29b753f71a782a4379556c7 cc70b9c8d4faf79e5a468146abbb198 681203ebfa280f5696d5b0735c6b5f03 b773f81e938f95ed65ba78ad9601cf1b 45c998547946bc4d6a88c250a18c2861 11ff2e9f9b0993b7f51f77a6d7299806 985b7e5b5fe997f0670cf6c75c1c5868 9cd0529b7ce926017dbe6b236c44c533 9ab4d3826bd2f07b51bb569b4bf0aada 78fbcca91324c141ad2e2a7cbbc076b8 efe76021aa616a41f51fa0238791f5dc c9dd1e508be23628d0176f9a144100cd 1fccc2ac4bfd3da535836c728d324152 f428a799c3185ee0c8687ff9b0b4e4ac 7a783968f5b1f88ff50f16ba773dd73d 2853ec74532f23f3670cf6c75c1c5868 bf557411c41d07bbb38821f893bc10f9 47dde30e987efc6c8687ff9b0b4e4ac d18f361e22f7626b707cdefe012d0353 c1d4fcbf5bb6ad11c5beea20858a99d5 497833f2073ba6ff70d45c28bef72613 b29d302a87099d924d8777315ca26f7d 59009d87f73ce9385dc3653f8341633a 450b4a6b6afa6280d5a910bf1c23bf18 a990ac870ac807c4d838ae16242881dc 86ec9c796a6c1789e792598ed58dd1cc 7ff1b0ac88baea05dbbc9440457e303e 56300f790763af1a872860b02b1bf58 b67aacec8e98edded0b19424de5f7fe4 d74870729fb3e3c5aa0a75782a86b0f3 aa1e9626e1e23038cc0b9bf177196e52 60d11f54c4d3e1d856232348d1bf86cc be1546c576c7c189edd7ee0476a331f6 9e5e03508b204754c2b64c0adffbe398 45dcb53af7bea0d091912372ddaeb001 24b5d56b254cb1958b424343280aeccb 77dcd07d59503f1014038d588fd1342f 534c5f9ea1ae94b54644491844ed9566 389ed34a0c989e325fceaa39a8353bde ca05bd1afb0ffeaf6b9a484dedfb7d25 5da5cc7b5a6a9d6f433334f7dfc6c30a d8f3c4bf9266150a579147ba03140821 bea7cfa3c0e7e16e63b2acb037dfbcde 50b4851d6e067f9bdfcd57c2094a665f 1f1b07bf637b3a1582db9fca4b68095 b8eaa2fca64d7e4da52ed1964df255d7 4bc064672eb85023d84a8130bee3aae8 5cb06ff2b420c24721711c78ff413696 2b1af04045c8c823f51f77a6d7299806 f497cbcc4895d5386b684500e5db87c2 4fd20c1142b642221403e6cccbe91852 aa2242ae4ea1074bad0881e4ef1ff29c 588bf81e78829fe7a16baf954c1d99bc d8358969dad764edbb6f5a9e4b6b8b34 3d629d27b74fad91dbbc9440457e303e 892381333dc86d0196a8a62cbb17df9 77eb55272e3c00f2cb774aa5a7f9653 a3acfe6f313ab881bb088904f7cb154 419698e72a0d4d75d8f2ca82d6e1c314 3c3f70971f203c4d6ba836372832f055 dcdb75ba399230bf98f5bccb3529a48d 5d3cfbc8bae19e701f580a0f9153317f 61fcffc9fa0995dcdeeecaed91450a4d 1e6cfd4bfc6270f822b5697e1c26fdf8 f3718bcd0e497868af7c7ad2549a1b15 53675c4bbb33fe72bcc0c5df96f9b28e d504ebe36ddde74cb5e61088d6c054a1 4ad85a7d1ebf49e3490ad276cd2af3a4 8577be35989634fb925bf1713cfe05c e9c9d998f7b0de3ca6afe5903a01a59 909244db9219fb7c5bb4f4519002140 6223f3849d57154b5ecb3cc57fe87cee 3981642f57a689276ef2faffa907bc32 3ba15bab072af6ced014b923da2a041e b93d170448493717c2b64c0adffbe398 cb711f2991feea1de6c5cd45aa112726 c98e1a3e61caec6a67d783b4714d4324 91de3157ea61d943f27383fc5a5a711c c13d5f3639f427587fa29a3ea424473 d40e314fbb7f37199753496ba23f2183 46acde1907c1ee378523e42ce157c5d2 bb878313da4b02e3dbbc9440457e303e f9f55661e6437920c5a208307819a3a1 3a4843e09b8dcafae6c5cd45aa112726 3316a00869217c2632ed7dae08823495 ce074e18e988a481d082d95e9bd50b49 bbe71bb58b7f8f74f51f77a6d7299806 e9c344a392e311195b903ba10d2ec446 99ae1b3f970c61fd5b56aadec5c0be6b 8b22c3e3be1f8fd8b645b903fc5f4135 33ec1e64a02ff718faaadcdc0221eb72 7178731312819be3ecb14096838a20c5 9d81bc691486a3c725bc9a8086ca05b8 fe307b67739d9620d874a9fab241259d 5bd3e7c9695af73cc8687ff9b0b4e4ac 3757a60634d134da35836c728d324152 64952439f8d9e1da9c0c9824ccd078be 5c86904bdc50a1ca173c8feb9cba831 4d7cb35d1d9f2434ccbcb819724fb563 e3c79d6e34b1285e4580ed619ae2daa1 a9ee7abdaba4ed6c14817c31e6492a06 319115572f7aa81d06ed06732b21e08 86b6e539e72be6d46fa0ab61d9f9d96d d6dd3de6d6ea6d0b1931ace01cf1b948 b37c77a90ba66c92564339cd0fd02849 b6a89034b3da55b2cb79ea4974c73b2d c747e6ceb1a6faaa3074f48b99186254 e4834c88847b288648d8ff57878739ca 6be6d6ae38d8aca4dc2cbc0befb06e1b 6aeaf646d526b41025a1c5ed6eeac95c ba7dc0bb03a57732a9d30b145d59ff 42df32ea024077732463600025db2266 989c95491d7e823fa413908c0e169330 f439a2db6341cd85f2b931201029bc76 fae27953e0f0404ca99df2794ec76201 685f2f19452cb973e98f4318c324e998 b0f35e0dbfd5d75620fc2acf581b444e 55e7251e672cd45e796c584ff1fcf56d 586f09dd66df0beb2f45520e48bbfc3e 52d41eb69bb764e784aeb682b234df80 79c5542f068830463002bb98777d6df5 25fe34942b619a2eaf7a219828cdb9da 2ed972dad69431ab89f8949830ad07fd 1d1641362ad5a34ac3bd24f986301745 4a5332f5aaa3144836b0f2a1430e993a 9695267b69d145dea14bb1d7e401bf06 2433f576edbb538aae8c9d3b8c4b9bc3 419520889432730a970d4dd67731c543 6dc5a07a13fb7dc32ff27b24dc18a6e8 9df79431f16cad05116162acefe23592 37a79a0b617e2e711d172d0e1c97cfd4 a8a2f0865365b521c87106a609982130 cf391bbecf5926ecfe51dc4aedc63243 ca5d7ee5cc56f989490ad276cd2af3a4 b654fef8eb98e99d65ba78ad9601cf1b 5e3cf3c40c6bfc0471a782a4379556c7 a27db3ddc9bab11a5fceaa39a8353bde 894f033f10abba014038d588fd1342f 4e37b83cc4f762a5f51f77a6d7299806 ac47b4d30b598978d5a4a04ac21f0578 1bcec47c5dc259ea95ca4adb70946a21 44c25bfcff4a4a4e4dea158f05aae320 3adba11cee055363f51f77a6d7299806 f1167a0c4bfc1f3fcf004563556ddb36 e32ee21232d2d5604747ada1cb39a749 bcced2f12f206a927eaeab1f0c9120b7 2909a46120ca93afff16555386d173d 317b404839dea88d827b401415ba9e3c 30f4c4d94f4fcffaf51f77a6d7299806 60328528e791d7281f47fd90378714ec 63ac45ba2c2231d155f9a00acc25f137 4b35fbf5df52938a76d876646d549aa0 8d983a0adc059082b300c4ca2f51c01b 9a75ecc1e677dfe755d57295806b2c59 a85ce69dd5aa852055dbece39a4b7905 400a5dbd31db947b35836c728d324152 d0d3585a2c4579bde290ca81b042ebb4 6a878ab386c927e6d1a63a2e2039ff73 86eeafeae817263414038d588fd1342f c9fa3d209a43e7fd38b39a90ee80e328 32284e0d1700dc55e7c7920f6a65a54d 2c67f62020ca22927297db8481c2b16b 91be45a6b74f2fa283b00891f680579 6393b49ccd72e8b312cef4e6ce7bea86 98d20227789f5c9a5af29473330f42b1 73b37c243cbf23e0b516c05d046e8e45 ae02a5d77184ae2638449598167b268b c4170208c9586eb63c2247b30d3fc073 3d63ad34e3deca1982db9fca4b68095 55192bc667582ebb83d21872be197422 7ad134826824de98d0bef5e87b92b95e 2c6fa3007e79013cc3cf9ae716575390 51f1ea91a1cd7370b3fdb1a7c9a60207 5c0d4cf28a71ad7296db593b49da23e5 11d8814ed60b54002449009b96f8a6ed bc6499abd6192f128c605f8788f64de4 9a37886efaa98354317e912dcf9f9b6 8951c681ee693af213493f4cb10e07b0 b9c0dcc854da8c7d60558e0a9a66f173 63a1c3810119e2b660389b3f7b5c9026 9ea7facf01e448f328a1548e344f0e2e 74625aaed8902197f51f77a6d7299806 29cd7fbcf6c7c33df51f77a6d7299806 5aa3f60fb8fc208d488fd132b74d6f8d 56262eebe592b085d319c38340319ae4 5b51df75df88c639f51f77a6d7299806 86e6ff997adb2a192c90ae7b7282b9f 5d0a9fa5c8d9bef386f6991406b6a562 432346a3345e3e5dd79b19c7c4f0e293 2d51bd678668a0f182db9fca4b68095 6e7455e21a6668a7f51f77a6d7299806 5ad4512976afc746564eaedaeaa04f28 7a5215c4f74afd1af7c7ad2549a1b15 fa4155f8091689a273801486f0f205ad ff3a6eb4556b2c0eb04cb542e2c50eb4 c3fabb74405368a8c5f0b5eeb41fa897 49e920c98895f90281a172d69c52a28a 965f9b75de94d03aff74317afae0a323 78386cc102c6dbb03430d3d86b335afc f2129c67cb55c6868779f85a8bc31fb 89d2cbab56c5a1d7297056ac457c1c31 3037c7d4d9dcb8f535b063aa516d32d0 cc1b4eb1a9164e04f06885bd08de3f64 51439579ad42e9cdb52d092517b6bea6 357f1c031b1bdfb3efaf604fa2300241 665bfb42a0362f71d577f4b88a77dd38 61bcde763ccbfe520ab6214a789faf 88dda281b3dddd57517c7e27988bea5f a800bd725fe116447a84e76181a9e08f c8bd3d33ff8cd4abf189bc4b6aa309bf 8ac35c25faa261ef4f3443b22038d340 58d39cbcd842cf6eaa90ad3e0254ffab 4ca29321dadaae90a516b539b31607a2 ff167d9f25fb6ede2419ec0765e66c90 c043285da4600e168a5e49d8f4867e8f 9897713e0efb2942f51f77a6d7299806 a54a6ee9263bc1eaf4b6538438a0b930 f3f0238ae8d9ba8dc8687ff9b0b4e4ac ce8e6c13899376e2f3c9c1464e55d580 95c5a8897fa78d3883b06dcdd869d9ac 861251082f0935c6990561fc34164364 1d99f74a7903b34bd56bda2fb2008f9d 3ab0a1dcb23aa0f620bea10952746d3 a7154b3c2b2a0641a9fe1734a6086750 8ad5b0bd9f1297e5492d9da2668ec34c 510fdcfcba1bc18ea1081ad712f6fb3 8862fe77a7856db29a8ef44e1d2c5b75 ba747d0535cb7fdfbfb5bf9fe49f43af 5c95a378674a05b313236fa00fce09e4 507de496a9a77945e40b5e9eb4befc2 31dacef35c2d68cd7d5059679be663cd f1c390f2a04d13f6742728b30848ed03 d601777b8862bdc8b04cb542e2c50eb4 75369f55718d5adba0bb10bfbc5d4718 ccabe6ab0816614dde03ab2a27ba7531 11c7675a3dbc0d32f7287e3d21227e43 35ee4bcad88ab50af6e44a01c524295b 9961b26d1eb9170e98e0d1738edd4f19 f0f9d29b3eb76fb7490ad276cd2af3a4 eeafc14e4e0db2ca3b481215325f1515 8e779c0b252d4b5e118ddfdb81cc6068 50415355dff6f4e0c2c1a442b53fa053 2882587cd2fc021c168776226d349d71 2608335ef22bcee1c97114870bb573 b22405009444df73d27ba3fc43e70958 d50c5777a2727679b247f6fe3b8f7af8 79ed181ca18bf71dc8881577d38510 c4a73db5b3503ffa86abe5555a3b447d 384861155b7786fcb21bc3cf138f79e 79fb74d29b9b772c36b0f2a1430e993a 9b4e072fbf32d793e6c5cd45aa112726 2bda2aa53c374ca665ba78ad9601cf1b 8e9812ad9e12d467679c9e94dfb2276d 941720989a7af0248b500dd30d6dfd0 94d55392edad30d35192e08e628ef9a8 1aa07508b731af79814e2be0234da26c 1b8e84935fdc3ec82be289de70e8db31 4ab439279e665e08410fc47639efb60 e82fbdd4857adbd7bc0482e18ec51d0e 226f38ce0d46fddef7a06a265fb36208 270b86f1c341d7fc98d5fc0473d00a1c b197d9b353a923cfdbbc9440457e303e 7bebd3cd1be32a0646f7430ae2c8ca51 27680e1b7951526518694a7306254063 106c7f10c5bf5bd5f51f77a6d7299806 2936cfb442eeb0a32a673c8b84dfc32 124117cdec71699850c2ec40da48fd9d e88b094644e1e80d8f2ca82d6e1c314 4a2766bf63caa24a4abd5da3f5ea2512 1c199ef7e43188887215a1e3ffbff428 20cbe565f98b4dab40ef1c8b63a628f9 9c563031f09dc2459a87002a4eeaf610 11d4f2a09184ec972b9f810ad7f5cbd2 19ff1d5665c1a68677b8fc2abf845259 d3f393615178dd1fa770dbd79b470bea 5fc3b7d677788b486cd47753062bdba4 7144c29cc7038186d67fae5fccab266 9183a9f6e6237492c90fb40095d2be6f d311e10015f19bb7482d5f087974fa09 2a5abe261ad074f1c6fca4cd59d9149 f979d2ead3517a67f20b781026d21763 a4942597dbfd1e683ee344f731525f3c 31bc7f782eb3bd7de40a8ba0cba661fd 9849c890f3bc80723a4642fe4c259750 4abbf49c3177b32c9f613b70ec8c2f82 348528e8d474a003cb481b0b11df1849 537c7bd16e8a00adbbc9440457e303e 9a68fc6d001c4ceadc75c30c88b2f7a9 7b5b032a2cddeebc54d7082b34825ef0 357e2dd1512b96168e2b488ea5fa466a 8c4dd9891dc997b75a627be422951096 304efa07923fc3c1c681404257d94ad9 3d04cb63d2b1873fcf0dfe1797286ae 6be3e544deece8441191025061735ea3 f9b24a3b88f9037e4b5cae2ecfffe51c 303a25778d48a0f671a782a4379556c7 30e8a82eccb30369e3ca99089143c61 c98c12e85a3f70a28ddc51277f2e9733 dcc892f77239ace06b2befe83a0efe39 92242be674537e3df6e4c3538272fb27 2448d9aeda5bb9b0f4b6538438a0b930 7a617f62ec5bb2075e7faf7f49c2907a 90b6d8a730e9e17cc55161a63fbd109a d5424b7fdd031fcdd41c21de8af66e26 f13d600a3c4515e220ccbe1c34ca182d d66cc87c717c15f57f0839ffd260627e 76dd2d9f0183e09dd835cf838a2f2758 2afcb7db7697d552f51f77a6d7299806 46dfeffa91719044de2bbe257d2639e3 8830f76c748f09ef3e870ba5db422375 2e17502c7a131b4061962815e1518ae1 85d0d147adcb6318b8e1b99345a5afd4 ae9e1ff1ae0b0a8f6ee473575a9f31bd ecb57b01c7ff75cd416e7824059e108 791c488a167bd73f91663a74ccd2338 f1f40596ca140cc89cfc48dba5c0e481 c9288e09458ec0e9bbc45ba666751519 1015e71a0d21b127de03ab2a27ba7531 6a0bd5d9ec4567d9d42216b5daf41a39 4a63afd1da7fd633e6c5cd45aa112726 a7d75c84027af5e7321f25048c6142 45220c3f4fba09fc665309339296e85a be43e61912136b5710f438ee952d42cc 2b52cd0ffce12156ccbcb819724fb563 4bcc7c4e4c0bfe47e8f8c11a24c52ebb 117930a8f2e37f9b707cdefe012d0353 9d63d69501b9ab9067994ca435825ef 748d7e99a0ed4646f4b6538438a0b930 27ef7dafe404bf424e83b37723b7fdca 97c343e28e2b9ea4bf4414e655b3a4c ff6e6b7b7c7f1c0f15f78c98555ab41 523a54d33ce5fa9aadcbe68a4d5871f9 a33e91aea2b278e0c5ee4aa82bd336ce d8774646afed0312732375ced502498 e18ea9d7ff87c3f86a97ad5f72cdc5d6 2194e6394a31194962e682c9809bff14 17352867f5661212c8687ff9b0b4e4ac b162f52f6a1ac00e519f3f3e6cd6d1a6 dec5920f32fa546a6c518c577d808035 1937193cf5079b623eec26c23f5bc80b e3bc0a03103cf84e7a471a654ffbc436 c045514b5d4e4407b0ea0348afc5cb87 81e60b07ea1090bf58e4244f8066a2ba e31c6c24a8d80ac35692a9640d6947fc 295a3bb2aa43b691ed2d43425218e827 b3194efdf2b8031e8f6e9f07be105c48 5c9b4af9d0e9c132b161f36d4e309050 5f0f17c97234b510b4bb271cfa904d13 be9ced795316066f38620af15fa7e604 f1b1c92f91d0e52bc68ff00665267e32 b2239339005b14c8d675cc466d0d6fbc 54b7d484dbad29cdffc6e457221b9271 fbd48960edc73ef0490ad276cd2af3a4 84767939783aade4611ea9b20dcb5c83 47db22433821989e35910b9c436db932 932bb63e4525d57b3b8dea4a358cbf0d 750bc77ca0328a29dbbc9440457e303e cef79d398ec49cb3d25229379db8f59c bcc73b8ff332b4df3d25ee35360a1f4d 53653524f2ec502e8b2b8dc0c816caf 74539775b5ff9bfdbd935a20ad27255f 3ede0a86fff6f79632284c722d808bec 7e190338d3f213c3f7b1230869d2b89c d94eeec9f2fc4d6c33fe87c69b83ce63 7fe836b46890d24a65ba78ad9601cf1b a58e894d520ebda28f94476574196c14 5fd2483e98dc2ddef3c9c1464e55d580 48c0684d1c5e279dc3bd0b373cb604dd 9d9a0d778da758b043e03cfc9885bfb3 3c58dc00cf251172c05575120a46cd3b 9cf25518a8d3eecd9c48aa7bc7cbcce7 8cc42bd1f681f126d0176f9a144100cd 544aeccfe77f230a1cf10a36e3d0884 4ed25bf015585031490ad276cd2af3a4 a750f7309fcc4b0473672ae855b8c82f 4f24a67f85e71e144719088c8e42c6ab 4159903eaecd9560fdac1e69603928f d64c618e8b0c7db73ded7580b6cd3bad 4909c59d7326a2e6217eabb7c57f6292 1bb81d54471d7c1df51f77a6d7299806 1bdf0a0bb9db1db68998b3b64a143d42 6e92bdda1bca7b72f9a4f3015fbf70 a6d282a360621055614d73f24792753f 47c04fe5c1f850b784cb23b18bd34686 697fc3fa4c36fe9b128d966a6d72dfea 1f3591151aef17ab997a9cd87230da 453be11e44a230a0f51f77a6d7299806 979d210217f798d4f4b6538438a0b930 ad64210b56ed1bbf9096ff01c3d5022b 98f42a66467c264377fe1aa9b41a89c5 6744d53d1557cd2443dbb6421d614c0d e0efbc4e240b9cc235836c728d324152 690f208bc221e05d6c891822a43c9279 330dfd669062043f5e60ee22a227533 13b6648bdc843b767b5f4d129cc2873d 17ab0917e215e4fcfd300048280f015a 30cc0df021a947e9706ce6d0dff37e85 4460e0885d82b7b5d9987a7cd00eb98d 36f4f54d500dfcec9969831eec1821d9 c3c159a5a56614aad7b20fded0142d7a 27c00ec2b6ec279958e80128fd34c2b1 6fd7e0881e4148a238dcf62407724e73 74518f7c342b49191030665054ebb2a9 1fe33fe022779bf8b0957d845ac33749 8dfb550d8fc07ebe490ad276cd2af3a4 7740fa5979753c734209d14d674fb332 46c7a2ad0abf4463bbc0e8a3b6521117 8908ecf5c86377ba7b31e6c3fa42a7e 6d54d175396e3a99b1aef914f6383f94 c47bcffe3e74391af3c9c1464e55d580 d7c9ad0bb877b0796c9d2c8251e6074b 7720c68121497e555a28000e191ea2c9 d334e5ab55188d62680876614ed35a7f 49918114029ce6a63db5e7f805103dd 7f79aba01e8c572b68d1b9a1d97e2846 e767b27d6625f905e9af7c2087a87b0e 60e8cbfd3cbf85d097b3b2f2bf40d247 2db6c88145049555e6c5cd45aa112726 4f520217376a00ac3e4dcc9f0008b73e fecb6b1159091d36d0176f9a144100cd 554f63beeeaa1ca81acd2074f8939f43 4ccc0a3cc38c41af666bebf1a1d4e946 b3c503ee276ed0a75298386582afecd3 3e34987bd5e7cf0e6c5cd45aa112726 8afad2d7f30c9f02ebeb1e6a8111f53 51adac207965e93559f8e31ca87c470e 5c6c95a9a99d452e1d2651c636d3967d 7e5a6a86dc490f7e7288e3849fb636ff eea9a17689ef174ec14f867747674e73 4eed9ad9465482d543b9eef399a0841d bb8d64bab582c3f324e55bc028ee0805 ff2333f528efd790fc93ece3545739c4 e64630913e8b723c23ff850238a15b07 522eef970fa6d87b7d9c441a2a657ea8 ff49ca82d7f8e2bef27383fc5a5a711c b19f85fcd46f456bd5cba62773b8025b a56e201584ad5afb61ad1cb92b23bf5 6440fcf4fd8214b7dd58412a5e38ff83 56cf253d14abfeb92c528d33bca1ac2 d343f06da03eccf34c7384dbb75cab0d 2404a64c8736bcc37ef29b55d8edde64 6dbe90994925f51c26fa92f330dec063 c07c96f19ea1d431d4f67da0de6a1054 5c61d56d4147e55d5213cec267286d18 675c6c0c5c9a4a8a3bad033fffa5c327 5bfb8edf221c7b0e84edfe802bb43dcd 582b375411f6a4565ba78ad9601cf1b 5b89de55ce0f464221f824bda064425c d487d3b9579762cb5dd170fd3a296ebf 3190b19c1ae0aff9c5ff3a5f34406751 9f1a83a9fe6ce47afe74f7508ff628ce 7eabd19312bde1dc9335750905007562 b779b6773ef480e8c3cf9ae716575390 34d255abb83e8d7519abd93be2967664 28a0b2a5afc96922ba63bc389be1ed5a cace287f0d784f1be6fe3612af521500 96b2bf512fcb51b2af7a8f97983e7906 20e71125748a11bc3c65ef99d4b819a4 4dae16dcdfd7d10be6fe3612af521500 c8f5189b54fb3fcc6c518c577d808035 373089aa7a44565b7215a1e3ffbff428 d93760fda8d73aaece101336817a135f 89f8c12dafc877009f8c3d2002c77ddb 9915f9247f671893b89b3e01b90fe955 2fa2acd39067ee788f6e9f07be105c48 e72bad036bcc04ea3f68fa735d443de2 902a46f5caf6b1f7e38c7f0de498b8e5 ef1824754ae554af83b6e0255ae357be 658602dd0da08614a1b6f261c8f1ae0b 6acb045fe11f7a81f771b7c5ceefa9be 30afd2ef2ed30238aa3d0a2f00b54836 7ef4b16e0c38fe09b04cb542e2c50eb4 741fa23c22d97ea81bd5f87ae5f3f83 a06114a07a68c995c8687ff9b0b4e4ac d7ea1356ef7664e2ad5067eac75a07f7 7380789e95676518e7c7920f6a65a54d 9a91fe80c2cd2f37f51fa0238791f5dc 96eb2c84ab3b8df0c175a98f27dc2236 b47e994452b71943bf30e5b4764cebc0 35e77eed59e1113c22e4620665c23c97 ecfcc42f2386ef37f51f77a6d7299806 498e81334b1dfe98882ebc6f4e497cd2 b8e4d2f12e740739b6c7647742d948e 44689408a7d879a664d56d7ed347e929 78cf0ebb875de8dfba18ade30e563d37 18f2f833d95ad137111c729c2fe5f751 54c9f96ffc35d0c2eec2ef73f04d4ff7 56d06d2b12a40bebdbbc9440457e303e 54f276860d9b00436370a012706ac174 f350621fba76ee29e7b1367d085b7e66 310c65506936cc5bbe5e5822eaa1366c 1e15f238da6b4bc546b9f3b6ee20ff4b 9b76a0424563e3f4dbbc9440457e303e c0f2673cb32574014e972edcee1ee23 455829a425b5f919fc93c3b1c0fca400 9619f0c887f8d879d79b19c7c4f0e293 2fb9c50ebbd98075ba5342d638d0c267 7ed9395ec6fa732248db5ebe0dbfb1d5 2a3a847a3d4c39c1b17743c18fb63dc 383a9a2c39332f7f50eb11cb3709022 7aad83423b294c59f4b35f4029eb1ecf ed53217c9a4443b8a4ad5308cbfec5eb 53180e91cd6651ab76e29c9c43bc7aa 3cf6db91f872d26c222659d33fd79709 8d1616ada1d6f239d1f4836ba5ad2863 9fd3f3034d3e867336587f5b4db3e782 94cc9d6473258381171b03ec6def09f6 94b55dcb770626d9c8687ff9b0b4e4ac accebea3a0e180f0812e3ecbeaae3980 78b7f3cb97da38c41471b11f88c7b46c 5472ab8df7cd3ecc1c1b3b2ed8d13bf8 8cbf3d97df981d511fc6bd4aed49cc41 fba62693a28b2e4c43f1c519d66bb167 b7184dd450c5fc2e17c1e3c52889f7b 52a8dd8b79ac85299d4d5dcd2cc33826 6e1dd008531f95fc707cdefe012d0353 697cb70c54a483f1f80ff10f4838c137 566e4f05071e86bbf3c9c1464e55d580 7035d480f6bda22938b39a90ee80e328 b68180bfde45f5a7e450a02d8032dbb0 e3eb5422bda98fa12764cfba57a5de73 e3a838cb224367c59fce07ae6c046b8c 96af52c34e42b546cd2c9316e943c316 a93d8aa9a17b9d07f5fc96890ba7d316 6731a24561fe44839b92627dbcf8ae26 3f12570d87da2383492664434c74d812 d020eee9e094050ad776c08b6a3d0a38 ee445cf3710af7e21548fc89657a4fac d0e24e315e67bff2cd80b6234fc6097f c54a464d63efcab2c389b3ea958c8248 3e973b624578fc89b76e29c9c43bc7aa 68dc135cd4671aeaff74317afae0a323 b1f311d5fd262efcbc47c7f012e5fa27 61fb89fca404e37f598bcf8ac674b63d 103c31671f8c0b1467bb14b25f99796e bda113bd71ea0352654ea6737b0d3597 8bba3f2eac551ada2c0e1e24bb9eb3ab 2d018e8c0a34a863ff59f04994ef1f0c f1f8e16d23d3a0ba95f2719038c22311 8b0886f97f038a5fabbc3f24ddd185bc ce9cedc58c77aab4b5a19b1840ec7af a93853bdb9b378dd50c2ec40da48fd9d da7b1352978b35c1490ad276cd2af3a4 4848f84b015f1360e8058cf23f6382c1 591e310f3cea35a6d6134c153bee8ea0 eba001ddae2ce5eed5d673747c0e3adb 55fc24bb7f0cab50a24ad2a1ad4f7142 7db1b46aa2a337adf51f77a6d7299806 23b52ffd037c95223704253c4a874401 ebf8166bacd6759399513f98ce033426 da49d0ed41204ff65c0da4cac04adaed 4623efb456cc6070820018801b237b3d 59f7e527386ab08b7f0751100c225ea1 9d7f79e306288aeac6bcadaedba80eee 66a36dfe1cfd2d17b40f0ac0fb9a650d 9958038b6d06278a68d1b9a1d97e2846 a63ceaceaaae4af9753496ba23f2183 7a712ca74183d8c235836c728d324152 b8f2712e8330ba6b3c9fe3a963c6d73b a1ca000d08da97ae43b5d2063387bd6e 8b4b176d9393676d5e1f306d831137e1 f4e24cf8c5d0c5c31dbb0393636b3531 90c6d1df1f83329fe1181b0e584cdf9b 3c9747ff49d0da71f91663a74ccd2338 81519481b3e24fd7b0957d845ac33749 b8af96d9c542e1bab34e8f502d7c7e1a 4f7e9b96404fe19af37f22e93a631b3a 5fdb10483f79355581f5ac91b0c9e99b b2bb0eb5670296ed5acd449a2ae99009 63249ce6d12ee0bc7b20cb946bceb58f 7a755f08cba6e387ea8f932ecf29385f c19ff7d2a5a3d29aab966e32f5a3808 cb74cf36ff8fcb8d61d7edc67034608e 4a17e5189aafa9afc8687ff9b0b4e4ac f9dcf630e370f7d5a320e34dad7c78bd fa6a5806956d82aaad484915511ccff6 b59735c72cf9af0c17b431cae0dd70ed ebc5bd5566558b64af7c7ad2549a1b15 a8e5e4016c44f896b1b3c8adf02d88 c9f5c127b44d0538cb340854b82a069f e1e7e66978b888703f146f1fbd99cb1a d8cb5a5707686c9295a391f7b991d876 dd414923feefc1bd160139aa3ea05a51 e505ab84808920d06031c9bf940ea7ea 404d58ff6722e4a34014f1a5fb376d1 b7fbbd8cdd2b0b27a37bacfe19b0d747 61b76525022f44fa9f2fd5a6f642de3d f7626a4eb581bcd7140769279b0e5e15 c59cdd1537bd75ddd0818327fc390a5 5db74dcfc73a3ea2f2ca754af3aaf35 d06c9ea39c0dade1d6b5d21cd4e3fbc 50e3f09b7dc9fcb63fde2470c949bc26 233009d4f30fb416dbbc9440457e303e 502be527c054ebca6e0ad36e9a10bd13 2a1d80a0aa67ee7585d33ad8f24c4885 30fe29d73b410c3855efe429bf27a556 e7be08b34dacaafc405e3e2b789a211c 79f86911bc86222a4e5aa1f8c960ae63 4ea3d680127a9fe91360172b4b6205b1 600f028f0bd5e7c2c8e0227722a7d821 b2b359d7ce583ce5ed105888ecf0e97d 63e6c50e5435e35d822a33e080d0e71c 7d7b3b8a1734154b3b8d5c0ebdd194c8 7182f94bdd17c0ecd6bbf317cb591f56 9b359e42a5bc98572085b87de8f7581b 200597e4eaf96015a4fb72f4f3b0e317 e50a97aa15d7cbc5972e15b580d9a5b3 e7d4a3cca8edfde4829113e62386fd50 d5200a27ca0d4a3ea4d56f1fc38d34cb 9ce2ea550b049beee64d5cb52244df5 a691eee4545ce2fade94aad0562ac2e f14fd8433dc1b43efe9f0f410eddfda5 dbfab57f9238e76799fc3b509229d3d 62fb28b9a362fa0adf8d3197c3f0b3a6 c953d7b4f0189fe6a5838970f9c2180d bbcdf9d0ecf02e7e9fce07ae6c046b8c 1bda25dc158098f438f6f5a7dee76fde 5e2003b18752e5f82f809039658ca52 fc6129a9310ba34c645311c54e2f9bdc 8c4d57109ce0f2f222659d33fd79709 6cfe2f5ab1bb89022edea1c2bfa3bc56 adfab5a4d020094f98cfd47a860803c5 937bea562c1db4fe5ba41eea807f5d3c 77e703a4baba613937f1b3cce66816ca 72d0cbe861a7de2de4f382dec07f365b a50b78207ec2256168d1b9a1d97e2846 c12dc91e3564d8e3473f10e6caaeca56 b7c8be9dbe5ff1d540332412c5d013fb 58620941b03e46b6e718b2093cc8d7b1 27574a49bb8055ace6fe3612af521500 bec78ebd204764f637a0eda928b574d2 e0311d577cff9d85f6ea7461c0aa61c3 4438e29f9d3cf45bfe52ffd0e748a1ab 95ff15679bc2d2bfab41e4eb455c2269 a996cc501faa4ec841c6494d29fffa82 30d93191cb91f8ece6c5cd45aa112726 8f70be87d6eeefdf213c3458a0fe5598 88e514e71b48738bb022c94235bc8601 5f5a3d412807984a27f9863535eba56c c877660e0ec15c0d22be63590e183603 d25b6ce1b5ad6198dbbc9440457e303e 59b45e83bf13e8e2374110224c1c4eb0 7effccaa74122b5f2beec56b24479ed1 f06d2963ad258feaf5adaa9eef900be3 447a5eee395026fa8d09bc92d0fc6d3a 648fc7caefda981543d890f2dbb65163 6b38324cb8beedc5ca86e527b84d8854 bd0ee3dbadfa724f6ff454af1e8947f3 adc76ddfb1d619a25dc3653f8341633a 5330a65bc54912ce35836c728d324152 309674bdec2d24d7597976c675750537 b4b2e315ec8e17c9a4f70fb45099ec30 31ea40d2624b40a17b431cae0dd70ed 336ec0b3142fec15aaf0ad030fc37d94 653c0f8b819872b41a6af642cfc1a2bc d4326cd55ed8333f6a059e1fc701f06 892529626a1710cf17ef8b7bd64bd7f2 3d23d594355c65d9376f771510e6da27 b34d40cf68d35685edd5830365d88456 917f2800d9fa9fe8c862eec8232fff1e 91645c82e357ec502744bf8869518694 7c2bd3b26bff1d7568c981036afdae64 5f8b70c628c7f6fcd4fd21ba7448467e 1e40fef11894c4b9ce4f274577283b16 fbafdfd16d929c715b52e74a988c7255 5027bd5ab457e99068821642e9a54505 af30cef615a3338599426e1733531ba 3f55eca70a6ad5dfb4f2d409b6697059 8ab6783b1dfbf3a8a5d9ad16964840ab 94ae179dd1a1492d1191025061735ea3 94645127bd4168e03e63b721c3743983 821c88bc79af232bf2acefc3b3178108 446430548f6ac25ef25f6a97c97019cf d52e7e39bed3ed954f62c7a282978009 47ac4f73d91f8ff0c862eec8232fff1e 1f5a2c231265aa9380b3cfbeccfb24d2 3c4a33481f45cebb81f5ac91b0c9e99b 61917c7f7953ee7fe6543556f230fe9c 32a4ddf426cef33c323ad87fe7d4deee aba6ab10f7ccd59f9f8c3d2002c77ddb 3b513237d90a4cd1576d8983ea1341c3 e54417646ad16604738a251b334366e 74e6ecf3201874777954eb05bbab463f 986058a64eb343c6781b8c940ab86a39 77c4867b42d73d9bf24f05137699edbe 4a86ad0d870a55e82058afcc28d23393 e078876957aa6efbb0b0d46323bc2ae0 63d92bf1f175a75a25ffbad401072b4d 28d3e0a4e4201ddb19ed4d1541e44f14 78261b526d28a436cc786970133d7717 664eb477f8098678f1783a44a88d6274 b5254b56addb692eb516c05d046e8e45 5b5d0af8426e604df1783a44a88d6274 981adc1bb90e7cab666bebf1a1d4e946 bf8e44b58d2d95f45c6cb69e0968783 c50976d44eac9f3cd7aac2535b43ae4e 477fdfa65563f180f51f77a6d7299806 26d98eed64a7f76318a93a45bf780820 2f20894566c681e5922309b37ed10e7a b274fcf203b9ba7612c19a9a8d2be7d4 4855971647f786b642e1bb4fe264125f ee20e46c542e2268f51f77a6d7299806 e916dfe829b5b3daf4b6538438a0b930 d4d7607336810a548b95c9b52cba3b9d 7fa4db28bd803691c91adfee365fdcaf ed51660fd119dca819fb4103277a6b93 800f60058f12a5243c2e0b170f2ad8bc 6ae92754a0a90af09eb811e8e20749ae 1e03b1793723dc25fbd332e3dd079259 e76aad9a92f83d70bda72093f9b5aa73 566df2b6ad0abb3198d5fc0473d00a1c 39c629e6f9e752964c6ea7add0063fc3 ed6c9f6d77831e5cdf2b21995cbbbc4f 34ce485c1fbb9af578785e24320d5ee9 7af12c69626b5c1814038d588fd1342f 478074fa4b2b604b6c0c723d8da50cff 89509ce24bf62df0950baa3a522faef2 1986eeb9bb594bf9a6d7a9f3c5f7bb41 3457146f11dab7eff3c9c1464e55d580 78505373e756b214a3af90debe5fa17f 938c0560f25a6a9cb76982957f05710f 5ce98a1c247f0a2d623ddc7262bf3bc6 4e438ade91769be8c8687ff9b0b4e4ac f106bc80265faaabf78fc6de5952fb84 662928421872897f489452a0032ea575 9d9b5f5b3fd41136244d7c2690850fc2 66aea803dc4a6c5390907a4c1a185a7 462ef3bb97a88a753efde60c5bd5967e 64139338cf8835515d6c0eb60be969cc 997b0aaad2301a44b31fb46b2e6304f4 2a445cdc8cac449271c43550cfb383a8 6cf7fc7979e949c72dc9485cd94746f7 1820138eca42749262e4024c69de065d 7289d67cc454e7215790e40d47191474 6b6507085db5a631f3c9c1464e55d580 95ac07c8c517929be06a9b687d35bd76 6ea4ccd680f3635b14038d588fd1342f 31f5725faebb53aba1fb86e891f97aa a7b82d009e29bafe705fef512417e4c9 fb8b45151900e6e016a0c57b9ceb6d01 5d681a38c0de5545205884f75aba3a ff143c09dbfb0e8029e513fd785f7886 328685b8dd3a7353bfde9cad2b5fdc64 27e757d4ed3c929b75c39dc45570367 5f2441ed2a9ec8fab5d55ded7962c792 75b9ddc5017a5eb137f8f3a1ea8633a9 5c70ab37293d81911b17743c18fb63dc 5ef4db0419932fe12e5ebb32d8476df8 64871dc28a21843ad504e40666187f4e 7a5e63ee142a424c5f6d0af6de791c3 76772a027634c747c8687ff9b0b4e4ac 759d66c5dcf1cabfb99d75d512b660d0 4c6c3346b5d0f071f4b6538438a0b930 715530026c6459873e8366d7fa2c218f 8d14cc01f39f2679a857215a199c2ecb 2a2d705d0238396488422a4c20c0b1e6 5b0dd54eced22552b283c8c7333d797 6dff84a93b82c888486150a9b7f2cf18 35d2e2a050336b78dbca69f936e89647 6b881cd27826bd6b97a79b27e081b077 287413404880403751e5a8425285015a 674122da19a75d9bca86e527b84d8854 f53cba4a288db2d58e1400f6db70a939 99a9e829fd4bece8f5f520af1365ee71 79053fcbcb68e2c31528cf73b8bd8799 1e9004958eb935b2ef2777c7d8e09db2 4edfd09b8d7717cc579600e6ae92ac5e 5ca0b01dae9e3476f51f77a6d7299806 4c6c364af4b52751ca6910e4922d61aa 751b12c6e22386a49a195befe1c2db74 48de3e38b0c5fb40b07fa14c34cd0728 44fbc34ea7869e38e13a527279e951a2 260f65e1b1baaf7c7b707c797539b200 b251886df47a873eede14860b165d604 92175cfac21b10e76e5b9257c4084ca2 29876b641047897f9bbef973cc1034f9 9e140d4e30a90721b459fd126141e9e6 6730fb4ca7c90ddccd8b2a7439d99cc3 cc811f0c28012f493c528a26a44a30b6 501bf2a6d014d22ba169b9ecd9e046dc 18e5d3054fba58bf6e30a0dcfb43d654 bcf67dfcbd6c1fe7da8e9e0272759299 3ac2da28e9a2f547ce4f274577283b16 e1e2a1aa3a6cc913eab1a145ba6f6383 b2c838917b9f0fb68a40e1421d6a3cbf c7ae4cc12a7bc2581fa16f9a5527bb27 20ae4b27e86521a32efc7fb40a53aaac 22f030ce09693f4c65c99f3aded15b93 1b6c268811e1724ead75d368738e0b47 a3e985835e89c8b1498f847f9f26fae3 a96226408895c2685e3c4d3bc6ac3be0 c5e3f6da9e818851618dd45f797b66b4 56cb679a49a3568998d5fc0473d00a1c 603351f3a2ae3259f2b931201029bc76 c1c0b3d35cdef5e2f51fa0238791f5dc 3f11833d3d9309bc9952c05a06935ddc a54ac4580f151f89278d386bfa54545 8da97531717192fc3215145fdcd9052 fbca73a2c226a86a593a4d04856c4691 d5e9eb9dbf9d30073321831d2245cf06 a36aa9aef138fdc1377b9297f3055210 ce10e4e0d04c33e7322ed2ef5fc90e25 59bd57fe0389e7831f7c97814eaf956d 37c5d67f97a2231cf51f77a6d7299806 7004f4eb1a5b4a41a5e3e028709e0474 124ef426dfa0aa38ff6069724068a578 673c396b8989cd1971a782a4379556c7 b2c35c8b748491a1684b7bc3f8a9aa55 d07675c29d0bd535580b0de4af0eb56b 81c481c1a0477555f0a61fe93fafdeec 7139284dff5142d4593ebeeedbff73b c400749eaa4d10871a782a4379556c7 e92063f7bf538df17eb00a494c61433f 86c4bc3f46e1bf7bad179769eda42205 43d13e139d0eb78668007dfca4077105 2f249cbcbb122b85845e78b431e4d529 def8af022dceee892acbf58c0b138e50 7d1a9d6a3297ab853e02e5116c35dcd3 c833ef6f882a4b2a14038d588fd1342f 83d3b40a6ff6a04af4b6538438a0b930 276932e7bf229d37c8ad93869b52d215 123305d8ccc0dc6346918a1d9c256af3 9e8ba34b501945d1f4b6538438a0b930 5392f55620f601471a782a4379556c7 38c65f38e51df0746fd487bdb55ad0b9 9db1302f2fd980cf3cca2657c9d0b9e4 3a40eb7b9122bbfe2f066782346a992 76de2f91710e9bd85f31725202dd5bbc c42bedf7a36202309056fd4a77b3a4bd 2842701d388dcd3d534fa06200d07790 4fd4cda3d713bb29c8687ff9b0b4e4ac ea7337dbfced9674d2844b25962c000d e6328c1bb6b194f262e682c9809bff14 d86158642391ea7a150a331b054ed006 4a0f1aa6a24c889dc2f927df125f5ce4 84f7061e038484492f8cdfb829e0f65d 95d8553504c65fb4b770bfdf3ce10896 264322794651490ec0d3c02f7e255b2b b4e30a512991aeba67903707764646db 895099e136437cb799860e9353bb52a1 59704fd0f662d7b4da986730050de1e8 353707e135c889d2dbbc9440457e303e abbe727944da8cc55f0f8f79871ee942 f128d707527eb10cb04cb542e2c50eb4 3ab2563609476e089868adf0764f7fd9 c7542e15626489adab4faba16579e3d8 c16a1a47bf34a84d157e7edaf1e3e602 74f246c1f7633eb31d1a08d58541ab5 4aa70df1db0ff6ce2d19175e7d19b7cb 3f60205b1eef5555a4bf007e7299d9cb dc0bc65e9181c2f698eb62961a525575 103a0a413d4c3353a723872ad91e4ed1 4ae645f3b724a7dcb83ea6cf8ac00397 ce12614d019f86e840ef1c8b63a628f9 511c6fc6d3881b4ae43df8c9a38bf11b ea389bc8d94f87ad95db811b45a94857 432ed2387d4982a635836c728d324152 502d0f698e20af83de03ab2a27ba7531 9d229e34818effff07d3e3c7bfacb95 8bd8c34158a3aa04f91663a74ccd2338 11c9c57efad0b5ec297936c81e7f6629 123b44b99e48eccb6960dc525de2f934 4c3f452cd60df0efb0957d845ac33749 387600bd541f7b502d7ee37bd88bacc0 2282142b6b136a6f2ebeb1e6a8111f53 a770cb6ad4a97df84abd45348d17aaf8 8c281caf626df58671a782a4379556c7 b51e2ec95cb6ae33999b33727fe6db14 c7f607892513a2f787bf0444104341d5 fe47e7645f1080735f0277eebfd05be2 32d243fc56b7b8658cbd400aa99bee96 d30ecbe6cbe364e5c8687ff9b0b4e4ac f34fea2c05dc63d090984ccce1017e45 5af850643d64c2621b17743c18fb63dc a6009749fd05fed82d19175e7d19b7cb a75e83a3201cf5ac745004c6a29b0df0 f8c5604f39699e0fbbc2b2aef664ba29 5ae7ef4cfaa6bd85b04cb542e2c50eb4 1ef31b046039bf985c8a41baad250b1b 3d66c60796d59662ea693790a1608aab bf41b418250959d0a8699b6183baa203 764abaffc5872775f0dff71ec76b46f7 aed911c2849ce53b707cdefe012d0353 79d7e50715b3b00cc2dd59754f61bab6 aa88b0f05470452f7ea323bc74055b8 a81795209ce65006ee0f4a6e5ea1d8c 70a2b281cd8d59a52d19175e7d19b7cb d5b909ad5d7c793aa16baf954c1d99bc 5019265bd6215c9ed54fd46ccb781717 ea06ed485ab0833a2ebeb1e6a8111f53 1f3336163f11015c1a7069a11c22548c 191360ba29f3d296ff458e602ebccbb0 8cca53295cb61e878d3e8783b997c75 595b9c165214bdf0b0b1b4239165b394 f85f33b3f6cac48a512d71be7dbf2d60 6fa2db75b28cc1375c728bbce49718a0 a497f206aa62e89c8ca0fe30c6caf3f4 e777e42470ee9bf270ae142beb408e0 67d3a3eceaada710e400ee8c5c49a7eb 24465c99afde3b9782f320c67d1f2e15 11c8f43ef796e23941e621b1a4bf507f 9451cb35f46ec0f6f946fe2e431cd4fb 3de9a7a40851ceb971a782a4379556c7 58ef4177c711f38fe302d4da760c718f d9902456104543c898d5fc0473d00a1c c56bca4b7f353ad86debb0a33c851f8 9b9cfaea2a7ba04c461ec9f1803b17a7 49cbfde1ae92ee555706d1c54190f27a 410146dc84b6196230fbe480cffda9d3 2d204f50f33b3994fe52ffd0e748a1ab 17d7a3e8badbd881fceff3d071111703 6c5b15a19101456219cb07ecb5b4102 c7da13238eb4a7e15128da2cbe23f6a dd0e48963b73476f7fa93550ab8061c2 b371bb691811acae68d92632b2a01360 3269630cf8dd9e87bfd5f349b1ab226 f9b462997cb333dc7fbc060fd555478 63c7b59dbb2876b4aa2ac8cb6992212b 6d27c80c3da530d69b11da89c22111dd c5e6c2b4528c371378dd615a59de5f05 421b11a26931160a492d9da2668ec34c 62c3b6eea96337609ae676623bdd3284 42ecccc972b45e38f4cccb2a97578c5d 65ff1205a5f89150315ec3dc61760fd2 9d7d7607e1ba099bd98e59dfd5823115 238cd4b409ad9951f1d6726679b21945 ca9f1525342549878ad57b51c4441549 ecb53ab8eeeb43d31246538126da07a8 584ce0f244158b37de2b9bba503c21f 8db4d399adc4d6148738e7290b6f3237 fc99c80f588bc88d5a6be9e325f087ce 63d45791c56483bb2662409120160a57 643e55c58a248949b24e615f75a5a1bb 2fd314d0a19433c62c37553db37ec752 8945c698ec3e9d1ad9deb3f829cc2475 249b40a630dd751f8023b347a089645c cea21726757b5253c3648f83bb1262ce 808ba77745a0934586abe5555a3b447d 8e7f354489bf4d9b65684b1827478535 1e67e443849379fd6666a748bda83f67 ea762c2f1c6e966be464faca7dae7fdd 662409af279f322eeb82005949031741 60167ae64899f8ae966a40fb39b34846 2576091d2540147a473f10e6caaeca56 9518130aa4876f146ec0232dc7739bc0 9dc77fb24cb14e5b3abfc4d0a5688916 f05cdaa4f262ebfba16baf954c1d99bc 77a4269a0d64d48336b0f2a1430e993a 68fab23a050707213436bcb4a3bd19ad 4a636d555b4f9492e27790b0ec8671f7 7aa759758e3b0d5024ef48ae9e8e965f 5a960456884d2a3b04cb542e2c50eb4 fa277e2693cba669731d11154716a6b8 738188ae01887d2349bb1cbbf9a4206 b1a30ad2706247b53c5f24f851caaab7 ffd616229a97642c7ea8c9f2db0a45da 8e9247a97fea8e0caab901f164e48538 609d3b4977310957909e1fac9945adaa 6549c13a4c96b926f51fa0238791f5dc 49d4f5dc155b7b8a55f46d55537192b6 8661c4d0ab5e3636490ad276cd2af3a4 2620443433d2292ebed0f46f915a3980 73970143d9af7218c8687ff9b0b4e4ac 95d082c78ea0b1befe52ffd0e748a1ab dbf5ea40382c5efed30107faf024a18b 9c339d9fd8068f81351d9ca36f76b95 430f87764dc3f455ad484915511ccff6 b2ded1854643f1451c1b3b2ed8d13bf8 7348ec0e16e99fe1ad484915511ccff6 27fef9fcdec5a001f8f60938be4e769 7c7b4bdc2fc34ffdb398ef956214258e 7a8b8bbd24974013327289c00b6dc9ca 61943ed43201e59ed7f7a4c4609b0913 589829ef4fb0390e492d9da2668ec34c a88cdbcd4fe502c743f32dd9b833c1da 994dccd2cb784510a6fee8e2140acec9 4cfc78be98de1d2bd607f0b8430fb29a 37ba94e29b7d21ee41fbc1e2da054acb 1bec15f362b641ca7350b1b2f753f3a2 313ba5c62a7e746d2974cfd5336a9b09 94e289c89059106bd8f74b0004a598cd 1d1b37ce6d72d7855096c0dd2594842a d67d52783e2ef9b76179a6634d17b74 972355f42223e6199cd431573238602d 7eaf212097293229fd3456bfc7553c94 f7e1a17728ea76dbc6bcadaedba80eee 6dd5e21ca65a9ff73c837ed50dd492e 11525a18678f7ce6ae1e1181f20bb9c8 4a0e7f1129a9172349bb1cbbf9a4206 e6a8f28b36533f8239b3360f500ac52a e431c68fbfdf826d561dbc0c83a98a32 185bcb9bcec174c9492d9da2668ec34c 45a355545e7a807a492d9da2668ec34c 60647c98b5fc96b13002761e7a3ba3bd b89952c6f2dbc1aea50b88953d263a42 1bbe463ba96415aff1783a44a88d6274 e462df8166441ffaeedb49f6d982d28 33334eb57a9d7bbba19d006f28e25379 88a7740602eb0d59cd431573238602d 44c5b57d406c663403f064eb1ac2f31 74391d05121df162492d9da2668ec34c 374e87fdee7711491e046801e2748f1a 6352d748b1843287921ea62370e5ffe0 f73dde8df5d0e5c7f91663a74ccd2338 97a4d1ab6d58bc2ef60f0f3341009abb 7e9448da23c3387754e9211d1e7afbcf 81910ec49fc4951330e06a011e63236a e955b63a4bd738857178717457aa5d20 675aaa5b883e2398d7f7a4c4609b0913 7d59399c37925cd7b1b9d9bf8d5ee54d cacaca67988f6686f91663a74ccd2338 6b95ac6189a395d3fa8cf35dd917fad6 131abb0b13d6c5b97f0b1e4f6d35b0ba 44875441fe578186d35ac2e5000061ec a564c8a43f6a7ba5199f2eca998ded6d 2b783fe4230af5436a7b680929b3b0fb 497f67c006770b9f94e98ee4fdfd7464 7212bdfab35f72b23002761e7a3ba3bd 8ddae5e2493ab76af91663a74ccd2338 7932489d9aa9fb58492d9da2668ec34c 92ebdd82509fd637593ebeeedbff73b 64e77e9e5887ce95492d9da2668ec34c 235c8ef29ef5fc5bafd49046c1129780 639a10b856336f1fff2c92c2a4f65876 6419d67905503bf7a09708b19d8be603 961396e0e5e46a4a208462e8bafe70e8 d04c2161f32a6499a6fee8e2140acec9 c6811f115d89758f46fb9c38320df24e 5ed72ca90351b0c4d5b24cafb84903c7 92c176547858fd2cf91663a74ccd2338 3928ff39e32dbddbf91663a74ccd2338 4dd8862c73931cafeaf14273fa406ffc d670d3919c87c91cf1783a44a88d6274 d66fe5dc263064a2bc38fb3cb9934c71 c0b10448880dec62056b4bd5d870b47 e3f1f899d63ab008492d9da2668ec34c 308a3c347dd24ee4fa2713776d82bf59 61eb0af11765544ef91663a74ccd2338 6ebfa5329b0d1439d4ea3f4c41b1b9bb 8a948db5f12d02af492d9da2668ec34c a97a00bee5585e49f05defab1869a09 1eb1a8acd4185f49492d9da2668ec34c 30f077da43f30e64c862eec8232fff1e a7fc36d1b5d29280ad484915511ccff6 459a01afd2d5d4225267ac530b1d88dc 9c5b246616974299f1783a44a88d6274 e9e8f839c77a03498307335ef66226a6 7f2854516404a3a7de03ab2a27ba7531 5ceabffee1c333293002761e7a3ba3bd 99120ec1daa4ae1bad484915511ccff6 dc77b920bda118d54627f3cd8db22919 85208e245c49fd72349bb1cbbf9a4206 70eddfb0000447c637b2bb75885cfc44 d32f32d76d7f53bf6996454765a52e50 da443e90e376b024b0f7e9a1c9f6c90f edba8e42a3996f7cb1a9ec000a076431 8f77a33dbdea3d19492d9da2668ec34c db549976c0b7b960d42ec7e303174a87 924f413e0a7a6ca8492d9da2668ec34c 2320dab001320f69f91663a74ccd2338 f8594a24176f732b4c7e2600dbaebf40 12f395270a3316d01666e1246e760f82 95d6aae8728a0aed70e95b2fd46626d 8f1a661dc1048e36297936c81e7f6629 a99be8e57aea8592a38859fd71bee28c e9a8bc335a7faf78f91663a74ccd2338 bc61ea1b9348f456492d9da2668ec34c ef4f9cd2b498a10a614871b18a2b1957 bae518da1e709e83596f70d1d7edd4bc 4785c094e81a5f8e3002761e7a3ba3bd 966aaab0434c950cd7f7a4c4609b0913 60cbc688b57f8b5446407779dbd69b2d 26ab589f6838edc99ae676623bdd3284 903a14845425ca3176e30bf48cd56fcd 511e6440fad9bfa81fc8b86678ea0c8b baf3304f1352fae41c6aa36e5af1449 49434684366778973002761e7a3ba3bd f441e4f7f123bde3cd7677199133326a e6c900568268acf735836c728d324152 a78d31c9dd3cea02f91663a74ccd2338 af34090f13146fef15afaa91253fa857 4447ee47cd2333f6349bb1cbbf9a4206 10d174a00639990492d9da2668ec34c 4c86a55673764f05597976c675750537 b659a94c6643282f504721639e19f609 49e265cf00ecff0f59d9b12c05c8f809 e3b04359a3e9ac5de5dbcc9343304f4a bfca24444b46e75e492d9da2668ec34c 92e2317fd0d0129bb910025244eec99a b8666dca76b418e04c9bf8fa5a14f3be 2ac0a9cdbe7ab8a6ad484915511ccff6 426ab868a6acc7c6492d9da2668ec34c b2d6c064af0c735f1783a44a88d6274 ce33bf3ec6438e5bef662d1962a11f02 64a699cf5b2a43473f7e27638e63d848 c570ee85ecb0e514492d9da2668ec34c a7579c588d289fee4671d97b0fd17f51 74636f18a539da1cab610b0c94236463 9b52e73f96d181969cd431573238602d 3bd437d38068f4a61f285be552b78f9a eb59a4b8deddc6f659fe320c015eae2 e4494542ab04c033e6fe3612af521500 c58f6a35f86a1802e8f8c11a24c52ebb 99fbc3ebabd3b83e54beec3b24722e27 300d6a7505f24959492d9da2668ec34c b33e6d5d6bdab020af7c7ad2549a1b15 abddac917b144928f91663a74ccd2338 589e717feb809e7c1c5a16cc04345597 9e9697da825cbe4b3002761e7a3ba3bd b405fa036403fbdb307776da88d1350f a8756f91fe03b962492d9da2668ec34c b11c616a19d702cdd7f7a4c4609b0913 7297ec6faebb50aa1f285be552b78f9a 95db11e86efa7c3e8c6222d771a6c85a ba45d6c491637dc5820018801b237b3d e98fc1a9b608a0c1a8760470bc8702f6 3797290f1dc83a3ab0e5659877cf3f6c e71d05f223d527a5f91663a74ccd2338 617f09d333443b8e91745c588e2e0fa 7520005e70a54526c266013a269e5f81 e5b0325d624a692467d783b4714d4324 1e2e68813f004d8ff8b8d4a282992be4 606bd97f7337bf39b40f0ac0fb9a650d 3fae0625f3cf5e862678f553478310df 7f11908f7ea9483c415dbfd895473b4f 233cf8ec4019005ceaf288f952624966 ec454747a071b83291a302a171d24a87 5e685e076287215be8f8c11a24c52ebb a13fa904e05d60f176e9713f57a5fcb6 2ca91e56bef8cb5034af953b663e921b 42c27211881f1377d7f7a4c4609b0913 ed72205562ef8407d7f7a4c4609b0913 2182398f0f8fdd81af7c7ad2549a1b15 ea04a5915e3982aad7f7a4c4609b0913 f1f670ac53799c18492d9da2668ec34c 77cf056c6beffa5e3b6eb1ba4e121206 5b2cfa084b8cfe389753496ba23f2183 3020942d1547cf562056b4bd5d870b47 5874e2ea2c2b71471b356ab8b24c147 2c4d7d33ecb486532569827d39fc0af3 bdc892547cceb2ef34dedfee80b7006 510b1295f70873e2f91663a74ccd2338 bed17aaa6ce899bed810b14a81e12eca 572cbd8b4cbdf7f1f91663a74ccd2338 28d27f1204c1b3de6512b7b24f3d84 341c9b0583d31770492d9da2668ec34c 5008eca8deba6555ee229bc98ff4457e f34a4514f72a3a767c11a4098d0a0259 e792a2d799d79bc1b249ecc7669d184f 413a7b8c5de6dd4ebb7b779fe99ae983 5eb42c663aa7c8afb05550de345b6d0a 9368cd9028151e1e9d51a07a5989d077 34160b90f6abd883c731e4cb72d7c0af 5456ffcbb7bd6b3e4460d09678055ab5 7b86f52727b40120e3f7a74e12a274ef a551977f078f362c492d9da2668ec34c ecd46956b35523fd492d9da2668ec34c 20b0a82068ae767c34cc22336880d45c 9542f23e526bd7aa24adc0b4355a9827 11358c94662a68117e66b3e5c11f24d4 6f36520144753550f91663a74ccd2338 473a9ac8376e5a15ae0b06ef692d1ec7 d080bfadaee310d8a21e3ca11c5bc05e c2220851bf50eda931ecc34700496180 a7d178cd0dc051f25fceaa39a8353bde 4422c64dffcd8662eaf288f952624966 22ae801d650a1e3d492d9da2668ec34c a09091780fcf3af2e9777a9dc292bbd2 ba9b35c49d861f7f4e994a4c55e56a4f 61b94385426a74323002761e7a3ba3bd 7b8e24c31b7509b6dec3f6fd3a03085e b06f26c5403c3e922e653f6e789d3d8c 508450cc9ab2a5fa98cfd47a860803c5 3ee094648665bc3fca15770f07fe3544 5bb8457da2bbc722d810b14a81e12eca 434512cad2c10e09e8b2b8dc0c816caf 30f68a6304d6906c9bdca9b7303475c3 90f124aab57c518eb866f4a999c2a978 769b26b459617608b04cb542e2c50eb4 6aa1ac5d377261d1c2fbfa4bf3252b56 a7f0f0dce71747624671d97b0fd17f51 5a85b2ef58145949213c3458a0fe5598 7a338e9b13ae5da3245e874042d8b8db 6b64af50e21c0006f91663a74ccd2338 37ed1b9ebaf4b92deca22c501ad0a77a 95792c6761663652aece045e8bdac80f 91b738d40201bf18a413908c0e169330 590ae1748c5acdedb05550de345b6d0a a1949183ec03f3ab2f6cf9c2cf79a5 c8df724ce6f12ca2d86a257784298546 e127ed243617eaf04904d89e9169817b 655102add1989c1064fad3c7b88e6060 5bdcd3d77e1c91f78e437a27fb25efdf 2a0e0b51d919f030ad484915511ccff6 6b4622c4e15b5cc9f91663a74ccd2338 3919e93cc1f3bf5bd7f7a4c4609b0913 8efb37e93b208234671d97b0fd17f51 f7b52f9c95ebaf3ff91663a74ccd2338 6fde09bdd613f6e6492d9da2668ec34c cd7674dec40cb30f30e06a011e63236a 79850e4ff6e43e6b3dfa4373373135f6 523269ef7703a120cf004563556ddb36 be305d2400194ef726e926172da61b44 57c6cf844c09c5d8b40f0ac0fb9a650d 68151e7a9fcd8545851e82fe58f53ce1 9d9992f7da4c888c7d3c9de9415fb224 9040047cab148e55e8f8c11a24c52ebb f9cdefd31b167f95e8f8c11a24c52ebb e8ef93ed45300501bfddc5b20c9212b4 7885f87669b8fbc73f7e27638e63d848 7228564fe629f578e8f8c11a24c52ebb a559b02ec38b9995c5fdf6b0c2c57721 4363eb3e65ada91ae3f7a74e12a274ef 5ad3a3c3b67433174733824eae5cd9ae 22740f20eddc5420492d9da2668ec34c 353bbd3b916426d24502f857a1cf320e 709a5038988a70f58e6803fc947043b9 732e0abfbd4d09858d775f6f7c8f1b0d 4c52204e49ce9449492d9da2668ec34c d2a1aaba7e047897492d9da2668ec34c 34dc6c4e022b380cf91663a74ccd2338 32b56fa66c73c450a86b76551c6a3b2b 65c7a3d8fb95311c492d9da2668ec34c 58f3e49e746363dcf91663a74ccd2338 b9027939e6c71d844d256d962a5df83b 77727bbfb22c57de492d9da2668ec34c 2ae5f2290acacd7fd5b24cafb84903c7 63b5ef650f1020eb7fa0ee8efe00d1ee a69a2807ca667fd9492d9da2668ec34c 9e6564dce4cc128efc24661f5f8d5d00 fd244782842c611b6443e5551f9d3958 66683c677e7b40593c2e50348f23d3d ac041c720dc66c06d1c83bc8b134e4d8 3a4d572dc16ac52e201e82f29479384c c08c39b6ae7a44ff3935ca98160cbcab 9faecbe3bded39c4efed9665e3f75336 beccd4a6031f6a5a3eaabea23fed5ec2 484f0070df7d5375492d9da2668ec34c 4fa95ea95b42125be5c1abd833032715 9ecd81b505ac3a175634c21965ee6bab d015bbb45833955537b2bb75885cfc44 5893038d979ce1bb725c7e2164996f48 8da91a953d645457456cbf78e1e89022 ef03458b97c8775b492d9da2668ec34c 73f9aa75944ecf0b9debdd405104de8c e9592e2a4fc74bf0492d9da2668ec34c 813f84c21a081253c02e349cb722a77a 811c349efc40c6feaf288f952624966 8c91c7c19c20bc4cf130e9cdbbb1cf40 96419956c44757fe71a782a4379556c7 61dfc04e60e3df4b4c350d7ea5fe2a3a e8187497dd464b62f91663a74ccd2338 8086d53c2535511597976c675750537 cbe006da89cca7ffd6bab114dd47e3f cbbbb3aebaf2e112ca07b3f65fc99919 75d28a98c151cbe678d2ffcbbc0020d 20e0e65d8a10a88f91b8ec332e6d93da 71b3089481026a9e677db18592980bcc fb381061e67388ba80360680c1602c7d c41fe0605cfe70571c25d54737ed5c8e 9aa80e9e5adc8084792de12ccdce67a 8b54af871a3ac77c492d9da2668ec34c 3b2d9328ab28f70122c4f7f8c92935f0 3fc6ab5d3c52c128d810b14a81e12eca 21a8b1ad63a8d19dd7f7a4c4609b0913 f93bbb0ae5d66c075fb57c89160d1cb7 329c2234d134dc89492d9da2668ec34c 9069ccc5fcf22878564eaedaeaa04f28 2bf05f8a84f0a6f33002761e7a3ba3bd cf88ae03d8cc2fabfcce6278f5ffb13a 48f2c6ee2c8ea7538cb22acd3160c793 bf91d0169eae3bfdd810b14a81e12eca 40f1e0c4aa317c4d492d9da2668ec34c edb86d102237488ce8f8c11a24c52ebb eeef39917dd113e053624ac0db0f7e5b c10b1973a0d692ef910979f825490a99 9d0043b17b97ac694925bc492489de9c 2f1bc92c53f359d759a6208793b9dfca 8da327a8eea887fd492d9da2668ec34c 24bbe7f32727901aa6fee8e2140acec9 c64691882dd54d0eec1a944671ba8259 1b938d400e1a340b17b431cae0dd70ed 88aec853dcb10d526efa145e9f4a2693 a1555d448a9d6fa0666bc0b629562709 d89e39192db6fa78492d9da2668ec34c 4f6a5769aab5de542b848a53a7028d2e e854aa6a9c97d829cde6b082a301e49c 4e1dae6ca4f220048ee0cd746086d989 341e18eafb46f892a6fee8e2140acec9 5d60590d192c52553a23b8cb1a985a11 48106a12bdc3f7d8f5ee22e800bb9145 a2bfec12cf53f198d810b14a81e12eca 59bbf4d0360e4cf733e5ff708bab9b06 898dc475a4f36d0d35836c728d324152 39c5291a2dd17d6430e06a011e63236a 1093d35c2ac73bb74ca84d60642ec7e8 c649c3e28d05e0877c65caaca24f3fa0 9a3d7e6194b7a5bd3825a5bc524f67c9 4c668aab2c49f9ac9bf4d6e8e41d9e5b e2c3729e9729b75f40ef1c8b63a628f9 9efb86c07170d7e897ec301178d1c7e a33fcf84726cd862d866e3aa112e4663 740cc6d4d1c6901eadb91c074e672e22 43569dc880494256b40f0ac0fb9a650d 35c2de57ee36f652492d9da2668ec34c 6ade3daff4827379492d9da2668ec34c 4610136087e41261f1d6726679b21945 41bb8be36df856eb847d4e46a1f9f05 5008d5e0ddf1b3dfa37d17ad9e86b6bb 551be68d484c8910f91663a74ccd2338 f40332e31675a54d492d9da2668ec34c 8f3c91049838cdf2b04cb542e2c50eb4 8b6f6304674b1280d6cb6d27840b9d7d ea577a1e9dffe7b55096c0dd2594842a 53eea17c88e31519492d9da2668ec34c 3869d2fda85428c4f91663a74ccd2338 cb78334a5ad9517d7a31dd5af93fdb5c 8b3d1c34753e095cb05550de345b6d0a 78ba9e32a9a5c276f69d13812ce67f33 30f862f46bd96da835836c728d324152 e67c305a676930b123c95a77265c8dd 3d267294b4a01900b04cb542e2c50eb4 f3ece63fb46fb129eb71e9117b10dee6 dfc9e6a84553253ef91663a74ccd2338 beeb89082b38c83c992640a67216b77 925c06a5aea45ffbaf7c7ad2549a1b15 357275196334dc4feaf288f952624966 f4cec47ced59d95a3002761e7a3ba3bd 5e5d9a681b53ee0d3b8d5c0ebdd194c8 38bdba5f6455c5ff91663a74ccd2338 79317a7ee8c26288ce265ed390193062 d4e0707b680e61e0593ebeeedbff73b 1be0108997e6aba5349bb1cbbf9a4206 d19ab2197f8e8582f97cb7fd36f15198 5c28b7d86cdf577c944bd645bf5a9d4f 3211fc4f31b15964aee892adc836ce83 1022fe7dd03f6a4d4d5ad9f13ac9f4e7 30518e2d6fb5dff259d9b12c05c8f809 cbbf0aacb76a1ed17b20cb946bceb58f f6d1ecef43ed4eeb907f4a296134a0cc 4aa9b5829edec8ac4671d97b0fd17f51 c42b305fdffad7c9cdc9f3b79a373ad4 46323c7986200588492d9da2668ec34c 36ee2823173fecc8d22730b0728b2fc9 37e3b1b00196001160902b587804b688 a8febf7ef6ce1d8cf7d0fb681a992ad6 4dc7fe6e98c4db21d79b19c7c4f0e293 d794f296dbe579101e046801e2748f1a fe5951beafda9dc5b76982957f05710f 611f235819b7c26267d783b4714d4324 39311ad85e77d3b7492d9da2668ec34c 7fbe0c40524fd37465ba78ad9601cf1b 3469b7f0709ed90ac681404257d94ad9 69e35c579a68fe146045fdc35419ee6c 3db18530ff6bbb50f130e9cdbbb1cf40 76389d102e3fb729f51f77a6d7299806 39c2f4690aff8f049a45ed2554d2f93e e6e65bbad248c82c4c59782c74cbf5c7 2acb11399d4d6cc335836c728d324152 4b71f633ddb55c6e309160eb001312fe bf3c19bb6bf16aa8beedd4e6b38acced 40fc53f1c111a19c7d3c9de9415fb224 379f2db4f028cd7925e847faed0661b 1c08f2aa305f124262e682c9809bff14 5e6d8f9275fc311fb7c42e403b7689ad 6f11d4ab55b7a63e261fd7080fd6f759 1e2ddaef401676915a7934ad3293bab5 e896f38e6b62f25ce030e064f3b8af2b 6584413da69096db65ba78ad9601cf1b 8a67fd47001e52414c350d7ea5fe2a3a dac4af24e2facd7d3000ca4b04fcd6ac 452d2a10ecc96b34129a4a365910676 5427106126c9851dc862eec8232fff1e 43681f9356e330b36ac40071701c687 db812fdfacf4db8df51f77a6d7299806 69e591a9769e03012c528d33bca1ac2 51591397480eecccf58894a68fdb6cca d49ce68499ee980de6c5cd45aa112726 b2dc781aae692b2555182f299fe41fdc bb3516732bcd45f2490ad276cd2af3a4 588dc044970bc56f3a4a5c95fa1b0032 6e12481d3158dd4e8f8c11a24c52ebb 3024deb09ba519c517089ab023f65eee 502116e5b87d1fbe69e92c4e191537ef e2809feb8c0b535686c701087a194026 b1ef4c02ac7a0b28632c9ddc45ef4651 ea628b4568d4eb527085b4353236aad 6ec02d7a508434f1b0957d845ac33749 e26ac9cc4c44f8709531b4e1074af521 d107532567ee3f316663d1953862c637 b2968ca25d2e2fe0f51f77a6d7299806 19d3ba04e165e67dcb4387db711dc078 533650991ca60fbfdbca69f936e89647 2dca240a3726c004a83826e22c7812a6 bbba083270a2b0d031d7d27dc50ba701 79397634d362eaded96cac5d008c9fc3 d9bf326d8ae7a430a5a7dec3df261ad1 f4a0767a3d7039c38a841ccdc50a763 f14a2e78a93c559b253b862f13dd465 cf0d80feb2f6f71d9df508b37e4a3518 96885d760de5c5e174335c2737ecf4d fa33e83563fc2765e238f87ef5154562 9ab690ed709e7131b1b2ecd73d1717a3 8ca2c0a0eed4a31abb93315448664e1d 977b3355b3f93b09e6fe3612af521500 691b10e17ba828e2b161f36d4e309050 2948af0b6a12f1c7ad484915511ccff6 e5d285ad477a33a27eaeab1f0c9120b7 65f3d57bd9c6911d492d9da2668ec34c 3ae2857e04641093b0957d845ac33749 ef544a816432b0a78dabc11b24766ce2 752102fb466042576a63d6c64bf6b56 bdacb728b23fc758fc0035da39bd5e1 85b73c87c4c73263a7c64d6a7060b75b b66ef4dd7cd2674f91663a74ccd2338 32408a694ac56775ce62834dbceac22f 1efb3d9f1cd2499c5339eb67f6086a2b b42953e6e55ba5d4d2bc32977ed52527 bd4fb5e30bd993727eaeab1f0c9120b7 2268d24a64c2b20b16222ba719ed2541 2e291f35746e94fa62762c7262e78952 e84d39ce475415399f165f18603a28b1 c4c598c29a542a5f150539b40d03634f 4f4d7ae825908e303a8be023e0f2e100 f5490bd0c64cd42b9ca5a26dad9fbaa fe20f6a58ca6c84c914eb005afa6475b cd989e48c5348bb530e06a011e63236a 2c795b27253f9ada336961c9971d866b 8cfbde91dc175e2ea54b9afa882a89ed bcea72fa334f593bb41b7625e8c42dfa 5a30a8edad307d8b04cb542e2c50eb4 b9908906f1e1f65b8e800d2aff155191 8d40dbf5ada2f6f662e4024c69de065d 96c019b564eb9cfbf3c9c1464e55d580 59907bb6aaa7afeec283ca2c9df7372d 4bbd110ccfc81dd336b0f2a1430e993a b7d4357aa24126a227a7baff096e3087 4b3ddc244c521f5c6a9ab6fc87e1604e 436ed3a8e05baa0d492d9da2668ec34c 54054535e70d9ca0f91663a74ccd2338 758173c2c4630eab21f01d01c8c9dec6 a07b5b7014264e0330e06a011e63236a 7dc1a66d228c8787e39e97231748e33 7e298a6653f0febd1f30b807ae39b61d e05172ca06db0781a0a34f494d525bb7 2b9fa5950d81d925cf004563556ddb36 987770212e08392d2c528d33bca1ac2 e344e50eb6754cf890ef7803f19df417 6bff9667fa51178ce9930a50732a44eb 3270016f24001d9f3149bb9ed65c73b1 a20760333defff73d2ef7d159eb54508 8830354625df010037b71c02ebe8cb4d 311e72dd86f0daa981a172d69c52a28a 8027892aa03a3d2c907a5a34fd8df2f1 a0a01b87633d31061e6becdb5008d9af 45039c59b957063e742728b30848ed03 6409f917fdae612f492d9da2668ec34c 990ae87d8fb108ee80bd85224f0b94aa 381782d3562f2fe0302dea4b3acac371 654b7415b53b5138fc5718d28351c534 834af6ad2a1d5581492d9da2668ec34c e9c99b6af129c22cf91663a74ccd2338 58919c88a1b5b0b65cc7bfbb0ffaa52 7729d76b67931981f9111ef49c078dbe 7f11f4251d2faee4492d9da2668ec34c f859a1ed07d088be920de219c00d1c3b 7e81b5f79e6899cea570c6c691c987a8 c31483b018ba90c30e62accf4408263 e5d6c3d62f96e28db3d655d5fe021844 516d94f2658b2258d79b19c7c4f0e293 665511c6bccac090492d9da2668ec34c a3260f0c8fddf11cf0f4992137d8f4a3 bca76c4925b9a33177a7d775ec38a82c e28c5e90a01027bb4e83b37723b7fdca 3baff0f05a4ac225b872c385efc13c74 e6e00a7324357c7dbec105fec16416d7 2de10784fa2655d6ad01ec966c80ac91 1de49c5853d04e863c8d0fdfb1cc2535 184c07776b38d92e35836c728d324152 331bfb4cc56f09e201cbed672acdcde 87991eba27985f3a417a8f1d2c94eaf6 aa4b1153a1c4248930e06a011e63236a 6b70334926f7dac3f91663a74ccd2338 1b80175cc081f3e44e4975e87c20ce53 8bd75ffee48bb4b845fa198471a5a8a5 7ae6518311bf2f66e1a0327ca4c4d5a5 6190eb8be0f39ad782e3bf439621ac4d 8b2949a4ab8f5a7d84c7dc40ac6d743 c55077d0b8fd893fdc4d371eb87a65ca 26638126794a48d9b0957d845ac33749 78446e1cc15f757297936c81e7f6629 9a8bab7a07a869d1ac822f8036859e60 3c9bc4876a03093414b65ac180970edb 66342d92d51f402d3f7e27638e63d848 c5afaadb73323de9645a86b04c64b372 6c0fb1806d66a9cc3002761e7a3ba3bd 1028b32dc1873c2afe26a3ac360dbd4 676287fd6b02428f2fe023c7dc3e5231 69933c14a02d65166e28ffc6e1f368fe 20964e03ef001d8910684e111251a45 3dc39c34c37860da2ef1c225dc7772c5 7792861e0bdb95a270a43c2d978e502e f7dec3c72af895884cafc8d32c041834 4300fb717f89c832d42ec7e303174a87 6dd44ada2f481c776dddf6f75fbd4a4c fe224defdf08a99a3002761e7a3ba3bd 9144c2c7b7d9f733ad484915511ccff6 97a87f40f5eb6f04af7c7ad2549a1b15 f3f331e64d12b76d727e9f790cd597 7f539a846e9e88f0d9fad8aba2c312b7 2c052f5541d4d5689b2d7f86be5d0083 77b457b102a9b82f5dca6305fb9f97ca b50529fcea40cea9e8f8c11a24c52ebb 791c14d53bd565f56ba14bfd91a75020 73abab8429d1694c82e3bf439621ac4d b10dd8cb211b26ba98d5fc0473d00a1c 6730f663d0e012506f525e79a05bbcb3 3aa41731c9bde97796d5112fb101f3ce 2b70fe0b5669985c100bd20b85b3554 4f51dd4fc61c41a27ad11050da24bb12 54f13fbf4a274267a50b88953d263a42 d46e16509b1c91b3933dc172307a6bb9 6921b41c2f6916e2bea04b36c2ada3a3 387a0509406a8653b40f0ac0fb9a650d 3bb8e6e640c32a7c36b0f2a1430e993a be8dbd9726372752412dfc90452742c7 587ee5822bb56bd07b11ae648ea92233 e76b4872f067395988dc0b76b0c63f53 8ec95f15623085a7b11ae648ea92233 d0cf0982f16e5d583178d91f48c2217 668b9f6517f2bf501e54ac67f0143e13 1db766ad516a6993f4b6538438a0b930 5e191b9696ff301e821a29f3de4d7cce 8b552c23c064b96179368d1198f406e7 fb858b9e5f2b3e1043dbb6421d614c0d ddb53381dfd0a2d7d2b12aa6a0f050b3 3e2375ff9e7af8002861ed753d5b88a1 5c233981556ff20fcaf36640a0c92faf b5833d19f6fbd9a78c67f98c135b5710 fd2c754ca43457107d910d51d878f708 1d7fdf837564523dc89a28b5e6678e0 768ea32d8303095bfe6f9308e75765b1 c04d0cf81d9d870a7aa0699f5d30fdef 83f74ff9d96c4d77bc5804ffb7fec416 25957008f839ef647abe6643657b8aec 8abd5158ec94dfd8924bf081da6f024c 903e861a95d6a2d5a6db47a0a040d0ff fd05e5d8fd82508e6d0a0d492005859c 7212f652dd37232a80360680c1602c7d 41bf66b762decaa42c6c98851414a9d8 62127325480bec8d2c6c98851414a9d8 8f6634a231e3f3ccdfe9cab879fd37e8 c133c2af39e7d169b1a9ec000a076431 69a6407f21509325a04c9785f6d4e317 b94002e3a92ca65efdcf3d27ddf91f4c e57aa2d477a818ed2af6ec758865822 550fa302257e193ec93d39652bbb58f a7dbbe66942a7b7c40ef1c8b63a628f9 3d029e681e0b4a0c12bdfd84d1dcaa33 faca91ff3f9e2b93a87dbaf229daf408 2dbe453ba389adf5f91663a74ccd2338 c12ea730ea29f8945914d57d976758c0 850b424d90dbc66f4d68bade576979ab 82b42b0f3ba76484e4fa0af6f7c25e58 6beb16fbb2337f65936c7265c890fef 7d0467dcbd13505f2314deb821327685 2cb0ac27f1cdb3f0b2db0181fdb9f615 963452f2fc2a74f62a3f8f484e6c5c4f 674f8f89f68491ff38a7c518e9c1b4ce b8772904c25b61ac6b2befe83a0efe39 5f1b45295c72cdf03a4a5c95fa1b0032 ee03232aacadee87d4266d69a5c6f129 aa93247a7fa69991e074517a246f1e65 9c0c0e1a83243dde6f283df3449ca535 6163793e4e973450a9b8d9d3b5cf54cc 27a8827b0ba5d743169bfe841050f4a4 95039795fd8db944608244cbb9b86bf5 3503fedf43c99f0afb63ac4eaa5569d8 8ec3459ab9fa3ce8738e43095496b061 59f9d0acb4cbb1465611cca00f1f427d 8cfc69d79fca89223a4a5c95fa1b0032 54263fcf9d6380d343638dabe1eb5336 7316e49785de77b9630abf945d2f3e0c 3d5053323021b1babbaf011bdbf27c0e e9371c17042131d93506b420c6bcd44 2d701c588b3bbbc458c88d30f502a452 3026908df3400c1a11d9b84664f8595c 8a9d6ef075d5a0721242c827d7f16c58 993dfc1874d17acd08b731e9ce099e7 94f9fa9f8a20f7d040ef1c8b63a628f9 7fc8b858cad8f5849df6f10c48eb6cee 808cd961edfc236c11794406b17d66b 1825f6f71e68da9da36af77e45b32071 4afe3d1ef68515bdd6a6b5838ef6b356 5fd2d226435431976f283df3449ca535 9570ea7fa3a0ef775436c76691cf3d3 50aa55467c87774b7215a1e3ffbff428 afaa508214b7515a161d68600952d375 94c8b873c9214a726e18d8b0769ce75d aa6f5bed94640d81c20bf61cb7d8cc34 38d000cadbd439da63be0260dd648a5e 79ef569979791f136f10b4c199f4a16d 6da85f0549621b837d379e8940a36f92 35f83268d4280532dc89a28b5e6678e0 4acc9de888c0a73dca6910e4922d61aa 30e8b5402898334ef4b6538438a0b930 48dbd34c00d1a5ccc9daa743e958a401 5d9906be39e2ee012f24668c019c448f 3eb9c5fb2a7ab54d490ad276cd2af3a4 5bfee410a492af4f65ba78ad9601cf1b 8fa742589b47b596e8f8c11a24c52ebb 732ee6a49bd6db06aed393947b9cb125 21cd62313612a7a168c2f5eb1dd4dfaa a235f7c4947aab15bf40bda9de89848a 8e0832b4ee38c9743b8d5c0ebdd194c8 c8420e434b1680edaf7c7ad2549a1b15 6d619704ac0bed9827eb00c151c6f711 6b8c5cd585ef8c67ff2b8acf844d34d2 6a20911ef197f358efa66822a012535e 7521f2a08fae96a7666933f2248e8d9 9214670b7c1e36bc1b1e2ecfb322ccbd cd6d000df66f03368ce66f12ba927a2b fe6b3c001a86d844d5767a0de8dd037e 554dbcee2b9ea7301c75d484f9069623 d64b2ba9f1f35362cffd61677456447e 663f02b2ed46f991480b0456bf1622f1 99a16c86225e538d9e72cd13d3c26c66 7e5dada1bee3e6dfca76c527f185435c 48015ffd76a443f89f8c3d2002c77ddb 515f8729b20cb3612412319d111a4961 48190d05babcbe2c68b95f9576f01a6b 65e770a8307a9332e68b0e385524ba82 6cbed10088dfb841e2a5f8edb044130e b4827a7b42d68aadbeab82a04eef83b6 73b369b9808bc2d0f6ba522682be8978 562fe0ba05c24bdaa52abcb0c06a3598 6f8dfc86a34548dfb0380c06db6e7e a2eb6e2ab073dfb2e0340d230bdc7ee7 8098750b6089a9d8ad3a7d07aac2767 662ecf4b0cd1f3d61f30b807ae39b61d 114b563de051057fcda85f6a3e19b0a1 751342c7107c86f0fa9e9ca2723d9727 c0cdfbbf3a80105fa8699b6183baa203 ccd49951295cb4cbe139cf2f6f121cad f90dab51bec2bcd1a3340564b56a7f70 4fdcd44fd622400a97fe55e7ac43b9fd 4959bcf3886dc907108366689dda0d5c 8c3a4f26d6ea2c864a3bb1a89bb7ce84 3a0e5dbb68e58cf543fad16a067ce812 a27818db3f288ac8473f10e6caaeca56 2e28fe9594c48874a6eb1dae0394cf12 ac03fd26e5c499eafbe6ed8d24e16d28 28a60e0e9adf7eb0a3340564b56a7f70 57a20ffcc530b8693b48a711df82173e 4360c9c8a22facffaac6edb721277502 b239fa34b4cb5a8e9b75b6346baf0c12 753452a3a8f44bd38b69f185154696a3 3ef60b4e28c22b3bc7dd78af359f0fc6 cc8fe2000b1471b2a85f7c85e000fc79 52d687e4f4c59dd72535b68a1251d8a8 87afe5137d675efb73418f9a8c25ad1a 6bb6b27aa687d422d612b1f62c413c3 56902e76cb4f1039c482eb499cc8fbcd c236deaff8c6fb0d29c9a7a92b0a566d 2dd729a07206d1f5746cec00e236149d 78abbfe9ab73729f56d13e757b0dc374 b36ec4a65d474384629bdb3bad305eb4 b8049c767cb298745dca6305fb9f97ca 735df13871e3ab4edf6cfab91d65bb91 5c4c50c0a987f8c2d9789e40093c1324 37cea3ba8e5a146da6fee8e2140acec9 126e65c55961e5c166f17d3ad78f5a62 d712f92ffb883fe6fbe6ed8d24e16d28 d01321ae63ae0b40ad1f278e1513f3b7 38e672f611588c0546863a778f871cc e658d490aaad69d1746cec00e236149d 7af9eb2ebacde5422a373b90044f1dbe 490384776503eea9e2dee6f9fbe318ea 37d7029722aa0d91904cae5fc41c2d5e b3ef15af53eff822423da7f4f4231bf7 7bc3dbe5a36791cb451e78cdde0ba44f 115b11a77b8d8c3c110a27d1d78196 d5b132a3e903e8fc8ad3a7d07aac2767 e4b0814cb9a34107efb405803527fdbb be745a383ceccfe453fa79783efbc3bf d1f76ed6072b9332ee558d9fec5dbe41 86e2424968b01e241b94efa300287e71 eda8edcd64072b0db784faac204319d9 d0bb642e810bd2fea6fee8e2140acec9 45127e6f4fb5cf568173979dc89222c7 4bcf02d408a42fedc399b0e96597941f ddfe96c6ec86b8752cbb5ed9636a4451 b5b0a880ff4e26c1a48e53188865c070 bb9bc0e6f8ec17bb7b07a77641318a82 5c52a6b471eb82b64ccf4672ec1e7efc 3baacc59dc30783a524dd35a546a4c2b 376079d4c844328ad6eefa796d2f261c 3a95602170ff3fa89c0f0342c78089af 45fa737cbfa8a8b69b75b6346baf0c12 3925bf96c05c49d362e682c9809bff14 52e2b4be107a9d6495bea7c29e873d16 2f24021efe2ccfcc2db431502a680805 433c6c88f1a43ab73ebe788797b18766 dfdb73c6bb358fec18c4d7ee5b83ed4 9d472f3426868826c43cf68e273d1539 f0fe5f6030e999be3b9dbfb07aa21fc 3e1e1070ed7a0ba67484091a041fe77e 41ceeeab52fd3ed3a341228b21d337a9 a0f6ec9aede1d9039bad36d0a57d0adf a23e9e5ace917aa350ff3fe5a0fcba13 d481cc9e7d6d7d64baf5b49ad7809302 575cb36c87cd4896c5ae524fbf4f75e1 730fc3ae87640d952c528d33bca1ac2 2773ae187d1e9d3d504721639e19f609 59dd7258a2a554c34671fddd657dec0a 681f4302a8bd9698f4b6538438a0b930 3a9de2db9d78546892979c651b40698c 6b10b9f8b8f38cfadebf8d14d5516c20 5840d369b3e0e40f7c4ed45ce654123 eb89f3b0af31bf40a97cde0b3996ce62 63687e533c0b16b6868fb986bc092533 ff14d078e2f0f8c65242f8291aafac22 5d6a45296fa6c1ff7c21c7b1e8b3e343 c7cbed6203120aabe9a3ed4e7aae9cca fe1081843a08b7a64d8fdc4d7658fe42 6ea006e5c76576b89753496ba23f2183 ba3b1064eddca7212d19175e7d19b7cb 9cd5f64caf7077ec3266c035d8afd13b 12a56b6d02a93c5c711beb49b60c734f b53373122c7964c531a0ecc0d5a7b3d5 5a10fc10de7bd8cb8bd24d13dcc47e64 ba5054bd7c2598ed832fe5f29a662936 b475d6f1cfb6eee21071105723d4cf63 e6b9b5d8b55df575cee7fc32eb84f3e9 2d80c89d4284b4db21f01d01c8c9dec6 6a152238c2ae02faf7b2f235a439923e df84087fe057385019e48122ff512ea5 6501972156717723e8b2b8dc0c816caf 64ac9e029c4c9eb1671565dae7014737 79bd56e6a44e5bf1a3f600c356573d21 44f6f1cadf8e788f90a9ce3e4b15521e cbc5e6fce716e48ea28e529ba1f4836e 92b81e84090fdab2f027786820c3fec4 4e0beb356493c9cbc862eec8232fff1e 6033c5fa61cb7b79b50d0c6a0c254040 bfb71bd97fdedc6c48ff063e62e02115 813f2777195efc4e19fb4103277a6b93 6f04104e178fb858f7628281ecb18112 b1d4d7c5aa13b0642a3f8f484e6c5c4f 3f7c81bc7eab161e19fb4103277a6b93 c6898b62e82e61a8930422448288ea 17b77403b80de623f1783a44a88d6274 789daa82e0366966c862eec8232fff1e 512905c0211b947edc6f96c9bb9e3ae6 cf20398c0c3e0359fa2037e5e59ff423 33dc06a8e0933b1efc385a284336f217 72d7299f4a0a542c76f992c4dd795e91 53a1b68bb05d5b1bf51f77a6d7299806 28ea1d2d2ff08b1b551d2444ac95a3d 72ba6d6bdc6aeb7d330a170e9ceed373 fbd234dca7bb201c1bfa4cc8d66175d1 6714df9bb34178e4f51f77a6d7299806 f4a36a5ae5a596942d19175e7d19b7cb 8d3817ad88a809524b9112ce9ce98204 c05ed12b1bb79ef6d8e8a8a207ee5bd2 72713f2b894ad2846d16cefc94cf3648 805bb12faecf99a9bbc0e8a3b6521117 37a273cab5c24d457e871e09a3769b30 40d4acc240c458a970aa4d5182ecf167 377fbf95d0d5e9eb90c9244ba8c4eaae 5c2b9c31cf63b0b93724abdc4106b950 c0e3582a0c8273653c4f66791e25960f 2aa1d5cc784b0b65f51f77a6d7299806 a4ebefeb5cc26f7378a371eb63283bfc a1a173788669c84befb94709f30ce0d2 78779361a406474db516c05d046e8e45 d4a2a7d81cef335cdf6cfab91d65bb91 331ddb6fd9c333456cbf78e1e89022 4fe364b3390d3e158afe76b3d612e00b 43cc05f81df8307a4357a62465045ec4 f678b1e737eb4d5c738e43095496b061 b1f85c18b3ccbe3a8bc6f322a9608b07 2dd12e29d36c2b5519fb4103277a6b93 609746ebe63abc2c2f38c0d2792fb5e eff6231acedae01c17103f9c0716a636 26da81dbdf7784dddb984b8f0550fcd4 9905ba0488b0471dbfb0f09ba9f2d99 43f15ce32c7c97ef19cb07ecb5b4102 d0d18af5959e613ed3040d716596ad68 ba40e15e28eeaabb9fad3726e97eca06 37a0959115e6fb4ce7c7920f6a65a54d 751667777ff0926ab03957cf6f6ea666 720bc3f0677a75fb2f134420f7b0d7e6 637b36b2e5db7f513f7e27638e63d848 3b57aac4b7f4b9f52d19175e7d19b7cb cfc758bfe8a1cd478c159f8d5e761b17 d0b06607653b1744a8ff3e07cfca4801 453e8c067c8cb5d8f51f77a6d7299806 3aa228edd648d1e1f51f77a6d7299806 32c2fe641cc95e2d3ed2a8b3ea354e3b 64e440b5350da101512d71be7dbf2d60 f5fdaff0ac02f106e8f8c11a24c52ebb 2a1f13b41192e80bf51fa0238791f5dc a52e8bd8b570f268f19146fa01c25917 10991b3b01cc6cc99982a4d6320875e 4446234d12158c42b161f36d4e309050 8aa597e8f5498bb0165de6c381540e39 ed3e73a2609bf304377b9297f3055210 d5cadd520263753b65ae658fdfdd758d 33ce7f85e65320ba9a404da609e2789f c8860d4563be0f34f2b7580a739cd4d5 f550b5413eb040c29829306a513f9466 5fe9ae9eb1ece960c423490470c47d79 96a19b41f440040426f59f4497a464fc fb71fc8021c89cf342d8a8c5af8997e8 4c8cb8be444fd405bed1bd9593e318c 8f54c32d7097b753542dfd131ca455a 3dac0fd995c747ab336e8bf2357c029a 38e904bee502bd31e8b2b8dc0c816caf ff3ca63c75482c31f51f77a6d7299806 5f256dd64efba74a4316d3320fdfa899 80e45b0a5fc1d3ed68bbb8e471856979 58bd152fb816ad2f7f91c3974257b780 c9913221819588b519fb4103277a6b93 97df0e7773e51feb331fc18393f04d2a 733b580501f3e25c21ede3e0ecf73091 2f4fe1db48f0cac1db573653825dd010 a232eec747955695609e2d916fa0da27 c56dcaf6b862a6329158e0f216b27548 74d4b9b13cd160e6f51f77a6d7299806 8757370fa33bc4e9419786e9c37fabbe 553c6c2a186db82597976c675750537 36d314f3b118caa9bb557fc9202b7772 9aecd48a3af10deeee83c0324834f3fa 5202edffd4882c252192179b64411b43 47f0e1452ea20e4856c07129c79effea a543f7e8114b19cd5397d07b571cbcb 277fb4da6bea894c19fb4103277a6b93 86a94d95c2aadcff1a1584303f0b5ee9 d75d1c46cff08f4767c8e42cd3ac65ef 7220dcc0f3f95da3a84d309c7a35a478 9e08476e458e21519fb4103277a6b93 e287403fb2f4234560b08e5f4e1f1a8f 1c2caacac14dfa0019fb4103277a6b93 e0a19f7c41d7489211fc2b865c2a185b d1c2afb3c53dc7c8c563fcc2752ece39 aac5882aff90763affa93170c5cc3d58 8af939d95f201d17283b00891f680579 64eb6d8212acb69fa094848ea4d06501 79fd9633635ab7f6490ad276cd2af3a4 efb0e98337c0554960257b24d454e22f 3bb2201ba3b8709523f4da4464aa0c0b b69ce6bf8156deb155252a6eccfc24f4 276a4e184b9d71c4d838ae16242881dc 42db4f765f4e6be414038d588fd1342f 181b65afaeca2ee1a6536c847a708e24 52f0514f5c38bc96f51f77a6d7299806 77105ec0251d92a8ba13aa51cc141639 38dd3fee84698e5242ecda58458cd17 100b18376b885f206ae9ad7e32c4139d f31f8722de9008c8c5aaa7f1cfa788b7 a9e72050a2964ba31030665054ebb2a9 c88eb06478809180f7628281ecb18112 7e433512ef8beb51b17743c18fb63dc b1f5b155f8e080c765ae658fdfdd758d a86c5179fc3f7ae114038d588fd1342f 22b48b577aab6201bb99d7af794753a2 cf04f5b16aba20e3e3849910c5019154 7139a30ff80da3a6b12dfa50fc9e07e6 b11640431506c15489452a0032ea575 f1fcbd856669e000118128b8b252e07b 7ec876482b8d80ce5a8ae8f7c307d01c 1079635b3da12a812cee4bf5d0f11ffe 3427a6029f253860450621b513a975bb 97f1121561e481a3a1f1563b05df75c6 40a32b11861df98133ec62ad9f83dbff d6e5a8e9e0d5dfedb0957d845ac33749 99867a25638b6809b91b871e750ca615 854f3cc942581aea5af597c14b093f6 ef45086ec881cb657288e3849fb636ff 4fd654bdc7fa4658b0957d845ac33749 ea62254f0a5650579a8ef44e1d2c5b75 31d026a65b64c4d5f529761e946287b2 11355c7f7ffa3c09737d107bffc3cd98 6169073a194742c5a7de7deb16b90a60 a374da8227eca67b89014675a548cbb 2c2fbe0622220e7cf51f77a6d7299806 971a98d242991e2222ed3259ee7e608a a7ae914aba9eb59d84498bc295cd5a4a 661fcd8f87d948f2fff16555386d173d 8e21f7a88cecf4ab5ef2246d39b30aec 3b606ca14c5f968319fb4103277a6b93 601cddae7aca083a2db431502a680805 e2ed8de5542c5fcd215a29c5523c5fad f54c7cbbd49ec8eb429c1439cde9f6d2 11040f463a3895019fb4103277a6b93 5d5ea6ab578db7ad331fc18393f04d2a 831ca4306245810435836c728d324152 4d3bf8ef55b4e4fcdb66736e6592e424 1dc63eb0c6b1102f5369e32fb818f337 85f4e9037425401a191c3762b497eca9 55bc1f325928f28c738dd0d3509c7e47 aa0ad3538d0d7b3be6fe3612af521500 86a25532f255728fdaeb838d0771f3b5 4b38f041ed60b99f7fe17e97940646fa 402e47d9e3f825dcb9d7c2fc41e80228 cadf69f5353039e8593ebeeedbff73b 187222bc1f81d57b781d9dcb8ecbccc e605d3ea3be01ac3b11a97ee9284a563 72827d33aa4e3f54d8ce2b7ddb5bbcea 55b00797abf243c3cce5160f0c502ac3 71656875081adda78b17d6d1965c2fb6 5a460cb21fb55f639f73340130af944 816d1c517ef6bf7890a9ce3e4b15521e 331e7c7897b8243694887ea54f3cfb87 cc8066a5107a2bf5926f2c1927eee8ee 451458fe90bd0f4144f23566597ec464 561d50862a2cb4aabc19762eaa7ba40f b6fcfd4f7af69e1ce8f8c11a24c52ebb c54aa12a3d8c34e2efacb264ebf1ec75 ef8b9243c75bdc93347805f93d32915b 7df2443e976658b7cdfc3ede082b8a07 2031dca3aaeff940f7628281ecb18112 71e139bf13970c94492d9da2668ec34c 71b1134533fb33f489452a0032ea575 9f212a5127b4544bbe3ca6e34dba44de 2364d6cbee1425fdc3bd24f986301745 6a02133392afc96b40ef1c8b63a628f9 fe53dcce9a30c5b5348fedb5a291187e 1b5ab441fb8e3b1b450621b513a975bb c405457198f59d86492d9da2668ec34c 535289ef7d9bdba8a69bcaf4198ba9da 53ea833512f2235319fb4103277a6b93 d645bf9037e7dabda341228b21d337a9 8d9061d863268349db224de2961e777c baee1a3918353466d1d10c27b779ddcc 6ad7e3a8e6f3ed1dd068cfb43a81fc7 320261e5f3835f6381f667e2a25e0619 90eea7c7aa913fac57b8f616df7adf9a d0782d2afef19adf4733824eae5cd9ae e67d503940c1d95b73e5f839658fc536 8c2e0684a98bd4f82553cc33364504d5 38444677513af4e7bc41009043d88b0 f31a13e903da7e865e61ef8e2af97499 9ca1c0357c3033488cc413950b617e8f a50887c625042b48c862eec8232fff1e c53054060b5fb91beb0fe7d6b5545a1a bd5eb0bfad19c8d9cd431573238602d f5643e3b42fe5144c9f41f411b2bb452 f1645567130e99a878268642d8df40d1 24082b0254dd180c490ad276cd2af3a4 45e2cdf1708680822165c54dcecaacb4 10de9af4e91682851e5f7bff98fb8d02 ced5a7469c77e651fff16555386d173d d85b661f2c9345f819fb4103277a6b93 356fc758685e9054347185e772ead5bd 9e1b32f73908cae7e8f8c11a24c52ebb 779e4f9f044c71612f95e2a1e9997b85 c4f9249def12870a2b3e9b6eb52d35df b1908805f05c6f47f51f77a6d7299806 9058e82b6cd496891e481c46590219a6 4e222d6b128a7af7b8fa4cb65e077db1 809cd21e86d7caac3162de0102da9582 3116d8714420cef4ba33c5b911977a18 4c3f655507cc6aecdbe9c90af547c85d e23400a634c81fec3cc5c2b17dc81196 32788564558e513f7628281ecb18112 1c5d66f3e7352cbf310af74324aae27f b5350feacacdec9e1a4c9a8c5e7ae925 7d0e6a5c10d2f97c62e682c9809bff14 e00291d775c572f5e8f8c11a24c52ebb 30083f20e81ba69b593ebeeedbff73b 98a1d709dc51ba87870894bef54d428 934ad9821e964219c3cf9ae716575390 420ca6eac51267538a2d6a427829a3 71b01320c8e9dd60f7628281ecb18112 8ecb9191ec41785b351d9ca36f76b95 cc03a89a98cd2660c423490470c47d79 6a227aa2e1fb8ecf51f77a6d7299806 fcc996c2c8ff394194887ea54f3cfb87 a02d2ef9789836981bb088904f7cb154 be5df38dc7877c13c681404257d94ad9 72bc27a22e5f516e8aee1b6cfa0c3234 4e0dcb9beee7bd3f3a11565e5be9cf53 a9cc6920422b9d9c2af8b1d491b7ebc 7f3562432f02b8a897d3ea932731fd42 d31ab2866270fb1c19fb4103277a6b93 3f4f6f64f5ae57a14038d588fd1342f ae3b4195dfa9779f89e49c5729fd5d6c d15543efce9acacc8687ff9b0b4e4ac de3e16703bf6581df050758b903e6054 3021054d61c4862bf29666f384be6c43 d571022446bdf81ee83221ad0d21775 2ca81da56f941624191c3762b497eca9 3837e94954187dbf93b0969ba78346b3 6d199c744b17d85953735b417976bbf5 73f16e230ac102536e07666ce67ff5a 5bec8011c4042baf14038d588fd1342f ea77c800bba6566aaf7c7ad2549a1b15 5b1744a03be753cf3ccbceb68fb352fd 6e9b9e6dbef7d1d219fb4103277a6b93 7ff2f20512e7ce8e572f8e1c1caad99e 87c742a186ef731b464bb3035358ab7a 19dbb6cbd039caf0a419f44cba56de45 4c9d9b37b13b0dc720211b71e9c4c8b0 f2dae367e56200a7d9b53420a5458c53 2fc2b897b6b131c4dc75a59e280f3bf8 3730f9cc29006f4b65ba78ad9601cf1b 7e2b07c0ebc5781a297936c81e7f6629 3f04a08d840c0a9c18b14db3b83de9ff fc7e2126419f5a4cb84959963148f2a2 59fa70f195fd4ac6ae8c9d3b8c4b9bc3 cd4fa15a13d7448a14038d588fd1342f 52469c47362e41e719fb4103277a6b93 c70f8a49f26a012f876b399a99a15c0f 90f8e6e1694039c0142c8d1dd30ee99a fbf085824e25d7c440ef1c8b63a628f9 d7d709cd13cdca931afedc87fe387fe 53a442e47743fa4f457ba044c28858b1 d4e974b1d57693ab65ae658fdfdd758d fd1a87a399c1c82d492d9da2668ec34c 31dad882e67008adab1b53c63e6e87b3 3d0b161ef3c026a28a514cac7cb18507 4ecb13c40d55bc24fbcb0345af819bcb e9a16aa9d2ffdbe174cc0d9ee0d1e8c8 e76f7d88022a0bf91b17743c18fb63dc 6df81788b1cdd1c3ab93f6188b226527 3ebb8f29a7c44776f51f77a6d7299806 fbee8c9e5b8c0c19492d9da2668ec34c d56da491d5dabacd4453212030cbb3c9 32f918efaa64a4d9c423490470c47d79 11e55ca087c74082feec1f13d2353f3 c4d1ccacb82d854b5a395b344d6773ac ea918174759a2079e83221ad0d21775 d0d786244fc2d7a9ecf03af5e7a1277b 533e0a52acd257bef27383fc5a5a711c 79be636f7f6b66724fde46457697d80 6c16024ad8f16d6c83c7ca617c7f7461 1b3c286bce219ddb7135fc51795b4038 7ee5785d8695cf0ee7c7920f6a65a54d 64067f7029087ee07eaeab1f0c9120b7 47d13a704da37b588fda227abcbd8611 a16c172406430b6af7628281ecb18112 4848b62ac4a996b3f51f77a6d7299806 537924063294eb5f46ed025f8f85e067 dcbb15dad2001a0b8a4c763d71484708 1ab4c6ef68073113cf004563556ddb36 51375e5aaac17a8ef7628281ecb18112 1d9bc60209572861473f10e6caaeca56 bdbf18aefa5b980585b479b317175b55 9027cd82cdc7da4d2541c4d6fdd1e35f afbd7d1e68be93ac35836c728d324152 61de75e888e8727486debb0a33c851f8 aef0600be3f8f384f51f77a6d7299806 3a51a83963c167c422e8a95d8ef092f 6f37fb57f3da696265ba78ad9601cf1b 5f4af72ed8cd633a14038d588fd1342f 5c83457abb14f95768c2f5eb1dd4dfaa c523e86242af4b4ecf6d196856691e1b 7824cba870f915ba2922dc9c4df31134 d92f4a4f2faa545ed08f729a736c90d6 cfbd835002da52be8f8c11a24c52ebb 389db7fba32b71182165c54dcecaacb4 be67f51c3df7dd165b9ac5a4b39649c 4f467dcef4a710a5911016bc0ad99a16 6c36a5b107e83d331191025061735ea3 da292ce4ccdcfb2c842c47c8032438a1 f8b90f63fa9ed154e759ea6e37e5585 e0b432f43a70aa4dc71dfa81bbc5b8ef c1841ecc1302f45be798c4323a137f09 980feda55fe02c5868e9405ab8968607 2d08a64e4a257e007135fc51795b4038 7eb566a254731d8871a782a4379556c7 89d510c94145f0e0f7628281ecb18112 501b15f5ff2152e5f7628281ecb18112 885bc048615523273eec26c23f5bc80b 94bac9505cc503567085b4353236aad e967c4817872b637de03ab2a27ba7531 a8f21e581e687c0fa329355bc8cbc0b5 4c5ae0ca12a5e8b3490ad276cd2af3a4 9d6fdcf7fd47fb5af22166a43d725fc9 ae6770f159b2f7c868c51305d76b1f8 3311f1cf612be98290a9ce3e4b15521e d9dc32f36e03d9f5ea65a95e759e03d9 6367d64115d665ef51f77a6d7299806 6fc581beb03eb73349c9c494c2fb14ce 58a8f29ec056a19f71a782a4379556c7 e922bbf8088552badd7092ed47061a36 ccf29f02bfc1ba51a9ebe4a5a40bc728 116bcb3b43de74b9df9054bbcf5c6adc c24b79602fccaf603379c738ca193530 35f94bf244a7fdc5f51f77a6d7299806 55e4b862b56e873eb36dcc661f3905d 78d3258e4664daa9e8f8c11a24c52ebb a00f4f424b6b4c4c19fb4103277a6b93 7b17a70aef82c51cb8fa4cb65e077db1 87baf0c4bd11ebe7f771b7c5ceefa9be 54237961055ef73782db9fca4b68095 4607280c3a4286b7319c7c751f273141 8844e3830bbc5610d5cba62773b8025b 376b0c463a2bb625c036371d3ae886e1 e507b4d0aedf8451504721639e19f609 9a5b54e835c762e4f51f77a6d7299806 8f248770aa0b4d41e6fe3612af521500 70be8ecf5200fddd818fffcf4a59bbc9 694d9c2e9e769ffe83221ad0d21775 bccedf688d8e5536eaf288f952624966 60637687ad5682ef2b93a65c5f642e3a 76767a15f8de108975907ca70d2973a4 e64562ae2925d5f3f58087d377226538 7c467486ccea38ed9c3a7877712317b8 c5d880efc887f6f4f9111ef49c078dbe 7948f2715d32c813fd60059ad8523f1a 1c6eb96eab5e75b67b79156a61ad4c01 7508cbbffe5f2f95f51f77a6d7299806 37645c4e5ddb142e89955e67129be104 7fee792f0dc5d74cf2cf6a9bef44d625 9a3a80065f75e33d822e11aea23332c0 4b904e1d68d09dd3e15e36ac023c5182 30526709beea1350c862eec8232fff1e f083f6f7e9770fb7b161f36d4e309050 5194d56c118786fa1a4e0f13d375972f 5158aa43b78b81a0f7628281ecb18112 facd3e432232c27f245ac1812a4e4d0c 6498a5053d12addb91a2a5174703986b f2a4d96e77d1c92a3d6cc735e3493c99 a1ef57bc2563ec37dcadf30d9ccdd100 77e84b5e6526be75490ad276cd2af3a4 dfa7aa13ee696833593ebeeedbff73b 796903c53c6de2025213cec267286d18 f9c61b40d4f49158ca998f0f87d0c84 2c6815654a9d4c2aa3f600c356573d21 b4b65ad3117199a2e8b2b8dc0c816caf 37e5a1f7f0409a3b81d7f282a3dff363 689dce303ca3781c19fb4103277a6b93 3e72bf47e31aa669f4b6538438a0b930 59529dfd60b211a45277f07057e8ce87 637606c1ca1ecd81b502160362bf1664 2e8748c612c5d3519fb4103277a6b93 98b003470034007f51f77a6d7299806 196b9e195ccd4a0de03ab2a27ba7531 b167632dc5c6c72b19fb4103277a6b93 e821fb5eb1e21368c341afa383659322 3bbcd9e945c6ceb8d3c29b715a9f3afe c375f006c3384e83c71d7f4874a478cb 286c07abeb67b83bf7248d9dbed7a7b8 ecb43e4b0fc96935664b3b9b23ddfcbc b5706706df77157627d4fc401a34f3de 8a8c67e553f1c85c1829bffea9d18abb adcc6534d6db1ff9dff990aa66c50fe0 5d8736041ded1ac7de03ab2a27ba7531 d6edce467efdc48eba18ade30e563d37 33e28d560bf1bbcc32db3218111111ed 11dac7c4d7e4b32af9aec59741c69cf7 d9061907b7b411dbe3db80a3cacc6e3 756487465c12a5332165c54dcecaacb4 24c0fc01144790be305e886266e302e1 9e15b5ae461fe0318fcdb0fca07ec8af 52afab7f974e7bdbac1ffe34fecf39b2 c40ea8f03ae6407462e682c9809bff14 25871aa50531fbfc741e88434245c899 8e2c39986badb61e6fe3612af521500 42f77dcefe75f7eb19fb4103277a6b93 d7db1353551d341f149c35efde9de588 39f5eecbfb2470846666a748bda83f67 37475326277845dc1fefdc190019db13 5cf26a5558580c8c75a82b88fe6e733f e5f381dd81cca6a36a348179d243c2c5 352aae8597fc6ac679c251b4a7838829 3789c5b85f49b21ef7628281ecb18112 27efa956ccd86120464bf8a1dbad4432 268304221a5717124a05fa063da00291 2ba108b72aa4995814513156cf2b8d0d 632bc741220bd52e51c4deb11af7079e 583deb9e5cf939a9daeb838d0771f3b5 267dcb267138fc92c242632b2a8c3129 621c62aa667c4d3cfe2fba8e5d6db330 95e2f1fb6be241b4742728b30848ed03 3187a69dae9fd8dced403132b02528bd 6b94ccd432d37555fc1390934d948e09 b6985891e45b998e7181375a1be1d1c9 223d0330466ac6bff7628281ecb18112 3e80bf14b5e02aedeabde033450b7299 6ed95ed3e89e09ac191c3762b497eca9 9e3dba0e6fd3408bf382e154aede1b6a ce2acc9d7aea91a0988fec2229ccf13f da160f272c6d77f571a782a4379556c7 3cff2db42b3ba901e83221ad0d21775 38abcd9d3157f7fe71a782a4379556c7 f6f3c3f97b615a19fff16555386d173d 58b8bc3981302103b78c56df3d6a2934 12d7ca3c06faaadf17b431cae0dd70ed 2c4719f6aa7b2c8a5a9f35e635b7e48b d8edf163d5f87b055369e32fb818f337 b856a62e23ef65324b87db09ac4cfa73 b6ff694af011b45f4f52551bb6d0494 4f79d43b70f5bca3d082d95e9bd50b49 1459c329e2123d4fe5b03ab845ae95c 58ad41e336942bf3c5243a0ab191990d 619d9f32db0780187c34f3963ae12156 66e204998b6c4f06ffe5cbaf6252d67f 741bf2e8b46b3082720f4a96fb7a3b3e bb9027dded04f7da2b3e9b6eb52d35df 360a12c8666f5f764c6ca0d259b5e0f5 a27a04ccbe8d5c90b91fe758ff985f40 a0421aff56cad16790a9ce3e4b15521e 3a885865c614a5a35510d59f3ab1ed64 60d4a780abba84d20c5de2052b8e2de 2137a8fcee12e72d19fb4103277a6b93 41b90d1977ef7672b9b8f177284f45fc f1188bef2980d2c985b479b317175b55 5043512b70a157835a15b6547f08c8fe 92c068abecb15e1adcfd6ca2b952d624 562b11f6f1fe56ce586a8827cb5b82bf 8f268673d08240d34eb6dda9557ab0ce 31fc10f348cdd2f77f754cef9da1323a 665fc6411855306530221b1717636e3c 11dba3a8d7b7210f5ff61a3a2a0e2484 4e1c6dd1146ba848f71f1345a68ed387 a2eaec61c28670a459b42406a4cdc4b3 6050ef2e6ac4ffae490ad276cd2af3a4 bb13760fd1e2dc182d19175e7d19b7cb ed3cc4a95e18b3fea19b492f7b035eac 6986aa6ac96abebc71a782a4379556c7 d14d1da1e682a7cfaac8336231c53cd1 521f0ff0b1d7828337b2bb75885cfc44 c790496caf5f2904f14c803eab703899 1196ffab55e431e11b17743c18fb63dc 2e37697d32d085415634c21965ee6bab e40d5fac8951692e3849910c5019154 cb5f7944ec02defcc6a2b7fc00a47507 d7e5de817d603fefa123ce0dff5bf4e6 10c08a28cae054e53a762233fffc49ea c7a87dff6ab53f3b7490c34ba5d2779 dab5b7b9df65d2e2cf0bcb121cf32b53 8590bac753fbcccb203a669367e5b2a 12c2b7080b07146a9d4d5dcd2cc33826 818c483496ce96745eea3e3d89293379 d93133f1f5be7da1191c3762b497eca9 6e5c0ca5ee70c88b77dbab4c80b965e5 2fa970b5c40fbfb95117ae083a7e54ea 557542994c02cffce83221ad0d21775 3fa2fccd96f3e5b5347185e772ead5bd f2934658407472a92ce025aebfea84a4 8f13ac6499dfcc83f381af8194aa4242 3b5eb8c85130476a38dc42f802aebe31 6fd5a9839c5caa52e8f8c11a24c52ebb 87f8fc2fdc88e4ca1152b86a40777b4c 42836979b217e0535836c728d324152 3fde6688ea2022cde0f6ee1aa6b96429 fc0c6ce55282cb4dc8687ff9b0b4e4ac 94464e51e6f3be07f9443c9263f2354b 8f217a409c5407ade6fe3612af521500 8e853d5bb145c11486c701087a194026 67b082d174af9ab06acc27496f96b513 26f798f908ef2908c7660a81296c2300 ff9b59e29b547dd504721639e19f609 769f2cb98735158a2334de46509d60b 70cfdbf8d22c8176f51f77a6d7299806 5420d4699cf0125fd08f8c5dee475682 b0cef14f184c10e14af957103f4767ac d581539aa6d5c2ec7709fbdff3d15bf9 37044d4f5fbcbe9bae536f42ef59cec5 4f81153b0a3d2fb25f5359f3b8f96a06 6d83067056915f4dd2f15044a9418e0d a6f280a490010a1d593ebeeedbff73b 9c68011042990da3abe36bab1da1fa35 4f243d655c40702ec772d43f7a27a1e 19d7db03d81663394733824eae5cd9ae ecad3bef91aa032b6c1d9538813ca7b2 6131ecb5a6fc9329f51f77a6d7299806 c69069021b390de513232b7b9d3f985 f8bf45e20bec7cbc9cf3f05539f5c4e3 3aec502173e565d9f7628281ecb18112 b58b8a4646d14b7c202339ec5396045d ebaf425ea2c92f73a3bafec3b56382db 341ecb71545d84835ecd29875b6f0d44 e026adae39724b4ff5f913108da5d147 fcd8163b26250f499fe49e672436bc45 86fda548f0fde39328f80188b7c24dcb 8999368504d4374ce4e346ee2650d150 f2f0f205af792d3d40332412c5d013fb d607e86b83f628faeaf288f952624966 12f4d8c20ef311d988dcbe86402c7c15 8ce6f67b8683c0126db434563c7f5ea3 50c446295496eca73542594e05cedc89 2745c7d9f2027d605a9f35e635b7e48b 4f4b6167ef11ae4e8f8c11a24c52ebb c1e03281b9f179c7620365f6656fe3 36bfb3be47fd957e543087eec55f714 490797c10b8cdfcdf4b6538438a0b930 326a0c5116e410cfe6c1a071a4e8216c 36c4421ff44218775510d59f3ab1ed64 9c1ee97e493fa79ce83221ad0d21775 2fa4a8a5848f9223a10fbdfc2fa57509 e7ae6edc3fc6c92ac423490470c47d79 a1575aa70fbaab0fc05575120a46cd3b ec637164befa6a016bba96a850a0781f d5d4dfb9e6901b66a3f22b4b00de6dfb 9910380fedce395e80165d5b901b6e64 acbc30795b9826ec283b00891f680579 2b0f0f530011353d15eb60d655e596e9 6d7a7f4660e49fd130cbbda41991e4d0 209994649e7fdf052ff84f70e18e9c53 ccea874d869ff9a579368d1198f406e7 a6afbf5a5eaafec74ccf4672ec1e7efc eb1d92be1e6bd84c4d9a43d557cf49de 336e92c7c570250251c4deb11af7079e 24c0e6a8b10abb77df2b21995cbbbc4f f66ea5e07a8ad9eb283b00891f680579 6d866b3d22082b89191c3762b497eca9 e9f36f74e22ca0897298e452825d1f0c 56e51afd9d5c5fa38b7a92edf72424a7 609cfbe0dd76c64042e1bb4fe264125f fca55be264355b1ac30ba10ebbf8ea21 6893a0aac52e31a3578fec929fed235d 3f4e88498f4e54993f7e27638e63d848 f351b1725b288d8847df6165146d5bbd 2e62d5829f60bd7758df8eeaf3dad1c d892a0fddeb963bdff4bb1e34fb13b70 5e4552935979a7a1c25c8c68d88e274e 5fc3bee56e8ceae26fa2cfca412075ea 7ec2388fdc271fc4ef22b31268b1b7ab 21e5fb7e2de735f490ad276cd2af3a4 411291d56a967d9fe8b2b8dc0c816caf c109b45b290d4cacb161f36d4e309050 d868b5e696c362b9ae23680cee12f145 801fe0b3a0e555a937b2bb75885cfc44 91bd85c70bf89da2a8737fcf23389014 c3a3d9cdaf29cf6597c8d78b9aede742 611a76dca411bf089579c5df0e7fa96 3a16d7535d87d441d772e458a8f80cd2 b09e3b329eb11c7dae659483f300cdd5 a8827a6013e06261e27790b0ec8671f7 bbf89164385610221587835cde687661 1063d4fcd366de4060e37b3f76995f8b e454cdb43a7118678162dd776d80e71f 411a1a4ac8ade7da76e9713f57a5fcb6 470ee88d9cabc6028be5ba60d0b948a6 2d808b6451253b7e7c7920f6a65a54d a896856650a288c0c05575120a46cd3b e93d141a3dd25b46219e03e23fb59d78 468b7e16a29ce746bd08524bcb66a009 635906aade1c775df6cfab91d65bb91 82d8391c62e197161282d4d9178caa92 d75a219d343d2469e22abcbea1db98d0 e28a52d8864870b222ed3259ee7e608a 4f1f4c4d1b2f6ac3cf004563556ddb36 cd6a8020b69455dbb161f36d4e309050 51ec0bdeb8bd9b8d60eb699207aa149d 470d626518cc53a2ff085529822a7226 66de742ac6ee931390a9ce3e4b15521e 247353514479969ce6fe3612af521500 d75b618231bf0815492a611633bf8558 56ab99b69cbc1bb50d55c58aabe6e7b 9c8685c65403dfba2f134420f7b0d7e6 55e6d1251fc63e1f71a782a4379556c7 2ab2ec342a3b2a45c242632b2a8c3129 ab4fd3bdd8c1dede578d107c71db28ac 3ab838f55e56426b35836c728d324152 3a3ddc0c5875bae64316d3320fdfa899 c5479437882e03eb282d0900e186958f 2a9cac5daa8e99cbd9b53420a5458c53 92373022868b812fe9aa238b4bc8322e 9d961de6d462a7619fb4103277a6b93 7a427785ad85f0c771c3cf047830ec1f a07ec767c0a395e53cc720af04c21ce8 3dd8c11bc608441f1b17743c18fb63dc 547ad86927566ed0f9111ef49c078dbe 274189e25f44397f51f77a6d7299806 1842797b090ce2ecebc1a7ae7c4c250d 9e36380dfd1364f6d01673c7c57450c9 8a26820faeecd40d4bf49568516d5f0e a6a7b00de9ccce0816a5604496f9ff11 975d6db745442a755634c21965ee6bab 38a2b3491e8e8a0d490ad276cd2af3a4 6124a2bebfa255719fb4103277a6b93 2c2a5f5a8931fa0822f0b32ec619eee6 f1563f3906ae14dd32b8e0971fc6a65a 5875ca8510373873f51f77a6d7299806 a1cbd161f91e80eb450e3da30d6676cd 25c61fb5c237767919fb4103277a6b93 73d534b85a1416eefba3e6a55f280fd e8c8534a16d600ba20685b5a7e34b501 b8c678c49e40ee5307776da88d1350f 395868f297f01d2d492d9da2668ec34c 9bda786a525b1ef93a11565e5be9cf53 4918512f624696278b424343280aeccb ffd3064cff5757695ecd29875b6f0d44 420709f63a0b15ca35836c728d324152 e193b0d75fa674142b3e9b6eb52d35df bfe64c93bf5c3858c4f202fffc87396 de351bfde19253af54a7a6750196c608 b0a0f58be9f5dc0d3825a5bc524f67c9 99f02614707ce072e8f8c11a24c52ebb fd5492b732f41dc3f7628281ecb18112 6cb6373befd7e1a7aa918b099faddaba f4e5698718f3d4494311a07b696e63e3 8fed5abf598c5d113379c738ca193530 17f9eb6c0d818d45d7b20fded0142d7a ebaffb5ce608e7158d09bc92d0fc6d3a 9ddbf01abee716b39b0530265e62c9b7 b1cbca9a2646b6f1bf899e941ea0fe55 8f4750616cc16a3f84633b41c8a09fa0 93e72cd3140b32513b5ed5cb2d36de1e b971b6c16dded4fd44db5bc086b2ea47 e102ff4df6f28b6cdb400c09abe26220 f0b50b64918ef41b990561fc34164364 374e76e8b8357e5f796d422781cbc933 305589c1e37f32b821bdbc0445d9f748 71aa917674beaa2926d044baef0e5df2 90a15feb4f77c63e5e73882ba2654055 34108b791e6bc4ec1bb7158ebaf7e1c8 972d675d3ce3555d492d9da2668ec34c 7bdc0aaca74cca86593ebeeedbff73b a5d41f647e7ae9deeaf288f952624966 108238b535eb293cd79b19c7c4f0e293 c7c7079b7555bf075e994da5ba753c34 4f136e2a90fc8ff63ac4c571779c5fb1 8a2c1a7b282b9bf528ea9c4c28e5ce40 ac84a2eff5e6a64347598b39fd1f6465 89208a619341d9fdb8c516ed5c4ce32 70711d5a1aead05b90a9ce3e4b15521e 38436cce91dfe9a340b2974a4bd47901 4199756380f14898e8f8c11a24c52ebb 908fd690e253f651f1783a44a88d6274 9061324684c39682c2c449c0c0579ec3 b6a0afcc2ad2db2b490ad276cd2af3a4 2fca00b377269eebdb039d8689a74349 63e184952df0f3698f5bccb3529a48d 23218bd682d522d19fb4103277a6b93 bec151e32bbc7e9b28c54e8f8953f499 c22ce6ebc2b5bc9b59a44e6453790000 226f096dbce49857bdfa5e0753fa3240 b4c73f4772efcf69742728b30848ed03 d57bbc72d1b2670e4209d14d674fb332 f239fa77c7b8aa2e81f667e2a25e0619 c9b0828029f0405c473f10e6caaeca56 c47e364fbc29803b2c0eb4a518e123ac 57b4898f5b94a5a89d297e74104d3ac3 10a1783f635b3fc181dff5c2e57ad46e 4003f4046a3a5ed9297936c81e7f6629 eb29a065b495dffc85528d560ddea455 c5c4e6110fbbf5d3d83578ca09f86027 f35645e0b1141804a57b3bec78e5d1b3 ff3581996365bdddc3bd24f986301745 bb8fbbbb9925a376d1dcc55e36186e4e a45477c29f71d4f37597e1f94410131a 3fabddc7c0fa27f92bdc75f1ee88d8e0 bd500b346c427b31f7628281ecb18112 1c3f1a9cea91359c4c3e19c2c67c262f e0a473eb557c424320768660cf080d12 c8aca0182d3e48add93768e7b9b1eabf a203bbe3c9c1c676c3bd24f986301745 1be38f2624022098f71e06115e9c3b3e 2a643eaf143a779f7eeca6709b6a824e 99e2f8ae1bef62dcb74c46f4848028ad bab30539155767a59f422d8258cbffab 32a9329c11b5c35d4b3c42e318f3affc 75d3fc4649a63ac13efeda73d60343e4 a66d78cbf3603e8bba9df3ea0397b1a6 5f06664b4eb0af4c352fc7e973ba7787 24b5aa5ca592ca5764945fb936667f89 20a128166fc9ac939240a35c2a5f105d 602ada3b41238c77b87028a4b477349f 882f30dfcc94ccb5ee57043a0b4866cc 78bb9f39d4251624a502e035aafd3af8 d6ac690c293a492d2d2a5d4c4022b4c6 106e9487a1d47ff1a09cb462b3e723e2 6ffbc6f14a7257caffa41024c63fa9db d8b189ddc0ca5b8c681404257d94ad9 cc665438c4f7baab137d9700e13a503f 8e4269ac16e13433d701c68e1045b606 2c251c2c49aaffd54b3c42e318f3affc 3e28e0f5ca5e03df73227452e5016b6f 32303484de7f1998f8d44451ec1ac05 8d80cc5cdafc4b8929e17f7efc5a2421 77cf4ff8297014faa6fee8e2140acec9 36a2d17d63dc83f983c05814b11dc86 225891ce27478eec54e404e041bdecdd f2c1f929f451753de4ee93147efa8cb1 dfc85456795d943bbadc820495ddb59 5457691268846b073ca87feffb4fd9a0 a1e414f0380b7b9e1fc1bfd241d8d6a 80f96250bed47b4f52e9aa88ca53e944 ba2f3a0d2e90025bb3234e0da44b11e4 3a141cf2f22fed0ffebad4f49b26ec52 47a707b2804cc98f1a3c0af5880f464 ee8208e26cffa9f8ba208e534614d8c0 9bbccaed652a88d0ad4feb1e0e9b77d9 cdfd278e8b1c11bfc36d58d0f13497a0 1e3fba4500d20bb49b9f2eb77f5e247e 5b1d0dad82acd6e5893104fdda835c64 d081ce6cdafa416c8687ff9b0b4e4ac f294980dc63731dcd0ad32b8d8cec005 2581685a8aeff78b713decb1a0563b12 6a8f1dd7e0642ca4b367a648e9b173ab 66654548053c709ac3bd24f986301745 66b5fd596ac18aa79c1db271ad9472a7 b7e01301bb1eef41f92f3e7bff4c4ab0 87de70c9f96dc7edf5fc96890ba7d316 da264a41dd8fdd655357c338ec9641 5482bda23163df4f30e916fac260c672 98d1fb12c3354d341e67ee2399c63faa 3b0ec945e7290c3a6a0677e97a0ab6ed b6d43a52bc2eb8504d5af97121b5f 1eed5ebb2af372cb5438b83aba42ca46 b60eb72661b2e56f7445d25f394949d0 3ae4d69fc1f9b15d2f008cb82e08f24e f2075f1c3088a167cf513de9a02a2561 45828c176099f3c3d2f92ecc75b4cb66 89dba482df6fd02732e2044f695909a d3562f992aa405b214b1fd95dbca05 33442081ed6e32c4504af6e1321617aa 3289bcc9bf8f5dab48d8ff57878739ca e90f124b13901eabae8375def5e736d8 d28423569bfd84708336a02debb9923b 4e9d664144f4249d8957917d005717e7 4b4773ef582c002b5bfd842976fb7956 e9651bd689ba5c14713decb1a0563b12 49e8ef75b5ca2a7c699012d4a63c792f b60546b326e585e03ac416718757a350 d6203deed1b54c8279b3e1be3524f72f e3a7c517fbe992ddd493bfe20f94b6ab fc7b535acdde11f4aa3e869226c9586e d0c6af0d44cc068523c1b1df1d480bd3 1cf77ee00faa6de7fa6450cce25dc4cb a18b3364ce7ca94d5921d1ce0656232d 99996ded94b8bf974cddca4ca9fe5080 e9e7883a296587ed804722305621f918 dfd7e14d25b81c1db5d9b03636b8bad3 5c660775f1c7b202855c835f93769fb8 f1cb7ac166e7f23fd9d3572bbd9cf789 b81be96660f38a8c7543d7dbfecfffbe 4011b7d293cbeae11890f3b4ec900fa a0c17b34d677907e1f98c0761af40e04 6a6f0168ce551ebf40d341bbe0ce6dc3 f0bd1732f37da50c7000797f53fee6e4 6446846bd5cc3cef5b4aea6c98f52b6e 48ae43c032e9f89737f67f4322e8d3d0 c67949ee2c241e8e9b9f2eb77f5e247e 2acc2a87aef7cc559ca96b2737246fca 541746ddb47aa2af4e186c8346f12e6 e9a8c9067bc733ed95bea7c29e873d16 72fd9c2f47db23987f377effd1f7ba9e a39f54db298e53b035d20a1a3ca345 46e1939ce6ee14d6a4689f3cf5c22e6 d11ee4294daf6ebe492d9da2668ec34c ee001ffa8483ae1b7f0e458a1629fd0a 67e6503e7ab7e666e45ef4135c266a12 969375970515e5f6492d9da2668ec34c f4268a28d2a837a1167c009da6daa010 c97b5b80a24030ae70e99aac955544a0 388ffdd2dd3c0dc0780672cae8ec94c 36f85b1709a62c406daafc9da8386a39 2afa06a01a0a15fc504721639e19f609 1006be65e7bc937e9141f9b58470d646 51670c355ece91abe24f4cc9bc86052a 6534de9a07438b52ee3907b60a74e8f8 2ed3b981a9827fb0392642605da2a1e7 728fb292d234b43d49a71f577ceadcf5 a3e990cd563b7a57ea411f5a15742da6 e34658debcd1644dc8687ff9b0b4e4ac 885c83345016a120c02b229e9105ae6d 6f0def5e832f3614c01e0156f398b4d2 6d5207270292fa01c914a9f52c152c86 23acbdfee13b407ce42d6c2ea750090e 11d3fc4092e616a7a6fee8e2140acec9 341e24df542e0676d42b9650f19dd425 bdd51e6d7ff84be7492d9da2668ec34c 59ca6d57ddd091c26eda1c7568601317 a65cd22689f14147f155d75bbf62b80 bbadf45aa419015c7e4d369f13ed434e 9dc1371b6989479c9c0ca344f487323e a2b55fd7ab49da518a049f37ab48adf9 fbfdc8eed6598437b2bb75885cfc44 2016d09b261b09f05413c1f22a911d58 b89cbb45476e94a5e65235d5580cc3e0 6cc771aa1a807dea19fb4103277a6b93 e017c5c8562ae50882eddefc99ebacfd ca23c31de817db9b67981fccd6325b88 fde328d91eee1480fc0035da39bd5e1 4bb5877100a76cf5bee7d080c8f1e1fd 2bfa0be90c15bfa0b82cf928f6ed5338 b6689fb8b784c570cc514b26ccc20774 518c58b170bf5847ff2c92c2a4f65876 524e4a1041ae53154b3c42e318f3affc 97396529412ab7602f81cb887dc35578 ad7a6efb5aa6c289810da4adc58441d fc557cf617e03564da733bb42d274ff9 29483ee10e6c6e4c2c37553db37ec752 a631fb1b054697dcfd8aaf214a1df4be 3968956c7bccc24c203eb08a0c3b4355 780809a0d1b68f4a8ef4ac3a24abb05b e6b0b43093f105277997a53584de8fa7 32d9f69ef8ebb1778a514cac7cb18507 ue639c33f-d415-458c-8ff8-2ef68135af15 c04c13649c4cbc5ebed0f345f50b6a5 39ba09c13d784741dcfbbf65ff959eb1 1190af00b6c86c99c3bd24f986301745 b9ac31cc001a0ab72a64ba172c1ba615 6dfa9675d27b5fc134f6a34e269f5ec1 605ebc9107c71d54d8f5adb469ca89d3 457aed734b0a8619ff6d40d828e0167c 103a60f3b09107df2da1314e036b435e b7316f361054c8501962281db2f162a0 74bde5a0a8927f816e107e0a7fbbb723 5b0e833cf2ea465e42bd82e95587d8af fac321238dc8637eaa7cb30470f3273c bb831481ea5166e318656877cdc36a54 bd3e65b625c9d994b022c94235bc8601 a11592a10d32207fd2c7b63cf34a2108 331f49270df51b2e5bfcb9d3e84d74f0 c50c2887ba2b5535c32fd7e88552aa9 f2aa3808b870ba95429b498f2f24a42 3c363c3a75aa1daee8f8c11a24c52ebb f4e355f3c1acc9f01ec783b810d76c4a a95b5ea73cf0c9bc8e72c17826417b99 c95e8fc2cf96b9349829306a513f9466 713d651528ade2516bbe7b731c00d0e5 be1e5985324b401be92225287f8225f7 736ef1325209503533d93f57729688db b66a32bed74e203591f74997d435672d 33990ef5ffde80fa83bc207d8a5912e3 9f8708db66a4ff07f4b6538438a0b930 1f343169e6948a2a5b7d8e48ecc58356 798fc5fd5faf3a0580067e3fdc6db24c 5cbd738436d0523d6996454765a52e50 3aee7c282063723d8a17805dbfb751e2 40ee8ed17f6ea51224669056e0d19a1 9841030f427150567dbe6b236c44c533 5f9fd9bf28da76ebed2eab6efdeec5f8 a749c31cee6965f33dc9e0e58bb697d3 41fead15a9ade0f090492b0341436fe0 a339a318c8a40fd4eebb133aa4be217e 431ca0621cab1313b0204d9cc6bc8619 5f2d4c625595dc2499b025797420aa58 a4b14d0f3cf8a8d7b37a59fbad57ca4 c20dcfe55ce58c055c10b08ea69398c3 6b5edd2c4df6e85cf9b9977a2406713a 2d0344ee62954b0afc4743bde9e89079 3d442388af50f61138ae3771b1788e76 677846a1d3777e90ffb9df6156f4114e 68c7f82dd1e1634d9338458f802f5ad7 22086876a4f3bba0504721639e19f609 44aed693950b077d4f9691cdd5f8749 e5f405ad8aeca327d9b53420a5458c53 a9053230c8e02442c8687ff9b0b4e4ac 58616932b0e7ab6d78b03575bb54dfd4 d374912c3a9fca96c141a04b2a487fd9 3d800711f41284b519fb4103277a6b93 93bb03379efddea148bc9dfced4f8d35 4a45b026317349130e916fac260c672 6bcba04c2e45150779368d1198f406e7 1157d8d6995da5c0290d57214c8512a4 eee352c9cadd79cedb1051713db42252 866aa287bde4cff9bfd324d8acaeb3f2 d021835e503e575b4f7a7f19de079d1c 90500d52ac30dca9f51f77a6d7299806 7fb75b03d3ccd58c4710269d4bc18736 2463439444134401815b2b467e8e2eac b709b41d6bafd77480cef45d94d1481b b8552f663f2a4f4d54e4f80955961143 a439465d2bd623a14cb9f394cda169eb cb8e63317e0ac998e6543556f230fe9c 326352f7a20c31e2e19a0cc107ada7cd 3d703ecc2358ea0ff51f77a6d7299806 38201114b7f2c48d6c63709946cf3bde 48429b3467c7185060fcaed6cc231482 ff793ca32407b2022a54a8462d1ffe9d a31b0ccff3aba978c3bd24f986301745 3cc6485ab499244360b0434449421de1 d7ba3ad07551c886a2c9d2062eb4aba4 41660fd9cba4d5b72f4413c96d686e51 df6a3bc55f86781218930ac69342cc5c 3022c71659584118c62a9d560fc45fe6 78f722590b0885a61efc6aa41666df08 2060f4d31feb73dd7762ba3a489df006 f4db2e2e90e83c759b9f2eb77f5e247e 3f7417590f1bcfded5c89ecb06d1099b a544d05ee3bf362d27e1ddec710c515b 96cb0c919d3f379dd0a96520c31993ad a873a489386dc825ed843e67f2e2e9d c0b45de1c0e8f80d4521562865ab775e 38279fe5f442d95f458feb88086a534 e4c866b5dd958cd0803d0f5bac2abe4c d5e1c6d3e6ce16ca8f5bf896c08c419f 9eecb9726ab34ae0492d9da2668ec34c 21a7166815b80f3f7fee47aa19e2e28c 1eb2e372a204a61153baab6c8235f5db b8726f4ca171189ca858c901f3d90b5a d6579d7c278cb9a47f093285855bdfd7 60cbca441e3f062444ac83b3e97ad658 4af5131ebc2ffc25ec7cbf3284585a40 511a03618c9bf2e7fa762d956b3074e4 e9043a68f672c1f3a8699b6183baa203 6831b0aaec44c01f5d0b6dbf2c4992eb 488041c2e021e8e87b11ae648ea92233 11b7c86fc42306ec7e7e25239e7b8f85 a85e81c62bed11ea7f4e21263a28c500 58e6fa617a1bed1a20b64028d2efc877 5e598a82d584211d2681d406cc3868fb 239c363cbe7a650c8b1ad2cf16678177 e9effe5159dc66673b93a3cd851adcaa 25ad35439836dd7c8fc307d246c19849 8fcff2582b55291389e2d345fb844f4b b4371c352f96c4d5a6fee8e2140acec9 75b1bcb68c8344261a648655355dc699 30cd71fcd7616421177b96a1e00762c3 450d40600ed92c7de9ad5e44c87685c0 46743849f0b01b1ca72559fc4f86f700 8af802214afcb014bd15bdbf03199e85 39de90c34ab1dd3f327289c00b6dc9ca 32c35f86754c0b4847307542345b60c ea8ace071a8ffc2a50a1e454933067 49748c9b987b6bc8dbd60fb6b8607ea6 b4ff370c931ce57d1705b902738021f 313bfbd7bc2d516e14d782de5388fe8c 45a0b8c6923f587e694253b740159af8 c30813d1130b492e81b31fbac7146568 25b55c1686d6114de0f3ac5d28aef4d9 465c2cc6917e02fec681404257d94ad9 d9fe499372f2156fc0d328376073b25 5f5cb0520b70efce750821560ab1d243 da7aeb7a73f298329940c34828c5731f 5aea2a227125a81bccda8d28b44378b7 f4c6c927df8edb62c7623e33dc7256f2 a1240606049c440edbf3c13c5c0e828e 27923c3fde05f14b5ea23a116671b38c 2a1124c7deb11176af42602f1636bd9 3eef51c1ba49a32ef73a9267136cfb76 195c379defdff8b81dff5c2e57ad46e 22cc9b68e67339738d2d730aebe7865d 8709db708ec617ec8b5d4279936d177a 280fe2696faf0f3a53e14f34c202d656 429319c0c5bddfccd26c2593d1870bdb 8e6dcb9b3eadaf9ead885ade4bf3150c 1c2cad4df1697103a5139737ddc33fc8 d00a7550cf050fb3720daf9b94e7a5a cf32f38c2b6c58dce45ef4135c266a12 cbf829a6c4df229dfebad4f49b26ec52 b7af84a7e76dfb59b04cb542e2c50eb4 3f95c370fb3871621f98c0761af40e04 5f7152813631754bba07a29886846807 aa412e95e1f9c047d9b53420a5458c53 cf975250fbeec5148b01ef724ff374fa c6c7820d5e2f0011c2bf2dcc31ba1713 7eb842de7ad4cbad3e329950ec40f6dd 56bd6bcf5034c7e2f9b9977a2406713a 374b3757a04c6ab6b9569033586af233 ed7ed25d40b3c16b37bf42a4ca375618 a2bffa12e0737e66febad4f49b26ec52 4304100faeef130337f67f4322e8d3d0 67017c046fee2900d09b414c3d8c49bc 294f11afc4b60827d3ddd69b7fa8d158 539dd50ce4d5fd97febad4f49b26ec52 79862d8abd869cf6b3a8888e78d004b3 4e15234057b863dc659dda512294c744 ef2da724b16ae36654e404e041bdecdd eaf231f17fccb96d81dff5c2e57ad46e 64f885f39752807c6c63b8b48495261a be7897b96b04a5d12aca5d156344f8d3 2159af8011e13b81713decb1a0563b12 b6843e186082096ebf80985a99195eb8 5042005e178d164481d0f12b8bf5c990 47c33af88f4926676213fd2f62884e62 eda9dd4d0d18c3f2296420d5ebe64c52 1f0bfd529b33c045b84e887edbdca251 bbf45d2d189dcd758e5f5b49c9f5b3f2 cf62f90e75531ac63cf953ab4f77463 ef6c2cd0b8bb6e8720768660cf080d12 976f1a2aa3224af329d2a9b1cf0c2446 11e28120789c20abc8687ff9b0b4e4ac d76ec8373d0a8f0dbb44d2e3e3af4857 19a3ac2ec0312e13c8687ff9b0b4e4ac c1b8c2f0c4f3cc43aff7c08b060f5ed6 51c276e96ac4c04ebe67d9b32c3ddf8 51aa5f1157cd456f9f9dd9e7d6540d50 b9e93c2036f24661ae890f02c6b951ff 90129d2f4a5cb57799982a4d6320875e 2c7d258bd18de1c28f7b968097bdb0fd 5c1c5dd72247cb6526428c7519676cd8 92cae2e67b788eaa9dcc460592c0e125 672a6459e7606b23532a8e162f399205 98ee09de954fdab1843ead12644a79bb ca1bf3f8bac2927cefda51b1bbd149fd 314f567d460a88c7ad02e4a3aca566f bbe63bca5688ac6b7236a8143b10600f 6c25a321d75405aafdef1c01cbd4ae0c a8da22b87a249bc9c9bfaa062f2e9d4c 326f74afbed5d727da8b0c70313fbbae bdedbb7887d2c1ac6a45b3b48c00378 a7e33746f41cd181e258d1c3e7302e7b a10ee4a0964f4ef9e3b9dbfb07aa21fc a592c3bf73afeb9294741031f62be2f6 c967b1e07ef7fc0bebc740fe800c0367 b79bc903ae820b5ffefccbce7fd86667 c62a17ea91815a7a492d9da2668ec34c 72a86c2fc8d5cb3713d2510999d0f1d2 99848304f52de660a26aea0642029fc aa154024474ad7d138a720835dbeef20 e0a011619d6c9df19f1deb04fb8ae481 a06c4c2f4634ccb1ee928ba0d9f88258 c0d25cd4481b3c2a365f491f6e3dbc3f u1e22cc04-7c4d-4ed5-bda3-8ff8067f22ee 79030f846b4dee0f9d709998b2d6e774 f1f69b9b2dbf7402c862eec8232fff1e a3cb39c5271c3232feec1f13d2353f3 696bafb55dc14fa4638f48a6603fb3ff a69c999cd76e29862f8c68dc62edc38 b7fd3cf7f37e22e6713decb1a0563b12 7f70642500b9a3ce45881d7eab1353ba 212e266cab46f1dd5b903ba10d2ec446 bbab666132885a14ea96899baeb81e22 9795162b409011c2a6fee8e2140acec9 588ca1d34f93eddd8ee30571b0da74e4 a32e7b7b9e2ec5c351bcd597cb80c1f9 20ec9403d616f96ee6cfc789522bfbab cd547b0ff5cd668a86c701087a194026 5e338c489e940ab73aab636b8c7f0dd2 c0739ef0c29f005ef1f5e7b74609d54c 81158ce36c90c319740641939c9d6dc9 26a5761e22185ab367d783b4714d4324 b29f5c7c73908424685a4d2d2b5da82a 2025aa3a71f3c468d16ba2cb1292d98a 8b52303e5ee47ac617ffa9a4ab48724c ec758c4557250ca79f2349486c570dd4 60e36f3ad1dad5cf71f761119ebf0b45 48fe63616e70f84778ae896933c670d1 475cf49d3764f04ecc8bd7a04c9659f1 5ab321d70991c94d780bc2708a85ba9a bd9137fb2f1151b23def89b32cef8e45 2bcf0b0586570ffe6c63b8b48495261a 9ee1b4fd18b040bb5445e46058840642 8c7d2eab593269f8607566378b3d8827 d761518bcbcefa4080067e3fdc6db24c 953a46766108d4e01f60a203be892cf2 95f8a62c031dbb8ff0f455e219813ed7 67c866143e633daaa6fee8e2140acec9 e488826128fe3854b300c4ca2f51c01b f12a3ffbe0f8b5076253bf0968762241 3d390c6f1051295d9501f2fa226917d0 4356ef46fbc859a0b1f04c301b6ccc90 fdc7f288b8c65494a7101992f797b6a 493b8b8eac5d3de978f8b40f4a2ae98a 77c02e92d5628be59db8ad97fd392b59 177849848dc83fb9cb85ba5866080618 39fb5d3f557f64d4389f9a01d027a78 c93113c742415c76cffd61677456447e 68af43642fa145115029039df67c2549 ccc772dd462e8d2da6fee8e2140acec9 fc369b19cfb50322492d9da2668ec34c 58a7b826ed562b7bb0957d845ac33749 eee7f5138b978078fdef1c01cbd4ae0c a487bfde2aa50faa6d7bcadc05e0f4c2 a5eea0cf3865da9749fb53621b8edde7 b091984264b4600f3ba7aee980c3a0ca 9b27e1b557a5e499b01c58badc8bbc39 bce5c7402feef6d235fce1b314c89aa4 20b36bbb42d36e0771dcb8deedb6c8d 66e1329d6098499382e4e6b3ab10271 75f32479a35f39e9f43d965e3ff9c5b6 b203918276818529febad4f49b26ec52 781677297ef4db1ab0b54dd2cf2a35d4 631807f69f02f1785532b747eb9b3728 269539368eeb8ba95d99e410bbfdd132 30ba0d3e750dd7e0876b399a99a15c0f 8b0174afa05ed3c2dcadbd99efe6967 879ffa2150c4537d6afcce3b00733da 7a5d539e3771a491ca6a405498436716 a98b128938b56846ee316b26c8d85c48 6697a325ee92e17695e321e9c6480 f04698af574cb9847edf3a3d7d1bacae ba673ea75085e46cbfd72d7396bc040a 85f56a4d68ff8d75c3bd24f986301745 1f8dde91813456e87e777e4db5dc272a ce35ada9c4a8de2fffc6e457221b9271 107caefdad02cf1c8ab8e68cb52baa6a a1a34c1d45d47c371519c64630268dcd 1ee30d218c8c730ecb01bc908e8cea6 cb68461343aa852772dadd9292b51ceb bea34ffef0c02f07492d9da2668ec34c 23299a939a6ecacda5817f81a1efa3cc 114f72b38dcabdf0823f29d871e57676 f030f5181057ddf75622d7484764b58f f9d050a51da1f3ed30bbd4cddd04c77b bc4d7324d2438885f4b35f4029eb1ecf 23babf1dd4209349def08b067722d9e5 3452faac2f4ef4d1f89f4ae158f2441 4178fab56c04a32ae8f8c11a24c52ebb d8c6c9fd4919e7f1c8d01774acf97a 7729a6ad96985f4ed1ccbd5d84e5bc86 a122cf5d1e23e88d72a5c49c981e6593 57285ae595c5cc67eea9006d9d8918a7 9d7a3b2b7dad91fd611b2c263b5df599 2aa2d2bb646fdc511b7ca0421af5a45e 65da0b239837b0f3f3ee5e8ea028d6 b455c3037b013d85492d9da2668ec34c 804c35699b163b7756bc5724b6282816 4a783b2ae8fba8b29dcf2183c858e6e5 4e5e8af0880b0d98febad4f49b26ec52 1ace72a88565df8e56bd8571ad86331a fb42c4a8cf7b6d36ec89626a4213fd07 df6ca774d390755cbd18e74cb7446915 c8713376eb588f422c0e1e24bb9eb3ab ee484fb2c1e4e611a0dcc52ca811e565 1eb5613aa22df87b8ef9327f5d5c024d 1fe0a612dfc3fc548be8b77157b819c9 a919152f07e9e0d0fdef1c01cbd4ae0c c93a696c4b6f843122963ea1e168015d 265c564e26071961e27790b0ec8671f7 d8f7e27824e61aaa81dff5c2e57ad46e 33617cc89afcf169e6543556f230fe9c be38dc611c4bdef7f1cdfc0a8f38f2e 36843ea8984df5a63719086e0b4ab8be a287b508914a00a6857b1bfbb80503 3372fd42f389a36a762ec387b772e9e1 89133468bce0e63f8101accd22c701b9 6b74546be8d42c76b035d20a1a3ca345 490cc736a3ffc2a9c8687ff9b0b4e4ac ea19940c812803d1383b5acc757bd668 8e1f9f4e3cd226bacb916d8f4f1ff996 762e86b38d1428fe78e6c2bcdf90770f 66c9a5aa7b4e528a290d57214c8512a4 4bc5920f74bbf6412acd2bb6205825cb e51df025a8c64a483147d51c94487639 b919250f54644e1e326e6d76fa066efd 241d81f586925ea0fbdebca9f6788597 372118e3595c328c713decb1a0563b12 60186a5e4e1aee8daf8fee88d245152b 6d63b89b904264a15fc64c97c5117aac 42ceba8e460de1de820898ba01899de3 42711692db3647394b3c42e318f3affc 8a53c692453e7565c1fa182c22e95706 4f1e026bc520de13d66f9962327b4367 a10e8dc1cc9522b67a80d424f0f4074d 758a68f80f0754f14a8a0ee8b17f83bc 206dcd879e5c3fe8df4cfe396cee719e 6ed05dd2e39e06223b12a1486cdc4b7 fc0e86a20a9606493cd6abbbeca4e2ad b944154f00e7cf1fad484915511ccff6 234f40c665976a51dc1e30a57aedbe31 22b40d884de52ca3387379bbd607d69e 610ea34f683eaad58cbb8bac2032149c 41852b57b492559eb36178084a593098 37aa434da4ef00038b424343280aeccb e96c3df69c2a6fdee7e684d25d4dcaf0 4eeef58f4015cf74d93768e7b9b1eabf 28fad854838ac444e9920dbaf13176cb 3fc1e991fee82e42713decb1a0563b12 6434921f88bd48deb0957d845ac33749 53eaa7cca72c84f6cacd67ce2c72c02e a9eae610d9ab7c40a7d147d66b8f507d b9a88078b22a4485fdef1c01cbd4ae0c e07c7d5be62d7cd73ff4affcd321d45 a4bf3b34bf49c5aa799b0b9a0d4a12cf 987122b945dcf1fef713f414dfd3c16 33d8a82696afadcbc3e3d5df2a6ddacc 6d3081bce72521e088e9c1fdc7b9075c b1da0d9aab6d2308608505d960f2a393 469597794b28bb2bae5a95f4529b204a 33774f1314ea9b504b3c42e318f3affc bf879252fc85aa936d838816bd35691f 91283b7062407b7381806e3880250dff 587d174c5f2b19c1d7e48afa5cc5db41 608b46b0f8f9eba81b1a986f753a489b 6abacfbb354818b1adda578d985c7034 f3499b524c5dbbefa23949c21eddef76 753c5b7f6ee56a77d73237b8afc2f0a9 e275ae27990e21988d2d730aebe7865d 9a522f446662bd23a07a1bace8cff15c 9b94592fe0fdcc34492d9da2668ec34c 1f576eefb36c3e189a6ba4499518ef95 244eb71b1dd140dc6f64461f0eb7cd69 74a8078a8e89872780360680c1602c7d bdc58ca6d411823cae786e8787e8886a 2b4f2fc77c47056eaefb25a27e962525 b24b70c9aaec3932cf577b918c6f725b 96d9944f46bd330979414e04132a8bef 4f42be4dd95e5e0c76e9713f57a5fcb6 568050037ad958625ea33df4b8846880 a06c400e070343cfd8a56a98f4d239c3 5390dede41d523f71a782a4379556c7 4e3047842ba1a384d2b12aa6a0f050b3 a63d7b6e62333b23ddc809959e304d48 b596b505cbeb456e763d8d4012bcdd98 c92721a95fe44b018039b09dacd0f1a7 f64aa038d1e21e0ad2ebe04c523a4739 79d5977609f99087473f10e6caaeca56 64ead031d2b04ef0504721639e19f609 fe9467d48dc6b3491dfc750afa3f442 7553af75b08b6a87eaac479593c9ad1a 76710f51915396e0327289c00b6dc9ca 2c5e32bb738a5306e27790b0ec8671f7 21bfb150cfc23accb01c58badc8bbc39 e71ad853f50ea7872acd2bb6205825cb 7e7f1989e852eb41352fc7e973ba7787 1ef99f4e735ceabad97996b11dc03f35 b8fe0dd70bae3a9dba7a8c9ac8add14 5067a76bac4fd7892665f68ebc337f05 bca8b73b32108ad6d42ec7e303174a87 c45ff54d4192633684cd6dc1b226aa5b 41ef5dfaee26499afe0dc3bdfa883025 bb4868c1026c04fd7df0e9a69c97c97d c666bd15aaebd5b02de0bc4fc4d02dd6 bbd6bde216a2c18479368d1198f406e7 ffd258571807e6425b1205fcf56bb774 b8e40ffe5c8e61ba3c8d0fdfb1cc2535 b5699ce2511433f3b28ede0f9f5a31e9 5a871d6613216ecebda72093f9b5aa73 1fd7d0fe883059e355feea066cda8f9a 584ab19b5df1fe697daabf84de73fb1d c0fa1417c0cf2f20593ebeeedbff73b 2fc6eef6605be9a4550584dfc8970d11 341bcae1e7f366a233d93f57729688db 11347c7e8bc5881775907ca70d2973a4 9c7a028edc97dcbc3012f749207726db 55dadd6acaa2a0c0dab72035db8eafd a366bbec303662a3ec545e4e9c852271 a1314dcd76f53519492d9da2668ec34c 8b1af8f7f37c36bb4368753867df1156 e867483a25b070ed89ccdb4a5b6b972a ef89cc3901e27fe0c5cedfd70cc18cf1 2c4e9d34472b4bccc16f7010a3b8fdee 800dd8ed32104151a37f3fc191551700 24445a532ce3e18f7b5f4d129cc2873d 9f6b1b905ee5ee9ddacbd849c304f00c f199965dc6746de38b01ef724ff374fa a801ccbf4985a57f17adebabcec6b7e 4b7f260d832c2776a7b43f93c63d6e63 7772a25ce35049881dff5c2e57ad46e 8da6959dc59296c9f2f43e6f841bd32b 2de1bd62aef66dc9bf65e1af50b5b7d4 d54100efac3ab743626ced72908b525d b83c9e0fefbbd843e88e73357a673e34 1bf710535121b17cf453cc5da9731a22 f68c32ea1e6cecd3c48d90eef8384210 9635dbdc4e34b7efffcd08faf4fccd0f fa7f42b395c3cfce520ab6214a789faf 6895e7aa3c739623927045b355fe1fe3 c8166f63964058199947cf98084faa8 21bc90d659dbe28a71aa44dea7a6d383 7fc00af759f4382c48d90eef8384210 3e08f5809c2abe523ebc93db58e716e a07f62023d3784839aab0d90d6455f4a 92b332233da033e71d022067655f6c16 8a21b853c8de77f0c8687ff9b0b4e4ac 7aea8e52f24cd40c496c9cdc8d0a8c08 182c47283b90d8b2d85934de5898f0b 64d5bd4a6af3da16327289c00b6dc9ca 747667ef89d03f0dc79b7c4f72055bcf a241ab0fe7fbb1f41dea5e6084523ee ce60636e30770f9d8193714e438a24d5 e4ce4c2a3709855450064625270cfef 8754831d577cca437c23ad67f25bcfd0 90cae938e34b11a429823c412ca4576c bfa435c63b1e96d3492d9da2668ec34c cf80306fbfc886095213cec267286d18 34722e50142652e53a5e6305a3a7adee c951e7bd4c0cbce17ec5a98b3b8c425f 91cd85647eef236490e75b1cd0f0169 bebd1aac01d747e82500a3366a96c301 935093c683edbf2087946594df4e196c 239bb149aa17d0ddc1c43efc967e5428 7644e30dc0d88481a3d974b4624d6717 b96452f41194937691a3aa674c7ec1a3 51733b725532817ac8687ff9b0b4e4ac 9dad5d3a04753f69febad4f49b26ec52 90dddd5e4aa586bf14513156cf2b8d0d a1d217ba806367cbc13a0d88b632af1d 1f1a9120cba6c1ce177b3ebe695b7c2f 308ba1f8c1eed4fbbf80985a99195eb8 5142e809212f8c314500047017815f5f 320b6f3ae2893d3c9f5d3fd8c90b27d2 52a7930e87e75591a78e44eefea09073 a32e0ecf12641f34515e5383285f6afd cc25ba35b3f6e8d3d064b65ccd89778c b9382558b6b4e858ce5de6b2dd443a15 a64bc6079afa241f762ec387b772e9e1 2b6c09e26719b256c5facc3cc8dc041e 2249c62788a52c61613f0dbd986ed6f8 bb296502226ae23475becd8a4c3f1866 80544a1e0e443c7d5438b83aba42ca46 7a9969fac794484c327289c00b6dc9ca 786c20111b691c152b4875f731f71cd c447f8e63d691e6f44d8225a445f54eb 212ad23c8afe1f9a9d297e74104d3ac3 891f1cd440afa11517b431cae0dd70ed ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03211117_test.lst ================================================ b9cc669597085c028766390809048ebc 534d3c5dca2d44641af9a5a7008cc3ec d32688a505930c96e2c8e43c97ec5a85 d10dcdae2d7645ebcfe78be5b7b99c8d a4dd6c69ac130db6795284068bb430b2 a71826a92bedd8e1f3c3e7bb31acc31a ffc9068c8de1fe46d9869786ff7f6a46 a87214036fbca69e84a172a28c2dc e5b50925213ade6a340d4ac30c6d322a 63d4e03c4effa06d6845a0762dd07baf dd8cebcb4d0564059352b002a7d38daa b05a54988fb28d20d0b341c1c5648015 2c4f9415edb358adb71a0e5ffd778fe 195d9d0305fd1625679efbdc830f6d0e f8c22e6011567f655dee408cc1ce3ebd f2b3efb28b5f5d56fb4038701c4e8e29 8440ff1637f2c6d7ebe17c8dfb911d2c 3529cd0cb733596bc22a9d71e5721aa6 459ea1db4ad52f3d7b7c888d3626712b f124d85da3ef5ee5fb51920a0179fa71 3ee0923254671a1ef2bc9da1ba799c60 676e65417cd3d59f3aabc01aa1c5608b aa99cc4323af7144e7321f25048c6142 31ea284fd46d2d6013d823b13369c182 e6304d3bec856684d9c9f98900faca52 f3004c5b38bbc0e445804144dab4dd66 887fdc9a9940ea57bd59d5b2d356dfd7 1c47397db49047b9d35d1c787a8f626e 415b39d4f60a36d742274cb89cb6c841 ec190042ef2f7aaef925cd3fbd303c2c b569ba9d9d74e7d5184dd44a99578080 58837198e067db4cde008fce66fdc56a 15e7231a97ccf7953aeb14563b37e04a b47b05891c5161189722ef9ae1c74e1 5305858e5ce441d65fabfc69ee61b28b 3cb53b32b97c0a04c04cf0f68103eaea 1ec7d9fe07b94f6e274d4393e80e99fa 9740d1752c70a41350577cf04f3bf74a 441c5d2f78e1100558ecbb7ebe658148 e70f6a81158cfb213a762233fffc49ea 8a87846412b40900ab610b0c94236463 e51c13070dcd4ce25432e3a73fd1f7a9 ab2f9418c111cc6ddb965514105122a4 87d4b97120598dc54e6185a07ec22996 ac81f325fbc993d3eb42617d0a1c53b 30fc571d408b84cd6315023d0bef39b6 dec6a8c1c01e148d20685b5a7e34b501 73669f92851d3b28eb34db531a289b8e d3193b07bd166c0611e348ae03a757ef f675d7c91d540e6bb45df535caecae62 5880abd2815da0492fc6a8cbc82a5bb1 60bde4ebc37f9b31473f10e6caaeca56 daae6d7f0e8d7e208a8be3c02effecce 3017481ad6a978393eb1d3da560687e9 a9432163d01a99f1d38b9064784c4b38 4440935e5e566502250bf58700b4d8f 89f3262d8e06acfdeb0ce5843fe6b264 3d4079a37c8fb40e808951ff5fb582ac f5f5e872bf70f59983f551e0fd7d32ac 9972709345d24fd31ee6305032661052 6a743f7ae8deade97e0bbc356ce23758 35003dc3d74527729a1d432cc80562d9 eab36391bd7fb745585e5281d7025178 cc499148f0e031054b8def6cb3b321af d3f9fc10276d8922f7248d9dbed7a7b8 a9a2ec15d1223290916cd984b3abbf4d 8c4cb4ea7cbd0ff5ad3833a4ccccd8ee 80976fe087ec183f3de42699b619b796 42fe49800a1e65d18a6b1cf8170af1b3 d59cbf752abeeb17f1a5dd559b550d68 8a4cbeb489904fe3083b551ec2a5aa3 f4097db6ad343f90d551435517f7f18d 3cbe9bb95e5004eb342398ca9dc32672 d0959256c79f60872a9c9a7e9520eea 95df08344f4737e078785e24320d5ee9 df81df82811b2b2fe2d8a7cb76d59615 59580147939bcb7e8b296db8a8f00728 fc314f1e3325a47af287ec53a469521 76d351e5df26f91fb895bc5ff828fca 286a7629b62426b5427c20e7fc0367ac 52a7f3e36d09848ca63c1bd05197cc 66a50da0551d36c9f13ece01395d269b dfbce5e6cca00c1448627a76b6268107 8ce9fa1075039c8c63f4b01b3d592bed 2979d8814a450f884b8894e5e467986b 6e4c06e5dc03291bec77bb7db6eae005 a56c13025ec97af31ac04cb85e251041 184a3f58220427c39fd28cfa9e6e405f 9db1c375f76c8ac1db01c957364e77d0 9716c06d43de24387103ae93fdb3bd5f 233a7970efc2594b26735a5c7bb362c0 6a1e4ab7debcb3f429426a0f57e4d15e 9ff60c2ab8d5a15abad8372756ee3232 73c5898bf63748ff110eeb6ed2bcbbc 5ebad73554fd866830bcd442adebae0f 2971f417b08961475a4cd9b26f359d36 56dee4eb44b2f0e64a6b6d001599a1e5 40c53f54e7fb0e3ff4c409c17e0a5165 24f34f582f9072eedc3e7f8ad872247f 2967a5504d5aef38bb3914fb474ebce4 74a99b32b562fcea7fa29a3ea424473 48b8290cb0dc0a6cc785f06f424b9d06 34d998b1845880795b1895ac674412c5 48c17189e6c58d619f4c3c326d704746 d85f501bf76933c609d7d8d27dbba7f e46e45f94470b45ad1924b802935a37a af2f3c9c8fe90380c75516c7217fb218 3c7ff78e8036b217d3923426933f698d 58fceeffe91b7b1c20685b5a7e34b501 e7b9c172059d23a6f12f3a2695789ca4 e5dd90d78168e53741e88434245c899 cf16012ae10b993bd15e5f70c1308761 2bbf7f77d43b74338a331b18e58c6914 77f4c991478ad1c26cd5a1d5c8bb85b9 ebc62d2dac989b7d8b71a158ed504795 d1b3804c23311181f361255e85d5896f d911b390503a11f96436916a86a90ed7 4f46683ad627700edb09a997c699dabd 6e3fafd33a4683d1fb0a4dd466ef3d66 722df1da5778d45b1e43523279c7f09f 1a92363c2a155ed3c397356311cbeea4 6f9ee2b839d3a03683fb187ab7c1f026 600bb2a17b238a927f7954f9ba534b6d 2fc578c8daf35023ef641b9022b66b97 e5e5018fe96e414528d0f4c81cc1f1d8 aba93b2b9b45a30dab0b172d4dea80cd 9d51ab35cca6288da8b55d3e40d96c08 e09670b2d890f63d84e349450a5c51b2 c62af9a75f8779b82b8499d50978754f be89d32290b9dd4aba27b59766aaedd9 96c87c372083e06e9ce9562d3c10079 f2f41913123a7a7e4b87db09ac4cfa73 2e5b9f616a0805dc3704a45f4027ebcb a6ce00ec813199804e2b01a3e0fd3197 4736b46f6cb97d091e02c9947dc6e279 1d9f55b1651c5190a3f4a96ccd277d49 64fe6e4480939c5e9b485b25e7417c6f ea4b90cca359e2d38b9be827bf6fc77 dfe2e7c66b4063f79a6b496c6e9f4c2 198eebeca7243399ca5ca7089655f058 4f598d41b30b28e84158c4db508f74e8 92e757e989dab6225ad009ac944c169e be2f04d1204c86d4db70fa8937c64733 74e3d29a7e0d5bc48ce0f31e09d08e16 76d87469c1fa3638577ed6878ebb1511 f7effbc133537f0aa5d0c95600bf54cb fbec33bb92e066ade1f2a1daf140ac9f 44f363137d006f3cf7fe2bde3ab894f afcacbd7078a3b4b70bb6bcb670ecdf5 bba0cad6dbbef2589fb287620a60b403 2f07cae4c7809f0bcf5a37a70014c623 1dd8b03b590dc0ff9470c43f253f33ee 62188618e7d0b2f23dabafedd9562ca6 6f7bbbc83183a93daafac0c8d5992bd a52e505fb03e2d8568292529fb38e524 4116b08cd0e4e19ff799a4672edb216b a8e109c66a0fcce7a87d866b539e4b68 85240d0fdd8bc669ccf3727bc3da6c48 e6bedde4571506491fde762a4c6848dd bca2b66a9ef701bf585db0bff5175f74 68206e7d85afe3619d8d0b45bd2b5b8d 15896858de30017d8e75bb5638d14ce9 14add565ff90153855f9913e822d5318 a990477e9c1bcaf4a70518e25ed617a7 6afc906811e9b40421d7ca6ede0e9373 5530382ad4ea8b364abfe5850a7ebd07 e912fab93eb63fef6b4897a481d7d16a 8a7712d5c8614b97974e278a62ec98f 1a5494c28b607f699263b5578aef09fa ddd82fb23a12e2eb2c8bd51dc6fc05b db4de4095a962680c951cf8670bfff6 600fd2598fd5761eb9099be21c212692 f4877a34163978f84efc7e7114f1b9c5 7940b411f730cb767ba0766d8bbd9a5c fe75bacab7594206ab0b172d4dea80cd 877cadd597775369ec059109909662d2 49ad86b608403b8ce760531185a75b14 dcd4d3d6bbbabdc6376c487287ae2b71 90d97637c01fd05e59122da3e1ccb92c 30e739ed4c65f67ab71158027becbea8 751f46191d0baf99f541411dc07303c f47044b611046a7bf901627f525bf7a d4bffa0adec5f9a73387ebdfbbe050db faf54bcb640753a28c6daa755196a36 97870c19256a95acf5f79806bd65844f fb92cb1fa04c2ba6bf1c304f780914c6 792002ca0c65b1dfaf7869e0a5920f2a 26c4051b7dfbccf4afaac116abdd44e c2b4ffa6f1911d4cd1ecbd6620e3fd17 538eebd970e4870546ed33fa3575cd87 4302bce2d7e6594cab610b0c94236463 3ad5eaabf85f4b5cc4d320644a1ff105 cc7bac4f85cbd7d68a04632e06812aec a568d8aaf2b587a2f27bd2175000097 b8386207364e622d5e7087f2d9a278a9 f464a98b2d4f598be8581b38259c3721 34f6cff3e8fb6315fc2aaecaba21de51 9536f9fd4795dc2d70ef2132a4b991a 815060a9c109ff4659de6f0155fa4014 777a8a1c887779f47ac59aba6f9a1449 ede70dc992195dc272e55f1aa85cc5f 32be865d1baf7eb9ca4aaad7dc0e3a16 70dacf62da510868a5ff93a193b16554 b86af5698f9a04a4d0d1157c0bfa4669 c906b5644fe468a2b61fb7ca6803b7a5 9c23caf872048374ec8285b7fd906069 3351a012745f53a7d423fd71113e0f1d 246f0b722dff7f16fb7ec8bd3f8b241d 88be1603c4e07fed6418651cc29befff e2787b2f0dd35fccf42a90fe4baf4591 4ee8d3a617b574ee30582dab79e5c58d d9b7d9a4f7560f6ffa007087bf0a09 2190a888d3f7ba6bd3ffd38a8449bde8 5a440522b7df4cdf318d408ca5b702a3 813b3e438a8fcb189d9f3b4d1ec94c69 3ca0f34c03ddd760234c2f2e8f2fe6da 61645237bf8de4df77525a753bdd4f00 b11d7ae45f5a84de8641d137e7c33076 2d0138ffe3eb25b9e23244d89a2e66d6 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03211117_train.lst ================================================ ea7dc70f0ef4b04bcbe0b8af4aec5d6c e2cc0d50d6953e760a25ec0f32e89e3 301148e373839ecc37ab55b97a5e9f9 3bb7a8505b99216a53227dcd0d547ba6 a98035c0230649c79b95c928a1983150 b68da827b6c8852ecd0f781bc45707bd 8399366b1dbe22edcb349a60fd15aa15 f35e818eba233a7734bb689093b9bebf 795fab6a3c23c0779f8445dce6fc950e 85d0ff09690c539cfc727671f5682283 27e65dc223cc8bc0ec059109909662d2 2772ad703e5d4b73cf6f327fca156fb ff8418d110a5fd5211ab369e12343c13 93b288efbbffff30c1dae5936fc55ce0 7034d396585632ef5450caead37a1c9f c9a56fbe2d5d735f9daa2bf0c68f794f af56bcebf21951faefc87a91fe7ba1b0 559bdf7d41b538f6290d1211e69c442c c257e38f51bb660447de0ecdff019da9 9abd70906336af9c1c209b1cd3e81587 e3d94861020f97eb37fe7bdc65e35547 94001a0000497e8ae4b68d3b17c43658 7f489cfe5174ea20c29a46091cf24cad 7e53c694e5a223346989969642549931 c9ff448d7dd7b271c7c51d4ea74651a7 42c0246643c8ad0a2af8f68791a7d624 fa7324388797a2b41143ab0877fec7c3 95832db2feb0cc7ce441f5bb6f88ca61 33c639831fef416957015074db1e51bc 64abc0ca2670818e441f5bb6f88ca61 ed31aec87c045ebdebe17c8dfb911d2c 78e3dd96ff1dab94e20f4d2769bff1e6 cadc40a7bb182a40cc229b563d900f4b 5a4add4da7414d11f2a521bdff0d8feb 4731c3b756e3366958aeac7d536d442b 42a81c2a4a261f1e1bb088904f7cb154 fac8bc5420f9d472b36c473722d8f02c fdf3953c665c36fdeb47c06d7d8c2d65 ed9c1a4011d870c258d40d577ba17fc6 5a66f2589c7df206e1f2a1daf140ac9f 44d14268d1e961e02f653d2c3f9c5e62 9b66be71bb69a85b3e6db88fd9485c19 7dd5b5e5fbb63466ce4aeb2e2812e0bc dba7ecbb12fffaebbf61576316934f86 d8b955cb8ef35cd22f2d2270d816bf3a d31610e1a17c5d31631465dbc2e64814 dbcc94dbf216e37588bef8ce0a02fc04 792839c9e28f5afe4edf4a0df1fbc500 fb1ca7e50ec3013b493a838ac2ced544 d1ff5895420a205dba1a3bdff265e174 977da77136819715cf8a1b5af7e0bc1d f06cab8286ad4f7cecb44abbf263be08 3057eaec13a196fd5b244f7c2ed32e73 95244648a330b9c0330afa9b9b51085f f6515d1343e25bab8913de0e5cfdcafb dac4f4f039a9467f46d83d16be057f3e 7c06bba1afa0553225a454369d791fb0 8fde0d7ae62ae2c802b4057d350ec8 8bf89a26f5e7824a8eb91f418e60b82e 44651d91ab8b2851fbff60ddd047b071 6c8f7736660f2e97e441f5bb6f88ca61 ed7e0817614b1c155e7087f2d9a278a9 385b89320cb3db4b958a493036fc8628 c356866299f4451cd3563af8dc07cd64 762b30a37bb098ebe7db3cc5ece34048 aa73f1b28817376c6cf19e722198d69 df5e129b50eb2f253bec56bff764ba78 28b6e44e37586fd797e8123bbbc761d8 a6fe1a137c076e51d404da78b2c36d5d a47aaca6619252acc4f499be00229a55 225d37286bed9bb9dbf53b03c847b004 c65b30c8ec2833692d56866e214da3cf 453b06180bcfd33a86b76551c6a3b2b 2b2204a683efead6dfb0e2d6f3832f45 437d1c161da1b9fc57e4c0b864012bb5 cab3f094677c1070202380f1becb8a55 f4955005fc3fa1bb64b3cbf502645c74 9b7cab4099b2d1dcab29d5c9003deef cdede148ed40e40187cd01e4a414d87f 2963a8a608ba6833b6709846a0e82dc3 cfe8df98fcd4964d9d58cf21d5faaa2c a1e844489abee455972d35c68e1bdca3 3863575f24e6bbe3fe5c8ffd0f5eba47 20476424cf10985610b144a5a224780 29aaace957daebc982c69f261576200a d330d50a0255529d19ed6e1a590c9122 d1718f74c964b34e234c2f2e8f2fe6da e4f34d5f5cc64a85f2e5d34c7b677bc4 6272280e5ee3637d4f8f787d72a46973 66d6590ce707340f1c7075c2bc313334 8ef52dd9b307eebfa31cc7b61ec6561 5ff51c478471d1f15468776e191863a2 b72579335543691423c841f9d5051936 e477ab5ea25f171172249e3f2c8f56f7 eaad54605e6dfee6d862787d0e1b892b 32413d2f2103b3a5286e185ca42b30ee f8a23c22e76666a3d4ab0eed66631cfe b90e7ec58327059e20327f464fa1f012 d854bf9f589e5a6e69a98c3ec2f88e7d c201c9ddb8493c15c3b69089417dba57 4812245f2f9fa2c953ed9ce120377769 2ddb8a9c6a81f7c1be7e1d42d63ca9f0 e7409303fa52f74b98de02aebd38a1f0 d6039aa6de8b5992af6cfa169befaf46 3a9dfefa52a6d2643ed8be9ed4b2b6c8 5f73ccba7af987789744d3b3ee0cc03 4d74d8c3df7a85051d225d751745cd28 bdf3dbf43ef2637f578d107c71db28ac 70c042c5761072bda543b6c4e1dad166 ffbe714918d982594dea158f05aae320 f82e94964e06f23fd6d49cce41472b6e abc4a3eb2c6fbe8064d221a686772b82 f4a259b4778a77b37b2bb75885cfc44 afda884544124320642ac1f4cab4f5b 397644e58faef380e441f5bb6f88ca61 ff2664a07ecb6edceacb155f400b9076 de66399eb8aaaad44913c6e8e05bb2fb 421ad85cbba562878fc3447f3635506f 717d3ef4c7000c5917a27c3fa1d3566d d5ae3a2aeb50a07e75e49fe23848bbe5 34808bb66b2bfa07ab7f9d2da6fc61cf 801812bb859e6c91f9786f6e93041cd8 b2ec76ac8a5c7afa40ff33d80c1d7d1e 2b70ecfd4dfd162d4a5f5cae871f39f9 a20887f46f9974d9a23949c21eddef76 1063cfe209bdaeb340ff33d80c1d7d1e 314bcf37588dac1ca802f44e0266ca93 324ef9fa783f6fa3a70ed7ac6903e853 41bfdff7b99c13703f7e27638e63d848 31daffe57909195455357c338ec9641 ccd03d11c95554bae4aef3a037da6f67 d9bac9c418667d2ba62bc668cb34e698 5bd1493a07c13d675f1b26547b9ff327 8bd568244e513b09c3a0fa8ea839ee26 9557d54db1c95572e15527f70689f25a ed00d5a47a7ddbd5e464ff83d36486e8 cf7294db3c65ca5c945ef919ad31a7a6 c47998c0a317c60611ea7f12f22c0e84 7cff26e6dc84bd02c598d38a6a69ad2 ad3e62240370a4eab2c358fd992922e6 9a64fd5e660a8725ae95d460d60954d6 111f2a331b626935d82b15a1af434a9f cfdd661f4521ae0e331bde3212dc4d8 a0383e1388e74ad8b0851ce87f32a267 61a81475b820a85aa73340dd35da57bc f1a3e41b45de104a810988cb5fefedde 1e6d8cfd991e829ae441f5bb6f88ca61 ad0edcc0855d1218dab76ad0db1f9537 3c4c7ec7ffdfec50f39105e1e4d2e270 37ed0bdf52f2eaa83c5474c35497dc65 6c49b516b04e89a15817e30de1dabac4 1707d858ffaf146e640578ae55230ebc 6c56f6063ceb2ba4de1b0b03ca051f02 937190441ee0d2568b7ba679b8625927 56a247c3688af350723edebb30e0215f b3ed6cea7ecd3f56e481cbc0aafd242a 54ec97f055d68a78ea0068b966c5177 25df40f2502c6bc2b2fee0e811c64fd3 bc690122f4a3646047dd811b692e315a 5fb06d76ec44a16bfa6dbbeb09c2f316 d96ab618ee698f008eaad608e74402f5 ecb96d46eca5724fef0411fcb48f0299 5c79b27734380b011a9e831992816ab 5e0fe73a4d919b1af5f79806bd65844f d7b87d0083bf5568fd28950562697757 c19d616f13bb70d39306959137da47ca a44dc3e6f574bcc942e76de3842fd93c b38d6f1025399725815b2b467e8e2eac ab68830951b9a5a02ba94c8f6eceab22 6f3c489407842f81c36ff2417ee947 288a8917e51c57deb0957d845ac33749 79f3ccc203ed18cc2b09e302847180f5 a536c6a5f1a118feac653254a68e1397 909bd886fceb080a6facfc0053fedfbe b08085c7aad830e3f45db6a75d78cb47 786f74cbab946ef78517036a5ca6b1c7 691ed09923a0feb95adfd0d9df77c16d 817aa43250590b38b3425db9d50d5dff 3783ec2d4ac3b097a7f97cee360e8d0f 4a2a1d7cf80d6031275d003e423c59ba 75237ff4dabf0e9592552ad7302636b3 144ab629198c837eeeb8d422649e5f2b 2ca1353d647e5c51df8d3317f6046bb8 6fcbee5937d1cf28e5dbcc9343304f4a 68944f7b386310c2515fc0d40df6c5c1 2ba6e0c4ea459f84f5f79806bd65844f d0e4da00e7f9db087bf393182f1ba834 e17da83890fca0b8290273bda7ed0d31 8a7b80310c1d8d1b3d5369d27421e60 e6585f8ce05ee27cf8bee374511267d3 fd19c9fe3d5e58549c4081063e213a15 d3bd7aa1ebfa45fcfba7d64da57889bd 5f0119e9c7f437ff83361808b78d50c3 dac5376988db376b7700ed9200d31a49 e2fab6391d388d1971863f1e1f0d28a4 816eabad5c1ca552744107c67e903f9a e1eb75d031091e422616600cb9fa6226 50934056d4c1735dc9d02d4e580c2722 481a1dfe44babb3892b08e504d6ff5ca 3592a95cd54f38599bb952e15a37e248 4ee9c39b1f77a29a9d5e963395eec7e9 830b29f6fe5d9e51542a2cfb40957ec8 1df7bf502e4b0e8647dd811b692e315a 65582f49b9191ea805062aaa3bb7665 64c23d38d98f7529811348287b48cb45 a18316fe31d3e24ed113457aa21fa2cf 2eb15877e9ae80d1d50505ee01b106d8 1bd2a09a9057cbaa2b518e07b1fccf95 b2257460f3465f76370c049e2352d133 91db88d4d0956e92a9a12c50dc330a66 3defd11d1a251becc2fd601ec7a8062b aaded29a2283bb4c4920a74a78f531dc 75617d66e4d82ea2318461dc09ee739c 72b55fd0ec85d68164ac9dbe3ce7e6be 42ad980a4102f1c1bac465483662a51d c61bc4cd473fe3326bd865f153842b49 a17e2808f0176f87f1f3662486c882e5 7e1212c48c877b87eca8a38e13335285 fb62e62c2b1584b45d32c81b99496e1d 6fa8694a2b5dd0b9db768007c05f817 3531ea4e850159dc43a6722dac94523b b163a1a49784d1b890da575a4a08834 1405ccaff7fa9dbd51b711a0825fda5b 542ea1fa89d51f12dbb15541d28bf6f1 fe3e7a35b8a1c06d3bb4a1304fe504d3 52387a90d9aa2fb019945cdf27c7de1b 4b85feeead6313806329e8c7b28434da 8a89e2085e5f8404da89bed86b8f9261 402938797a9a63bee270f79b60ac4232 ecd1641932584115fcea08a6f6e1c30a 5fda7abf1b684ae8f464a4627ebb5e55 882619bc31c4e4c88091986dc5b9a01e 25a09a149d018bdcaa95bf474e195f02 a57682cb8ebc224eedb8bbed3955f432 48f2b6c3c82635c119609759f8339ed9 bae43dafa75f827f4375bc8943daa105 8359589eb5c647a61f571c9e890db987 800ca9956f66a22a23d94393165a64e3 6437fc773d50e93b5c915b36bc455bdf ba29aa5a87317ee09327b89c3431616a 54f5393846bbdc64e34e21eb7fabb319 5934ee46f6872adbf19c9a0272a2c26 f480ab303b2b595eb9f9e1b0ade9a295 df35d335e76abf5618ba239e198ef2ba 6f1c8a6b5d684a98e3d888a4f2b9ef73 4bfa2e1e43d64c51cbdbc7635e6b79a5 a296a6d7957a8ce9eb752889d5199f9f 901170b0a4cf30e746407779dbd69b2d 536bbf9f697bbe881df9770149d6661b e85041124d09cb07318461dc09ee739c d72732ab9e03ca861d73f583f51a758d 4a8e7bab0b1bcf77103e42d04ec345ab df2f0bef5a669d6262c440075d5ed193 31f688edc350505191cb6690cc7eb18e f6722edbe92ed28f37b2bb75885cfc44 58eac12dcadab8bd6ff188b4687b7936 c4c15ab5dace66f81ba1d2ff478f3057 c57f3b53b19aec84713decb1a0563b12 ab69e803c34c6b8536871b478a4420ba cccbf9be5d578b49bfba6cd89592cf9e 9994c527e9c39bc5b50d0c6a0c254040 9852ad45bb14a66fce2fdea99c5936e8 13c8048199d8063c6c6253deb0c008d9 60e6ee2c3a2aa3fd6d07c55cf995503e eaea42ae1a406492df8cce42a274b981 46609dafc47fdf2b74b687cfa539ab78 740c4c76185ae7ef91a491e8257bd6fe 763d4754a37cdb953c491389420760 880cec9f3dff564af81b347089add3de 1f4b16094bd83af82d2d2896f4b277fc 3c495b3a2c2af890acc9692a1d1e7dea e52ef251efe783ab9475cee1777b2299 27107e057772be0d6b07917e9ad0834a df8e098d4dbcb5b2ccc4d915989bc424 3fc7b2412782b8e9964f7ff178873e82 9de3c0365edd0c0b3e487c876d55197b f47b9fc9a55a731a7bc6032416bc8ae d58e51e184fcc1a2fc30525e763ef5eb f3a03a173932c42b4b9b715645ffbf22 3209637ef61547c040feea836646b66e 7e3d087ac72e46c2e53dd9bb27ba3c50 fc0b4809f5a1a613496b87cefd345586 9a8487c37ea68b49e5a14a547274f040 b3f23358467f8c75dc974f7ff5ddbdee 274acc511daf0161bbf0c65ae96423ae 134c9a46684ab57271f27bd49a6cd214 d965c9192e2ef568d36eadf9dfcb1300 840dfd5a8a5ad3f31db54d45f574231f f800fbcdef1ac9038b5dbcd4be5ceef8 5c53dd3bab676b6444ac2f2630483b52 dae83168187a9ef8628fbfd12f0feda1 444fe598a0ff9d7ebe24753b6321b5ca ccff142a647e673dc24648b5216c0d5 6011d9bbe9b04cf7b6b6751f39e7b3e5 b8db7ada8acd039a3406f1378b19168e a33702c33c345df57dee7bb3061fcbd3 d6752674a181d04829c956de83176829 e58344689760e33158aeac7d536d442b 416674f64be11975bc4f8438441dcb1d eb75ac8723230375d465c64f5322e86 3b188e87ba5f109e377cf79903309074 b95414b9723439a6fd28950562697757 4b29b207acce575dafb07a946d621b3c f3d6470b3f4f5ad71c7075c2bc313334 48edccab11f0698be441f5bb6f88ca61 ecb3d57cc0e8018f3f6b4923416758fd 26b26a5c4a8fad9e57145c11333eb62a 47cc124678ef84c53bb4a1304fe504d3 8bf7dbdae495ea9c9db805a3358d2d5 2711433532f6d1fdd7426bda0fe4ebcb ff9a428991106434b9e65df431a37c1 3ebda8146a84d7e64fceb9938a41179f 2be8c8104d0025ba74dedaf762719321 93b69d3caf90a837e441f5bb6f88ca61 15e411905cf8d7d455c2bf8f07989ec0 d41ff8cc1f08db6341d8f14d547541e 79c623657fc683a54112e839a470cf05 132df41128e6b43356fd3a55668db806 cc3adfb500c1d443b441e189e5a85c02 94482409d0396dfa3f8f528a267748f 93d0756b41670e89ce2fdea99c5936e8 2d828dc0e75a47ab760433abc0037bf6 3f4a2b59d82e0f353e72acd01188238a bfa95d845671c54c26d3b1eda72fa17b 99ab7f145618ec841a1272c8e47f5670 b7315a68691210ebb25884c97d065d99 dc4b21d338c4b4d1bef7854be4daf5ad 19a4584a4d29778a78585e33b915d9a5 14a02f4475a5df5e337758c9d9c83ebe edfc3a8ecc5b07e9feb0fb1dff94c98a 2bd7f9ea0c695a309c739d3276070b8b 23f0e9274d835f2d75796bb36346e6ad ff62121443345bf76cff78602fbd834e 6856b84c3a8463e3d5f7c62c7dfe63f9 e52a477d9b54dbd5672efd73ea104790 3fa2125a637970e2dc43f1f9f0a849c6 8dda338160076595234c2f2e8f2fe6da 31f6f2b4bb6c524cab1a5567c60e2688 4428b3a883f177c262f318360c3d0c75 5a9951b9945e67566d260179aed5cd80 28ec688f444eeb4a394b1e418d5c594 dd6c708c87d7160fac6198958b06e897 cebb35bd663c82d3554a13580615ae1 318d349c03f0926e9b72ce7a99d3dedb a0f10ade51e1adcd8b8d299c28ab08aa 742705ebaa879604f2e5d34c7b677bc4 12ea5095e96f9ed185d624cfcd9a37a7 3f15446861936b20eb1a50f8f2ea3a88 cdf8eff26c940d7fcd1272091a2a216 45cae393b431f75e8873c005ead1ead8 4f11144acd79460b120322eac6386b b3a975cb984a8fc6cc98452c8fce6b43 5a20c7f723b42d2b74ff95ba57b167a8 cd9d0c82b16aed01e4db95aedeacfd37 849b58834fec864c34794e47f2eafa39 9ec1a96e81e1e714fa6dbbeb09c2f316 f3f21d06ff78f426aa444c25b73bbf6 cde799eeb40e6e8524d1772907b17f1 5e64913f2c74cb4825680a002b1d7d67 cb8a39997ea5433b159fbcda62e85465 c8d02bdfb32767648e4cc49dd8a5f1a ff7333934e9ecd5f681c36c9abb1a31b e9466e872848075d3aeab48ed64c0fa4 a151ea6f6bf27e2c9a7c2b8fd801b3e8 350da53c8b5dddcde2313f5ca29127ab 9b764d286359e0f9cb84789183638105 fdf5375eea4c3858498a04ba00344041 bb01397739208d30d39a67ea53079d95 dc73dee56c43fe018047f0f85f295702 95d82c761a54684db3690a118770a184 611a15a623643e12fab31d1a99fa2e 182a5ccd3c0c9887c21c5d9d91c5c9b5 1dccc6eee1ab6f942d692d2ec5374fbb 5bf10196a11a166466ebaa8e9b491151 736c5f322277bd99ff21f7d46312e751 73895e2bed7007fb2df5ba101cd14a11 bdb87409ff3ba876cfc4c39af557e76e 6a08ffb169d2929cda4553545dd45630 602570deed9cebea66ae7844c5fcdd1f 62ac1e4559205e24f9702e673573a443 f9acfb901156d3b7dfa29c60bc1700e1 70c43793136021289261ff87472ba275 4dfbb9a4ee89b5b29382b62c9161999f 7c5b291091dd0a166acb8fbfb472b3a6 2049436c2457a4203087f84b199fd297 bf5a771386075e449b3250464ea24783 64f6ac23636c5c2c8a17805dbfb751e2 7185d52bc9a5425e2f84cb7932f866fd bdb7abf15b1a3f437483e5069dd82374 c4b636e2c361be9dece694d60a812f12 c16f53ea58244af7d5297776dd9015b5 732dde95416888ac21d25a6a55757584 bdea41fb7dc360b57639b23a4f342494 3899bd2eb8f9e9d07e76a21e51d48a61 b5f473b7fb7cb7a7cc12bab62e8ade64 9be4d56513c06315a045e7ca381c39f6 810fac004670692fe9d7a3dffbf25100 f7623667b09f2737a10a38d9fc3b0d4e d2f37af28550950f4161e123a102b12b 8fb07bba1524168f7f6853a06fdb3f45 8b5a96b72767f7354fac5eaf08c4d9ce 118083b82350b53cb23e7e4bd2944793 96f01698d0446641ea6e0950aa8ac31b 3de6f62a6faeb80933e9820fd7ca74b3 d89d1059b23e8c60edd8d267b4d8ab38 45406c697e4fcbced742faccfe08d94c cbf33a6fa0f21270fc88f15aa2f9c9d3 9c8a2e3431b0b2dda2cc48a1579329e 8ec017a94a41b097b1b11b582321dc3a 2809c09ef575f34214618fe9321a9ffc dee129ab8c2f74944c58a7782e1dd690 1a9e1fb2a51ffd065b07a27512172330 37eab42757ae1545be36894b151eda76 f0582a84c9f7f353ba24f8032b14b71c 462ba756d3337b475f16c469ffeb982e 4270cebd8ca0f2593dfb5aeeb86be115 ffd0fd5aa21b9c8fb441e189e5a85c02 d24f05f573621080af70f0a098b23d33 36ea450f5d479481c795085b4d203932 3e1d0fb46bc7f84f9c4081063e213a15 6e26dd3afa4eb0a889cc5332e945f058 cd859f728ba259b0eb5d382c7eb13b28 18371c836b01c024b41d52ced3f83dc3 dbff3b6424b743f6ec7770a2628afd7b 9b1362da6b7eef2b290d7f93e1252a27 5c67f17ab9c9db50fcf74172442ff5b7 64a769a9a884d63f802380d5ccf70dc f240248beae8d20661049a5d9182333f bfd57bdfa26cea8b5db5515d1151e20c 1fa9b1a775b6fd32d8d030206053b340 f155df0854fb33a11030e4efcf938b6b 46c594660d9fd584c8ec06d23612ae6a 14c9e39b05dd2cf2a07f2e5419bb2c4 4714a692a7e425285d534b823e951083 898073ee0a493fed4c58a7782e1dd690 ec77fd7cf6e4810ea0a7b8ecc42036d5 5097aadb04ed3518f91a08212ded5334 e1d73ee44f1d2422b5fb024f65f6da 12c64d690700ecd2d25ca1a27cf9bdec f34958255486228cd174bb92d075f795 16e6d2d5b895f04dd3e94baac7a5a368 c2d39973237252e85e7087f2d9a278a9 d5b088ccd7d1a7ba8e2d66cbf6a91063 f6a08ec163a037c310b3ff08c68acccf a5939f4fbe1009687f2411014f221968 d5d6824b5115b3d65167d3ead22db5b1 90502bbf33c05edb369cafe8a991ad4a e1eac12837bcadcf44d2fe7d13c65f0c fa48bff74086eb8ad69923e104170fc5 41f428dfe76c1788957b752c832ca929 45c66a24bf0851246e22e2d2f64c8cef 6a5ff378aeb44691a3fc5ccb0f902d07 87b093f1fa5495968cb623bbd4140197 917142dae380e5591ae30faf8d21acd7 4abc3db68398e2cf16eb1b6d0ba9133c bb6392ddfeb98b19822cf0bd2945d4dd 1d1cd29446bff16090adfc5ef6476a6e bb2639fdd7ee85202f58405e4baaa2ed 1e9d554d26d4195f37ec10b15648a127 dd724473b5eba80421844676433a0aca ed0975c0bfab1af75f17e2852ee16b0c fd2f94be1061ff2ac92f2f0063445de9 a3ada0a8bc0d4b8392ababf87635e60c 1f76e392f49bc1cda6c7922fe9004961 fc0d0287ea544c707c65e97bab3e4970 3324b4a3f1440d7b4161e123a102b12b a5269c81a3d7e8a01242824b4827fe77 1d628bde22788cb74161e123a102b12b b097e8761c3cafe5a35a7666f0cfa5bb f89e49aa0058323d677ccd99bc42875d 5282a5a7482b317ae81a51f0a8c4cae1 a5c6d3b9945df19dc534b4cdb1fd80d6 98a4d71b85b581fec92f2f0063445de9 5cb4fac8452906f66ba14bfd91a75020 871dcd6740ed8d2891a7ac029a825f73 23c99db82c910931e2c8e43c97ec5a85 b9b01abf4d7c9458ed756341424d6b8e 5ecf4a1f273ae695729e474769d21582 e38a7ba01d45953ccb7547c95fbdff26 f75d1962eb04669a164790a64bab08f0 6a9dcf34fdfe8ba82d8b18d11bd45e6 b6bb7bb5927798724161e123a102b12b bb284aaeb7ccb54b5c4dc8ac281ba59d 3c475567446dc6b7d6f4cef762589739 d5eaa13bf0dae2fee2e6b284e4b0319f b9ef07b9ea14f4fb1dc17d595f9add09 ad0b349657fb807d88d19ffcab9e20eb 8dd161fa61bb651eaa95bf474e195f02 f5b05e9eedcbaf9cf4d1910799b338b7 52e60434725b8bf8f0975d5dbdd766e 1a4216ac5ffbf1e89c7ce4b816b39bd0 66a71f2cb778aa726321867cfa9ee57c c08e59a3d09cbabf6002a1da9aad9f4f 68a4fc70bff1e1cc700fc5aa044d9995 c28d66941e2005cd11ea7f12f22c0e84 2e6204b4aa7ba83fbd28395acf9af65e 2cfbaf480d94552c43c8f1cd479ffb1e 7a2d9d3d185cff794b85c79082892df6 4516c31dae48a0efbff4c0ca0d98b77 9fc580b2097a1d3beaa3086aec501406 ed9d09a17e472e0acc9692a1d1e7dea 38ecf0c5f3d5ee533fb0920a55a7e805 529cf5ad63bd49c8ccbd9a558eb91a2f 8893ff22c6dae8e3a276bea9ebd065c5 ed7d00e977de27e2bdfd4afbfb3ee4a d475b620ef72756f795284068bb430b2 1a98ee5b62f49c95f64616b54f9ba882 2bb72bc8157a2d8dd5f7c62c7dfe63f9 6bf634a79cadc9851b02cde7e81f0fc3 31ea65d446d980162a544c9c0bfe248c 6ffb9e26f6d0ac61e4a4a1a686b4ec8d 6a85470c071da91a73c24ae76518fe62 2f3bdb6fbaaf9e60eeb8d422649e5f2b f17247f450ab313489d3a03b2edae972 46cb55835a88ca85eba70eb27950150e f84f6c14852ddad1d06e6be4f8954ac 241b26438e8523ee2846fa729d90e125 36ac6a08317e2c618f533a7f52262bdd 7422a1f42ebb1a1bea9ea4147227b8a3 5286df5fdb7ab5cf403c2939fca0114 941c16598b8fb4f92ddfcbe9b600cb8e 700dca3a410b751551d078b27da66690 3077837de566c236a42abfb83da6a2e d53e94b52e0cd47f71dd5d95c394249c 25913689394d86bd158b0b2e23af3d37 792427e9b92c4de63b1969d0afef691a c57bb5a71ebcece8751bb40f9a4c6ba5 bb870360cda15433e441f5bb6f88ca61 76e8b00a0f6f78de1f82a1eb98f84dee e65ace5f42977a75cae346657a37ed71 5318296d6d07e4e6d40cd81b129905bc 597a278f80d04db46d3e11439c6c22c8 bb5b1f086ec0012d2e80bae93fb41fe8 b0952767eeb21b88e2b075a80e28c81b 3934f942bb0b462a90b6c749bc63f3e6 bd3df021605a8aa24c619b8a18eba62d 18dd6b73f3ac2fa26da250acc5e18ffc ae33f2b2031069e0dc67390c888f2eca e2e40536be6daf7615000ab5e56184f5 7ad85d1478f03d4f4532b058befb6326 648fe31415502db61c298d13539601a ffa987a79bc96e869e23f6fc87a31098 d8a44fc1f40d0ec271d096a6914e7333 b6070e5c314eb16033fe3b9714de209e c98e0e745a92abccaa60d250862f15f 31c2bcb49eebce088198059e96f7b9ac 5b2585db758fac87bed75a82d9bfc7c 8f032c701a2d1de772167aadb6db5f77 5bccf9711e1cfcc914e970d26b98a862 2475d02352162243cba9caf4d254cef0 ac2ea2d41c57d1075999f9ba82d15928 e767c4f34fdce88a9c4081063e213a15 ae8e106b972648d5bab4cb27e92377c4 f7d209529e47778d7a39f8821ef8c382 609dffc42c3507212492d8a3aa63f4f5 8007344358703f62d26c7f75d64f049f 65988a39887ffed8edba57559632880a 181bc7c78185f30516a6c448fcdff967 ac30fac9534c509f2de252a52ebb4cfe 21d627f21efd9298c9b80153270af5ed 668f2602ee2cd581a312d1c0842a5165 78f69254fdbe4cb4ded49d32c1b10de3 21de0761d0f8f2f9342b2a88bd008cbe 12c1b3fa24cce3e75745b9fe8da12812 7706cc4ddbc96d4975d665dad1b6a18e 6a759a4b85141936e4157a1ae61981fe 2b0b8c07582c83d426bb7052f66b6d5b e7a14693e9c70577ac74d552b6a649aa 8f577d90510e94e09506335f6ccd62b6 dbfc22d7d096f66d5f1b26547b9ff327 586b4ef8eb5a59b39bd9aec93599c5cd 2f1975216fc24c5e572bfae97b5793b0 b228f0d5208fd9ac30ae9117a5a20ccf 10953ef61c72aacccd14781dae25affc 7fbb5bb76b0058be972398ea2df8e7c2 c7185c6e5dd741e139b7c00cb61e68ec 6bc1a795d199d952f97ef3b999ddb957 b0c1b6c373c4ef3a83f09c7d0a6695f0 d206f9b91dbe5693cc5743e8d662956 ab20e7f54f10bd0ec1f8c53978a2ad35 77fee7e689d94e0f3637439a589fcdc5 64f160a87582cea38a57abd4646e319 75336682aa3e245f80ecbe6250826360 99c0bf1f81b835129857176349e96f9a bdde8a0134ad5283340f0692b6ac89e8 9d9bfaf1a4d6c3a05f8ab9d7b9f9d24a eb712261aec94a8ddf8fce61d01de43d 9aea8bba40aa793d9429f6a938b3978d dab9064d7c98acaec5aa65dab0a56ab7 d89cb5da6288ae91a21dea5979316c3e dc004210d943c86073b4ec5aa28d567a d1fe596d83fc231ef300ba2413f318b5 b06ad1afbbc8ba7536b34d1a0ff085ad 767a4f06f66596a4d0e90ab6c6492cb4 78e7b27f68570f3c47dcca01880c200f d10085421b3cd3a27504aecf4baaa1e 55ee60e04ea3816e94accef64b26a3ff 4744bc26253dd076174f1b91e00d9f2d cf7434589520c549e420fe49ae1a5a34 a6985e8e32df69a7fe50497d5e2cdada 2eb7069d227393558ea0068b966c5177 b302ee5206ec79c34ec31516689e34ad 165531f6138b14eb107d63d06953370e 61a9c9dd90089425769ba004c0947e77 17226b72d812ce47272b806070e7941c 5e70a62a7a1bdac5590b59440deecfa9 191bc5c03d27789379857d0b1bb98706 f2a27af5dba2217a38a57abd4646e319 9711341338f550145b778a830599543 8826871281dc12951072594c80fb7e4e 9cd4467976a27ac9f3b65283778dd624 fab433a56c7734aa16eb1b6d0ba9133c 85395b5f99177f864311b8458795b94b 981d4ebcfcd3c733701bcc8e95172446 300b49e25538c0ee5088116dfed138b9 e80b420abf6c590c3841abb8f4ea69aa 5664e1d072c3f39dc39fc02d4c9e2419 771a0b1638955f3946f539968f885949 c4e4d46434173023ddc138ff009971cc be2018563a5bf1a088fe6ee2419d9481 c0c1c344c3bcea10c0a5099af057718f 38517a97e7eaca1cf801e8fe8a186462 2361d8f169a7f3479ed83bc63b2fb8ab f3d4cb310a6106f5e66202687a227eab 3817ccc2d7a247cbd821b4c6abf4a2ac c32dfbc85ddecd0eab610b0c94236463 15f23ffcc92b751af7502a3b84f78df0 8449704b3c3c290ec5243a0ab191990d d54253b71f017565b441e189e5a85c02 85e99418c109b98e8324c9a156c64d52 79f26b0be635b891631d57ce83092826 6f7689fbca875b034302674f512c0e5e caed0c8c10f5738bafe08eb441adfc09 f0482a9b7084c6f8c83b51ded97d6038 44bf642d0b33752628fdea86734e40fc d8142f27c166cc21f103e4fb531505b4 f1b1a1badc8ed7e739d3eeb007af69a3 c12a485b4241be83b70b5d25a1334116 ab8af4bf679eb599ffb8194c06b9bc3c 7c16ddd8f3d099dade6274736c2a6b68 45a4d128553abb329bf8498db368caef adaceffcf1d89f9552b499dc8d840804 c0ed587c1ca5709b1c9fef7c3e095105 e8428a7732155fc1134821a4f2837ea4 2198dccbee4d38e11a23ce2d1a5d3925 d4d94e7a1f75a67e3f7b7c3393bbad8 dddc8d8cdd6361e49c9fa9de1518212 2c4bcdc965d6de30cfe893744630a6b9 9cdad8b178d7743326782c9200ca97fc 6dab3e32b5cb52f1d67173c00f9e1676 7621d8ca26b9296b104dc10235c6ecca 2ea0fcf4f443b36c5516f88085cb9af9 72353901edbe553ef5f9c04ae80a1c59 3dd60d646dc8a3da988b29896df44cd8 2112d3266c05ad92d99bf9137e86c0b f84f47c7ffe0e49e44175b4dddf5be08 9da823886a808f7da8f1d83a370a51c0 fbe9615a45afa17524f0493013a8318f bafe343788f824bd372d432893cb48f8 1f6cf74de609bae7f5542066243014cb aef2bbdc3b1e9e026a5e01bb88954fd1 98b12e9101b3d93c972a63e345b45a25 5c16184e52d1317f5c188551f03b75de 12c3e644bc371f30366648d52e38fd70 d9c951f1008183e69755c35f0639c9f5 d8f4c5160059ef245d79a44cb814180d 2c1e2873955b563920685b5a7e34b501 70df1655d1e766ece537be33cc045ee9 9ea0bddee8c8654d6b56d21c51d762b9 c8223ca4a4fc81b3ad1f278e1513f3b7 646b0bd4e03fba8d566636e42679cc7f eb2b450565c77e3efc7ff8f848d1c6c9 21ad9636dfcc9578c78df40cf2e9097a caa4afd404f24d21275c1147a304ed86 f7a5ed426a6195d97c8d48014e04ccd1 956f4464a0c344d621c6aa624f82ef1 83ceb90b398df731a8b411915b2949d6 e3201a9e4ac0a8a9e255d96ab3987a 581df3d934bbb7d3206de7995cd4a74d 928c86eabc0be624c2bf2dcc31ba1713 9a24880343d943f7ec059109909662d2 65d100a427b8078de1fb8c5792a5768b faa79bebcefea4256a4b4e0348cf692 d9bc4b2da5df08b7eedaa5970dd41792 f5fc954736b06be15fd06491ae919ea3 cb0bbe56efdc7c2590fbc3d35abb4728 dca7417eaa143de13ccf3d40fbcf475f fc542f42b786ae20c40162916d18053d ebe5a5c179cd4ae355b9f0c05f9db07c 2d5d4d79cd464298566636e42679cc7f fe314324a1e7e5c967a964feaf6ebeb ab64dabcbaf1086f14d199c00aad9da1 f3bfeab806cc976072052f2ed83934f0 7636d7c650108b884dcb5392aaf2167b 478dded38f3f8d52934a98c0476fcf4b 518b97c2a0892aced88854fc3e3ce05 1a92ca1592aefb2f9531a714ad5bf7d5 d9960f7455676e94a0a7b8ecc42036d5 666902d92f3c8e3f8ee4af899d7fc545 3aee103b0bde9cd7c16bf14ed6ef2f6 692db5a6fb6cea2174649592553d1a1f 6eaba6819fa9b07a37a807a435008662 ba5518af411cffd8cfe78be5b7b99c8d 4a21927379f965a9e4b68d3b17c43658 94525af6a244a33c21d7ca6ede0e9373 ed90f61317c3d3598435a9b7d922cf3b 68dd0f25329c5779be95cd31e095c9d4 dbc61cbed5f7f2b33c1abb78f1519c49 d96fda816cfd848e9aefc6fb585e9617 33083674276c5cf5b07a27512172330 846b6c8cf241ce2648d13901d1f48e04 dede15a6e1d27b9bd2458bf307c1dd72 5bace77f1df591e9241640224e45ebea dfde382270f1d69a28010a96423245ae 2cb149b137f5182ec2c4d83da2705396 2d56817501cf5fdbf477ab3f8ee0ba9c cc1611b5120b8aad9651cd1d591d64d 2d8a4b48acaf84d791bf924be509bc17 1984fb95afb6dae5804722305621f918 3813c5f6f50bb28a3e2061cce7606c61 dfe294c64407f6035c6271c95adbdee df624231ef05b83d54c7ab6aa5674ccc aa92ecd31491bca87a88a2ad67bfd073 2a08ac484551337a90eb6645edb4567b 93b702bd7ae98bd16942161d780bcaa0 37a5faaf0eb38031e0e89fd83955713c d7ab9503d7f6dac6b4382097c3e8bcf7 cfac66fe0cec664a8069dabf6dffa846 7525e9e986fa5059f64945cf4aa3c1a6 6946bf798ab999b7cfbd2b4a434b378 efae87e53a1fbdf05dc3653f8341633a 93e260150e7788ab574b5684eaec43e9 eb54df4a6211364d49d7025d277c28a1 1308ff4c4998cec02918c93bdb2b63e8 854a48e0d902d97f9ba2cfdf95405270 cc4b7dbffb52fdacaccd68c8aac6846c dbcd5a88a9d4f1d7579cfe4420588034 31ef46873b20e53274e7ea1d002bf071 ba0f98e212668fdd22532be027c41b0c 3e9af28eb2d6e216a4e3429ccb8eaf16 d061d2b6c934d0cc8b4b5227fac4401 de5813ab2771ed36c3c11bfa5a6c7ac9 ebd183cd1d075dd3bed06f4e613c0aec e817263a3acf985ff6c7cc6dd504006d 51fcf8537a132b789058e0e56fa89a94 115cf7354bf5926331067bcb59115bdc b4386438057e85988bfba3df1f776207 ff512c4ebd3f9e27f08984f51debc075 9e087d56d1264f0bae8d825afe55a6fb 7a89e5ca49a48bf6fc22823f73266007 c5d14b600ba28289ef2d91f96fdec842 1dd3f80712873a638f6095a93258c867 22e8d055ae154efbd12a1bc232f6622c ccd6958947505b34f9f3c6290096f50f 9329eb153c1e8b4d8479362ee6ff3679 8f9c63f788d0044dedea6f8de4918c9e 415324f27ddd70b4ec3d7b1a84909dc7 21e8d146503b0e72d9651cd1d591d64d 3b01bed34001c78211eba86b475bafe7 44c3e596206ce29dec86cc96197c0b31 4d11b3c781f36fb3675041302508f0e1 e6a0a8940246d5bf4e104a60eb91ab8a 4b2a5a666ebcc1ae57c0e3dc4a759a6e db13ba7f1da5dace4ad2635b7d12d09e 5145c2175f9db9d3f0478431b5ad57db ab8cd6dd65cb0ca9770f31b5d5715b63 782655d93313d14726ee873dae10ece7 9ab58a92609d8f5030b540842bf7e90a 2c5b951b726b7672c137fd38f49b032c cd71c33773db5570be7e507ed67c0331 75432c09d6b34efd336e9e51cf4eee59 2a2369e8b0a139f67230cc2111ecdc77 7b0327ed7286487623ab4519e0263310 3c4382b40b0e9400279326882e8430cb 6ac7bd79924399c4a0778cc08d9b97f8 c4a41bdc2246d79743b1666db9daca7c d0792c5556bdca56d1f6a4fe2f47b311 1412e61a9bc08ac4e6d9f3854f1baef8 252640ae350a1e53f119712971a6882c cc5e011d644edf395eae7316b4dfcbbe ef7ea1a94404fa633c1661cdd6e9aee5 631ebdea5af51e499399ee63318a21b d4d8dd7053596249bc1905b3bc668597 61d0f582475b3d2089b367279b017ccc 7a5a80c7a2d89bc6728fa2df514c65d4 59e53aaa8d8e9d5d9bb1951c99c5330a ace79948f769c652fdccfdbeccce2c03 30b5026e1c3f8c8a93e4d36e0c61da87 993e7df9e8166312af8f68791a7d624 2d0b890161ac04b4a4d9f38918617d27 9ef960721520d46a922e9adbedbcd67 5e7034ba47012cf088c7562a134f5ac2 a6a5497848d40c4a46738cc3b1934e6b e42fdc1419328bd7efdd13124d5ebc47 d83dcf0d435bbb87b6d41c42f7ade8c8 f39b7f08d4ea066be57ac88f5432bb4e 817aa8a9ac7f57f9dd936ff7b4023f05 50575a330ffdc66ff5a91610a18641eb bbfac23f57b5fbd820e867fd9fb7164 75ba7901816b273fe24979df4ff99c50 4407eac60124e17789e75af9d2c4ee4b b13c22f9eda41f328c504ffda4ce2aaa 15ccd76ba83a2e02b0f9d182eb000fb 946ec8b571ca42d378838533e331d3cf 9b6d300449f7bd573cffc71116771f14 4230f614a9d9a13625acf8f19a51a492 3b188ac95d09cc149d74e2a2b8c0c58b 2f12da0c7460b22cd3ab2bc0f53ca878 c0125cb175a11bc4990549fb11675099 195ab29b4e0bcdd07b20cb946bceb58f 87f8c79413300052252cde31666379c 78c2861ca4574a8fd9deb3f829cc2475 28ce23d5e56e9afa8fb952c92850e1dc 36255c016e837e6c234c2f2e8f2fe6da 3f83beaa4da6209dca62ec94d15d08 149733a616f846a2b661587eebd6c4d7 4e49873292196f02574b5684eaec43e9 aa2f94416852aaccc60dad40a0c0e85b 91bd5e0ff352d942abfcccdda2fa4764 31512a50c12258726ca2b6e5474aad11 7c889c3c89dd0933ce2fdea99c5936e8 c514d99259ffe1abe441f5bb6f88ca61 765526579b03cea972a71697434c2820 4d033564f0dcb412afac285245c66df0 217e2634c55f240c18533b168bff8839 dada218e78c9c81e2250bf58700b4d8f dce03c1f0b8365c335f8aa71d1d146bc 5cbdebf9422d9858dcabaa2ad147fa73 a51ca49763fafecf8f25f3eae9fd9c7b 11c041a780cd7e58e8b612d9fc824411 5757f2fe8b1b4b559ee60daa6185f65 25c6bdd929f9aef77d6fbcfb6b291844 f82557870d71f3a11f9b5b6530d6e16 f3ab112671b02010be54ae8147665701 8798383e9e4181d3f4c39a35147bf949 339950e98c5d943a20685b5a7e34b501 57093dac689edcf2cd318d8b7a33448f 5f248c8e804af22f6436916a86a90ed7 b0cc3e614afbe6546892efe917403e6c 9727d690fe514475ac5153554deeb14e 3317e93256b3f4f15e7087f2d9a278a9 ac06493582be880388c7562a134f5ac2 e71f7231406aa6ee4019d3f83e009e77 76b4b83212ffcbe034af0ed44f2ab2fe 87882e55a8914e78a3cb15c59bd3ecf2 9297e108b9780fe7da0ccb8671dd235b ab729d209e3ebe2fb3cfe9e599b99e13 b7a259bd391ad43c69b642ba22680f87 f1d77e0f4a2adc2bb305a938e0ed1b48 a7dfbb06cf1803b0b6d41c42f7ade8c8 58426d216f393034d24e3068806a8c67 ea58a7f6955d740fd18c7d7f7c43f51 7560f6f70263aeb9f5b8dd4ebdc4068b f4d398256e6ec0b4f910da6a487551c 2608db8ae887c6e0b996b003c2af3823 68e75f7265569b8ca2d7e4322f7f9e03 4476577ff4776f5fa3ca88ef9e9610f4 d3bc26796e7fcc6b3956af37bf042355 7fac92e1ac6e11945f6762b47fc0ecae 7467b25f70675892d50c22be0354e623 eedbd3126dad6abe5de04aad18bd94c3 cf4c78178c9dc8c292df4681ccc21025 9e1b897c08a6a91f94cedf1e55d56e03 51b92bb1df3b1a10ad1d87becf13ddd9 decec5d8e1f9f54e1a5295d0078b5d60 87fb8857bf2bd3a7420ada7b49a056b8 3fcd048b1daedbdeac22ae9309c09ec 862ac718bed40aef2715de3ea7b582d7 a03ff904fbcf341ce333e1b65ebab960 74cb25b4b8b2b89df9f3c6290096f50f 8c4a886b6b2c8d94d7f301df5d83f77e ffc224f284b63b17b0f6d70666df2668 5f2048a8af029336a186ecbc0474571d d34a267fb332b052901fed29c825c894 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03636649_test.lst ================================================ 845542d0f578a9db1ec48bc3c478566d 7fa0f8d0da975ea0f323a65d99f15033 9dad7ce60aa168d72cd2160e449d45ae 7bc1b202ebf000625949e084b65603cf f7627b6ebf92fca6d3f6d823f04dd65 99d884a5b3a6677bbebfb887e83028e1 2ba14b4b910e3f41d983ed4f6d016adc dbc50a84c8d24f9168c981036afdae64 bc49fe3559e18fcb7d910d51d878f708 545672cd928e85e7d706ecb3379aa341 761fb0822bb05bc8ee0cd746086d989 923097cec128ae77469cbaa3d6420fb4 f77abf171ff5968720331d4c3b7d944e 526251a7530426a4b3c42e318f3affc e053e531fc4341b5fcb8d8c6d4df8143 d9f6bd064c9fd456fcb8d8c6d4df8143 73378b714c5bfed2b922d818b19db1e fc8cfb4ad6730207ad90876bf5435820 f7a4590c54e2ac7ce62fad6b4f42c880 b6989c99bba1226539b3360f500ac52a 8f2e03f91a970464ef3a2c64cef919d0 23c41f1c519c82202dccb0b1a2845fc bc704db7b62582e5d1cbf3e52b9b6237 c906a9c7ae536a0c7fb7f79251dd7727 afb7cc3bbc3595a4e9b3dff83c7ff715 e93f10a58e0da99bb2920cf5c60c4da3 864ecd5e816326dc2da4b3ec05850371 e001d10c9aed09d9947a4fb398a91722 e062fc06dd5e0e01469ef73f4f6c51df e529fc190753cc9df647dc544bb0ab61 e35c4fadbf8d0426c26e81144f3196d5 f6eeb5d67c32616648fda83c10428379 be13324c84d2a9d72b151d8b52c53b90 b2d5929e66044aeac7db9c21ccfbc4a1 b69c3a0a46b932e3d3c1fbbc2200e255 370623095c9773e42ce7d46577f8a9bd f673fc77f397a061d49b2e04785f8492 fc03629860dfd3608ecdcdc5181b3655 b8c87ad9d4930983a8d82fc8a3e54728 cdbe11124dbf418167ac0fa90111fad0 c372499c4fb0b707e262a7452d41c334 33b77c66e1f849b790c4e2a44fddf755 3834d7f376879c03eca29403b7226aa1 c26b7862f2afb7ee4b3c42e318f3affc d34a10201a5448a253cf897b7fc1d12 c6424950ca9447627d8864caa856253b b4be7d84e2151a3e8bb3deb7fab7c9b7 9c0b48006e3f6aeda1dbdc0360a4cc99 42bc0dce81734d892610e2a20d7c4b61 1475fe59961fc726f096eadaad23f93d c6612c884c025a48f647dc544bb0ab61 caa8985efa72ea528d6a77b750ad3e43 fd15a43ef545096fb6f5e7b313e4eaae 98cdb45ca9925feb194eb328dc97c7e2 d779977c2417752b815c6de5374a8dd2 4d6bced89943df73b4edf02c99e16daa 14d3d2418165ec86bba785994a529f86 b8350fcf08ff0b2ca950bf8f33cff658 2af78c0b040634e5881cd5e2fd8f0f3b b57bcdb88c669663ec2a7a1f5fe7365d d1dc19013dca2182536407ae4270b9be 1e91664763d371937dd73da65dc0e6a7 70b78b9439a9de7530f6e0ede20c4525 466af3262bb31094c35131da26f8061a b8e25e0825cb5db7765609a3f435fe9d 4631e756666a8a208ca4aeb5e3b33af7 236e0f8f6e74578ccbc9e602dbf6a4a f29758075925a871d706ecb3379aa341 981b55897cee64403c8d0fdfb1cc2535 92e0f64c08f0c8ac3c8d0fdfb1cc2535 69429d8ffb5009a82060e7309fc3fc6 c9a0c193805df62accbc9e602dbf6a4a 33d0e0731c771712eed9bc72790ab85e e88e3d0c851a00fe6764a784715fb668 26f0f37f0f2623c4a3fa46ae73c48b4 d6db6a800c1ac87bcd783766d090e665 4bb676c497969016de98d10ab5975b59 5f0a23ce527d0be52f38c0d2792fb5e 3781aa0aaed95b8049244b68aadec703 dac278ab197b5efefaa6996ece0d86f4 e3ee6b31e54e95b7d42b9650f19dd425 8e025c4aa0b0201a81a172d69c52a28a b96c8cc6529167bfcb8d8c6d4df8143 52783aa89adf06f3250c527721570ba0 68491d576b5d35aade8e7376ce4e111f 9282928d320e83091735ea0e092a805a 9f5c3ea9f8254b8bd42b9650f19dd425 20e1e4849339e64f5077539b37310c29 6bb8020fa82b27dde11a3e838aa2c287 71dffdee89efe07cdff00b2637ddcbde 348d6ddf9e02cbddf647dc544bb0ab61 f85f26c5a807b22312bea13341a54c3f a29aa1d787d4d3252cd2160e449d45ae e6de1ff0564f172ad96790493cac7283 66cf69a98ff895e2b55fde51a411949f 402f7ce2b87e7d1ac066b9622c005c53 88257c5a48d94b1e2b151d8b52c53b90 4bd3f50f903cb1bffbaaaf5884f2c88f 7b1fef0071908d4bd93768e7b9b1eabf ea5ae3cfd142c3b923f93f957094a824 c905941a8db6575fd5141de389ccb29 703b4edd4d407a10f8ddacb75f806b29 7bebdd742342ba93febad4f49b26ec52 e37796d40348fa5fd8013bb984303089 e15defcb3dd448094fffb007974c9976 b4aee889d5e2a826f6747912091f1965 284986b4c72d624abd73284bc3c3cbac e94aab17400945413225afab722d9fd2 a654df55875a2104d663817442d5278 e15960ae59486c464ccb9dd377d00737 4deef34d95367b58c0d95250e682f6ee 35975525ec3d835046f58f62995211d4 7ad15667f654fc08664b3b9b23ddfcbc 1874da9ffb42f3ee990f8ee13a15ddf6 771d4def2e44bc169eb34048e600e1ea ff08713d837d87edf2098a9f7fc86999 d8a5c77da4c92921f7258dec1a592c96 d97a86cea650ae0baf5b49ad7809302 994e14ddae6f642ca0a1df19404132e9 1682d4404196cf127588e2ca59b15f8 49cd0dd4d1c008edbbc7a6acbd8f058b 70bf2aaedbf9499ec889c00efdaf9928 c0b0d7e15d3dfab1733c22d8b8e1c33d 927e0654427c4d0b82241d99b4e87f38 cef0caa638ab9be03b1e8527d043af60 d90639e69c82f864eb2d9895648d1206 58e0f2ca80931a77e99f6f079f038d 9fdaafde365beafc37f7ce56c66316ea 8bd35721e2767dc43225afab722d9fd2 9fc3ddc511f4ef62dced62abd38a02b0 94940283714fdff6244ba644cf33cb2e c89d854d5c61e751cdd3c867acb77e12 28793511c46b4fa030f6e0ede20c4525 57c1bc69df779d87bbc7a6acbd8f058b 6efc48bb9267c2ab4c6deb9ede0648df c802fa4c82498450af6016f34c89d087 2d638c6b6b2feb9248da169d95204ce2 3deedc86a83bbf23f647dc544bb0ab61 4f16fffbe480b835276206fae5d3c473 122fb7bfa09c184ca249f8489bc060dd 894cdb80665ba73dbfeb5b5bfc3dfc3b 796d944631745f69275286bf1f79c201 913ba6b6ac6aea3356c82fefb25b338b e7ffebf4dd9176542cd2160e449d45ae cbe6d8fab4be74a11735ea0e092a805a 88d29e1350eda810c066b9622c005c53 72bc0272ab1ce5a3f8d6a4359d6a181b 4c266f2b866c59e761fef32872c6fa53 b2f18bebf6566bcc97554b6bd947feea 79861fc79f8dd8b478b03575bb54dfd4 389653b54a3b5d3cd73bf61f46c61ea3 292f1f97a543d735dedf3c967c85981a fe02f6594ed8b96ae85a3dc26b76b2ae 4d44c896993e80a11391d5b018495c2c 3e7ef877f826230dedde7b5a5ea6d004 c4dc0ac169c91ff29f8c3d2002c77ddb 78b7adf1f72ad31a841a2fa612410176 e688f147080f123828eb8d149efa4062 1f115309bcbcbc5326010ae5c9a5e78f f228f6cd86162beb659dda512294c744 5ffcd5bc4f1548181c7f081cf615f39b e99793b871d27333d42b9650f19dd425 c695408a86062c4d242ea50288b3f64 31c9507ec40650d0d5506bacc83bff24 438e9c32633a7094056b9c3d62d1efd 50683065aa8bd6bec308dc58cdbda034 3fca250636e2b47a8d0fc77aab7a8d33 a60c6cf7d4893f2ba26bf7a8fd4719ad 8935987356200f8d84f9e9db2fdf33bb cdab137a52000da1b0957d845ac33749 1d963d5c54613202b0aa15078ea6f391 913ff6452d0ea43c9d62807daf4a2134 9af818e49ae8a9357bbff3af6bac359e 527212b174a5313fdd5616230e7f3c5c fc602899fa852d6878aa68632c6b1d5f a68678b3e52fcda2bd239d670cf7d8dc ba05811f301cdd791735ea0e092a805a e7e45a8f0b0ab311c754474f0ac106 29985e44b73051d923500a5b036df62e b4b15a84b9067f94a75d03186a0409e2 69a708be7245f4c9786e8e92cc08146 6ccb43088eda061dbfc838749f053cf9 2ce7732982343c1d9792f6094a78f8d5 f3a9cc3060fd6b0e6e4f8fc909e0d34e 947c6753d77d8082290e2f84c414e6be 5be8cdad3b218e373d39d8012919dd25 6595ee36783d261ed3281970e2c44dbe 5d3d9d6a6721646e441f5bb6f88ca61 b02bd8e5ef9cfe354b3c42e318f3affc 7634fbdcaa6b304d62c83ac1e3a4ebaa 5580b95ab8e7806c6c5b8009db95f66f b4af7e9a7338a9a3225afab722d9fd2 43b59fbc4703d7d1c8e6d2030713566b ce621e6df1ab9ae35d2cdb96c1afe34 6ba931adfa36c7965208aab875b932bc da8141b45da808199a06a7de97b096dc cd80cc92cf732e8d8a17805dbfb751e2 4a868756ae6404a5c0bc57897eddf6f f29a94f969dd55ffc35131da26f8061a 85f8a8c585742c9b96a3517f50eeb9f4 746b82746c6a02cca5f600ed2cf472ac 907fd296708ae71dd5fab5deb286066 83c0ad378b5802b73d39d8012919dd25 5b744ac897fe8bc557f40ff86fe708ff e2343ffc39e5f4bf85a18a4e86f89dc9 61b57e8b5da8fb13d527a9a6f5a872b9 50cade4e6f714f2fc72e6d708486db91 a37695d83a39adb52866fbd701f50f71 3a0edfd418e020b97f32712aef0efc5a b2347fe81bd2db6a4b3c42e318f3affc 6b10584984035b088314f68ce9e12e4c e507bc77c03a1b3afcb8d8c6d4df8143 9b558be5e2b60e3eb09f0ca9c143fdfd 1f58b59a1b6b06df766fc93a239bada0 b1e552b454366a9d7787152e5befb05b c898f9b1dddbb8801735ea0e092a805a 77883e18cc08859ddb1afe6c464e7652 fad026744a6abb1937cf479d4bb58d a53112591be182b9d93768e7b9b1eabf 3cd21b83cf709f1829a42a0444436860 5a957ade80507541ff2c92c2a4f65876 f97506704760741b460fa882e24b7e4a d00157a022079bdef3655a2ce983ab1f a3ff2bc2ac65bf093aa7852a81a014bb 1c05f1a7125402ea4c135b40422475eb 5849d1a237cb493c659dda512294c744 d2d645ce6ad43434d42b9650f19dd425 1a44dd6ee873d443da13974b3533fb59 776e4b38023091002cd2160e449d45ae f38370fc4c112017a6e7138fdd58748 aa5ebe13f6d51761d197f67767b32741 45f11cb4099c9c87bbc7a6acbd8f058b c080aefc6cbff8c81185ac82ed4da80d 783b81aa54a69a26d42b9650f19dd425 b2e46fb6018d2cf2d93768e7b9b1eabf 4916f793d87dd184d42b9650f19dd425 a4c0f3aed58f0e092fdae21c212bf119 e178ab3b967c7fddc901d9dddb735c9f 3766b272cd3836cf28699debac30ad6 d456beea1501f278f70220cd6be776f7 44e442591f82cd4cab0ac374f450cdc aa734f5c5dab1e672d26f74bb535ca48 31a15957bd4f32f87eedf2c7d21f7cfa 1d5ed34e8ccd86a88c94c2386714981e 7be01530bf43f2ed8a83637b92bdc7 6aa1ce4e245001589f1a71e46bbde97c dfe800d8d8642e9647bc3701b998a7d5 963e6743370d5c5c9b5d51fa8cce1753 b2ed0a4a8caa5139295966c2452536a6 d4498a4ba89b9a0d4a73e364671ba824 a4c06cd5032733af543df75232f6ff2b 2b194d6bed8daa82c0b2dda5ff15ea28 64eaa45bd2e01db8991ff09eca5b27a8 7daa2c16580e9f8ee055d2b52a9e17d8 1ea51a962ebd04f5775b45d31226d2b3 d4bbd93c0d85e77d7934a0d24a61231 3b5f0c01c2b914fc6f16f167d27a7dab bc218fcb647e7127984fb9ec7e40829 a0e1732661667683664b3b9b23ddfcbc eb311e6232cb7011bb5bd941c6665c21 7075ee8d16f012e350a4c7031a41d126 fd1371c24e12c16251d6edf97cc5502d d438e1e1b540a30b1f329c416dca6157 dd818b0269b1aa15fcb8d8c6d4df8143 d7760d5f9e1e6a622cd2160e449d45ae 97b7d9aabe38f91df11c97be803c47d 445724eab48f591cd650d96de5aec623 2ac7f0509507c6cfbaaf4e0b7520fb81 7b005e23eae2768eb08c032bedc99529 8f7863c4940c99211735ea0e092a805a 23040992da19679aaa7cb30470f3273c 7f518fe982aae1b5940c8a2639c8747 d13f1adad399c9f1ea93fe4e1ab627a2 78a11c0b8e964c9b41657e31b569b105 e6dae18d7ffbb7ff952c851f81463faa 39af776c1435a3374b59758e9336ca87 78b95abd1d1158ffef3a2c64cef919d0 34020466b4342812218c9f1216abefd 26f725bb6578936cd247b9308cd5c441 93a984496599a5b82b151d8b52c53b90 5eda619e5f36499fc1537287b5c50d9d 7c23362b39f318cbb18d6f615cb18bdd 495af808806f1727a753b1b88fff4abb d0fde1daedab10365240248232b90795 d42435906e79e4131de8e551fc6cf2b0 3a5a0f4c78e17b284f0c4075db76b7c 427806f30c61059c22e05b5d2ce39e3b 1d89da4ac1538ada9c949ae6274aa016 600b2f00113ad714e2367b9e27f16a71 77d1b5aaf145f8905ecb3cc57fe87cee 155c83f40406bd0c48d945252c13120a ea71ba1d8d8c8e5888a1de3dc61bfeef 8581a3ae1f77319ac066b9622c005c53 90d70f0a6b1cf72d79f0be73913de469 5bc478e9c4e0bb8180936c51aa7ffcf5 7591d7cc9587643caa5752b5743a662b bc40c19e71fd258046f1a7cdff74f3f7 f7093dd024fd09fc7219d6d5c4afbaff 4e54fc131882f2233c8d0fdfb1cc2535 2f6f1fe66631572c6c5b8009db95f66f 3b64d5033c580d2ef76898f881b76a 9aff9fdad0e3555c7eecb4e0df212ad9 4cf8166bbaab7c816fd1582e84bf3110 32c0bfaac424ae9bf51f77a6d7299806 ec8dc2311d381a9e3d39d8012919dd25 c6b545ae1a7b180879c251b4a7838829 2b79c0ed9fc840e7e64208ea01814e71 49749cf225cb899573ab7b7128d466a2 d3f84442201b6c137fb7f79251dd7727 33147aaf3d2c6fbc137af984a9f45d65 34ce1de178694f87e76bc197b3a3ffc0 280fa01686e780ba3501c961e91ff6d7 cef6757831b4d9738c8f019f17f4687c 89b168160388c29da996f5a90dae9cac 86d7a728dc35d634f800b597bc1c1eb5 e485053f3e0d18252cd2160e449d45ae 4ba237c2c40313f373b3ec02b97cb0f 1ef03aab18277ff1ef3a2c64cef919d0 5a9e0dd068e2436bd7ebac63aa51083 b4f166440439171741657e31b569b105 53afad2e573b26b141657e31b569b105 7972fd0fe5755b4ad42b9650f19dd425 b78bef16d4f44844931e98da3a93e73e d16bb6b2f26084556acbef8d3bef8f28 c25cc72cd06852e75bbea6ee257e41cc f12822778713f5e35b36bbc16e99b441 fd5f6ab819910a66dc7f95a5a82e36f7 13ba3fbe8fbc53f3ef3a2c64cef919d0 d5480fd1d05e8962d42b9650f19dd425 31dee666120727b0be78c8b300d2a963 55077c2175d97b8889ab11a408196888 ce406a32bdc610198ca4aeb5e3b33af7 92c2c146432ff304153c1c3f0c464db2 85f71a4724fa37c33d39d8012919dd25 941271c5d9b192eaccd8f9b9403fd602 b230c6d9aeca66e52633ff66beb9cf31 ab3e153cd23e992b576a354bb9319732 1bb465b8f22315d1116f219d90a571c2 81894e0739e3fea9d49b2e04785f8492 e5e9ff118631c2a3ee088de33038f12a 19388898dd69dd9fddc8e6d1ec6242c3 2a52bd01472ec7e1589ec67c01f5c1a7 777a686890d74b350359b4e03cfdfa 5f7abec29905605b1a19392327642641 85e79f31c24f878cef3a2c64cef919d0 17349d6d35aac0685ed28d6c8a1bdfe5 2958cd9fd799bf02cfbcbf340cec6da1 8adca6727b3275cc305056296c226e1f 3b90765f78db34cdb827dc66c75bf2d5 ba05f660341b7b7b70be09f44cb2fef5 7691ae0488f3be56f92cb63577c2f16d 330b05e262c93e216078c74a96498820 ca09dc8016291c171735ea0e092a805a 699fcda4f4e9166ec5eb7aae719027b2 b3a98808fb1ccd892a5041fadf25a502 f9259d31df38bd5decd204cd7180226d ead77648c9c7dbf8d42b9650f19dd425 aed950102f1e9c7a659dda512294c744 8a9f2e5b726ea37f60ad823977adaa23 522bc10920249e67141c66e2b49d221 3c4d8c4ebe9dedbc2cd2160e449d45ae 3e2d51c40b37c9c086052e834fbd2c4a 896abd405c79547086485c798787f66b bf792ee1a5570858d0615e6a68ba2d50 b88c9a7aaab268fb42b08fbc749346d6 b37e07ac31fa4f311735ea0e092a805a 76eb7436c40e083384d184bdc625781a e180510d07b65fff571108a6d1e94edd bd1cbcb990375022b45fed2806c331ab 9d41e23f00d11d153033d35b49a20c8 77a7d38645738e2212c5719ce6179 ddc2d39dac6e84506c5b8009db95f66f dc8b9cc431acdda473f5a6f6800a3e79 1f4df93fc1ca81c985bde43adc8959db 80436dff2a30721849655ac7c771b113 2c806132ebd0fa0eccc87962551b3d9d 25999cece7e71cdae8c9f1b00ff43053 90b0f9a1ac2e54ecbc7f58784fda27b5 213d911cc489c352b5db3f95d706a0c9 46811f96fdad80cf912acc8c54e7fc1 90651b3febfc3afe15226aa76eb7c3e 670ad2964ad5a98c9f1a71e46bbde97c c43c89d862e10552b24ecc319936dfe2 f46d1e234c05fa4e62635f8519c19a80 e5ff9311bee487f5ca4aaad7dc0e3a16 dbe15772a731fff01de2a416d49fc18b 3d82ed43806901b4df9c597227d75069 5e6abfc7d93fa5f1dc0efee4b442070 3ab9e4300cee0259f72e8839e840c146 6b2a590446ad5794b10e111f2d30684d 3768d9037d103d9630a24fed263415f3 b0871c4ac8505d9c3d39d8012919dd25 7a2362fbddbee9a4d197f67767b32741 a1d09074c83bbe418ca4aeb5e3b33af7 dc005e462f4941078a3097a6302b0866 edf15d323abc7333cf66a9e192dbe265 3815469d7a7d336ab0a29c51aa6f10ce f4e1a4032b1686cec35131da26f8061a b7b4361b0042126ac7d17f1ea7477fc2 f8534299ecce5c16eaf14273fa406ffc 25427fc8b45e4c6370ad12dcb213189e 32e9d8a4b5a141a2615efc34c3b36ef0 1917888a2b6901091735ea0e092a805a 39bc57beb358fae677981b941eb4f5d1 5d97be0e2414bfe0a8930422448288ea d460bf2dd59883f44e1a714ee619465a d9e6815b6af181cab76e29c9c43bc7aa c54d3a5a9c8a655e46407779dbd69b2d 15c51ecb58bf304fef3a2c64cef919d0 ec2806b889462892a84fca5de7f98b9e 5c5119a226e1ce9934804d261199e1bf 5254dbd4b24449edfcb8d8c6d4df8143 cf6c082b9534049494db33559ec0df30 5cca570916f420e64b3c42e318f3affc 1e5e1ff56c27c0d2adc5f5aafedb1c38 66111d2c7a23b0feb404555b84577afb b36bfbbc98cb45431735ea0e092a805a ed57181b9e7644a3f51f77a6d7299806 6f6fc4581830b1c49ae96150e853545f 6a6fac314f0f295047a478fc5fc970de f01358d4f45cae23ce670f026edf07e5 5c7965b0835a1a241de9bf5a9c22fde 7893d0b50a7b6a768ec45924afa4ac91 292ba732e002629e68c2f5eb1dd4dfaa 31768574bcddbdde60ad823977adaa23 8f85c2195890ccf671f0940f5ed452dc aa78d1c91a8949313c8d0fdfb1cc2535 fa9dc903c8324b85e3d605ae370b7c5c ade3cb8149a1fe6dc066b9622c005c53 dce4bd10d499b2f24b3c42e318f3affc 77a5a12147a6624d786810c22b062a88 978df83c1cee012729a60d6ab40898d 833d33785c62634b192fe29c2d3d296a 53846d2802f58f97c066b9622c005c53 a801be11157a7f243d39d8012919dd25 8a6d770e6b4942c5ef3a2c64cef919d0 2df829fa60a85466a2f2a5c7a758a47 c1b939cc403a0662664b3b9b23ddfcbc 9db87bf898efd448cbde89e0c48a01bf f092117adb1e9254d1cbf3e52b9b6237 9841e6ef0d244f3d42b9650f19dd425 e4c9bb21fe5bfeb3e21f078602e2eda8 e7b719516449701362525a4d857f099d 7124fa42397a447c34db027e489e649e e0a2948797cc33b2e19a0cc107ada7cd 72ba0dc1fd49c2b5eef5d83b671bb264 7cb828eb3b8e424b1e88064118b89a3e a138582b1d0b9cbb137af984a9f45d65 ab8afd0f2f10be4f3443b22038d340 baddae470b28db0482e23b5f9fd46e1e 36182fffe5b450fd65d1b2bc83ce78db ca6812040234d1ecf57534363fbbac3 3f968096c74ee3a3b04a2e6a78ff6c49 a1f602d18e9c0f06733c22d8b8e1c33d fe4ca0ab385784d8df6cfab91d65bb91 24927157e3a53c1f91cb6b6c47a03f13 2691d3491111def44674c364bb213983 c78f6882973e616d2102429c788ba90 fa80490adfa79863aa9da28fb4d9b628 6272bb389bb524f0c8e1fef75f114ecc e6f2e77940fbc85a8e2d66cbf6a91063 9adee08c737c7c134c6deb9ede0648df efedd8c990f9926c48d945252c13120a 3dda46a537bc16e689ab11a408196888 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03636649_train.lst ================================================ d526a340408764d8ec0f2eef0b7e551e e7b9477eaf6e2b64fe755e3418b63110 1e9b2d5d65a8b7c29fe8663d47f73813 da64c56e36024add5b903ba10d2ec446 15332cc15b3de2e7a4ee05a5737b7178 dd1dde844f5b8ceef361255e85d5896f 5f901ee60f9c0d2c6297030373bd4c3f 9fde9f07e6217b7490c2e24416edfe5b 9c5a4f568399539b47afb7a57d27bf15 65f23d07991128e3fbb8cbddab1c2002 4dc9f86110ea40aaa570c6c691c987a8 33e210ccfa79a0ed581fd19c35a5c8c 6f4f8f3788da22817217386867d08cc 3330789450af921544fe3ba945082ada a172874df5369cea1e70766334ac46af 4aba50849f4d24d7581fd19c35a5c8c b474613907b293682f8b82e61bb347fa 21bca6a33809c7f26f2deb6dd348d3c7 377df6e7a3d84edfa123ce0dff5bf4e6 36cbe594af434ef9a89ecd28750d46ac 89cb9b2ad175b833cadf6344ec272e8 f69d3903096b6bb78ca4aeb5e3b33af7 ea9ec4d9db2e06202471e6dd5ac3ef92 ed45838f0c557b778a0c77569eaa010f 87254ebbd9e57bb84dd6c3274cd9823 c3d57dada3819e60fbaaaf5884f2c88f 185e37856f55b2c4e9aa07397ea1cf8d 5dbb2120f2f828d28aaae3d020f5ddf8 374ee0d01fb25ecc9bad7d7f6ef7bb21 1ae630bed26fcf4d448e1c9934d83117 ce3b5fdadd2b73216aea2f18ee404fd5 8508808961d5a0b2b1f2a89349f43b2 6e1fe96adbb5ffba8bae2d07dadd1b5d a0812cee3fff72103ca265f557f5dc3e 555152a8e9cdbbe41afedc87fe387fe ea9721231b1369c93ffd072b23bde58 d682bfc447413fd167a9bb855340227f c5b6259812704f11e3ebe8b18779c486 2ac3b0a04514988e8c451c71f65d5dec 787bd789cf2aab676e0185e256a599cc 3c39bff6acbb6060899bad344dc01f2f 50f14b490f3f4589f51f77a6d7299806 c93f10431b324061581fd19c35a5c8c e11d2e065d90200c7543d7dbfecfffbe 3c012309d5c68153302ef84771572fcb d7fb922f162360b5c66a63406f818460 48f878a6176591190c2e24416edfe5b bc800138650bc4a6c7c8ce3bef5c2aa9 12aa829de18f4e6ad5cb6d178687b980 e4258a09db0c03bc97bc1a2d2578970d 1d3259fe9377ca5f899bad344dc01f2f 2e5a58c43539442a6858978be907b0c1 98d9619ca934b01df51f77a6d7299806 4ffb03a364a13c376b41b8bcd0404ec 36c1653a021a526319620b61f6587b3e f049bbd180d89cb5490ad276cd2af3a4 68abd2755ff4588b545bbb1b2e749fb8 a2f760540b18eac2dbde8847d3101230 8422870b0a65255d5cae1a083183a237 b1ec680145762d1eb784faac204319d9 bd234f132e160fad8f045e3f1e9c8518 f72efa4574100c12a8930422448288ea c6755ed48456490d2744bf8869518694 2e32934d4a49c374b20bab10aa3ece03 f4da1907ed935101ad5d0d05865f4466 5c8da21eabad2dfe3d59e2f2ea85dc18 3c9f0efc08817ab6fcb8d8c6d4df8143 3397952c22be7309796c584ff1fcf56d c9a464649fb52e99d5cb6d178687b980 e4df4ee697e71902f95e2a1e9997b85 d73b4313372ca6e1a6a7b6e78d8d5bcb dda91a2215130be16035905876bb696 a708a75b3727b12fcb8d8c6d4df8143 70e29a12260f811d8f1b70ceeb5e9a89 ec782fd2f4825158f24dd57a3f1f3b51 67fc0e388b91d55fcb8d8c6d4df8143 26d761549dcc3c61a1b5ceeca96f6fbc 14c84c76c927fb282cd2160e449d45ae 9bbe778f05a04009fcb8d8c6d4df8143 3edde0735bdd2aeec8bd09a8ecef3d42 437482f4d187d43893202bf99dddc268 30e5d9149ddfeef27357c8b8283e0cce bea6350707d0813c85f486468112b4ec 5128cdc2e7001b0fd8740cddcdf4464c 379b2a19deff9954f51f77a6d7299806 64d0f2752aea0f40a99e0f0bf1de3bbf bd2dea41f32e4562ce11183544874734 f1cc6b6fa75bd67ff51f77a6d7299806 a130ec5d53e62931d93768e7b9b1eabf c81470e576e437a495f1c4bba38e85d 36d90198790ed82386052e834fbd2c4a 798028b70ab2a1d529c726e7d66b139d 29a1afd3e6c25af71b17743c18fb63dc 738646252a89e865bc5cf22809274024 d08164b754c2f139b93e96f21cf0da86 fea629edc206a49529fbb534b2045025 370ff00dc6f08167c3bd24f986301745 64c393bec510aa63c83f06951aa9795 9b786274df42d55b774476b2e205b9b7 67a087a3f917c3a7cf004563556ddb36 4c62e3c4f9e46d015da963e90d88cb74 ae5a1b5c8b93cdf4899bad344dc01f2f ddc2beaa04d1b06f5fa701976706a45a bfdfe22081bd54f7581fd19c35a5c8c 611f9690f6eb4da79a6a8a8f3fa61f11 183e79a892e4294d65666d9a7426c2c8 b2acbb6717c7a842fcb8d8c6d4df8143 8be8becbec0d42b799e70de063b51884 65f11c0c8a86a8ea9813dd6c977cb17e bfeda9055368d2dce76bc197b3a3ffc0 92f9d60912030cfb3a8888e78d004b3 dd284c442afd361e37f2340db925336 34e4bfd2000916c6a5f9d52c12457194 4bf29c47c18e7020fcb8d8c6d4df8143 6e51353655289e10ad885ade4bf3150c 63538ead3a81058f1c1ef519b9196b63 446f8c76eed76c199df50b7f68c99baa 646956f902b2a134450e3da30d6676cd c414d046062b529ffcb8d8c6d4df8143 1854bd4bcf32ca32e95ee7559a2a873b 59ca30266fb153ba50f93b609ce4feaf ecf9ea749680ae432d9c07d3b9171829 c359b4c545e5ee3efcb8d8c6d4df8143 54a7ea6d6e297a849eb34048e600e1ea e9f83f1d54e959bd35836c728d324152 9b8f6e93608fb244aec118775e1a3eb4 e519ec9a23b1612dad19a449ad99c8fa 4c4078f8206ef3cfe13094731a5351fc dbd8677c25a60799a10831b4711b98b9 c52af321a31d28a2e95e8a5faf311c2 b8c809f74a592a91ad5067eac75a07f7 12dd2b962777328551014c684c004c28 9cf1c74f842be30624a15e3e5e0014a0 abf04f17d2c84a160e37b3f76995f8b 6a1af043806ddc96ac789d813ddd2d16 8d61e7c8fc9d989d1f30b807ae39b61d 8425fcfab0cd9e601f0d826a92e0299f 52e15c498d33748d53227dcd0d547ba6 c83073e02e70410a35836c728d324152 ad01773f3f53bca3a8ffa3a6526018ac 13e4f5f06cb42211fcb8d8c6d4df8143 5a4248187b0cce798aaae3d020f5ddf8 c60a072ba63c12cd8ae0d28389a2d006 8304e6daccb18c2de3855de370260f05 ff43ef647c75b5a4fcb8d8c6d4df8143 4b3bc509cc074ea5ccfcde790fc2f661 e6629a35985260b8702476de6c89c9e9 1f30b28f2dfe65a21735ea0e092a805a def342a8d095d8501ab5f696a41d80c dd278cc37ecff49ce6597d391ab6fcc1 e926dd7cf6831f9afcb8d8c6d4df8143 475a3d88004052918a6353ea60f11b6 cbe4301ef1418bd8b036d6b8e2579386 55af2652c4460b05ef3a2c64cef919d0 faa4b839db01b86fcb8d8c6d4df8143 aa001d69c5b051591736c5c04ed41019 c99eaaeb9b941af62ebeb1e6a8111f53 58484d1c37df459e32acbbe2387ce75b 28d35fb9035fcbfffd5c9a0fa28996b4 5d69edfdd6f7f62ff88ace17ca85e37c 3ac0f4d87162625dfcb8d8c6d4df8143 eeffd79536a7ab3e597ff152ef65c9c3 b88130805777f2efb76e29c9c43bc7aa 5493cc3e023e9e6ffcb8d8c6d4df8143 31d93627f2fbf86dfcb8d8c6d4df8143 ed81fd0ffffd360638e74158ae3d41a0 16db10b6ee500ef94b3c42e318f3affc 94af43cc530f8c4649244b68aadec703 81e0c3b0d851492fb79ee87044437bbc 414d4397dddc0134fcb8d8c6d4df8143 5c9f3efb7603bd107c57db67d218d3b9 84e870f2255d6b6efcd4910413c446d9 e65eb892b1d1730e52470de2774d6099 f8d4e335655da8855e1d47baa7986b2b 809ed642119aa5799e8bf807e902261 ea5893e12134c6272f798bd8a3edd4de b5b728ebd7c0833530f6e0ede20c4525 65c87436f6d6c695cf004563556ddb36 3bd2db092bede98957e3b0a0099797c a06089b2d68c974c6273cbd9c7cef4c 5680570f242c595255ee7d0585fd5223 9e49915157b79d911735ea0e092a805a 54654f299bbf5ce4e7a1d4df7812ed0 270ec239221938991735ea0e092a805a 47ff70265cba94df900cbe2c18fd90e9 ec2d7e5e968c3ace7ddffb7902a68a13 e22cc77e9bf9eb0875d36c94c257eb30 3f7eb5ef5d304040d847cb32379eb854 d2ad6adbad3ac49752d7b587347d0cf4 a22c4d43974086de31ae8c8ff1eb3d45 871e950f1d453b32597976c675750537 89ed63af13b79f3ef42a90fe4baf4591 926d66e2adb79d5b79cb09497d80655 5d94d971dd819985713decb1a0563b12 7932b195e0e8ab00726dbbf7bc5e4df3 be00be72836114159568832390d67ef f97011a0bae2b4062d1c72b9dec4baa1 6196ca0c22f9f7271110d567ea61aa61 955143d7f0b5c70fef76898f881b76a c9eca1a946d5c74930259ca79b88bb0 f835c863f175df72fcb8d8c6d4df8143 d90d20f02ba8fb9a6bd00d0eaa99c3c3 f9bed8743eba72439a4cbf5d3b79df06 94e8b7adb07de08e714531f0291497fd 41fc6d8dcf353f9ae420612cf7bb547c 52cd206dd4674bbd4fbd95145f67665c bf3c1ceb076a334acb43a77d9793979d 8df4dd50d01bb801e9bc18ec03716e83 57930764a16deae9b219dbeac7819b2b ea7a5e58c0462957edf4c948f5a7c441 99efb45cf927a0c62cd2160e449d45ae c8b19dd635c346a4bfe7d977deb71340 5ec6c52d6d5dbbddded4c23d05709216 a3a13218d61daab550903fb6fac1fa18 af8fdc831cc65f0cb0a29c51aa6f10ce 1d198eb08540837be9bd6b804c8484dd 9534bb19e66fa5cbfcf6007208e5f114 23a8eaabd1343badfcb8d8c6d4df8143 6b130799a53c2917cea97147b08cd8b c8305b6f8521e9b3565822a81bbbb03d 48cde19fa1d6af1653b336293441aa49 24c91045ef1c6a91e4407e92c4b0344c 545ce32e4a72ac04352681850fbc4af9 baf7b66d35abf0ab1735ea0e092a805a 47a7bbd995c37d3d4aeb986669a16017 2e583ea74f46aee239b3360f500ac52a 2b1817fbc0f3ddbe8220566e85550c0a c4d62e5fe71fa71f1ba2f806cba87b47 57dfd0ac5a78c9322f841233486fac2b aa765d04e997e36a1742918a871fc8cf 8a840a390cc8ba885089a13cc567dbd 46b8bc4b5b2a6094d46763ec4d902968 6a635b75306512b3fcb8d8c6d4df8143 9f4b472b57e4eb76376135b28de9dd8b 4bb0f244d4abe00b44949d7685cb63ea e8e2c055f8ea53a144638317e9e4ff18 922902d623e5e5dee527210494d6783c cf5b6127ac18e85b6aea2f18ee404fd5 b7716e735dc72358182649d086615bf 6283ad834ec0730720efab7988749bc4 b64e98c991d4103170365ad078f710ff 8c4539bca010eae1cd74bafe512884c 9f07035e2ff0e5946ef2faffa907bc32 ce879c871fe2015b4cbf9a02e3342127 3fb39b80530c18842417a6b5541e7395 caf410661e9311299dd0351f01396cda 1dc135b611b2f4b2fcb8d8c6d4df8143 5614d1c24806ce0a8d1fe8cdc415f4c5 85f0a7c268fd095cfcb8d8c6d4df8143 70652459696b25037e0f056bfb925424 9b0c6f3ee4a7965644b289cb940133b8 fa6f034a8beb74f6fcb8d8c6d4df8143 ffc2479f27a1013afcec439ba0368db0 ed2f272286506a5786e8e92cc08146 7b53493f7944fcf2b691e708071fb777 2577723d02fd914eda113afcb6c5e140 e487374a244b5f03b428462f49e66329 df0823f1c81eb6bbfcb8d8c6d4df8143 5dd2f4d3b253058dd554ab0a45f30de7 51561910f274337c452b6f7f8fb75eae a72410196463086561fc247a18f47792 60fe504827e96df11fcc6cd2b8a40871 bde9b62e181cd4694fb315ce917a9ec2 967b6aa33d17c109e81edb73cdd34eeb 6ffb0636180aa5d78570a59d0416a26d f449dd0eb25773925077539b37310c29 989694b21ed5752d4c61a7cce317bfb7 dc6c499e71d04971d22730b0728b2fc9 ed4f7f214ae7042cfcb8d8c6d4df8143 721baad382f73c46fcb8d8c6d4df8143 55b002ebe262df5cba0a7d54f5c0d947 ca5d8536386d31d0dd90cd03407bb536 e9b1b74a44465b8b192ae1372f64f330 e7310381c64cd87f8880edc6251fa529 6e5a9f4f1f0ba4a7beb83c64f2162734 2a39d5ec8856dba0fcb8d8c6d4df8143 9afc2aefd6b17db014038d588fd1342f aa9e96ac6c121cc54cccbece4754c7cf 62f4efec7059e531ba5342d638d0c267 5c8df2c17d09028543ba2b548bab2839 dbe83cbb4cd5113c14038d588fd1342f 683118b2740958303fe64ec32ae84891 50a3d09ac90370ec9c48f338871146f5 1d2c6757217bb2797388d403c2d39798 230c9e3d0e423ade7b7adc4c6de912f0 176b4495ed006475bbf899459f3f71bb a7f67a2088ce033f3ec7ad443e0ae81e ec449d7c89e84657cf66a9e192dbe265 d60a54564aa1856fb18d6f615cb18bdd bfd36d77ecdb0c9de76bc197b3a3ffc0 e37de82cff38f88d1735ea0e092a805a fdc4b403601fedf955b7716fb9f91d35 f021d7374cb40f0da2ee802ea6ed091 aca8867b962deea91a8781c24b79ae57 a885ba00108cbb63e49675db0062ac74 6d8cb53f3b1cd94a4da9b199f21864cd 4febafd730ab294afcb8d8c6d4df8143 a186c58be79925634cc30865d6337b9c 2ceeb17225f4e460d493bfe20f94b6ab e1fe4f81f074abc3e6597d391ab6fcc1 78dc5a0c38d5aa2fe59f529cd1b6faa8 4c3a0886647ae06a6ecf9e4734c75a01 3a29634236aa0596f9e8cd846ef13776 c464b5be51b387fead5067eac75a07f7 295ba9410657325f9d7f638b2b2e0564 58b269eba3c6d09b57f40ff86fe708ff b2116d5a9b93a0704f377bc8602186f5 58483a0c6c6dc7056b1291e0cfc0c93d f40624156dcbab68620a56d13e6d773b 60500e6bc230e3f3bbe00b56d7315d73 6b837caba2f63098360a9d5ff73ffdad 8ef9c1ffaa6f7292bd73284bc3c3cbac 5a1484a25a5b8a08e0df09c6ef42b40d 35bc2c88e20e099db8bed6beeaf025b3 a1bdde7b604dd3a89b1c4543cc5963cc 1cf44cb081b1a2b2fcb8d8c6d4df8143 ce8a14614b85a8fbfcb8d8c6d4df8143 ab8e7d9b77455a8550f4a93ce2060c65 23a4572a96dda133d624bbdc22e247c8 ad7fedee24a70d82a5f600ed2cf472ac a2316a225facd3114f3443b22038d340 930d6656e3df0635fcb8d8c6d4df8143 27436a813a1abe835836c728d324152 352d68b2a816640099e8bf807e902261 c7b77a991430bf08b8812f80908a0273 a122a15d97594ebcfcb8d8c6d4df8143 7dcbac101ada832568d026fbc8fe70cb a126861b5d720843aaf2b5b6ef88c2bb 6e913f0b67bb638288c10250d0e7fba1 ebdc97f5fa29b1dae6597d391ab6fcc1 be6c5d39cbc0d6f9764567afd7c5990f 2871a6c7eca55e63d0482422df1ad01d 674a0ba32db48cb6ba2cb2a05654d738 cd05ada0981bd85a2c528d33bca1ac2 b074f648cc99aca6fcb8d8c6d4df8143 11194326770b1225d49b2e04785f8492 230efad5abd6b56bfcb8d8c6d4df8143 51fd15743cd0568219179d4701451afa 9004c69559c8e6f99ea7ba54de81fa1 1e62d260a8a64b5d8f720345751070e9 b1ac784f48473df1e7c7920f6a65a54d 73ed11936acd99a627ebefef2b2130c8 397f450de4fc6fd4fcb8d8c6d4df8143 fe200902555dd8c89f2349486c570dd4 5926d3296767ab28543df75232f6ff2b 9896b288bc97e6556bcc48b8d936ddf4 68a94becfec1965e21d6b7a56ef55b4 5cfe9300f102ad65fcb8d8c6d4df8143 e1c49baf0a79732a7eeca6709b6a824e 853c5ea3c279b9e9f7887b5467c02fc8 82c10d98a1aa65e89730cb37c9a5f63b 3c1c411ce82c4c43f193a5d512f2c2fa 62a5d7a59b87d150e6597d391ab6fcc1 399573561336a341b754c9a53619150c ec344c1076b5c890b02103b4dd1798f5 8cf524d8cca9d451fcb8d8c6d4df8143 73a4a5e3a27aa7fcb9f5f10496f09f56 fac2081abc0375649f41ef09e8fcdbeb b46eea8a6ed035279c92366a6d55d37 acaf95927290a89182bfcd34215ccfc7 f018f4d78d295ef3a78d991d8e8834d0 a82af4e7e81334f8876b399a99a15c0f a4c50a7adeb7d20b51014c684c004c28 a4b3971680744f7f1742918a871fc8cf e0a99ab7c7a0d2d4e59f529cd1b6faa8 2df234af39ae991afbd43c84cd4013f4 1833ac3f2c14e6bafc26f53456c58834 19171a11ad8bd9d5411a00390d1cd315 db88171d1793fa2785718c281d7fdf61 6918fb9f51d1dc3dba9ea396e14c59f2 5aaf61da59f1c0773225afab722d9fd2 8ce777fa2b40476cfcb8d8c6d4df8143 3a3d292307c4831f4dc0ed4c2f72c4cf 7d77f1dd8bcf114ab71c4c06094146e8 ba397aa90c4af6ec98d5fc0473d00a1c c211f82e84eb62bb776f01d35517da23 994f375a5f371743b5fd9907631a04b7 36c6a6f0e206c79890fd203f931c9af5 90e4219f897af979cbde89e0c48a01bf 8b85d01ba70a09e9a5f600ed2cf472ac d190d56a1e6213e420ebca9c2a65e97d 587b4419a39cc088ccbc9e602dbf6a4a b736ffab5afcc08ace1d463bed0d7bb4 42c6478d294d71adfcb8d8c6d4df8143 95099d85ebd865f46d11dd9fe20b7791 c5da06189b219effcb8d8c6d4df8143 33db0d4bf66731a7e7c7920f6a65a54d 70b3279caee3ed985c6e7b50a2f671d3 ee9cb649ef64105b62095c48c7bd5960 38eedb7c36b785fda81f841e85c630d5 f5c61ca4acfb7f5435836c728d324152 80a5ce76688700a2fdd36147bc6b8031 8e34bb5570f790b0796c584ff1fcf56d 3b20c6ffdaf2dc97ef0add8da8532fa8 a37f1bd2732ce11981d841466b314f95 39acb6226133f9e0e4c9b82a33ca42e6 cf09b30a89f70929cc67b3de75c44c76 b0c346ea1fa3ad0b2d7dd0a148440b17 5179edb45a24a785fbd4fd7714358815 96e1ba69697ade7682db9fca4b68095 e303a8b8aa3aa14a39b3360f500ac52a 12e8d8176f2bd111978e8f21c8f49a92 9c2699c78add2e5847ecd534f9237f9 918b197d2a157d70fcb8d8c6d4df8143 58c49450594bef2afcb8d8c6d4df8143 23eaba9bdd51a5b0dfe9cab879fd37e8 c233bd44815828b08bd5065c89cb7063 1fcefc2c2ff00dd6c7c291dc7d41000c 57b95c1122beac7c3fef86d7b5969363 51b4f0fd600a7cdc580a266ffa083ba4 41f3ad2781ee196bad0e80a2288e336 c5a69f02323e087181d0740b20dd8fd0 75e788db909c6e07bd4160ae8a5798e4 1a87883fd4f52527e21c35aa7a22a003 12d03f06746eb49990c2e24416edfe5b 7d7dfd2bd5cdcc4cfca61b0bec17b8d3 d06ab2779bb0b73b822a33e080d0e71c 16327d928854b34ef11c3739edd52fa3 b45b8df0557da6acc14d5c159bab8297 91b7d2915bfede639b3360f500ac52a 583a5a163e59e16da523f74182db8f2 ddb951343304bf1f351d9ca36f76b95 2da9d9bea10d936e23c0d2e0152e91b5 80eef85b735218b0ab8d22b09768208b a700451d593a56b45369e32fb818f337 3aec7c839e247954a38859fd71bee28c a1a8616e38e5f684fcb8d8c6d4df8143 7d6dd04be7630ff01735ea0e092a805a 6bf0f3417f775d2c2cd2160e449d45ae e4d3e153ce7f9904e76bc197b3a3ffc0 15e38eb29fb84898e7e684d25d4dcaf0 b31a3ebb83f3c23f92bdd7f1055f4a13 a11dd450220af960ca70272754aeb3c9 c0f67a9a45cac532fcb8d8c6d4df8143 eee7062babab62aa8930422448288ea fa853b92d9a5cb66168e1d639d85c126 7fa4f80f92b8e779eef2192b7bb521a4 3d26aa294ad1cabcfcb8d8c6d4df8143 c02a408b63a91d294cccbece4754c7cf d284b73d5983b60f51f77a6d7299806 15211f5ea7c7432686c701087a194026 fc5aa16de2be4b2b93411b5b3583c4d6 d450da2cf4d0b79bb20310112468976b 1b0ecf93a4a36a70f7b783634bf3f92f 7a67bb268436b3636a578f1b525d976c d00391a3bec2a9456a44fdd49dec8069 19fc4044912f5cc4869594a32151bfdf b75ab10d1235158ed91ade1c391e4016 d52bcf6a2c75ced5fcb8d8c6d4df8143 53ae95290cca57d430c35ecdb9dea035 e38e89e852fe924d957f81d76123f1a7 8d1178acdd04d633c35131da26f8061a 98c7c2542dddd40af24f994bad42f06e 76db5f1046bfcd97fcb8d8c6d4df8143 859182efd11b40669018dc7bde518d9 229b7e36459a9857ef3a2c64cef919d0 66defefd07a3fe4548eb521885c87e13 8b60bb548c0813a7e420612cf7bb547c 20118bc320eac59890c2e24416edfe5b e333f7f89b74575e9a5046bc3786ad19 3c3e36d1faa6c53c1f886eb96ca2682f cfaf30102d9b7cc6cd6d67789347621 1b35827236954b2bb6436276138aac1 a5b394e2c98f6233636c7e486232cac1 7e61de32ddbb59c89450c010f9b3ff4a 708aa847cb730f07fcb8d8c6d4df8143 a7b9dc38c80e86fbb13604bbce4eb6a8 caf2efbfc9ebf42ae068fd8aad8767f3 bcd32489ef6fc12d8f32b552c0a1567c 7fc85bf0b0989f864f3443b22038d340 6b7a76b841ad8bb3488017d48a7f7eb4 f91b13fe06141138fcb8d8c6d4df8143 4843b9c8523a4affc29d936f5ac7e23 97e63c1f813cb1926f43c7673a499bbc 94eae2316754482627d265f13671170a 1b957f2c258ed744b3c42e318f3affc 6cb3a2872d2c2646fcb8d8c6d4df8143 fed712ffbeff29defcb8d8c6d4df8143 67f6c0f40fc9216e8aaae3d020f5ddf8 4e3d1346e76084a2c1caa73a5e644b6 608db437f2aab3c13cedb1808e691a01 75cdbf96a597b57a29a42a0444436860 ef9e0709f535c549b3914c1351b16c4d 348fa2fd3af7dc0a4016a312c4d162ae 7264167cae71c90c72bce768f6d2af1c 80650d082f6d45fc53fa79783efbc3bf 12d44fd814bc9b40ec2a7a1f5fe7365d 20d36ce3148091c5764b5e62529f6d7e ed323758d0f61cfe6085a0a38e2f255 1edec15a9740c25edf85db41e3677c28 cbea72b8621f99703394926146371698 f567bc1dd416ebc9dcf2183c858e6e5 25bd069704996e073225afab722d9fd2 89622a50662e28d56c09b6371c58b533 fa3b05deceeddc26fcb8d8c6d4df8143 6af800e7bbdc5f21735ea0e092a805a d5400264679eac33ef3a2c64cef919d0 8be191f7e61673b13e3ed2a572e608c1 bece8f6d89e653e6fcb8d8c6d4df8143 8c0380a0d385c98145d451096984140d 421c9c7d606e0cbf26c27fcd604ee778 37be7d2937f7fd88fcb8d8c6d4df8143 2cdb96501ab2ccbf35836c728d324152 dacef14e18d54f3857d60a3bdfb4976c 67e03d2c2b7f6b19b38821f893bc10f9 88153eca8600ecf05b1ab0bf4891d200 4524946bc53f31a92d5c7a0e60b0c525 353224cca3fc3ea6e5da257192cf051 417039be1c492fd4212785a561e3d296 6d14f1e95641dbb329a42a0444436860 41c1e411592ecabcb7487183c0e206af 752a9fb2cf32fb5481e0c510e9bf91d1 d8b33b356591441f23d2ff62625c9fe7 66b98bb2b9d34431ec7cbf3284585a40 58e32cefd2f0ca13e938fdd9451c3206 9e0b193df5bf4f2097497273a66fca55 596ac8748f6c946efcb8d8c6d4df8143 9f0e6bc1fb0a97a6db493a050f0c45fc bafc295a6ffcb375c3d3652f80cdec64 636d72f06ebabbdf9e8cd846ef13776 255dd61372b3509a41657e31b569b105 670525c759c07ac71560641bf48464ff ede739cf0fdf5af9d49b2e04785f8492 f01cf64f05572ac4b509f4ddcfa8ca1 8bcbfeebef5df95fc664c3d4e2d59341 d2c124b8c6a888fedc7a10bd316015b2 573500f52762f0ea8485cf03cd00c621 a911474d0fa043e3cf004563556ddb36 ec0979097f7c811922a520e8315099fb 78f5bbde973fa96780b013c1c827c9b8 f4994cf967f3407ff47b2ae6b11d6f43 398c948f08b778a1fcb8d8c6d4df8143 bf2687bb57e94f4071d7520e3757f3e9 15fc5a4a342c00525412c66cb6f267da dadeb9844d9f0c00f6da603e92626bf9 5c324a7cdf6195a5303c85804d402599 d231a8b21aeeb7d78749901456352d5 1562318ff0c62163a488756a9c41f7e 27ed76ca359d6eaffcb8d8c6d4df8143 66a7a9a417660413e2364c65f912dcd4 dca5ccbc65594b4fcb8d8c6d4df8143 60fba8438739f3cfba9ea396e14c59f2 1e4fd4cc6fee7cb2fcb8d8c6d4df8143 b444be0623b2e237d73e51f8db3a696e ee3bf15041b96387fcb8d8c6d4df8143 91c55497aeec1fc55e29ce2c9d37b952 d7ceec3ad0cad8093164c8a6f66d85d8 d543465b35604aae1735ea0e092a805a 99f8c4a6b9ff1a2ab7f1f0dea571cede bf4b1a3597373ac0664b3b9b23ddfcbc e1ecd3a4734b91fffcb8d8c6d4df8143 de5799693fbddbe3c4560b8f156e749 169ee245f8ae927f5dc3653f8341633a cf3407cf42643d3184cd259bd328e92a a0a87d63af355b45615810b8eabca5b3 89f8c456a55c3386157d629c9921fc15 5bb0ad1e0c9432b2dc6493177a28df03 44820a27f86f13e7e420612cf7bb547c f0b6bf1a583cd99169d13a7b2498cca9 2324e8f0e334c218f7248d9dbed7a7b8 ca8e73b360017dfafcb8d8c6d4df8143 e7552c8c718a1a109f2349486c570dd4 ab02e202accb9b4b65b77a565916c7f bb7d710f4104d16b88e7662971dc736f adc8129076715686b3742b0325c8aa1b 7eaa7d0cadf48bbfa9bdc22a1e02e82 f672eccfe1739e962dcf15e1dea29cf0 dfd06ea82f5a5b324aeb986669a16017 be61621254d82a6ebb40b038e5e0b7f0 87107afb7ad115414b3c42e318f3affc 80ced01703281d8e87de7314a5215f9d 2af318d179f969aecbde89e0c48a01bf 85335cc8e6ac212a3834555ce6c51ffe f7c52d5d91e5ffbfbf82a0d508a096d3 86a5fae37549690cfcb8d8c6d4df8143 9cb61effca346d48eeed1ac073f42256 956ef7ea0d496de01735ea0e092a805a 8a6944062cbf8b25ef0a7c6e0ed55209 8e03bd383d8696a7ccca59c0649ee0d0 4ac2d95bbb9c03d1e5fc53e1eb2fc4a7 44b84b479d9f8ae7ce2b80886d544375 69762de7892483b64fa8d6439169bda4 9113ec0bd742c5c5e86e8111763264e c1d2b20435cbeea0c0028f3b08785d05 a21744a28956c93cc5a208307819a3a1 53d7272eee54bad2f841233486fac2b cbf2fd4e3b923f9ffcb8d8c6d4df8143 676ec374028a24db76e29c9c43bc7aa 21f7bf15d2f6a765bcde6f92ef1f7ee7 376c16f40c95e81429eb9d04ea723179 84d66f07cafdfbc4fcb8d8c6d4df8143 5516c456d95ec0df2de0bc4fc4d02dd6 3b15a4be5e248d114cc30865d6337b9c 27b2a1bb96fbd760316fa82a71600dfa e8568e17d0fc6418e6543556f230fe9c fb4043f7fb8257d8578d107c71db28ac e02e79e028662e9ffcb8d8c6d4df8143 869836fe379f585a732b621b679fbd70 715be273074283557062f2d72cde5c95 2e3679df6678e8776908456c5f4ff3f3 e7da3cd73ebd81146251354a8b1397eb 2522a20be5c204afa5534ff9c862888b 5e2d2a5b9a69125b23c3accd4496ea68 3889631e42a84b0f51f77a6d7299806 1112f253e122dc8273111597f45b8227 7bc039fffc79dec9e680aea9bdb841f9 cce6476ac521a1d130f6e0ede20c4525 fbcd17479bc96e0a899bad344dc01f2f d3e5c225e8ec17ece4a604577ef990de 47cd62ec53571be3276206fae5d3c473 367546484916da6275225719b7a8b341 ed54691cf655a8a3b3a8888e78d004b3 eeefddb3f2ee93dd49b2e04785f8492 e1891813cf904b3188e7efbf7ff736b7 923c324c530e9fc412060d1ff2024b3 e0577be012414515fcb8d8c6d4df8143 66fbe6533abfe75195b26656722dea64 3469cdf83a3cba1f35836c728d324152 78f85448752ae2963873cf6e670bb8b6 20af3e3a79e7023a6c342cf382162bc7 c263fec31c8d33874f51382fa3549a00 c2aa9948afc6d4ed39b3360f500ac52a a711c673d5b6a4b350075206bc274050 688d88d300429b7dcf78a76e06ee9b92 22a0864cef495771fcb8d8c6d4df8143 7bd642ba9f7cb683fcb8d8c6d4df8143 6c5b0451e99192cbd4bf7024dfa167d 2a05423b37f2620e1b17743c18fb63dc c58b04ebb038758ba866d377a1785e37 e9df996dd33c009bfcb8d8c6d4df8143 49647be2c7460c5b8749901456352d5 609dfe9367c0e64e2b520984c067934c 1165e8de3cee9f706314698551cd43b c7aadb7ac29ac778aaae3d020f5ddf8 48a5b451573920d44cb3aae7b27db2ba 3c756a2c1c62e73b7252c133a7e17d94 6138faeed623475b43ac09133d4c1d60 60272eb623298fd190a9ce3e4b15521e 8232dc35ac9ccfb016a2b5862518c93 32bf66766c1f33983466f97f37dccbde e0e365a2927a7a73bafad60030e6ab60 63ca3763b86aaa4daa29ca6a13991ec5 c28d9f943fbf806ca0f23466c3c25e2e a5fc64e1faa85794de03ab2a27ba7531 f56600b8cb2f94d64d8b0368afacc65 b10efcf01493c922e7e684d25d4dcaf0 78c87f00ebe9491e2cd2160e449d45ae e35009c75fb246453f02f5b8959142cc 13d5888a6598745f82bfcd34215ccfc7 9b34aba70145f08b3ba6f328e4cd62be b31bcdeaae689dd862af18ecbdb58c38 2a762ba822eef5fe5c7e2f94d3f5eaa7 774d99cb78b5b82e3a5e6305a3a7adee 98636fb562413a10dd999d2409f5212c a90fe01c3ef3ee30fcb8d8c6d4df8143 a26a9f9ddb5f345fcb8d8c6d4df8143 d21f149ace9ed2ffa3714990138052c2 380a312c4eede2eb72ce68571bfc4bb2 6a044fab6905fb1a145fa6babc33219e aff71b0d462342aa4bf6dad97590bf33 6c96c1bcd2579c259b12350e98805eb9 8338a18d589c26d21c648623457982d0 a5a31ea56d8fbe0a72ad95ccf7316565 748e643d7982fab3fbdebca9f6788597 fd074c0819b9934f73b8ea30c1700f67 13ec444752bd414bb01c58badc8bbc39 38f3a721c7ac21cb8a1a0260fe4e4cb9 74df8c15024e81f79f1a71e46bbde97c 511917ee5ee2f91649244b68aadec703 86bcb422f12d4d17446ab9475f488764 1f15e31094a7460aad5067eac75a07f7 2ed7e410931f984cd59517820ada1bea e86e6469000a7e7deb39e694585254c6 c11e3e763402346f22c3a2386a9dfbe9 94f9cf8754e2f080fcb8d8c6d4df8143 99ec967442fe35e46aea2f18ee404fd5 5656f1bb53d675ffcb8d8c6d4df8143 b3530cffd4a04deab641e19ecbf0e871 b6efb78876150d45c94b622f1207af2 ac2a766efbe869cdf51f77a6d7299806 3bc8edd5ab3a2ddafcb8d8c6d4df8143 2f2d4805ac5eb033e49675db0062ac74 ffc3e351b9ae77b0d42b9650f19dd425 32a196685d10bfcad7811c9daa943fef a90233920f619e03fcb8d8c6d4df8143 6dd3bf7b105e88e79d3154c451a33fc0 6faa72d18f52d7172cd2160e449d45ae c778a6ac6cf0c81d4904d89e9169817b be02ef97e47b86c34e3474b03483338 6c0b3b0c6bc6eb97862d7667d873e591 525109ea19096fe8eeee03ae21af2d39 99253484c463e9dd7688e67ac1793ffc 4cf4ca85d2685b9b98d5fc0473d00a1c 928505a660acfc20c7e400d2701a92d3 551bec14757bd4b27b79156a61ad4c01 f2f6fbeacda7cbecfcb8d8c6d4df8143 b2bdd202470b4166f3a29b1591515940 d357edb3b9ae47f230f6e0ede20c4525 3eb6c3bf89e5c9312569f5d050e29bc5 3101d2b22e21297ccff8db9efabb6c62 3e21ab6c6d82ec4e1509d7278de350d1 f77e6d8f251887e9fcb8d8c6d4df8143 a690290543a1b904cd5a7785cb8ad4 b1edea6e2974e1b35c935b78db2f5ec3 af93ccabac8d1aa9f4482a3d4ebf4782 92c74371acbdc4b1b8e1b99345a5afd4 bda58405e4e3319d809772d66d13ee02 80e9c1d6499b6a9689ab11a408196888 5115f9a3af3470ddfcb8d8c6d4df8143 e98c05f4cc8c7afcf648915c85184f8c e04e5a96efd77a6ed2f5c44a5922d7b9 f36cab1570442a83466f97f37dccbde 27e4369a1d6a5a2d490ad276cd2af3a4 886ff4f5cd90c6ad39b3360f500ac52a 18145f4b303c37f11c3739edd52fa3 5859f1dcc6e47322e7c7920f6a65a54d b75464a7a5546b39e9ad5e44c87685c0 8c4ca1f645def5efd5cb6d178687b980 f7495b2e74c906b5922ab3cc7ca1ae2c 441726d957d718a137b2bb75885cfc44 e35c7cd183a6de4a8bd5065c89cb7063 58d8496e15d6945bc562b0b258e20992 e8c75d7c6f151e2b3d23022ce06f940d 1b9b6f1ddf363e0e8b424343280aeccb 96b71e055f40cfc21735ea0e092a805a ccd12ea2362ef81d8bb3deb7fab7c9b7 d47f0a026f66e2f24b3c42e318f3affc 66f7a541e0459b06fcb8d8c6d4df8143 42cd4d8cfa141d4d374110224c1c4eb0 9cfefdc1e63a3c2535836c728d324152 297d929269bb62da43fdcbcacbbed64c e4d491fdfd795a9339de811989288fab 199273d17414e77ca553fc23769e6051 2f345ba66e683c2bc5a208307819a3a1 f0131187d57b6390fcb8d8c6d4df8143 9c11cbb88d574584c4f1f36666bc4b4a fbd59db93e38bdafc8687ff9b0b4e4ac f2038cb9bb9438a6c790d7efcdfb5239 551f8026ff0917c781a172d69c52a28a ae37dd444b0813b8fcb8d8c6d4df8143 a48ee5668d042342eef5d83b671bb264 1eca42abff644eee57a48b78ff77644d cd1d426e08bcbe3e5a4e392b59939d74 d87a2d766579f15e38b27a25d1336579 873aad4a222d541a91c2792fcdc1ca8 1e0bf9701623f02014038d588fd1342f bb3f359cbcb046a8d24a4ba64e02f65e 9fbe081afc5868ca5c9ed170ce1aefed c41293c84dfc509cfcb8d8c6d4df8143 2a9cc4404bf738302a278ff7f085c260 4b43b17b960930af53b1634376cbfb93 75cd24d6b485e9e01735ea0e092a805a 43deffcae6d595f3fcb8d8c6d4df8143 dbe5479ef7f6c752eb1f13e2de7cd7d8 ce798635ececbffd5ac3a75efa13522c 4bca3194ec4308a837b2bb75885cfc44 46aaf3bca1d0a3e776e9713f57a5fcb6 b4f7f20fe212e633c14d5c159bab8297 4c757abf44253f8360ad823977adaa23 200fe239e1eac6a2651636b7e802cd3e 78ccf7d2ee6d5e34fcb8d8c6d4df8143 441d06d5a657a5dfe7ae87d20a4fdaa5 cb4f1fc93f5047e1ecd8a55986a51a84 df22225de54de36d71d7520e3757f3e9 701dd0ee2f3c86502feae54a926ce14f fb279afc9faba7ec36d735c5e1c16d13 ec639d4850ba9aa6fcb8d8c6d4df8143 66cec0a2ab63d9101b6c273f8ff0e8b6 ef40f27470d99d6fcb8d8c6d4df8143 2a5e2e5ec5eb986385bf3590978fc71f 64a45d75c1c5bad6f51f77a6d7299806 28b50bd5aaee8c4e7384352a7758c897 9f47c287c921e4b429eb9d04ea723179 53af1ea051d78e799904d527fb5485ad 4604090264ab99ba6c1400a7733f9e62 bf659a08301f20f2ac94db38cec7b356 84f3f1dec806b1df82e8c06333eee87 3993a9c841dbc35061294c3e9dd88196 bb0ab5c460ddbd65ef3a269219210793 fd2f5320fbfbc88a47c71c6d277c802d 75c15dd98de4ff17bd4bf7024dfa167d 3533b9eff82f2f9cf22140029982c6f4 41c5a45c63f07f46c1c74fb098c415cf ef612752f6192e8d29eb9d04ea723179 1ac102f4a452771521e935c3c465f9f e44408513c20d08f37aef4415914e1d0 d6ebf710756c5839f8d3a35c7c106515 79041f47579a9e3f3c8d0fdfb1cc2535 16249c6e2a76400dfcb8d8c6d4df8143 90c323c4d6288aaabb40b038e5e0b7f0 69222648c3e3ed986c348bc129690193 8fdfdb325c5239e798e0d1738edd4f19 2ee70ee71a0b7caeb15194162f658e87 629f9f656b05ee62ac280f441d6450c6 112058b3f8c94177d2dba55bc7acf0bc c8ba5b8ad05d553acd017fc6c40a6bea 964d3a853d6e5a642b1c313558664cae b54f6d30b6edd7f1579cea75b38cb7ce 6e3da73f16586dc56bd3645c59279a16 6778917189e50370a894da3d4a669d7b da5db67a2385d5e8da9baff5f5368802 ebd783f677be6825b5495e8609a528b6 538dfee2a9b520962301d516d0cd4456 86d556273aa5075aaa660c42e675c161 1e9a36b3360f23388962005ce0e986db d748241313e5664696a3517f50eeb9f4 f392dbd90200bd7dc77f357adbe5c980 8913c3dff1651a316a3d00506cb9ed19 9326c0efeda12e4642f42b7e6beeed8 594b2fcea3d15eb4fcb8d8c6d4df8143 185b2436cc0404096ef2faffa907bc32 aad04909cf72df68bd038489dd82490c 47adca3b217160d4b0957d845ac33749 1b35500ce44ae7e344b6d51c32a5873f a2ff853cea4e3ff5bddb797cbb74c fafef4866d1a74f3fcb8d8c6d4df8143 1c7f8ad295bcc3795a233e989a47d3aa e8e4f730f9bb892a85245de9410e292e 914a91528ef40e7bf7248d9dbed7a7b8 d1948365bbed9de270bb6bcb670ecdf5 904f90ab5c4d408b313c6de30934784 5b4856005da0ab61d18826cccc613430 4c1912cae9d53594fc26f53456c58834 7ec821d5d8bd9f17d4aea4231844b26b dccb4da9805924c23466f97f37dccbde 8a9ef07176e60ceffcb8d8c6d4df8143 88ea703e063e715d6770da39e2737f95 bfc4cae9fc343792fcb8d8c6d4df8143 53685a90516a12c5f51fa0238791f5dc bc4db3c90716f7ede76bc197b3a3ffc0 38c6b87674e80ee8515596bfc4f5c627 5c9595253f292e154ce3bd4e27d8e100 f8ca4809b68d1ad6157d629c9921fc15 8b674da68033700333d93f57729688db e34d17542b26773a84aed1cd93567b2 c78a8f317896b79f51f77a6d7299806 40c778a9ff366c2bf36ea1eb6542fe7e be60fdf6e4c9e45fdac42bdc1d2df4a3 e4201614cb3590e41735ea0e092a805a 2071651fb8407e4314038d588fd1342f 9d340cb226868e39ce4f274577283b16 ac1e6d46bfff76a664b3b9b23ddfcbc 7a9872f1e0cefafd7d8864caa856253b e569a4ed12ba90c220331d4c3b7d944e ad7dbc3a78d37b4c8616812464c86290 6e43d4b4829b66d06fa63795f94c4d8c e138b41985e7382cfcb8d8c6d4df8143 9f2993a2f6cea208d3e2561755f455b9 5077728a780b5873f8d6a4359d6a181b 2f02e4f875d651b3c066b9622c005c53 a0963082bcabc46b762a4fefad9c8461 85dfdbe562059fa058b65cbe3be2c45c a04e341e7dc206edfe10244ee697dc96 f274cbff23bda61a85024815e816c655 4ed37408e5bb257ee356f23093e95c53 206ef4c97f50caa4a570c6c691c987a8 31ddb926f7e196a7fcb8d8c6d4df8143 72d5a2931dc1c913edb30e9b97600303 120f940d4c32c48df51f77a6d7299806 fce6b0ca06f8a565b45df535caecae62 e6d62a37e187bde599284d844aba7576 74dff8f0a865368b4a8e02787dff638e 6b29d8827f1705b0eef5d83b671bb264 fff6acd5b543ae02a9bdc22a1e02e82 eb8466da51199e0ecc4c445068949125 6b9f509d91eeef913efeda73d60343e4 8e0f611116a8df69fc9ae1e9c70f67b1 fb76c5cd78d3c9deea3655638ad668b9 6fbc93ef5b90b06ffcb8d8c6d4df8143 eb37d11948d7b4ffe030fd2fa0608452 43989558d13b1186dccf149c7b4065e e515076a09191d075fa6da97b9eb4a2f c2f055fac2817b263cd6abbbeca4e2ad 9a976020602ee60b5fc8f4c1fc00b380 308bd35d5f52de4e57b8f616df7adf9a be5b76136b37205738e43095496b061 bf3e47e405833ab715655d3195f5022b a3c4ce97b725fc2c5f57ce7e4ba40e2c ca4607a427a5aa127715096cb6ba15f2 db447b84e1a8d8d6ba5342d638d0c267 df31746077d19233448e1c9934d83117 efc262f7c8bc9fe66b1291e0cfc0c93d 54f858f74a0eb7d5ee11949398abce38 4d61bb37c5edb2903f7bd0762436c545 380d313b3c277f5e1735ea0e092a805a b7a6c5c6c27273b3253cb5b81530269b 9627da26edc003e7d49b2e04785f8492 70c523d337585b9743dbb6421d614c0d 933176941f95f833fcb8d8c6d4df8143 16258409337ee2914a200f5f1797d729 a9d554c5d9d09405fcb8d8c6d4df8143 c5d999b26cc9ba381735ea0e092a805a a6ae06e879fcaa019e26fe04e3dd51db 6d5d4e506d6630b193528e10aeca0aae ea8eb3f3d917d61850c421917af4a474 13c361b7b046fe9f35b0d1c9f81f0b6c 86ae11f8d3079f0869e321f074c1ab85 8f2eec27fa65b6b7ef76898f881b76a e94273de8e52f9f896a3517f50eeb9f4 5eefe57de9ad8b6114038d588fd1342f c7507804ba5ceca79573a52ffe6bb4cc b8c6a482bc4d5da6fcb8d8c6d4df8143 176c8eee2d45e5d0535a7b6b7a43b6cd c816540b4e0eacd57697d9c3588bbfc5 387429f609793f9dba5342d638d0c267 e365a641480635d330c09d86acf3d5c1 55eea74e6f73173b49904d779af64a6e aea8305fcfd8a1d2ff0b82a28078fd3 caeabb766b3b9c67d3c1dc91e223304c 447a8ab0523dde411936a2870d820ad3 b89c79537ead39c1cbf3dda885c64a76 9c2a936a664a59823c10371ef1aaa57c 71090d1b424b4b4b29eb9d04ea723179 75db7c2c9adbf2bfae18328edc91fc39 605ddd207eed0d81414aaa1b9210e59a a049ad0f20953a144cc30865d6337b9c 26cdef36773542454d1e14997920b517 8872dceb7ba9f34c140406de8e63ea3a d6c6665366854e6abec99d5b4657d5b1 5d265be0ec25af3a7f772a7ed7ffb61 5489ecdeac5c1cfb38bc5dac9ac556bb 13daa0657f5c3e32cb0c0d433974e32b 36a1e900d1b4d4b287b2013bc93e747c df4e44114543e805fcb8d8c6d4df8143 42fa87cd27edca9efcb8d8c6d4df8143 2d9224be8cc6fdaa1050b055aafa6fb8 13badfc11837c16cc01e0156f398b4d2 ef4478daba21f2d49244b68aadec703 f6425a421a497aad6cc679ef84e06ad6 8fe1766aa6997b0f899bad344dc01f2f ec876529d01d4df490ad276cd2af3a4 9b579915b883bea042a65b86449bc7bf f0421826cd511f401592f292ab531da8 eca8e4d9645271fa37b2bb75885cfc44 9ef7ccb91a25dc988cc413950b617e8f 266ca6ba2582dd9dbc24b3e693083ca4 8064580d3a225366ecbab50f1720e223 463a3ee50280fddafcb8d8c6d4df8143 e0aa085dfdb0ac03ef3a2c64cef919d0 2140c6a8b4648d84f3443b22038d340 9d1e04bd3df11256bef045a510a22fbb f111f0e0c6c3434f30f6e0ede20c4525 544f2afb57934bbeffb8dd272bf2a810 a51f72154f09a2f926d49ab26d3c4ce6 d54b55ff9b0923c12cd2160e449d45ae 6f984fe4627c8333752653a04e5ed7ed 20c9d1713fbc0925c35131da26f8061a 9023acca19d27f3fd49b2e04785f8492 571137d6378372c5fcb8d8c6d4df8143 dac3843c8f77b34362a510b8f97c658e 68b79b143cb1538c3087f84b199fd297 8522fb13bfa443d33cabd62faf4bd0f0 7e5dc9256f9600d9fcb8d8c6d4df8143 e8927203fbdbe320c02170c33e00ea64 571027d7f9639bfa7d7103fc1114c50f 7a1d06ba4fec22e8dac42bdc1d2df4a3 fbb4a4faa8f2faedd661ff085a0f14b7 8843ee2b220a702e5dac14d8f50c13f3 2156df35753fc26c6e285dd101afcb51 6750d3745d49f7ad3c1ac1040256359a d82a17b1f646e95dfcb8d8c6d4df8143 ea02a7933158caecfcb8d8c6d4df8143 6e705a94eb0a7210e0ebca47533963a7 27623aecfdae2d887eaeab1f0c9120b7 bd0bbdadcd0b9fca7d57a0513a353be5 d98c3d6304228f36d3cb982c5a53c2d2 5116452b7826dfd92548598e855f0844 21a4556c02678fd7e59f529cd1b6faa8 d153ae6d65b31e00fcb8d8c6d4df8143 6a11bbf62bfb5a5a59f8e31ca87c470e 4d6ea3aabaf02bcd29c39f613cc72411 a8d45280f2ac4e7190c926f4231a7285 60d1a7bf1e70c526befa8f2022732db1 7260ad08488a3156f78e32cea3be35af cf0c13fb0e57bad9cb02404e1e21ec1 9b5d13550ee386e686c0096e326e950a 395701deeb1b2bfd48657c771cfae685 d6fb6984306d5197e96d94a67d9df99f 79af7fbe587692a583768a4ac1607d73 71c9e25ec4fe08cbf7454c09d6230a4d f40c7b19234b07c2c8687ff9b0b4e4ac fc6ca834ee897c2be13f009579d33764 bb04811d84ec072130cc41b666fd9890 edce64335e42ac2f58452382da1a79f3 6999ab054bc900d1868fb986bc092533 7c8d71334a6bbe8eb3d57d6094a92e4e 8e78283cdb07db1fb33cda5c8e604e7a e12e898cceec4e23f51f77a6d7299806 2f216bc398d3da98cddf96969ede3013 81bbe86e17196c2fd0db1e44373ee2d4 4b7ba911d5504501b320860840f0eeef 934981825fbc4e14ff458e602ebccbb0 c8f5bf57a3215cbe9a6c869309041adb 574e0de3cea53dd472b623d6378b1581 925fe53d5075145981a172d69c52a28a 96837f1ee184d9a4522f1ade738c024a ca5a19cc0a5f34273b8ea30c1700f67 1f80e265e6a038ad9c5c74ff620f967b 6d52f0b6141dee194a200f5f1797d729 792c3698dc7d200144175b4dddf5be08 266d6b136cba49504b3c42e318f3affc e02cc9c4cac285419cb07ecb5b4102 b668df78adedbd1735ea0e092a805a d4331a5810e36726b8c3db3876404c90 51634562e4cbb4be27c4ca11e0316b1b 41cc8b1669429bf92a7d46e74f08da70 4924f75c6be38334f51f77a6d7299806 ada0e305757901e589daba250d5b5a5c 35b23397ce08256e847d4e46a1f9f05 9a9aa982c0667012ce11183544874734 58588e4f7c57007e11bd92e9690e7fc2 f79cd66d0a369bdb29a42a0444436860 9ea81b2f43dca29c5412c66cb6f267da 53d1324d1e85fd37c35131da26f8061a e655d36c391a57c156ca893ec1044405 25f1a1563f38912250f0b0248b30425 fcd263dc05862ad1bec3353c29751fdf c61d6c246dde340462a510b8f97c658e 39fcaf51940333b46ab88e9b8b75d248 f0b19b0258e8f551d5cb6d178687b980 3fef4c8dca9dd0e0dd4763fce8a9da20 edd398530cff676282bfcd34215ccfc7 2d3c98d5d85f22a127babbd370e736b 9dd9e38efea22f529a60d6ab40898d d0018775e9f2d109fcb8d8c6d4df8143 d3e339b83170d89629a60d6ab40898d de93987085cf4dcc5208aab875b932bc 1a5ebc8575a4e5edcc901650bbbbb0b5 f41b9c3cb9243780dce4754e673446ce ddeb5d944c128f78b0957d845ac33749 163fb10d7f6f09fcf1c7a32d97b27a4f d982697f8c20b769aec118775e1a3eb4 5eb0e18b12f4940d6f97b7cf7ff5d41 c3277019e57251cfb784faac204319d9 b9d353635f7e1134e95ee7559a2a873b 9c4a3637ca2ce09d4454439c22a43db6 2ab4c7882329710f29a42a0444436860 5d693f7115e5ae984e9836419f09cc52 54ad0800a524a96ee039576a17a0737d f64e567b44e550c0fcb8d8c6d4df8143 4f3f01e4b17d018ddaaf0f74e020d2dc 69baf1ded62a0259970e9f7b51f4efe 4078ba4cad280d72b8b431083b6191e2 fa6b1702f7c1fa191b17743c18fb63dc e89a02d4a6cc95f3fcb8d8c6d4df8143 989a70bcea69bb4372a02c2db7bf58cd 94fdbb748526dae4ea2d70ab68cd1d2 b4aeed70a21518fefcb8d8c6d4df8143 d36d4552fe1290ee90c2e24416edfe5b fb8be091d77118ab90fd203f931c9af5 e293003f297e155624d1b7c6bfe44fcc d08941d91a52d4ca411abfe83236ee8a 2ac3425dd13590ef1f9097f35cf9fde9 98c6cea5f2d3ea28fcb8d8c6d4df8143 8e8f964be5bea1068616812464c86290 13c127aad3fc8e6af51fa0238791f5dc bad7893ac164cc44a43934c3f4e340d5 ff22bf19e2ef19d12f7ffc95c59dca52 e120efa70ef8efa71ce05d96d33be415 63e9be096e29681829a42a0444436860 a7f25e662466f59dfcb8d8c6d4df8143 6e268cddf895c20ffcb8d8c6d4df8143 1c9283c95c8bddd5efacb264ebf1ec75 7d4d715c4812e42cc0f8577a553db1b0 f6a7d85ccca5e5e34a6ecce2eeb45768 9936875de81346fafcb8d8c6d4df8143 1feb0beac92a26bcb0aa15078ea6f391 c961e64a930680bb900a91cbf836390b cf9987efe529a5c538b27a25d1336579 7e5b5fa94575f873c2e0b170f2ad8bc 707a1c16fe9ba4fa60a25ec0f32e89e3 aab336a18bb4e51fcd4910413c446d9 cfebf5d2a0382ee3fcb8d8c6d4df8143 5f9edd0b9cdc77ded49b2e04785f8492 67b0ef08720310aa14f846b7e32e76c4 55f607d043cb587d5c10b08ea69398c3 d59202f9d1504c8cc65f1ed6a348c8a9 6b0664c9fb1a4fd1fcb8d8c6d4df8143 9000cdad54cd0285e6597d391ab6fcc1 cf280956401024fe92225eae846f578f 9358ffb1bae027166aea2f18ee404fd5 357c0ff8a3ddddf5902078d0d905735b edcadf508090e17bfcb8d8c6d4df8143 e43996a9154a48e0db039d8689a74349 ca65934efe289843df446319d65b9318 6c90f92219fd4ba74719088c8e42c6ab bc5f2f93922aeb65fcb8d8c6d4df8143 d6ae7a5542800519fcb8d8c6d4df8143 a1d2f39cb17540e8988abef1fd117e7 dba95c4ca95048982d9c07d3b9171829 5f22096b25995531fcb8d8c6d4df8143 6be148a3e219dc68e6597d391ab6fcc1 fc8345dacde827e376e9713f57a5fcb6 b31c246d2341429f76c2a9de5c96f76 cf280bbec8017c26655715f3c8480da5 da4fe1c3d5b1eb6ab2b4f8bf5db83688 ed6f57c8e550c60d39adae6ec56b2451 7527ef1898765c09fcb8d8c6d4df8143 b384676ddfb3b657fcb8d8c6d4df8143 e69b661bb90d7e9c9dcf2183c858e6e5 94ca5c31d2ba70f42cd2160e449d45ae 1a963b28c5520cc737b2bb75885cfc44 3ca8da93aff926a4edd822c7d5ea26ed 6f5b104f7c1cb4bc636c7e486232cac1 d3ca8a5d2e8c8ba4a320e34dad7c78bd e6c64600128ca2c176e9713f57a5fcb6 5f24434ac22353708749901456352d5 e6b34319c9ce57258d6a77b750ad3e43 60d7d0e9c45368c282db9fca4b68095 28210d460a79e323322123314d92e1d 9b876bb9de59e5e9aceb781f079a299 44eb1db902d44daa30f6e0ede20c4525 3259e491870a8c49eef5d83b671bb264 221e2caf85f9bc5a2f9aa70de681f2c4 84b093611cca35f86f104b4f395219ec da09a8c73054e9220ca3aeb14e36a45 de063371e5ef119cfcb8d8c6d4df8143 8e2c822e2a316fa04f3443b22038d340 5f865b98b4be6abf35836c728d324152 3fb06dd95ac94436f51f77a6d7299806 a2c9d00ed67862af2c528d33bca1ac2 a415a0bc88904b24ed56e40d2df47c3 9a447967a9fb5938bb3deb7fab7c9b7 7b39100755e9578799284d844aba7576 c9c2e5fc4d00db3acd99cc18cb18bf34 baffbaa9a9338f331735ea0e092a805a 7ea1864f38bc326696a3517f50eeb9f4 8b7ee8229a579ee135836c728d324152 e20889cbe2d917787d616ef0c11d6a7f 6c5d68e495c1f0a4d42b9650f19dd425 c20ca2a29975866cbc7ea0c51211251 5fba90e6e30b503461bfbba8a5defb02 790931b57e9513bf661713a114fc5367 d12558a4b1dec5ab37b2bb75885cfc44 cc643d2e5b7a46f5809222e4341a7d65 b0a3cf1e09f7a3591c1ef519b9196b63 ff1f829e2d6ff0d4fcb8d8c6d4df8143 f5a121812ce16ed2578f5640449b6f5 9c62735cc43add358f63636e145483fb 6d15af6141ea7c918bb3deb7fab7c9b7 44bcb1ec762af23b8880edc6251fa529 981e7c99ee1fbf91fcb8d8c6d4df8143 f34d9842b68f0b59fcb8d8c6d4df8143 4e0aabe8a65ddc43e019184dd4eea7e1 a1db02b6b7264b6d1cf9f632ab9ad62b 121286f843ab37f71735ea0e092a805a 2070e39377140bdd7f32712aef0efc5a a3c6ef6078045515ea9f23f235ccc6 367773a008b63a2c5208aab875b932bc 154c35bf29fa227df51f77a6d7299806 5b12386df80fe8b0664b3b9b23ddfcbc abd8a95ebe132c58cf004563556ddb36 ea235afbbaa6fcccf32735686fcd8ec8 a89562207e0d50a6704c1b723fefce78 8f5347fce0d9b517cac7c8ef7fe2392d 37aac1913201b058c02170c33e00ea64 5f0c4dd6cfa0def2e59f529cd1b6faa8 9459660f359235abd9010e2a1af5e34e a2fb35f872225ab2f6cbdab9ae1f93de 9534d5751fd1ed574cc30865d6337b9c a6413f422f4ef630fecfeea7038369e1 e97ef0ba839e1e915412c66cb6f267da 1bb78fe58e75596d9f42325587eab087 2e06c6e29aa90245532e8683617554c4 816bafd4dd0a04756da1275102abcdb1 a4f6213e0b627da55637847f2942f876 e8006513d5f46d79e738f481f8560d58 aad5c7256a7c6ba92a4d67a8ec314d2a d2ff6b9d63c65ab71735ea0e092a805a 107b8c870eade2481735ea0e092a805a 7e4905eb4670c6df2f939979b0dbf5d5 79bba57a00789023febdb1f263373824 eedd40c0191a90a5cbde89e0c48a01bf 181d2b693d7ab89457a48b78ff77644d e6cd04818644ee6f23acb241f0917910 8edb515a3e77afc4a8737fcf23389014 18ed152bad2c123b4b3c42e318f3affc 98d0f886ae05db5af54f0f3959ecff67 a54ea55a07b96a237b2bb75885cfc44 e959384247c0dfbe1e18a354bfd56290 a5bfb9a3571e7e86e59f529cd1b6faa8 a8d6e75a7d2712f3fcb8d8c6d4df8143 45a2e2773a905744d5c91bd67a7ae42a 6ea3addd99f0106b77981b941eb4f5d1 8261f96cc33ddb264a7f20ad39e7a642 e21f21744e65eb1a4ab1b242068f86fb 4b031808cc2b126243dbb6421d614c0d db759b73923a7e36b9df6a8c2c09592 4f1199474ab8c9b240cd51e913c7ba8a 6faffa042190494a3def89b32cef8e45 540335c2788125cbc9dd845c88786daa 89ad10075443cc8ece868a9ece283694 a90fa89d0cb8ec989cd3f9e8648111d1 aa381aff183b1427b7d9d23574a480ae 342ea0134b504918cf5a37a70014c623 44cb50f7614a4574d09ae058ff1abff8 5aefcf6b38e180f06df11193c72a632e c0644ddc5cac342b565ae30b0a8151d8 878d76c9657bec71fa58f9bd5c78b9e4 266b5e8e78e4c0dfb82cf928f6ed5338 8cb3f83d6ca1a4849364e552d5e4060f 6c33f42a0f97360143dbb6421d614c0d 9749404078fe4a8b6afaa22adc38077c 561853e6377361196afaa22adc38077c 6936b0f0e7c88e3bdc22f557e01eba14 41fce4197aad78f76fab5a5e55726ee7 b88ca09d13a5a472e3e80050b31d1851 77fb025b8a2314787eaeab1f0c9120b7 26bb7229b024a8549b0c8289d51d981b 9cf29c3de0cf127730f6e0ede20c4525 980e88a168a94790899bad344dc01f2f 366b8a4c8e38961597910e2efc6028df e2e7f45670fc5e369a6c869309041adb 6dcbc7efc9369de386a5dcc6ebde687f c904c93a0a1739e5f51f77a6d7299806 c05273997fd65e7b88e7662971dc736f e1916a904163748e8cc413950b617e8f 3ef55697cf7f68061173b43d09e96094 7b41e8307e85ab0b87e834be7739917e 5bbe3658e49eece0b49beb995c4209b8 d1b15263933da857784a45ea6efa1d77 d91cf049fa961ccb59f8e31ca87c470e e993492372fce761cb3a30f2c37c38a6 9150920591733fae0fa444666ebe22d b5a223ea93f39c2c961b70a6f96df2a4 97c26d66399ecdc973b8ea30c1700f67 cec552e824883875490ad276cd2af3a4 dc04781fbec1e188b1baefce5cfff2fa de26f9660d34449f6838f5d4fcdeb579 5c25916b55fbe4ca29695ec09b98af5 9d66a6faebd46b1d68661782af60b711 aecfc0a531b67a478b424343280aeccb 8464de18cd5d14e138435fc2a8dffe1b d582dce8cd58bc57899bad344dc01f2f 2fa7dbc66467235e2102429c788ba90 6bd7a0abc6f77368b0cf606cb698fa08 e86bed66672425464492223278b0e937 940a5e53f69e193ff42a90fe4baf4591 d3194dd3e07881828f58d8b19de93f99 c83f19fefc2c06593e22d791db24e31c 5ed0d3a50d9d77dcf1dc60fdf1e64165 b66524f44170023ff7248d9dbed7a7b8 646031cc994df3be11fd25b4ef1afe87 8c5f6d5f0ad51f1a45c8b1285cb15c2c 30fd90087f12d6ddb3a010e5a9dcf3a8 81e42a3f9e13e1e52beec56b24479ed1 99688a2668fe1fa3cf004563556ddb36 366a93bce1f6f524eaf14273fa406ffc b1dc9ca886ac0cabb924fe739b83941e 418a6ed14b4571daa5af58528d00e4fc e94644a89151a426876b50fc31ccedf9 42e6823a1ad23819182816640e3b1915 eefbd20231e62d535c10b08ea69398c3 6b9e4403230a162b54fb5025c749b481 62ab9c2f7b826fbcb910025244eec99a 110b426397c707bdc9c869210ebfd6b0 ed1de19103e97b74c30ba10ebbf8ea21 bfa83d8f88e91d3fed83d50637042c60 b479c49366c4d5def2cdf09737c19aad 6bb38bc6fdb6adc359c5c7ba83ec931a 437b5e12cf1b8771146f6ae9394828b0 4865be9773c699bd2fadb0a8dd9104b7 17b083510f14982b7eaeab1f0c9120b7 28186fa2690df5daefe905a3f9856df5 102273fdf8d1b90041fbc1e2da054acb 627ed898c49543594c64af119029e57c 6b8790947a71e9a9bc5996932c1238cd 454b7345c01c404b6d0fc9460109eda7 bac7b2c006c9cff76739a7caa0c577bd 63da6d6aff4d14789bc41a35200a3af1 ca6c2a23c86be64e2b93fb2743876c57 3f22e6719decb1bb3a9ec79b9c5da99b 608b5df0d5946c68400789f7122dfdab 763ceeaa4ce2ce1d6afaa22adc38077c b401155fbc54313330f6e0ede20c4525 a34db84654a9685f54386f3e4b944407 b9a8cb27dbbcdb2a404a436d0f18c82a 1845801e19ac5c22683869a26110a529 c05cc9636722504688e7662971dc736f 892900c66731d9c473ab7b7128d466a2 22ca1d5fbd8e6eac7b79156a61ad4c01 2fc19897a2f384ebc77d45d65dc3714 d1aed86c38d9ea6761462fc0fa9b0bb4 94f4c42b6db62c9688e7662971dc736f 7474deb91f55a63840719e09f7e71f01 2768a3ebfde6410dcdfc3ede082b8a07 bb53a3c6ac9cbd386fa63795f94c4d8c 44d1dac026839e25f690049a092c5efc 74799fccd1636ce4df6cfab91d65bb91 a9ed31fba7eacd42f51f77a6d7299806 c2378f62797cbcb26a5e440d54e375dc 9c3646d9db630e1d6bab719bf4ec73ef cec61b6fb378925e498725b9a1405ebb b000d66b8f78ab20cfdfe3f21f42a111 e9f5e9f6f8d54caae455de02837313a6 dfb6553d8e04cbaae1263552aa9a2d35 8c410dce9de0c632ecb14096838a20c5 1c2327fed3930660177f2a3a0c71fbcd 91d0d5301653c3b33da8556a622a2ae1 64fe64c30ac05282443f70ad172f4dd5 bad4a1e98a6111f7db48c721db3fba4 302c3b1ea1a86a1ed2da3773f06dbf7 19654d8fe7090a887eaeab1f0c9120b7 5f1dec078cee0f78c580fdeb5460f6d6 f842fd7369833b91b7e3a72c32cb38c ba3f51c0e1e0adef4cc30865d6337b9c 71c61e41a85671c91b82f1530fe53352 ad17118799f11952a3721d780ca17da2 9de2685230d41d58c397356311cbeea4 26ce3db3122afe74a5f600ed2cf472ac af3d58dc258e0fe06ef604d255267aae 2b8dbd2f75503fb0c29700c28ff4f50b ab53b6e7b2f87cb5c1935c9110af1bff e78c5337a56dca56bd6e55f88e701c4 ae25da30c4293fcf230584014222e685 ef45c648fe3b0dde8449e0b8dd14796b 2269f268b32b40b35fc8f4c1fc00b380 b45b40ea1c3a813235836c728d324152 59e852f315216f95ba9df3ea0397b1a6 1129a07c75f5a709cf004563556ddb36 d6d7fb290b69e985ee2b478fec745c0a 5383c9b60d5b66a2d22730b0728b2fc9 ca75df76115441abc516ff01c2593ee9 4aee1567027d9dd14357a62465045ec4 8e9c28fc5813a5bdcf004563556ddb36 817c0b1b85437923e7321f25048c6142 fd26f566fe08c3dac64d4b10f9dc65a 17fb3b85fb6bf1d74888a07f79e95b66 a1d2540e0ca159ec0735e7fd8e163ce 63fc809815b9639de7c7920f6a65a54d f9ee021d829cb2ba1cff7132ce500fbb 98f1dd4a250a906fb5fd9907631a04b7 914a876b24bea577e97426e55fb77981 3bd57e05db01e224e7e684d25d4dcaf0 7092dd68172560f410edd100dffd8d85 d9adf06b7288f3cbac520a24f902dbdd 6de220e49cf87c6bb15194162f658e87 713fa0e1076c99c1763bbfff01efee31 2f972bfe152e4c23f36ea1eb6542fe7e a87825df690f900c408d050f12518231 a5423069e30181a019655a581ade300e 4f62263f7bb10280a5f600ed2cf472ac e474916f1ee1635e0bc0e32d71e297 40bbb4b123d9df2028c187222995b2b5 5f4bc8ad5a1a0dd4cccbece4754c7cf 87d8b99b8a43e2f930f6e0ede20c4525 ec01e8b79f2d07df784a45ea6efa1d77 66acf7f6883db6a377b9297f3055210 2b7eaa54eba94f34502b0796fdf972 52284fc0b5822495ce140b3448f2e640 57e53cf314a173f835836c728d324152 369555d5aca3e7e65a31d91ec836a511 6512e3a8e6566fd0cf004563556ddb36 1c6701a695ba1b8228eb8d149efa4062 762b4e2cbb8e643790c2e24416edfe5b 5e4f40ec0a77cd1e876b399a99a15c0f 8006e3cb3ba934a05b977412e02c412c 252152593d97aabfd5f1d0bcb81c89ec 54d9556d51287bb470a43c2d978e502e 368188e7a9b9e1d3c24c2251620b1cc4 98ae07e021f3227711d89826bd8e0670 b5c4331e5896bcec1119ad686ed3f611 5f943996d99dcf59726dbbf7bc5e4df3 37f318fc52f4ae333f534d0cf4cbfb4f ab7895189ef13e754f3443b22038d340 cb614975be6370dcb6b7592323488fab d6a5a84cc689a2bd620365f6656fe3 92bdae8c11323fc518df0876cc6aa6ac 273314626729b1e973222d877df1ecac 1e0f7ff92144792ac3ab13a0474803d5 9a0fc544ab771054b45df535caecae62 72b73a861b7626dcc8745da32e9100ab 5aeb223a91320c39edd4171cd40b3feb 67e18db74dfcf7f418df0876cc6aa6ac 7a892d6b3951124cf004563556ddb36 64f61c9c81e3eb7b8aaae3d020f5ddf8 534c7e2c9495d7987b6fd5468f603b31 a0858fbc08ec5e34e7e684d25d4dcaf0 86f8f2c064c79e6cb0c0d433974e32b 8b4cb57c4d21a84d6af65e5aa19d2e8c d7a10c837316de2f3ca265f557f5dc3e 14656fe47266b0eb88e7662971dc736f 2e18c1bd23e4d89dbb6d3a4b6666d91 b82e5c6e1133aafedf6cfab91d65bb91 6baa8b21a080da186fa63795f94c4d8c 43fce04e5e4e22bbba9ea396e14c59f2 26316fabe129210317fad902853ecfd7 d378c508566d68cb48d2aef7552b65e3 19acda4f74d91d908351668cf609c7df a47a54ea870ac35396280c8d384f22e4 f01ce55e789efa7e5127e0873cfaa7b8 c97cc6e7fd4b4a07d650f729d0ffe69 71491d1e3a4c96412474124825d469e d217e8ab61670bbb433009863c91a425 1728c555de071aad3ea96ac97db63fa8 d939b56b53aa7e7c42f80363988bcb92 f18a519effa019d819cb07ecb5b4102 ae50216235a96cffcb8d8c6d4df8143 b6953f683e8b3feb9571d807bcd25673 79b93ef5e8928141a54a0acb16609d15 b4e939adfc94954a276206fae5d3c473 d2a4c36321c50c06d28b52ade6c7e48 eecf97919cea666e67903707764646db b95719df909773fe65d8717db5192d1 85a73c46a97649fa6d0c88a73d7cb14d 9a244723bfef786294cdfc338037bd95 55de711b4c86b86188e7662971dc736f 79487b518c97cac315b5ce4486462d3f 581ad338a34dc3bc30f6e0ede20c4525 20e4c5b5783eb950490ad276cd2af3a4 aa4720a899ddf5456a5c4fd998d89f43 80931bba35ec76db7088591b1a3e2750 9e7ae4e322a056b954cd2a0ea6cb618b 2ed8dcef657845be4a8e02787dff638e 435600f37bac6ed9a28fe47978e866bb 89ec7ebc49a312184205db2677c7526e a4e4446f8ba07f1730612f5c0ef21eb8 8eee3b5fd2f3abd4bcde6f92ef1f7ee7 d1ec5f73a0d3d6e4f3ff0017952fe4bc b4e7c74a6e6685d2339c933a8cb966c 3e9ce9f30f1999ab45bb7680f88b3d99 375c6cce56f3967ed323d15bd4f8b2d 300a2c57c5c0a31c35836c728d324152 204a4eb580e93c559d709998b2d6e774 9d9ade887a3fcfee89d70669fd6a0e5a 21e25ed232808a5a6fdc47d9bd513767 1852cf691d561b97760c1770d1a1230 15606afd522923eb4e91947b208587c6 3e1a71694488a4cd77b98fdac17a3204 61555024958cb5efe4e7668ba612f00 b6f69dd63be9146d14f1e0019ad6a8a8 9af0807b146c564a45c4ecb2f4b73702 ee9849dc8d93e16c118ddfdb81cc6068 50dec764276863a77933e36129e75649 5de6d462706587e9f0f9e9e64b6b41ce 5850799c5af71d58c13933f92cd75682 7d097f4b38f0a8a65b6c7da997b0e5e3 da12a5d96b465cf6bced73c51e99f8b2 6f6a74a5528a7b5d88e7662971dc736f b9283738780e29c23a5fb687d9cb4ec7 a17a7f72494b303abc5744a94c74a7b9 83353863ea1349682ebeb1e6a8111f53 fca3ffd4ee694c1a9c0ca344f487323e 2388c99892c2185268d1b9a1d97e2846 852feb3fca95b6d5dc3653f8341633a 45d24c9106f2cd7614cd86cb97af8937 ef12cf5aba58871e5510d59f3ab1ed64 16efeb266e249dd63a52a79d6f5aab84 b5a0f10269e2f4a6ba5342d638d0c267 d385523f0cd93d48d6084fb53091249 9a98a0088ac6d37a2c5b2f528cea9dd6 d2c9d9efe9592eefcc901650bbbbb0b5 a56224d991c3eedf77d8f08447bad584 6770adca6c298f68fc3f90c1b551a0f7 2cba43cc26f174a8f9a65dcd8ee605f fa0a32c4326a42fef51f77a6d7299806 eb0d19ccdeb98cff88e7662971dc736f 9464e80554bbd3de030fd2fa0608452 c4dcfcc8c434f13230584014222e685 d1ba336c09928deefc91db1746a83b15 3ba4b7bb7b6d89415461e7d030e03e48 41e0a38cafd737a87088591b1a3e2750 a258951f55855e41c02170c33e00ea64 75ae2c70aaf3c818d9c283deb7cdce0f cd7bda99f9797d8b1878e92fa20d38a6 656d25df742a84877e44e3c724db889f c7c15b7d23fdfd98808760409d52a60d d5a67642ff0a2908dbfbef883e8d10aa d83fc71f3978130e335fe03ac3704320 69ae5e9ce88c9262dd0bffa2f83687b2 b8e26fbbb44def8d1deb48513aeadf93 c4e8a6d40f6433928eb8d149efa4062 66fcb967b951c0f11bb088904f7cb154 15238270f4f59a011b17743c18fb63dc 72099a83e9a058ace715cd506e17332 6068920e350f1fcef04bb0474a98ba2b 7f5bc32085dfbbb88e7662971dc736f 29a363fc242b282b45df535caecae62 7324c25be8ff5cd74725f67267e31c89 9f8c2c2c3b9796654b3d6a0fb5682cc4 90e5bd9f10fd5216fbb8cbddab1c2002 a4f257a3eb6c5c37f716a9f638b146ab 1a48f00729981afbc01ff6a6aade8d2 b6d6a772087d456a3dfad56d2a4eefcd d5e278feb6007ccb88e7662971dc736f 18010f1e7133415290c2e24416edfe5b e7287ee25156053773ab7b7128d466a2 29f2e3d2815a018ba77f16c25b1f7f4d bb3c2fba4e1b712357ddce8e42aa6e90 4b48b7f72cb4f56ef00f0216ab99ff30 f10af3d00a4c3e89f51f77a6d7299806 d466b21fb042a2ac605afa80919f9592 a0e4661a3c458405899bad344dc01f2f cb4b887b5acd27cde76bc197b3a3ffc0 cc3eb92ef1319ba38a3c32fbf0f86f95 3591b4c764217d2833e4e0fe8cce118e 56cfd1c474b7b88920c80e4850e77325 8425ceaafc6cdb0b159fbcda62e85465 85574f6036ea1f90d8c46a3a266762d7 9e3905c3fe967a4dc13933f92cd75682 e083ee4f045402b2806fa01b99bcd24 dbfa4bf005acf00d351d9ca36f76b95 cd0f2eaac6719a3ddb039d8689a74349 5428e217da1af02822a33e080d0e71c d2fc5882e1faa78c1592f292ab531da8 5f3f11372141da8def0b2fc3511b6fbd dd22b87797f960f47b0f9bd97c2f1a90 8b2b8b1048a707203c752b66cc923fdb 169d73f18f7b17bb4a6ecce2eeb45768 aa34fbd699f88094e5c7ea227b17d897 40e6433da380273d128650ca4a80c238 10ba42fc70f16d7f41d86c17c15247b0 9f09619002ab4d76f42a90fe4baf4591 53bac55dfe78177282889f551cb32a81 e9a9f966236acafab48ae76bc6e76e1 f7b3550d5e59934595bea7c29e873d16 101d0e7dbd07d8247dfd6bf7196ba84d 635a3e20af086ce8c0a31f7b214b7805 1fa4508dad05235a7d3aa3bae1f7b494 79815be2cb9b004b1be03639838c9758 46dc3daf02f51d09490ad276cd2af3a4 cdb065e1726769ca8cd36201f5f879e6 3977cc8807304dfc5adb3ef1dbe9e3b3 456a6dc3d369a749519f3f3e6cd6d1a6 1c003aabfe3e12976fd90c386180831a 36943f6afca6cbf518134b529d13e79a 3ccfbe8b56a3b181276206fae5d3c473 20cd92a6797a9ee12ebeb1e6a8111f53 5360bb53166e73958b424343280aeccb b990d515ee1cfc214a200f5f1797d729 802c287eacfbcba9564b8e0b814c602e 3a0719c32c45c16f96791035e86a30f4 d2d76338428129f62ffd6bbc7610ab0 833baf068fb6225c99570bac758be6a4 67780176ebcb050dfe3e90bc90e90c63 16ae2568c9e62681f8b8d4a282992be4 412cac2afa6299c3f42a90fe4baf4591 6b42816b1e70429f61bcdcc7d95ea51c 4da9ae6448c860243dfad56d2a4eefcd ced76fc046191db3fe5c8ffd0f5eba47 872407329ce09557bced73c51e99f8b2 7c0e5f39eeaa5d6cef9b6f306f98b0e9 6ee5804580c170cdf6da603e92626bf9 ba95511c0a79f2fc73b8ea30c1700f67 617e98c1d743c17420ccbe1c34ca182d 2419edff383179cbc53c4281a65fe22a 364ea921dbd5da869a58625fdbc8d761 8207274d3677061673ab7b7128d466a2 381c2fb265c32cb093be5e169656ef71 1a6a520652aa2244146fa8a09fad6c38 a16fe5e25c99ee73172986dc05e3b9d1 3abe4c174e5e5ffe490ad276cd2af3a4 f2dbcc8dd8a7c604865a5ebd0b487fe6 dafdd320477802a19a4cbf5d3b79df06 cdbb91da1b21cd9c879995e59bad3d69 a26918d26e74fcb796433fd91744c67a 2f46b8a15b15439d713f2e93cbeac35d 4521282bd4550113a5f600ed2cf472ac 382e40ed472250924f3443b22038d340 9802abad61f4ea7c37c99625b0c170be 4d63d3865d635b2be7c7920f6a65a54d a1194aa9dd64c3c849d61704e3b15013 2161683c44a7dc356bd865f153842b49 a3b93f34b7e36cc52460e48c67c108d4 680e5d7185a51e26a50ffe9b7408540a 8e4d5fa2a1c91f036a9633583f89b17f 238138a3b01dc4fa68f9be495c6674d2 935a5b22007014838047317417e6f5d7 7293f886dfe144f3496d07587574cede 30464d7e164a40aa2bc52a80abcabb17 c226b3469c086c75a1b5ceeca96f6fbc 5929c6937d617f3acf7d397dd220c7e2 1b79210962721517fcddd74ee6c69025 80d86a40527fd0a7edd4171cd40b3feb 9c6084d24011c791c8107db508bde472 979867c99d8e0b7a4601feca428b2996 4cda1ff0899a6fd5f58da08b07a975ff 6e46cdd2f97cd28ad98bf80379cd1d6 11913615a1b732d435836c728d324152 5038edfd2c36fdc1bf1911e2d5611e35 a0dfc97cf85ddccdac42bdc1d2df4a3 12c0b15c8ed8a3edb039d8689a74349 1baf036acc927ae27b79156a61ad4c01 f8a6f60ee9926c01e7822b3160005e08 9cdc3191bede2d0eef3a2c64cef919d0 ca968e46ba74732551970742dd566321 84ab363e60b9bd9185d624cfcd9a37a7 684b06c007aa83873c2e0b170f2ad8bc 78b8718a36910dd32534572dc403ed94 5488a4df2e78fa1eb184155425111e9f 2848ad36017ecc69b4169e4cad9bb63a c9b4209f1a7e97cb90a9ce3e4b15521e 433c55dc486ff83398b2240479533a01 9b9b39303c66baba490ad276cd2af3a4 9b7d490678f2c9db3d2be70e06ed6b30 a833d2cae8fada7430f6e0ede20c4525 a18b996f56dbc5cf37b2bb75885cfc44 217bf5bf88842058b8a06a6203bc49a9 579387a47297e1f4276206fae5d3c473 e5fa327c14553b11e589b08489d157d 421734c234a9ecce5c166769fb8a1974 4bd69765d13c26ee29a42a0444436860 e13a855926f25ffc5285aeabe3f6e218 451fe793f6e8fc29276206fae5d3c473 2a3267758a3caeb7cf353869450feb9a 5a79339279fb7173fbdebca9f6788597 1ce3f06d80025d9528eb8d149efa4062 f41fdea6ec38439193b00be700931140 eaca02e8f065925dbaf5b49ad7809302 8010191bdd123581a7e0a9557e913c86 3343296bb39a9e679410a04d09c14d1a 7f1a429b9df0dee97c36714e9fbbc038 7603ca578be87f24b48d582908a164ed b11c3bda15930ee7bba5aaac798c64af a5b8eda3cc13acfbbc8967b0321bd9d2 dde3b4bb9fb1ad25e0d089cf3411494c 893d9bdf1d7efe71bb5bd941c6665c21 1ce6fb24e634d5962a510b8f97c658e d05b908d82722b5ab15194162f658e87 71b7341f69f50e35e86c35c1c8efea2c 85b3f0b7d9968d79664b3b9b23ddfcbc bd9b0dc06cbe7b123c8d0fdfb1cc2535 4242398ccded25abd3ba76930e17ffc8 34a9c2b926de1db2a50b88953d263a42 aa1e797797bcc2b161b08af0433fd9aa 76da74f3a8f15fe8bed8734977b26c06 211a5b7347645a99967cdbf1c849239 356224e2ce466b551218479e9cbf7bda 3638d46a41870173713decb1a0563b12 c2f6c7b7b39fb06fbd4bf7024dfa167d 2cc1ea376c68da216502fbbc8833905 8c8ab9d274bf85bd7054f829b1ba8eb5 2632d9a8462774cd81255bc546ed0fe3 48fc49989a124917cd4a89b0fee32930 1579c3aae8e26472db1afe6c464e7652 e30a70e900f0a9565d28221e3b996124 1833ca8ab16a7b7a43448fccd73e2957 e8350583c84b5e6731ae8c8ff1eb3d45 fad0ae547e1facc09f97ca916781e800 e685cd3f7a980812e94026ea66f4d4bb 99ab3dce10653cb7f4525a0066419a00 6e2ccf5c1b61a09b6e56ccb2c92c79c 20c399f42ea5e6ee748af47e1b2121e7 5270f973e56a05f12cd2160e449d45ae 6650c1c61c8aefc782db9fca4b68095 3607a2301201064ce7c8fa552499fc0e cab6546da3916aa53c8d0fdfb1cc2535 b15485a55d855bf980936c51aa7ffcf5 92d7ce3f06a44aa582db9fca4b68095 e1fedf82bf8fce9eb8b431083b6191e2 22315c51156a826525b5da4000a94497 b2c3fb8c5b65a63ce2c3d541bbe76212 108a5262552050dfa9370719b830fc2c d3a3d52234e722825208aab875b932bc 35e76406291b06dd66c1e3622e549d2f e4e93d5bfcfac3d72518f0b5d8933d6f dc78674611170676a87391c8bef1a77d 5d91d6f6fae09234275d003e423c59ba 5830c288acd8dbc5f71f6713526f9507 1a5778ab63b3c558710629adc6653816 13b365ef4887f5d388a942de43574033 d0650b751034f567457ba044c28858b1 2054bfb594262929a89fa001ff6369ec b2e4c14ea09658e3d0e9f1d4665fda29 e389b9eed612e5c225a454369d791fb0 286dc622e6f19929fdbe2bf897d8a820 2967944ae64112c11952fef39dab6347 7b2b1c24a60bcfab2cd2160e449d45ae a7f071ed220b495d786810c22b062a88 2ab86b983d36642141b0e36ebdbf4b7a 89fb4886797187e7f63bf7d908efc575 daaca6107846a666a8737fcf23389014 19d4c28ca3da609a5beaf00da5b709c2 9bb957d69a2c2369c0f9df0cafd74e5c 40c3135c95004291240cfa0649692c0f fd8f9cb134743e0c80bcdfbddc82df7a 8566e44b5f1a818ff44a1c032c5fcdb7 13a20b16bb59fdc712e1ea5343ce0273 748983e71880720852ac619cbeedfc0 5828e8ad9fd14a1cdb1afe6c464e7652 b07acedb329345f0157f5033576317e1 f95012d97b44f6a52a1b9710536b86bc 5b74e8ee70acba2827d25c76a863dd52 c2e2cbcd1cf9a5bcfcb8d8c6d4df8143 2059087b746a931e6bc1922eaa6b6752 4b6ba211c9731d334c614ad0ec154eb5 39439a41656f7d50d42b9650f19dd425 b4c69d04b835bd716c8ef569725a5272 94f1ca2ad33eac601ae26e820e4d9a45 df908dc58159c82b1b3ffe2c05ec7aca d8d129b1a07b23b7a738de48265832af 2c0177660b7ecc915c118a000b931714 c561496324b6d8154c5b22ae639d5204 a721beef2162858ca2331382fbc36f94 370a49ad568a764febb6b411cf15c31 502e62c502cf2f10280b54299018290b f330eebb153447181735ea0e092a805a 3cca977e9e6ae9e181a172d69c52a28a ae5ecfa01e88e47f41bb00bd5475793 1d2c2f3f398fe0ede6597d391ab6fcc1 684a9c789b62321092cf95a109e87d7d 7eadde33d9f9d8b272e526c4f21dfca4 b3ee8dcfd2d814253e793fd9530521a8 846ae34d173c06d828e0b580c4eee0e6 f8bdd98f53fd851ec1537287b5c50d9d 81dd7cff35cfcfba4b3c42e318f3affc 49d9e5b7560eaa89819e369e3c49bff 83254a427fd8309a36ca19fb57d01d2d 1facaa0eb35496fb69783ac218a8a2bf 1a3127ade9d7eca4fde8830b9596d8b9 f0414c5a1d22911555683d8c4a0488e1 f5a48805f020d3e3967cdbf1c849239 beab7a10e86dc5bd70d7da54cdb9b8d0 c5946f7781bf5167aa6c5592e5d8022c 2d4c4ceacdd41cf1f8c0f5916f81d758 92c8a795e0dbe340145fa6babc33219e 4dde6d694443a488edb5be732846826 405e760fb406d96c2cd3f16bd931920d 1e10f920ed440021cbded0430ad5ccf 5a502ebda119949ef7dc60c6a4d98c25 45fcbb7812f0c9e729426a0f57e4d15e 20ddd6039bb61e97fa01175e0dff0063 e2209dc7b188f4a061f2222dd11ba79b b8f5122793e92cccfde2773767fa47e8 732a2b4f7626ca61d197f67767b32741 eb1c735af1339e294b3c42e318f3affc 3784e4624e880e3d1735ea0e092a805a dc5e7460dff922246a44fdd49dec8069 aa6cdecffb9d4e403ec7ad443e0ae81e 261cc5f20787f50cdbb57594c19a59cf a9f5d780f8303489d8f5adb469ca89d3 42129d6b04cb9038b2f7093e7efce142 d508d163bd2e50a41b62028fb8bbd788 181ec75aca2de25f6dbdf247ab8522eb ab999b20d88829d5efb94709f30ce0d2 62e887efeecdc1a31ebf42c64df00eb6 5bd90c0cb1f01b24118486d21a76684f b6200d3340e31bf4da2dc0e73fb5c1f7 85f1532468f57b13fb26684cf995edaa 8b712f3a63bb01061735ea0e092a805a d54d7977d760f4c3bd16d4490a10a752 fb4783fb006f89e4d9b53420a5458c53 ee8543345535674822aa4f44d9f697ed 8937a2d361775c68aafd61baec633e88 fec5f9c209e09dd9d49b2e04785f8492 26f2f40fa7fc0c5538b28f94c165f833 cb60159e291c3e5cfcb8d8c6d4df8143 9c3c8db3c4b29c8e7bcb070cc655f13a a500dac5ab226476b9445129e5607c02 5c79a2bc3d2ca6b1df8d3317f6046bb8 5e7f0e657142fff3e4692b8e5c093494 4d08db52c717b74d49c3792a0dc29860 d3380ee3db68aefb3f214ef9c53ac06 6c4c45af95f811e479414e04132a8bef 3a58b059261aa07229a42a0444436860 3879234efb8e60219f6b6d8f19761cb8 3c3286722b31c8e2f678c9833bd643c0 857122dd5f5cb1b0a34f84d89d87830 3ca37e415fe44ec2ebeb1e6a8111f53 f530508e27911aadabd4ed5db7667131 f9b41c5ee5ce8b6fcb8d8c6d4df8143 aa0c8d5c38e8c87f805e3a6c310c990 f15294a164747178851f4ba6aaedaaa8 51a0575368d16f4c99e8bf807e902261 4f54aea89016146f771b0e756a54d849 b286c9c136784db2af1744fdb1fbe7df fb2de79ee3a257eaf8f5708c6c7585cb 6c19af16f46fa4699b2dd2b9747d7d2e bf6674af4ba8b95fa4080573400e0dc9 7a3abc9f27ffaa0418a6353ea60f11b6 1e322c9d236ed96d32acbbe2387ce75b 2d2a1da36b840ecfd49b2e04785f8492 699a8b91af86f5a782db9fca4b68095 60697ef538d1372f5bc104fbace43d56 fa9a37d95fa8c6542beec56b24479ed1 8cc8499cdf11e9fc1735ea0e092a805a e613b3c2006c457ea35a7666f0cfa5bb eb8da4f4245496c57f1cdfc0a8f38f2e ac662716b87687be71e364dec61013a6 f39cc29063a308168466f606a3db18ba 57f1439f5161b8d366cff95abd9dc80 3f6e9d27bf0e972b9f42325587eab087 ad5c4651205a59f7fa0f332f678cca2 a1a81e5d0450d463df9c597227d75069 990aa9dec2223f108bad9bd0c4ab8e3c c125ab8675fdc2b03225afab722d9fd2 dd40743536da78a2bf964fc57f6a7d6d 9f6c2428e0cd344d157d629c9921fc15 882aae761370df14786810c22b062a88 d49a8626a9eb5ac2553bbd6d743ae8f6 13f46d5ae3e33651efd0188089894554 4775f35d9b6942081b42cc426459cc26 26e6dc505f376ceee6597d391ab6fcc1 5ef8a1aeeb1b25bd63fba60e6c90121a 39262f1d1eb0678f71428d548481a9cc a58ef2d9168f9b44de195732ce36834c 8b6338fa5916b40e7a5d3427f09d950a fdcee8d924f3a8404d01f72347a40cbf 22c24fc303fa5c8c48cef9d4cb5ab8c 1f5919744e0376315f38797299bc3fc7 1e83293107d6c3a92cd2160e449d45ae 390bc0018f132788fcb8d8c6d4df8143 6f422c48a60cda58472cd9d4266add0f e94643bd9c777491d49b2e04785f8492 41caf27a559755fafcb8d8c6d4df8143 7a8615c643bc3d96ed6eef8e856a36ea 5d45d41ee7fea0187cbb0b604dd1148d 33caad3abdb4f5192d48ab934af26487 a524e5a1d81df32b68b4a15ea963e059 b5012f398c4e62a330f6e0ede20c4525 37b0f61c553e0499be27e423fd45ffe7 ff07372af062502af47e57eb62ec59ec 4c5a9be10106d239b0957d845ac33749 1d21fef4a67153dab76e29c9c43bc7aa cec37bc68adf2a20e6d206b2ed87676 f4db9c55f72edb36ad0d9196eb691e00 b158a8e4f45653cecc571cd3cf8f17a1 c0a0f01bf127b972257cafc2ddee5167 c1532683707c38b51cce8c25b11ccdd9 908bfd876def9e43714531f0291497fd b2ed672f1d7c2a34664b3b9b23ddfcbc a957a1304a1fe3f2f78c91c136e5b5f8 a072cd9c2593414031ae8c8ff1eb3d45 409ff705d837b30ec3c3e425b20b4636 1a9c1cbf1ca9ca24274623f5a5d0bcdc cd389501a749d5b13b080c0097c00a32 615019f5899e2aee8120bc4dfb819859 cdf8043d57863c1b17b431cae0dd70ed 39583310660349282b6168eeac2194de ae67ee6392fe8ab94e7cb04dd663c825 24fb5c490856f7bc12b31765ab67b41 6267ef99cbfaea7741cf86c757faf4f9 e30444ae7a929b6687d4034dde63c4f7 4610f7cdf3923b05cea97147b08cd8b 21ba9de4d311ff31cdb282e42e89414c 312d6dc78d666dc88a74e38e7d86eecb 1991d403d8ade0ad338afc540c33f34c c603039e59ac33a0ce1bab91cb13240 d5815f747626cadef912acc8c54e7fc1 6d7aeaf3c1705cc5fda82f1d3dffb320 3ab3e07e432b0afb6b1c0c9b30aea3d 8d93a9b663a6378ef5c0c3f661e90ca2 57aa536c02ea697b2195f9e636aede6a 9b1c1def3467c1a7d197f67767b32741 4fe9a79b382d30fb1735ea0e092a805a 1efd03d9264973c9f2098a9f7fc86999 1499133658ea746d713f2e93cbeac35d 639c2bfefe1bb6af1cce8c25b11ccdd9 4003077668e23d6c9998b4eb812699dd 7869e39e4fcaa1b7ab26a588d1ab0ca4 d7465ce6bfe4b898c98f75a9ff83e3b7 27910c314eadb1109998b4eb812699dd ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03691459_test.lst ================================================ 8c18ef2a9170a8144884161c20b458b0 7ba65164444ed5be3df08ed7d70af1ee 710014b815369e1c2bcea2cd4cc7b042 3e21834bd08c078963de47aaa413f122 767f4a63260c8419e279011f622f20b0 bae089bd1855bcdcfa9922db9b6aab31 4b29063d6237b062eabe53d90550c4a6 2335c268bbd05a5f230584014222e685 2a6f78d39d66f6171bd445ab4c056b71 8b73786c112d262d4852385de47501f6 7e63f06b3c48fadfd6d49cce41472b6e b0f209faa41b8f0879da6431b0766445 2f4e9cc37c3bf5f1fdd84f4a160b8854 460d5cc9d09ec59eb34ed614d2670aca af7aded6c26d2b119d3f10ce46ef328c 1b31f250deb7e124fae32a4a57dfb78 3b3f46308f2ad119988b934ce1e16bb7 5f3436d8bb1620f4617146ea341ca085 f6d4918c7dd190447f45370489ca3156 7578b2e27851b989a374ee921da07aaa 300d579cb4dea9338cbc76a30015552a 2034f891fe2d1e79bb51f8b36601764d f0d27525fa81798d982acd4b5c0a58b0 aede81c0789358891ae45cdab702386a 8675e32f2e122ea5c13bcab6e4ecd7e4 17c472a6899c92efcf39ad4726172e1d ac951c58cd826af6a89585af9e32f3d7 35982cb980f6916c2633ff66beb9cf31 132257fddbebc02ff14235268cca03a3 1e82e94cf9f6bda8fe893ed5dfb6041d 1301670e3ddb72b099284d844aba7576 4793c0b78701e47dd529f6660fe10a17 33d9a210df86a437cb3c1170309e6b12 6be15f4f6dd64490d747b49524a1246e 85eb14c504232ad1bb36a678453013a7 f0e562c21dfcaaa1d1936ff8c5fb2337 2aad0ff91e947e64baf402ca36cbac3b 57b8d08d37d835995d0dded52efeb4fd c462e3b75f570a3b42227a2ba4dff5ab 8dfa9921e51e0fa3f99860cd321d6c67 10e079ff34f99777bcb3fc1376c3a85d a1d1f232168607c81dd4da6e97c175c2 60575cff5db034c621e6f308016fab7 5da2a1ae6ec64155dc7dfac1f2c9f0d4 cc88df1c3cfac12a99db62650613bd48 622a9789d1eaf6e3cf56355417e88d12 92039123d08d8ad6adbfb30d8d1b297e 4c43241d7b30eee379e6d136097a1329 76007907d4e0ae438c2ccb23eb70d81c 4383b2bbce729356a9c2f34ef56404ef 9a94af940a768aee5865ac92cffc2982 8c7c72599c6bbafc8323fc17a8352c3d 2c5dde3b43f0b0fc5afcf0aaed5d73d0 1445e30aa2d3212db6a78dbbcf2e408 d7233f2190432638d747b49524a1246e 54e61267b88174967bc8772c5c1a0c19 d14e6214d7dd4ed62d563c85edb49108 596f7a94c6d1443870896ebcdb67d8d7 a6453864512f46dd747b49524a1246e 5c4964d7c42cf84bdd9ef3991bf7600e 84adc06696eea1774a2b8524bd5c98 3b01bd24d47245289159eab9ccaa73ce e1be0b02973011aa4c5341ee07f41676 fa2cf860e277919a7445d25f394949d0 ff9c1754252b9ebf73c7253ec9acd58b 2f7b5ea50c09d928b23f3e90fedcfa3 2325005b09d12b2585d624cfcd9a37a7 2240cfeefea8b69fb90623b288d5691f 496aea93dd8f7af1f3f18c4c348425c1 9b4d3ead5066a6c5844e9c5caa6d29c6 2daca96a8e202949c67b8955be358784 fd11b075bb1df4b01f1c09aefb59ebea d09f0e2e33452a739d3f10ce46ef328c 716d1d38cc0bcdc8c9d5b08933b9e0c1 400fb89ed6cc3d2bf1acfa9a5200e941 af39a67dea9ff78bf46f716b2b22b550 1742419bf5a54be3e1a894502fdbf97b 4d276aacd5e4c510de7da340cde8d034 c8018ed73c5f4087eb927391bdd6c8e8 6ab218aba38bdada2268dda5c324173f cfdd69078d7752298b54295fac36ff1b fff40d102ca88fdb52648dc23b25b1d 5e6d30de53afebe2fb0a4dd466ef3d66 fe977bebc78501995996c3a82deb78d6 86f45d4bb1f5f8597a040c8bcae232df 8629dacee484080c7ad11885dccb6f43 5584bebdc80ecb42c9d5b08933b9e0c1 cf0da3cd69392999da2140846c49e200 bb570a28a0e81a51d747b49524a1246e 93c5159d17de18f02899849b3f61c3c5 3636ebcd2e5568616bb15da9e307a14 6341662056860c3e225f3f0d46b4fca3 6ef86253eb81e4d418200338a176d705 48bf5d4693bb7ecfb4bf1edf2dd92af f6954ca2e4c2b03c67b2ae8c967fcba0 7a7193771ada6796a1b0d9ebe362f8f3 ef71576ad5262c4ef398d0c5832df00e b859938280d0c7346583871b5c274818 913eb13149ceb59a75a3010d3ada28ba 68393fdf9730d1c86e95461e6c2993ce 4c5b7420078b23b098935bd14e27f0a5 ea95cdbe8f4114107354c46aadb2b2fd 1334b56706bddaf4451f278fffaaebae d6f0a0ca6446eab0c0b5947ffe18a468 95c24657d2ac0469a3cd3bc808c81de5 54fadd7a6c5c04d752560296120d4cb b93169c2360aa02ea14443313213c384 1788d15f49a57570a0402637f097180 8df018bf733ff01cf00aae52edb0b7b b7285ba6fc6628a1a43ada367b02a4fb 42fe49780429d25d1de55fee5ac2c5c2 81b711a75b8781956faee4308b49b522 405db2cef5b41756fa16d3c3138134ae ed981b60651d5ad8265d1076b4b6c5c ecd9a96ebfd0caf6d8f9dd7647048a0c 8aea25f1090e419c9f78b1e1185445c4 3c467fca7449a857a2b4d33761839e86 f37f4ef72fd0204d839a84b4ae4862d3 39ade62ad13e3c79206861ce7df4037f 90120bf8e84315de6873d49607c1f87 3cbeb01fae7fb6ec7238b5c2712646b7 a288498f21acdedb2a65278501cfbe7 19a8736130ef822b93dcf5e22ecc3f5e 10d03876d94ec5f4e7670ea63e6cabfd c2024c0fa0906fc724abfaa350249967 c3733b26c3fa23ce2633ff66beb9cf31 374df728f54322363b0edb55efd49670 7b7904e3d5ac33a65afb688fc9d0c0 945805d18c0de73ae3e30e20ce3a5bf5 71b4fb2d151a9d70fb0a4dd466ef3d66 6d28e2683df5f013c9d5b08933b9e0c1 60d58e77382f081a69d22ff82177f51b d233b0a03f171cef47e72126a394af4d 6592d33f84263ef435cd53a06b1d2317 16ea8ecabd3f373bdef52d9b75805a83 85e8d20d51ce13cc7fbc060fd555478 64aed24bbb7542c6afac285245c66df0 84cabb92bca7c3fdf2198539cbd3b69c 451f3d4fd10530b9d5a56ecdb5a1cd39 7263b5bed1c020d3fd8284eaee3b0fd fd421313164e2d7f1be6fffd725195b9 164bf28ed57e29a6293982b5acb5446c ac27fec4b0460b00318a4feb4ab5fd2b fb60dd3c36439d836d74ed7e4da4b6ec 6450e70e275a80e0e39b302b17f4c82d 1124d162420a75232633ff66beb9cf31 91f570ca6702fe4abd1cba733b111584 fae47d104b9111aafd949ebbd292d47 1152c16d1081c32a561e8b31a1141890 7599541dac4a89ada1efd4f01acbedc a8f3e98220f34623b3d8c1107f6ae528 c2bf199ce5a022a1126d510cb8dd3d9e 7e359607ecf460f399372ee1e6dff278 48c21ec6f9623c997ededbc2b9b4362a 440745e23b80c41f398d0c5832df00e 2a59accd6ff9b5265c38e15d823f1476 fa09acded526a0105b1433436fd82800 7d2bd4d349ae34a2fcefa74f1d0bc6e6 f289aadb7cdf59daa62fb160d742c45 9a017f96829a34a2b17f090763e2921e cb356bbfb74abea2c6573f6ede3fd543 560a626f93c664ff9069c2d361390698 99dce9c359b0bf4afb33d0031815b3e6 2b3e7da84b849a84d3dbdb797d2f78b5 40b492e1a0fb0860e2f05bd11e1d1c68 9076b1b9e23c7446d747b49524a1246e 3adf396785cf9dee7bbfac568080cdbc 60765697073cc44cec7e019402cb7bad bdfa20e11d204ecd35cd53a06b1d2317 a3f14846404245d5bbbcb091dd094e5f 10d16ee9c9402e6df2e5d34c7b677bc4 21612bf3e866a8831d6b14cb827cdf85 3972d44065257859c0b45c582c6ed736 ae4bcb4baca763c24521562865ab775e 2ab4f9bbdc17d9cd618e9d35559b7aa 970ada2dffb5ce49a663d9823c133130 b04281aa2c134623cb3c1170309e6b12 aed74c2fb80bf363f5776cc601097c0a 95db5c34357e2a81bbb94390080b5b78 15e847b20d22d56cd288bc0586930768 4e3669ef40de1b3b465b32805167c435 66baf7b7b4ce43d7e50f6aaad9a07bc b70c600b20614f4c690135fb845b8de1 fb86950be1b0ced7760a6b24be218cf3 b40b4cbf6309c3519fa340262d231abd 1ba39460a5e31c722a813544190dbe4a 8b7afc9b056307f3d3ba59ac5475adf4 ca052c8db0c94fd345189af3887d3c51 5ea3d1068a624c1da91bbba4742a1643 72c5cab12c0ddb22a0fd8d18f37cdbfc f452418d7be7e78eeb752889d5199f9f 923b7f0a4bf93c4fb66814b45dc64bc9 3187862d922b0ce96583871b5c274818 acbda0d16acd03329d4b859036b8707c a34c80e1f6175711c9d5b08933b9e0c1 b521957294cbb170c7c1bdfb41b9d2d 2a8345bd5d50456d8db1a0ee98c45ee7 c1ad8720fcc7246a1fb294203c64a4b3 2ae8239afdabc2baaf365ec12406f363 8bd1d73922ebc098627a66821130f814 8a3edcc398f34fe534b2581df0f941a1 3fc0513ac3bf11c873d25f4e2e3775f1 3a4950ac89429ff5b396c6d231dec74d 17c5950c89528703225f3f0d46b4fca3 ffd168e54f722339ef94793a67b4c5c0 dd3f884d9b5b3c0de7b7e97e5332a9cf a6216e99923da6988947789ccf4faf06 afcd98e6a91b3d16569e2e0d2caa039 da9c218b79205d489c4dd878242c44b7 dcf84867f92cef75a9c2f34ef56404ef 28b91f5ca7e3d174fb0a4dd466ef3d66 6fcb50de7df5381835cd53a06b1d2317 bb1b387c674fdc4750577cf04f3bf74a e750bda061e86402cf39ad4726172e1d 7fc23785c19991e4e180a1a604561d3b 64ba67a67d83811c2b688d771932c023 9fbb43c7437c1bb8a2ec0446d32ce69 ff4bc6c329ec7bf8a0eebc16d3afb516 fbb7610643dae4a34c5341ee07f41676 800a0a91308845b4519f3f3e6cd6d1a6 aed97e60cd2802ce7ffb47acd56f396b 26363bb293e6c9e499db62650613bd48 f000edc1cfdeda11bee0494534c13f8c fb4c855848345ecd3e738e11bd8803f8 37758713e7a31d1710b84d6f34c2f2e1 afe96f3cf256cbac81a6b6721af23c58 5336a4698616726725a4212543dabaf9 8d55d634810b52f176f6deb1c78dfee8 40511e6769c91cbcd3dbdb797d2f78b5 105d0802d1ee0430bba5c9b6de65a038 79c3e029d9ffbccbe58eb6a4fe5a2344 e71f2c0e0c760ae98139dd63d55edc44 f663176a43096b35a43ada367b02a4fb 1c25b626dddfc36a28d267d044b54402 548f94cd0c5fba501148996e35417db6 a82329a937432afe8d28f674ed08c521 542bc1ef866548c3d24fc75b2f944a91 80109bf3b6904d577edd21390c628646 431892f5456a2b9ab96497d8dce09d96 b7a6e59fe546d81cdb2e05daba43d6f 5dd29010575d36ea73e1b2d018c0512 f2e521a8d08e2a2f20363e2561dd589a be83d48fc695dca62b4e8a84a498fb09 be5e0dbd5a8a589ca04f967bd94443cb 92e409aa16d2d673b5203226c26c59ad 4a1ffed169f04f5fd084cd4069686980 75c408e3ce113c84d084cd4069686980 96d6d519784e40c0c066b9622c005c53 984d064e7e0310f54cb67f35c09e50ad 84e6e1fb56eb60e918d385624fdfc6d0 a2dc5748b523db72bbbcb091dd094e5f 46bd2ce6ca3439c9c2687184da14e3dc f9a615ecebfe7ae1b27175774c9e33e9 8d7d7dbf8f0c0f7673e1b2d018c0512 b754df4013a71f6873e1b2d018c0512 b2af20dc171d40e4d4e62d99c536bbaf 2d1302ed4d4f43ca73e1b2d018c0512 d087ad474122e24d887e8faf8f33b0c5 5578446e4a13451a6c7c9dba2abc9f8b 94abce2eb2c9567da7729f9969cb563e 27046cee7ae745e6d207241113bee327 c75c5ae81c1fd498c066b9622c005c53 57412ca31eeb15bf75fa5879e0c49e00 bc11fa1bae19a90ad74a70b98d3225c0 217733447f1ec818c066b9622c005c53 d06efc46aa999fa21574d21c0c95092f b209054be0f71cfdf398d0c5832df00e 115115104976edfdc066b9622c005c53 e41aab211af3f84673e1b2d018c0512 2d53b9798c7ffe7a6e55c6c7c80df9dd 485a778cb7416a59e810658c16fad24a 83dea2f2561fc2fbe9364d19fabb5f00 ec0a8e2fa00a746dfe74514a9fcabaf8 1ca17d2cadd47286c066b9622c005c53 f7a45911d01fe4a961775b840d882da9 b0feef9f599d41cbb3d8c1107f6ae528 d2426b884d1108e8bdc8d5970acdf989 39554167163a7cc3f881bbcfcc456ec ed06c596dd9b9cf3dc99793862c889e0 68bbfac3232f153c6ecea800f06e81d cfc38353ff8392e73a7dda43d8d95517 a31ac0bd8915d99631c992914b89bc52 65dfccb2d5e47538a24143eec482cd09 c51823c76ebc7f6e464e6423c0222f3b c398c35b48c31188c73a379f25dda815 ebe84e8ccc8b5f3fa817854e3b5b5439 1ac22719af776fcea2626afcc786d93 e2c1e8958295f84459fca7a6b28640d3 d3a872834cd0aa94d77ea5e1afa5bfe6 c15fdc911c54f4cb62c440075d5ed193 1bf06b16e59e482c238ad1274d829e68 73c40350f07efb92d207241113bee327 b3f5d033d3fed8e9d207241113bee327 e47b83b94a1956ad7a16fcc398700938 8e25a8e0de9ff545bf1411bc6f3b308 b4d4338a36711ccdb113389b677f57ff 4f152b01f056d0c35363d5176df02e54 eadad629c581c28c6b424c689f1d711a 95d01543b46b5e43f398d0c5832df00e b1fa05d508d9ed81753a010738a20397 88ae9338c167e8d5238ad1274d829e68 90e3a0488b8ff079d207241113bee327 108316842b17210394a42262667addbc 29c140fb4eba078c7909eb62c64c0070 e2dc092a4ef62c09d207241113bee327 64ebe165fa668ad4abbfc2108a5a7885 4468a5e60a6fedc086bb0379a61a0978 52e827d2f969a2b61f2b6130e0fe93a6 3ee30326a3bdf219ec2ca8479368108a 6e6b4d2603930dfd4fc88114be3a6b6f d17192339d28af3234140f5d5f70bb2c 38007ed3e5ce40ab13dd6eafe1477be1 123f9066606d80206454c2aa07613033 a4ffce648faf8349e651a075b3dd0597 1c5c9d780dffb5c2599d9c8430d600ff d69d5cf7868651effd28950562697757 221a981adf503875e17b9e33c097dbff 4e06e2b59a83bb6229cd1f0bcc30f82c cd451b74570bd84f44dc88afcdcd380 cf7a2cb0c487f3a0bd1cba733b111584 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/03691459_train.lst ================================================ b10f7a407b4a3722296ecd3bbf65f1a3 48a2091454502770408d050f12518231 a88fabb4286706afbb9b205a4c97698a c3fbe6332f413bd2bddb05cb83a4378c 70ee226bddd4005836f19668fecae7e8 e314110b72e1d310dae4b8efbd2ae014 88928666d9c3939dac55321e2e1cf09 2a77ba363947f4f38a9641b35ef045a 4eceec9a386a21ef77818a0572bf1777 e12178cbc10606bbb48374d47d81a219 6abdfb1ca4d076a09c4dd878242c44b7 73a695a6323e1d38eb5f0682bcf1d404 e9723b5243412b462a8eeb2a1f362462 49e47ec81395e290d3e5b33a5e1cb23e c7b58eb662984d701df2664cb33da9b9 91b781b40d32b74dc491effd0ae881ea ae66dc3ecd9c8932fc459988e6a7eba7 96904b01dbfa0d0c5865090ad6b0dfd2 916d2e621caefe3a1a4345b067aab43c d2553e5fc4f1527cfeae521e94848af6 ed0c530e245dfdb269d48411e34c9daa 9dcf9b3c53f1cb135afcf0aaed5d73d0 8834ec44bb6d291490146e2a0489a257 774214a85b87204c33dbc1ea1716bde 73c76faf92402a9183247f812f2eaa97 b06106540932feefbb9b205a4c97698a bb7dc95eb35acc8bfd7a7d6380a6ae94 bfce87b0ea79c8aa776400d171cf9dfa f8aa418d093076c4c194eaff7ea54233 acc5b71d898d510f1ef58b31c4ba0d15 1e52b6d474a08635c10555abb2efb430 7aba5bb94270d994451485c22fb285cd c4ca7f58c6144e1416eb1b6d0ba9133c e4edc21690f623a35587d8c9be86464a a543d9e58d4501422a9eb0f146e94477 ddfa1daa59d5bf2676c2a9de5c96f76 19b900dfc658cdcbd4b4ae2ff4c58b57 18abbf4da8320e69438aef443c33bffd ca3d4a62e7a851816463df620b7b4cbc e02649d9d5ee2f26d07c55cf995503e ee2d8d72b555df84ad5d27efc990ebb2 2750caf7565977341ef58b31c4ba0d15 403649d8cf6b019d5c01f9a624be205a 58db9d793ce3c2ceb0109464688ee1f9 35fa721c71ae04c1472cc88b92e0d72c 87a0dac4a3c483de6671a3cd2be21041 c98654c348ccf6baed1d3c8863995334 ee962ab0dbd24bcef78c4384b551bb5e 1e8aea643deed7cc94c70e7fd262be3 d337b40eca9f87259fd3da8ff7252b25 80000b93ffb0ab8ae47833b310955a9f 46ec6741dbbe69bdbc052c28a9e28ccd 4f42950d660bffcdcdd18be3aeb2d66e 5820d7ef5c9942e6d49b96b9f2811c7d 337db7fe63aee7512d97367ba974aca3 dbe86be505750b8d9c92e8251d55352d 6d24eaf8aa3c362fdb6f3ca49e992ad8 2c64384906f809f09e9eb484700b40ce 492eaa948ae2f795a6d5deb42d3af608 9ec130a3ef44b7a1e47833b310955a9f f9250e29e640eff9a5f99ba0b2469cd9 f57b269b91e369f07b646fca2237eb6 b6210936b5d1be007670e02527d78e8d 5f9d75a41d264b9bf4fd8600b18b879c d05deb21bcfffb07fac7130d270bddce 55e58eac4a2e7f4c24abfaa350249967 ec1b85abce89d680a7bc6032416bc8ae e8885d12901ed5aaa7d0cc9b15400f65 4014de6b20178cb92633ff66beb9cf31 9916643790d32d0dc4529c39a8e542cb 1a4ec387ea6820345778775dfd5ca46a 112deef454bb8345c6bd342792702e80 6575a80a0daca56d1b37f37a4873fcf0 5679f86d9eb0bd1ed4ab0eed66631cfe 5b9b77ad6ce283a398e4bc44d45a32e fcd642cc82a4417848db103415b9e9da 38f418f2d64692df63ee8a34069b7c5 67e18c3be264e30b636095aedba53117 3738550fa707533073312da09abb660e bc3e89ef012a5904688bf677a786d0bc 3c8dd5506a17628fa43ada367b02a4fb 5e320dffc984b6b5769dec5ec0157054 6e97134cd7dc3067c24c52be855c1525 e8dd60afd061fb273ad55e05c29c23ee dc8d31790da3b1c6c06fb481fc51ebd6 b8b54d43aabf84a67aec59a4d1722658 81eafc16db11da806583871b5c274818 53856db6d2a2873c80ce1b5d66a0b782 40169512586f3b6f77964cc933a9a0ba 8c23967793e62320825138352acfcb46 35196460460f022a105260687f2b18b7 b16d2f432bb57fc76dd78e11c421d52c 427edc7774b50232a789103b1a0f3e38 d76360da1411848ace1db673cf70420f 8310e1e0a80ae09967964ba700cd97f5 ee6445b3657504053839b8b68c69081c e8ffa936875c7b3a7ffffd2e0fcbbf0a b8b17a4a9b8d0d18b1561629b743a85 3b55f9d0fecbc561de9a8c37f2997f 1a14b00578f19b1f5c38e15d823f1476 2686bb573a9bae79d34aabb2f31dae9e 2e44c37aaae8052e587dcec4a739e277 9a91398e66a8c980ebc29484102f14e3 b638ef590025961f5adfd0d9df77c16d e82622f52b46e31df4e3932877a139f0 2af99551fe3644504798316286c07255 707f0e44e935dd55edfd593a4f114036 fe13f67712bc5e4a1b02cde7e81f0fc3 f657a906298e9151e3178ebc750d175 8a3b591b72d0f5326d9bd07411a71e3 beab6a006f44f33de19807d50c8d841b 58c7ab29b2cb73171e652fa812161367 3fa5d9e396596d36f7d10596716a94c9 dd05c61250149ba5d49b96b9f2811c7d fbdfa353d97d91fc719d3f85e0c9919f add914368a6ca448732bda87f2718525 1686fdd7258aa16383247f812f2eaa97 a10f7be978f78f085e2bf91b698938de 5944386805308443cdb1aa1514be92ab a6cd2be54bb9297d53c8f7a04cc7057b 32cf86c686fe9b1974828baacbf242e3 91f4c25e1e325683e7ac477bac77def9 6d755a3d6d0f265d77ea5e1afa5bfe6 a6cc92fec1071df0fb2034808cbff90e e031b24fd58c84c12633ff66beb9cf31 abd3b55d14db9b3c8db1a0ee98c45ee7 7ab21928504c8f5983247f812f2eaa97 4d165a6accfad3d36f18f54fab5ec8d 88eefee684586cd3fd56d9106430c3fe bb3667b3a72b0bcbad6ba00d22308a6c 60474fda23d64ef0debcce788b4a424f e767a0e8df4e41f4b3b44ad99a214777 1e3da9e2f274b6a89585fee86900e65c eb2545337b85fb987695b38431695f3 21e46ca2f8bbd4df71187cb9cc8e1a 4294d3cc2e413bafe45b40770dd7ed5c 21127c6f6f4a28fd4bbad62bb35c0a72 6eecf81ba7508617cee3603bd2c54843 8671e50787f3486e1ad88f716ea80910 b1112f7597347113892a11caedd0d90c 624046a3a0cba1b6c70985f30f25f8eb 4949c92a3f0d0946f536dbb8b34a9553 d956f40d4b3cf48f7889725d46ad23 6803540650949be89c4081063e213a15 50b1f4e5a130dafbb5b1048c702c9b77 5eb44c2aa29844391f9f3ce366e030fb 348d289b6a08e7b44884161c20b458b0 6d6fef896f1196416526bbcfb9a38489 a0f57b3d2c2ff2ee2666ee81c3e6ae4f efb33523a6be2e105a31d91ec836a511 2dd5a69034a03d267aec59a4d1722658 5b931476c24abb5535b5e203791a802f 5755d5aae08a8f2dd9c568a52c35ec71 bd76dee31cdad0f0bb62a53e25c6d701 2cf41211ffafa4ea1f9f3ce366e030fb c805f5a262130e6cb4f6b6fae7a188ad a159a9bfbe200e651ad88f716ea80910 dc73b4f97b493d18176ac8585fbd7fcc 6b9dd73a65dd50a71ad88f716ea80910 6ff24c5a5003a1a5bf12d1e914fa62b 519b0f5581c72a25db30e42459dcb06f 414fac13be35799d19077496eff9d4b9 5394ceacb131b5e79d7aee0f8e107545 d80f344b9de3e280610652dddb029059 28c30025290a56a689296e9c8a412e3b 3db03a00661e6113f2a29b1958708a7f 62021776119f573bc7c51d4ea74651a7 c55edafad476d908d17058acd487e2f1 36526654949a904b2bf4f773fe0e622 47d3fbf37d73e0bfb9b1918ad0534ba6 b4e7253cb9ef78852b75817a0faaa5a0 a55295b8538238ad6ab2ad957c1db573 ada2311f4edda41478108236e982c2f2 986bd3ba96016425cc0d3a65104f5927 3b911043f7cea0639f2401cb9e9e4a2 acf4daa2ed704ef36a27540a4ffd1b08 22d5aa5c6a173d31b59e9758ae7f41a7 40efb91680a2a39476ec75ad1a6d21e9 a47b1e6d492bb68e8dcbd53cc631ab 1f929c099da1f3d890824251c0961f3 c280153b72c8e8ff571d223b2b8e4a24 3dd9222c775b1779239fd9d02eb7da4e b8410a2c19a50aa88b04a17db360913 739f89b772ccf495b9451ae41e1d9ea4 460f07680e1d50866f6dffbb7673354d 388ae2b6420bfae26cde9ab9486e09f0 60858213ecdb37dcb7a0c56c5d82c3cd 7488e7b4b7174ca73b2680579dc5dcf5 209086558286d4621ad88f716ea80910 119fc0c18388a2a2e338ca8c90019f12 e11cde2df1c508f7e098c9e597ef1d0 982f52d3117411a37ec3f7c14c03a92c 375b903579b795abe3917427ea7a0e20 9d180f7f43dff3d51ec48bc3c478566d 78d16c052215997b925c6624a25951b5 119d64f6de33ed4093eb0b4dff044a09 4f53602d946e024af7617b7ba3f8e259 5ec12b34a69e34d9c85671f86a50354e b92c1ad2943ec29168faa7730065e439 a29485bfe6a688f0ce3ab2c820261e42 9a35e159b52a7b1897bc8a58bf164429 76cb5a9b7b8dbea99b590f104a4a4c1d 5ebf73b0ef33aac5451319990092e2bd 5ea9cb9068520d3bac80666502f7b62e dfc293d76992ed9656fd7f904d2e0c 9f43d3116f4162fdce029fab54b6cfbd cefb560ac4ca8b38a046bbac53886364 e7560ac665c6fedc7d54ddaedba43004 5a66a86082033c79a3acdfe62acaaf8d 61add6842a1dc131b59e9758ae7f41a7 999e0646b798f67a5a60f8212273313d 213d39983b0a865d1369827a16f97392 dfe7f79a9a4279d09596b23e90d45a7 95eb96eef8f0e3a7ed10ef1927ebd15 c94dfdebffb371022b75817a0faaa5a0 831f70cfa81a12ba7b440c5df8efc309 6577288320db747cea37255d6341d07d af4dd70becae7293efcf7226d1117163 a58fe03c817fd0311ad88f716ea80910 9e2230b0d4d8d33e4ba7340387a30ad3 30bf1d16fb6c28fefa70f8d6bbdfb0f4 af4a2a3b3e3510bad49b96b9f2811c7d 199ce49a7db017107a964f742d0e5820 e6e7c3e1b887d2a1751b29c8fc6f20c f904f64f961e9cddcd3e44ab53ae1e92 4d8420f146df7c37ec2dd234c32c102 9b7001c69e6f1978bf518c96c02a8c5f 98cff6064749a5f3e746404352385716 8a8f13245888b8a1411171a7db2d5342 1071f82bd0d6a23935cd53a06b1d2317 58cdb18878bf9e42d00d418bbce73381 776b1ceb53c8ca881ef58b31c4ba0d15 65688eeafdf06f8752e2d18963a75b4d 73a337691b4015ff1ef58b31c4ba0d15 8150d4e919381c64e1ecc02d6acf021b d5f20697fdea1b20fbc9490485dff00c 6070b86ba88f51a52d48173107aeaaf8 196d5295dc5c62d513bedd75622dc40a f4290921bda21901caf9cf929ed6f71c 19ec27b0dc5e478e2a9eb0f146e94477 b18b9f87117cbc94c274436d9bc22f7d 7e105d770e297ee43dd0d6160c4dfd18 15fb39da1ab90994a9504db65c138da5 f2bb5c899ac2de670eb1591edd539b 6995acbcca6f9167f5e02330ef435fa 464da0c0df4ed3c0dfdc04b8b8434e84 343678f49806ebaef09c0ee854308ef3 22fdef9bef225163d747b49524a1246e 36206fcd5fd8821996ee15847b17fe3b d088d0b4cbf1d8447b041fd2144f3532 fa6e17f7f928e8a44b2f94f4017fbbbb f6cccbb93c35fcaed49b96b9f2811c7d 9080b08716a2be41e47833b310955a9f 16eec6c601ae44c06299da17267bf77 9d62c46fc3fd343d1f9f3ce366e030fb b8b1643518382596aa623a443910bb58 87f10613128f3e6198e0c75f11f82c6 8a5cdc3bf1ed6226b7b1e717b48d88bf 6bef36ab570225cae7d74840e6097218 a0f84cab1fa73358078e785d09667d5 18602a0608af58023b80bd981244df4c 5e9e7b6cd01eb0edbdeac9f0a8ab72fc 1eb6ae90ea03673ee792f9d89b97c271 c37c230e15f8c561ce029fab54b6cfbd 9165f1681f4c5df6f63ee8a34069b7c5 7b7d7bc551ca91b3a03d35fe89e56e4c 9403368e6a0bebf5664c61db46dc2c9e f88ff1c46ccace6d5392678120123c42 865356c79a595c3fd3c3c7b74c67a723 3855f5027ab422fae6ee52444763d57c 52e710a9bb750e3235cd53a06b1d2317 853f3c53280aa44fb63369d5dd85d25 ebbb434aba6d7c271ad88f716ea80910 65c24305578ee500dce0005a7422ebaf 3aa8876d86cf481d3fd2d4d929afab9 b987e53822ad2809c7e1c32ca6dfa00d 96ff36cb731b29a61ad88f716ea80910 fba117b56b6829d0cbd549969c6fba9f fb6bb656468452fb22d1a40e420084a6 3b63777e658e7137f36ecf951968a8b0 438dba79401818884987b3f5f9a53cef 2e530fca4ce161902b12aea3a74e3599 aff81ceb0788c2c2d77f9c6ccbaf6fcc 8296f03cef18cac011cabb4938bfaf4d aed2ee05cf37c85c9a8c31231dd99d82 158f8a4ceaa281ab2bf4f773fe0e622 16e3c79113685e52203eacdbee49fa8e 1297c443d9a147ed9d783559814f4705 d23b86065834982bdc99793862c889e0 ca9ca5c5dbc82019e6bc953d57dcc636 ad2e92448857e1cc6ad08aa387990063 ada71fe1283154ccdd70fcdaf3665b80 b00c5ddc2efe42eea64e5c46abb30c70 f1d170b03b23a3139cdd3031da0f98f5 533582fec17b538e60e1d7e27755edc1 c4733a08e1fc82373f48f08f97da0e7c 601d696b56ed35a3b4f9aaea3b860d10 4f228d116af6e6ad88a3e0e92891ad5 d3e279ab7bb0dcbb85d9d97241397921 1d4bb07ac73996182339c28050e32573 9a8a760dd2094921bb476b1cb791329b 17ba9b90304be1b4ebe67d9b32c3ddf8 6c1ab06a1ae2471e86bb0379a61a0978 9c5a473824505151fdd0cc0c1a7bf8f5 61a4c1b213e7eb2b2633ff66beb9cf31 14e608a76c6b77bdf6045e4ebc9df52f faeb2f5501c8618ae47833b310955a9f 20ac1211f88a8a1878396b03f57f644c 3c71e2ce15ec92e9c8ae2f680beb7e46 59ed437f426da7c8c3eb2e07e7561a08 b2ed74172242cd805b2ae1f253050025 aaf32dcc3d51cdfe81757e1914c08a9b c3d845c1fe644b39b6ab6d583025c7a1 513775c0ca44462d912b963d265d5e8 d4fa4988db7f2eb477818a0572bf1777 68d5652dfb91b82fa2b4280235a76885 3d18b9cbc81bd83b83247f812f2eaa97 49c6597ddbc1196be50209c399f9eaed 3490844946e68402e47833b310955a9f 5028625facbf77991a622b6f91cfddf e796a74db4708efcf115c1f523ea8464 9a37a34c652c33d37b46c73cad9e78ec dbb3db217511d9cbfb906a2c84fd375f fc6066741f5b60e5280e0c1e89a63998 a1118bb5b6afd77e6f11d65f7a59b6f5 3a0747975c07896f1ad88f716ea80910 4e68ac6cecd91de23d91ae2b92426394 da9317e5776ed22b732bda87f2718525 c216e0b5470ec21f6ca2b6e5474aad11 9cb881bfcd65686176d485609557b1d2 6d070eaa65ffa57193fef5a7dc080ac7 c0de25758444d71f77818a0572bf1777 c7d423c4d63ae4dfa5bf0df4639be0b0 56e2ab8ad78040432b3bd152980e4b5a cc6ebcef8d2e674690146e2a0489a257 d027e01fdb3830687ffb47acd56f396b eb8f035d56539657f90555a83c8826b 37325d57c8ea891ad77ea5e1afa5bfe6 5000f99de4ae981bc52c9abdcf87548e 7f1be3e7b6adeeae9bb399e812556da2 9821d2e9018233f665a0f3090522e03c eae023e4c609a77799234ad1a4f88718 ba56fb3205a34768d4b4ae2ff4c58b57 b14b479cf64c7d9ad77ea5e1afa5bfe6 dd57cef71e09d11121572f6a2d968d88 9b8512f0cb1fad4e73e1b2d018c0512 8c2bfce4c190934da98a11883c15abf a551777c3b35c06f43f491729931f44 46f25e8462258a85a398a0556683e6e3 1ba6735cd32d907ad493bfe20f94b6ab 2dfc635b5ea197bbb611871e114769d9 39318878f6e98ed2150eaf7a4ddb8bec 6922e97ab45e4e47b59e9758ae7f41a7 44cdc1204fa555be2633ff66beb9cf31 b5a2b8202014ae157a3d98bc650d077e d1274fdcd4f8a611fe10244ee697dc96 4583734434ae5842a820191310c9bacc df8afdea84c72cd5c3dcb7e0e318dce1 b53eaf891eccce82a4df8e9a50b4aeaf a5e412770440524b92981997d5df910d ec9938becbd706dc8dcc38f589890f0 c3661475a6b1f7bcfbe246021081638e 70acca9ae753b952c71de83a48ed3076 3609604595f025801f9f3ce366e030fb 481d17e1ab933142b868767ca39f1cf9 969512b0adee661679c6a0f7677e9555 704d0b362588638aa249f8489bc060dd 16e0041bffa976462d563c85edb49108 775f3b78e226f125b21450114b9ae3a e3a37b904381c61a46407779dbd69b2d be277cf919c1467dfc1c2fb0640247ec b43daefea1c1e5a5b8cf54556d95458 b8d62dc24152a3463d91ae2b92426394 6152f977e3cf8ccae47833b310955a9f bc547d63373a98997dc4f6934317af74 245ed4407d4cead6b9c1ae865c9193ec 4902b88bb0834522ea9b57bdefcbc9bf a1c80145373d98837dc4f6934317af74 d62a7c344c62875f9a0cc1a6d8beba8f acbcfec18a26c4583247f812f2eaa97 c91f926711d5e8261d485f425cc21556 91ae8db92f3dd88b55a8aec4bacc60b8 c029e58c26875322a9eb0f146e94477 75f07f0e8343639d37276d660ae66f0b f75f60a086094c27e5096e2c6dd4fe11 6c2a8b174ee60c241ad88f716ea80910 85399d0503bc8a5b59a6208793b9dfca 2fc738e7a7dae1b59e08df3ef197add6 a25819c97470bcb09dd0351f01396cda 257e47c2c327ac0f86690e0779a3135e 8705c20e8dec94539b0037ed0d57b3ef 8684b67d71677ac95ab0bd3eb49f9a70 af97965ad9dc0ef01ad88f716ea80910 77f5a7479859ef79d97a4c09acdc158a 5daa294dfd41b3c2e01d588c78e60948 7b8aedba3024ed389e87d2bdcb41f548 79f5622b83f85cac207a7604d676d24c 5fdb0bb9c3c18d50602d6239bab56abc 9d43e1b188ac816087d72888c0a9277c a5c19b4bfab3a826236632eedd876bae e40e7c3dea88a733eb15975241f6a53c 453c959963a529322633ff66beb9cf31 c6eeddeb0366b4b6cf584303d1a1b5a3 bc6dd957c20a08f67b440c5df8efc309 b8cf1ee73b068390205b075c6f63f661 84a87ff36612b3e53ef7ad0f5cedb0e3 d5c3db96ef6559cbd867c39c06b7c506 7bb0cc242729aa90eafe995fd10c1326 11d9dd7b170216eabc4d71e69505510f ab651261126de20c145adb610a878e88 993cbabbe4b4bc4431baa3c9ee4148cd a9d7e7bb4d72c52f1574d21c0c95092f 2bdeb030dc3caba21ad88f716ea80910 711b146200447f4183247f812f2eaa97 181d03027d30429dced68ac20944148 2379915c82c2b2d02530f02db7e9157e 3fd4d9909c72fe47dc4f6934317af74 1a511622eba730c79ee3c69ee7ee1fad 5e71a80c6ac94e0177818a0572bf1777 a872cbdc66e671ec29d1e4faf5d375 4e0473ee9d5c72aef00aae52edb0b7b 570321d63f5fcb9391666edbc97a985a 70d2fc496ad0da4aa7f1b033d01e1364 461441f5606348f3d88a3e0e92891ad5 94944fbeaf37861c61ffb06b88ae391a f4ecacfd4fd61afceb34db531a289b8e e34b3e11083387b9c9d5b08933b9e0c1 137c1194efbdcc1bfa0892265dbce8fd 835e01af50296235aefda81565fede7 4e0dee54cd02258eeeb8d422649e5f2b 3e16cce54c6f0b0f8c21317f25d028ee 84d2d9ad08b4c39029cd33b1c7847c1d dafd6b7408e43ae5ec3b2e05ce8fd39b 68e85f236ca1b43467cfbcdcd1be46c8 b0ba01e0a7f3553897950841baebd2bd f529e7d74d5ec3d9a1bb636e72c59b32 7e3e0b648aff4aeb6a6d1e86c6266511 c7c2dcdb1f3e85dd35cd53a06b1d2317 57374f933930a1453f92eb5e681ffef9 46b229154ab6434177818a0572bf1777 dc9c9ce6dc9a771f500158c23c4c5a8e 5072c19da106b95583247f812f2eaa97 3db832895812dd37230584014222e685 ac8fb298f7795ba47f1358f741bb7fa6 8e55b303ce059ac5aca1a38908852eab c8e0a46d8a6352c58df4edffcbea21d6 60a7df9bf00844735e7cf7bd2b19c869 22e37482f8499fa53a081cb8ab2c8e61 27867443c228581e515eb678a856048 e7588cbebdae5863629c8a4be6c1e509 c90cbb0458648665da49a3feeb6532eb 2b3a776ab2c38e3844f57509e473c41a adab0912bc0ad1271ad88f716ea80910 dc9f8240a57b7be77fd9594c37158b0 4a158b46d8e943f2d612e9885a7318aa 101354f9d8dede686f7b08d9de913afe f64068aad93d502abd1cba733b111584 b3a4bcdee00ab993ebc29484102f14e3 240521f502e491cd4eddc7a5aaee958e c6c88ee9ea728a3220815abab29462c3 3dc77d756da1ff5eb3b44ad99a214777 a12a46aa47ce021a0ac302bb9c69c6f 4ded23cf84c993e9df3c63f2cd487888 267dd5dea4dfa74bd4e62d99c536bbaf 6aab9afbcdb94edeb59e9758ae7f41a7 da2fdf0220908ca42744bf8869518694 b0a331fd0d599fe8e69f17d076308b42 161de75c52763afade3a1fb6044fe536 20fa8d1542e7f835efaf604fa2300241 cc9edcabf65e42d3febdb1f263373824 7e061336b31b8604d34bdc365023cf4 c3233311a94b7b968a0181490cb73cbc 14a21eb927d89df31ef58b31c4ba0d15 5bfeafef1be5f4f5bb476b1cb791329b 4f0173cf9b1472c37d4f87d95d70ab8 f1fbb16afaac70231ad88f716ea80910 3ff2ce8b7432b5d6feae521e94848af6 8d88dafbfd4200c772e8dfb640f12f2b cf45708ed1ed436970f2559ee6f59e37 b0705be54d6220d9a344697865361601 b56efe51e12dfcd72c730e00f4721fb5 fa6fab7bc0823f6e54feda409512bbb5 b02ae2bb9756acdc5587d8c9be86464a 18e1be943fecbad143662aee1fc05d23 a1f0c93f000051c7f1aca3fcb64b7fb2 96778a7607802a72ce1db673cf70420f a23a775c5bfec73d8275986ae1324d10 a234d7b21f06dc58d77ea5e1afa5bfe6 e5012f54d03b863ecfd43bf63e641a70 1a1ff0c5f28f10d642e265df80f79372 ed80a69f448cb9a7205b075c6f63f661 65dbba7ce5b4c40192e34403f6f6f5f0 f142707a0f0acab4cd229b7f28637ecd 10421ef12dd27f3650f5fdf97aa1ef24 6b621f006878b74f2a9eb0f146e94477 eb9de225b5d502c1278fe505f40d50be 9f4aab6206870d5deb34db531a289b8e 9de56b4a4a9eb3a4cd4e2b9cb7f670fc acdf7e6e551eaad3423723bc261e3897 5b3bf009f0dee3f01ad88f716ea80910 9376e8048ae8b34ea35fdda2e8d5933f 6d83986459f72abd4884161c20b458b0 b2ae90026d7979d8267014f0fe84b7ec 8453a71333241062f1b584cbe791b374 bf27f6d33ea63c041df7ea94ca903361 614a16b7b994063af6d28508a7c94d33 f0c6079a6dfd5e0a7a9e31f14ebb8cc 5aad6776bda34de6831627e12e4fbb8 bf83a8cfb72a6208432eb33b78f3e334 5efa892adca22d37cd8f3fe9ca2145e1 e2603611f6d3c661b9b2b9d5b2804865 995ad1befadce7771148996e35417db6 c533b4ce486919121cd3f324e5fa80 59455b5c509a7e9efe96ea0860283ff8 5e40ffef9d25d0f031f3d76ec3df45bb ecfb9655edf2b5297160646d65ba4383 acdb8a7d906b126e20363e2561dd589a 74d27bf812f4a7d83a2dfdc3f38ea6c3 46acc0258b449d18f01503c3476a4944 3ff725e1e30e4ed6a939d6b77e949639 b526ef9f77ce64d398ed31a2f734ab49 a4a0efdf9359987515f30bbd054cf549 841818bf97827792b6fb1533bcae7a75 bc09422920aec02cb8901bb57b05fb9b 51b745123abc098c10198e93f73dfd5d f2918caa3fe8eceb47eac12ec180489d f14ddd757b128a96b2b304a0ae97620c 573a662d56db6a9d1ad88f716ea80910 88bddaa41de4fc386f936ccdbda50e38 457c7205d3a193c01692dd4d739ce02f d6cd608c3c75afd01ad88f716ea80910 767b076382b239a72d563c85edb49108 311354773f4c016ee1e724fc0e43bde4 3fa75b15090b5139ec507a9b4c133ee1 65bb8f59e10a0cd837f1b3cce66816ca 368d30ee72c63a9512da48a027621f2b b6f154678c06f537db24fbbf172c2159 ff383dd89f76410a49c18a2c5bf89a47 6c403ea54430684990146e2a0489a257 b03b88ff24870f2720363e2561dd589a ea1b716cdf033bc4bb844bb01fa51c1f 75112a1fb101921edc1b62a5dd6fee95 b96feb6abb039ab8c7c56d4a401463d1 97e93552e141ae2432caa5592532fb76 b8092ccc834f31b9d69825aa8e687d85 d8fe44ea5aac77504d0c24eb0094dc21 82ccc798c04e4592eb34db531a289b8e 4cd3259a06b904a36a6d1e86c6266511 8b0544e065d43369588e71e21de9f30 37992f1a3a6eb8abf398d0c5832df00e 7317a113f9999e28824aa039bc530c36 47072a1458f35a8e1574d21c0c95092f fd4b2e3a6caf4706a817854e3b5b5439 ab79e12684746d0273e1b2d018c0512 126ce29983c5421fce567a7bafc3f52a 9f90d7bf89231ba94f5aa6ea4540caa 77514a7ccd32860dd9dfbc520b0d9752 2edc94885c4ba7ad2d563c85edb49108 c389dd22f9209798f72fe2e3cc67d234 e62dd51d47ec4e2ec29f84f96a7e29f f996317de417329b1574d21c0c95092f 14f7468c0ae24a73d6317d54cfc1018f 69212e8c41ec753fbe62db7ad46c40f3 2a38fb6acef92461ed2aedc3715ac201 d97a4771b9d796a22d1a40e420084a6 1db62b6137f51cee8ae98a75d7488e57 6f1913cf723bdfbec5e5fd334d8e3b16 5976630a3b8452617ae81ddf970c0d9c f98620e647a77e1f8b5ea808b63cd2a6 79e5aa259b3c148789df8842b5523a86 ab478f6a1f38a5d18a0181490cb73cbc f982748287ef2c7ace029fab54b6cfbd d04ece855d678568d74f2f4a7f5598c2 7f7ca259133096cc4d8df313232fc497 2dbb22fe2a25064a7e95eb283a46224 4829f4099c72420351c3197f6363608c 6b13ee07cfc1eaf7967b9b287e3372bd b4e360a10bed4677aa0022295937af95 5ee19a13a20ab65edaa5dd7053bcd03a 5d11e7821ec86797b646fca2237eb6 b6ff46015b57bde9abacd1c615a34b0 9a989485d607844c786b126bff0b0351 709864406b03fa2f880d754debc41bc5 5775db2064a6b0e87d72888c0a9277c 58d0623bfc9043965c3fc20f066d524 f25cae5549e30302803f272bf12359d9 16ad8ba41b4caaf66a0a07a21e1bacf4 f156e32edfe185b76ac6c4392c71284b 155b9ee29dd8f068f9872b1642da5de0 859ab0a5ce89e271b4607134dafdbd9a f07c69a33e0a1f54b6c84941dc90c1d2 6a538eac61644b0f84145006657ffefd 292353a763d0870432af7736a533c197 8dded99a589a526d609daf4d63b3df5d 710c0a8ede7edb6eb31ee294b2971a9 2a7c52141a3a32dfdd14180aafd9db4 b6ac65861f2b7a726bd362b3eb022b32 71b68a5e64903e0a1ad88f716ea80910 5bd42cdbb91db055f7e08add4085d009 f8d4287a583bcc499393793f9cf3dbea b865f12d17532a3fdb24fbbf172c2159 1e9032f25c5d068fa7a69b946cbafa2f 591613a69c2e212f78c0a4707b40a908 4421130ffdb720c7421e5649908a4a06 5a59e8590b3f12580275d4a88484513 4ba818da340a4e5d60647a90a03914e1 b78e6c1ed34b29e7fdd1073b17e9e51e 62fa02df51eb19a5679c9e94dfb2276d 4a4132b1bbc364f573c609379da5b9c2 58142a4c3a71147a2e8dbf40bb4c181d fa98563736440326ce1db673cf70420f 892af085a4518fc673c609379da5b9c2 23907d5a2bec2ba6ce029fab54b6cfbd 869225f275f3dee12a42340e65c9f0ec 9c98e3576baa1f25b3150cb8eff8d9d7 de41e90d949a21d6a41c66e27a37f014 43990265c9b6be4a989542bab68e6843 30e85c002b800f2771fd733ac7e95be9 56e41e5e3bdb2c8dec29f84f96a7e29f 39c641a818474a46e10cf62a02f1a100 8f9c393fc17d1cabd77ea5e1afa5bfe6 384fbf785f1691d2d747b49524a1246e 56e11f06a19f9c3edb24fbbf172c2159 97bf4aac2d956c1d5d9e9a1d5cade7db 4e6e05676ac77f30ce029fab54b6cfbd 3983ad3c93f4ff0ce029fab54b6cfbd 59b78ba40b16eafed6baaf394ad18924 83f72a05685b80bdc7c51d4ea74651a7 c20a8c3b7a06cd323a5b5efb52c46c0d a24796b40f26be4a19f048d3a7935eeb 7b81d4cddf859fe7ec8f1b76923633de 11c1c970e9cae04183ef95920b2c145d 663174c8076b969eff258dbde860ecfe 2c8cb15e2d973bc847cf5450436b1047 3986913c6dc63598d2e26510f3f5390c 26369dd5c4cc8c55e9e3ed40810044f 4f4629b12510571886be4ba1f667c92f de5a57d8fce504ced747b49524a1246e c8a343f35b8593981ce8823e87f4a7fd fe4ed2d72cc79c74b59e9758ae7f41a7 7f382d870d2816c78ff420534f79208a 3575177296452c98f149a4641e0b7067 9a859f2668f727abf6da3fc8db3c804 b24c25a01d69adbcfb14bc0c4e180ab9 f2a13a030a8153d9133aca0b3ca7f0a8 71c5756cce7bdf8cd6317d54cfc1018f ff9590ccc2613d6c332d76467c18dfde 12ddcbc94fa909502533128de72c17f 5acc9b2fd33a9568bf19c71eb972f14e 7dd0a1aaaf29b18529d8eecf3827c486 e6ac4bf60e270a6512da48a027621f2b fba87f3cb973b06871bfdb4b1c2ed05e e75c0fb00d2b70ef1aadbcf355bd688f 576fbdcf1aab3887e4e65d5ecb84eef4 508e66670fb3830c2cd6a352b52d97b9 8edca4e07dee64e0a08ef684995f5adb a76f63c6b3702a4981c9b20aad15512 53d6d8e3e4731b3bc0b5947ffe18a468 f0b4735b45d1a6b51aadbcf355bd688f 38e4bd990b3031bdfce87fb06e25db17 39c15f4b2ccd699bf0a8b62260a2a216 c72753b17403466c51fb196f32308d0 77c70fcd8ebcfbd4c83db093c68b1d7b 88bafe4a96ff3348dd1080d43103149 72ecb9a2d25458ba8b4cf2c9fe044514 47f062aeb83f19e1618595b659cf68fe 74a4f472155ed5a3b2bf4f773fe0e622 15c6b5792b19af3fe99c48db5f195989 ccd635e4cdca96e33b6e05aed261d1e8 b2705ec086216be91a68031139d740d 22654d0b3683df91650c44f51c50faee 4c944233440d87f4b8e9f7eca3eb3e3f 8956eaafa0afdc142633ff66beb9cf31 ae39f8cad4fe0981332d76467c18dfde dbfcda5d40ebc2148bbd829479b32606 8e632ba25f8af84b9069c2d361390698 3b6f73cc36cdabd2b3b44ad99a214777 df678ca1f17e32ec3d65eaf8cbd60895 113aa3b68f515427205b075c6f63f661 5027b6f6c32b0d28daf9b9aae267bea7 1b24c1c65645c5f155b62c3398327a83 792be08647d7e0fdd4221fb0ed444ec0 c198d2df79e4a40fde3a1fb6044fe536 2629234a2fa847dd9b106ceb230ede0 702c2f9c3e8770b534943af333340cd2 c2598d72d508a33060ee9c7e2ec5f91a a690234747bb56ceb4767ab55965ebbb 86adab79cdfbc284d7872acf770948a1 5015233bfd8fee3f3e066187e0f408fb 1e6a6ff6f4168459e5c00598c3e9532c 16f4517d129ed54fd747b49524a1246e 27415ac0b56e87528dfe57cb1b540899 27266a732bc955e4db965514105122a4 d5bca27bf05ac5c92e8dbf40bb4c181d c3180cdddec577f2e17b9e33c097dbff 5f525c37469b0437feae521e94848af6 c50c27f14da0f7fb86785c91e1a79038 323f51a8d5029453d603e2778861154f 40f8addfc03b2b1e4d0c24eb0094dc21 424e95fed6e7fd5c14fdbb071f44a8f 67b63929a6fc3804dc7d80effd6f43c0 3655d8078087f1c62d563c85edb49108 43f49627bbea5c39a052db10ff2f17aa ce90cf5be2ffbf92505e438c8a36b3e7 c8b4a5d2588868a7a1dc1681ada9b3cd cc01f463f825ee9024fa1bc380696e03 5d3c3b2e6645df602a328c65e88727a0 5da457ae73142749280e0c1e89a63998 1a9a6a214c957757cc6617fc407c9ed2 9432e02e277a206e3fccb208b0350a f8fde8f5f364087d2d563c85edb49108 28be6cc8685c68464aebea9384ce74e0 e76108274392bff53d91ae2b92426394 48720ac336dc7012d20ac02530d96758 3fe90423ef5b56386af2396cb8af8a8e 1aa51463dac23d5cc9f08ea7a19d874e 3538a656bdfe47948dfe57cb1b540899 35815951ccf18e3eb1f6750101befd14 619442d40cba1f667a964feaf6ebeb 481705a12fb7d10a20363e2561dd589a c56e62ebcae613624c40f34de8f3bdb8 86775c918b6f4fd2f149a4641e0b7067 539d5ef3031544fb63c6a0e477a59b9f 93aeccb6a5e0a62035cd53a06b1d2317 40f0e44f749ec0c7b3e0a2cf776be56f 36b29f93deaf22f66b1cc4d44837f930 82b9111b3232904eec3b2e05ce8fd39b 4d264fc57f6ea6bde389c9be84ff7ec 2cc52cc8e9de5c12f398d0c5832df00e 58457267e0a8e3eccd4a817c9d7b9f3 2e0fc1bc430c5c1bdfdc04b8b8434e84 96a3c3653c343db6ba8a1820ecdbe891 1ab52761b829fcb375a3010d3ada28ba 67f091721c90a533d747b49524a1246e 192fd6e662d89b62dbf53b03c847b004 8080831f18e0cbe1b22b2ae1c9a24291 40007a605a25c71d747b49524a1246e 92658be9ec3307545f7109466a688ac e5a6dfbc6e89ba42bbdf3c5f28fe5d98 fb231e827089f9db69a175548b8cecb9 3fcff447f43c75c3ea3d2e9efa07ccad 82f1e500df50302e26870852082c4c6d ed0f8fdfd9e1182cf83b540214901572 bc522596f5da2ecda32913968eae7f30 a3f012045e4b62b2789df5bd89bb3ea 46d03a4d9dec071d1047e2dc3fdce97a 55e68ac8c812b332ce1db673cf70420f b6ec9f482f055259f2e5d34c7b677bc4 a423a97b5758a266d747b49524a1246e b3f76f7361b123f5b3878cedd8c8fe6c 90a050674ebcfffe475649efc0ac5403 2eacd8302d46093ee138e561e8f9c254 e854747b2165ffd6f8b75fa4030d2e21 46ab468d333233b062a6cf00d929f875 e6e09672fd21f3d887695b38431695f3 e66e2202b11cb7122d563c85edb49108 fe613d2a63582e126e5a8ef1ff6470a3 5551b67ffe95c01b73c7253ec9acd58b 4c722ef308bd6362d747b49524a1246e 36b61e14fedd020a838f7ecc5ce13037 908202c73ba60671c0d274eb53f065ff 1f2a8562a2de13a2c29fde65e51f52cb 3e33b290c010b3b88bc9d953a3f1955 9f7eb24e82020dcf40df330a2f73b17c 4c68944b2b8105d11a2f7b80918eee9d 2a32fbf104a7524ec78a85a5b5306f41 44b9054ed15fac2c3a67bba344536c8c 2336a8ba5ba8a9f0ce029fab54b6cfbd 864546c6fbf636a2d0d6252a768bb9c 6b5458409e54d8b99c5da70959a4c7d1 6c71c0791b014bbe7ac477bac77def9 efb2eac3d84429d6363cbfdd3d5388a cb904746fddde134b9e8bdc9c4a49aa2 b3009e2384620945a35bbc252ec176f3 e637b80011db78c3dd6a08110bca7bd5 e270c383e0d9c8e0ce029fab54b6cfbd 2edb8ba1a031b3f5ce029fab54b6cfbd 9cd16abcc7fa224ce029fab54b6cfbd da21a8c569ff0ac4a7c719349406e0b7 f046081ff90ebb6dce029fab54b6cfbd 4fca42120b49baa526841583f16744a d414b33288a735c955b62c3398327a83 1605c2ea5ce774811e4a701e01e712d1 168150439eb31ea1ab5fa92a7378b5c0 da706fc7141b22ece029fab54b6cfbd 1e83ac6d9ce1541329965f7e898eb4fb 20b0ddd49c8cda71eef785963bb59c49 5f41f45cd57adc0b885333683933c555 1733111366ac40b76eb0973c46aae0d4 c1fd0e8de18620ba27e7754e513f7fef 91d876c2c51a81797ad9e38d6dd6575e b7b69bc187bfea4a8b1598dab950d979 6c31773432190681f46dcb5d9d87ce1b 3b1a3eee64e3412b6aa8ee471986facb a3d5207350bdc01e87d57ccb715c57f5 99f296d0bbae5585414ff38ecabd5968 d3b324de8e23851e55b62c3398327a83 b9f853ae8b693ff91574d21c0c95092f ca545c7c3bf38891af3caf4aab91511c 24cb5019659114d5176545ad403d244 c7965a5da1143830538cf6df9faa9b65 56e2847e61b36a134c7bf604b18af84d bbb7275f2a0224eb90146e2a0489a257 4cee7bc85dae3a58d6a78c624f639b3a 1d7af68d31944c358a0181490cb73cbc bc611920d1608f96df172f74754804e6 c766463a3623d0ab8a0181490cb73cbc e97a846820b094b8f439510dd98d9326 2f41de1a2faf854d860e5e56395d4d1b 16245718c786456b35949989d0ab81d2 421eb9597a33cffdfdd1073b17e9e51e 7cb1aaaca10a8efa8d8155ff8532e190 c134c61a5b45dc281574d21c0c95092f f9e6e10cdb3066929a3fe7e437a02206 ba63e6e1bd33064a90146e2a0489a257 fc5315b04ff094686d564e28438f8cbc 46ac6f60aff34c5fdfadbc4d6667b477 102f9164c5ae3846205b5aa6ba4df9c8 bbda555f0874e9d5b35234ceed4dc815 47a0132d9a497e8ef398d0c5832df00e 98b920157670bcdd716d882f857922cf 40cd27b2f685afe3ec7f40971ff466ac cb25ea4938c1d31a1a5a6c4a1d8120d4 22e8cd8675ab57e26d2f7f4796305f20 a99cc4f1326b9b48b08cd968d6703683 2dc57057c96ae0f74c24a2a9e289662d c5b38593b74c39695f7109466a688ac be2df150c86b57d2c9db3276cf490d3d 1f6b0aa7568e70675c91d2edd70c353 29a7fe8fab62a9e134cf66ffc496802b 95268fb7d50ddf77f398d0c5832df00e 4d1061e19f05e919a5e698f08af11df1 153c468a60e1116b2eafea928e361a58 796384ba0e8cb525e17b9e33c097dbff 64b14af80e246549a82acc849eb5e81f 6e542a3dfae28b1cf852111eed0a5c85 82b56b6d371031ab7c8813aa71327b73 c556fa897131c0c833b20ff045584bf3 d35894de19f2ac5af6ab94ce02a994c4 3a346d78102ca842b996cd669da05484 ccffe9befaec2d1c4ffa46d1fcb77f51 336fcd767dadec9fb611871e114769d9 b47ec1326b29546bce6c3ccb8279bd8e b4cd1e4296c3e9b55ed2ad7d2e018058 c32bfe130412d9c6d9b106ceb230ede0 665dfd9711b2a3ece4fcc1af3285ca51 d457ef805b078d037f5e8f62dd90fb59 a50af511d8cbc8df520f563b6d5bc71a 97f758c8d327d072871a975200291c6f 51bdaff7782cab384bde7bbe88086aa1 63c4583afc2b82237f299e32f8ffced9 b544aafb047ec5014c40f34de8f3bdb8 16bf19a982c7cd71dd6a08110bca7bd5 de5ecf353cace18574b0aadaa58fdcf7 f7624b0826b4da3ae7e41e72dd76c27a ea83b0bdf2b13bc89c0528265c614919 569fc1b111617f4038b28f94c165f833 359d760f7d8fc091fdd1073b17e9e51e a05dda1538ddcb4cd747b49524a1246e 3dae5a52602e2fe58a0181490cb73cbc ab84f70571827b76dfdc04b8b8434e84 7f2cb859eb00046d3bb72a8bf55ec27d 5b7cebe280c5aee935cd53a06b1d2317 6833234a218df871aa35b1de51ec4cad 483c63155f2be7a8983b2cee8fd0fb3e c0add53ae9928d73b184474322bd24ab 7f448ebca95a536f40e7eb33087f3287 3eed264487fcd94bd88a3e0e92891ad5 80aab147daf83cde332fd8bcb8108236 40e4ae14fac94d0b45bf366c0f22b100 164ac6f6252e22b5f5c320b27d54d683 5b6ffc53d44363b57f2a00f370c25e25 f1175bec19adeadde188dff443a0c2ac f150315ffddd85353ad55e05c29c23ee 1ccc688123d1d873ca93bc607b24577 b8da73245beb77848d257d2dc106cc1e 394302e20816d0fa07828ee23920679 33d61def031dc1ef256097a658bc66b2 370ab315439047cba2fc84df67c2df42 e1b3bb54b9855f12d88a3e0e92891ad5 4a10811da56f40a989542bab68e6843 ac6d3202823055dc1918763f44383273 c3280f7bc5fa9ff28a0181490cb73cbc bfe4ba1b06404e4bae19bd5568e6325 2f9b00e9c1a1b00c47569806bbb7c5a0 90882268b1169ce79428390c02f266d3 61508357d7d9ff38a605f453cefe7e92 6db722284891a7f684f5f65c78855f9f bb304ec80f4ba31f8a0181490cb73cbc 93c54cd14ea713d34d0c24eb0094dc21 87d70f424653c8c9e2a6fc5932a88f35 c725f6e275e9942f989542bab68e6843 9c1bc89152d90500c92750b56fccbe69 e08b3ac3bbae3dfe5580bd812eb6e71 d06487d7634bdfddc1b62a5dd6fee95 7ec487384a050ccb82d710142ac471e3 d8023575778364b035cd53a06b1d2317 336ae67af51a13309e87d2bdcb41f548 17f87baa813447ab9588e71e21de9f30 dd2a4c416625f29c4f57a7ededfb3bde 244f40cd50620b32dfdc04b8b8434e84 115354ddf0cea683c9603934b9e8f5dc 632510d0916f31a184d6a2fa7259858c 5222c43f267d9f313129bd51bf061fac b6d83532d5479753bdcc14b36549ecc3 918ae70cc8ff08c27f83e87789efc1c8 dd6a03f9fdc339c6538cf6df9faa9b65 f2bec55383f72f04f6eb098afb876d6d 1499859135ccc6b267bde58c681df405 7fb191e5d0d7464b538cf6df9faa9b65 e911bf2418eae6241574d21c0c95092f 8c919e992db7cb081e5b68ee10358ea3 8dc1e06a23a2fdb7c77445c6f0b20418 f0f9a2082454542751dfe6844b6e8393 2cb180d4322b8ee9c0d2bd04416ef7c 91a98a5ab36cd751cf99e87135c925d6 c1cc6f59c8c6406df64115eb33ec13b 4ddccf2b67d0cef538cf6df9faa9b65 bda24b02920f91d1887e8faf8f33b0c5 9d62d13afcca23d841c6e77793c5dc94 1eb0b35e8e8ca4da85113402a7623535 981abfda92e702e33b9f0ef1fda503b b8a5307c51164dac78128d32fc0f2897 eda3d466ae38e9112a40b4a3ef70af61 43730d7a76ea63f920363e2561dd589a 14fb43f3962bef40ce2d0b720afe8196 81a096b49d138bca1125e131b6efeea1 4227748867df8cc020363e2561dd589a 77433c14eb1043a91e5b68ee10358ea3 607096f600b6b75620363e2561dd589a 590e2fa429a94e711b45df3fb820c9cc 435ab5f43b24f739bc0c56c4d4a1fd3b c9de3e18847044da47e2162b6089a53e b0f6ee90a22dda571711eb7e23a7e2b b703762eb7b1fd39d0cd692038573317 8cc5a2ac83bcc120e7a1105f5e7667c 926b6071c45525726d3462e1e02b75d1 21b9af9e21bbc7975afcf0aaed5d73d0 5b2afef3206a153db06d0ef27244d1aa d9b205873345a9b35234ceed4dc815 1d4ea80f49114ec0813621823d82b548 79267b91b523933d73e1b2d018c0512 a18c311eba5e551d20363e2561dd589a 1bcf25863e840c11f806e7110c573eb2 dadb71e216b54f701c5d4854f1aaed94 28b5a90b428358e173e1b2d018c0512 7b08e64e66cfe5d473c609379da5b9c2 f993f348260454bb538cf6df9faa9b65 6bf052e16794f2a73e1b2d018c0512 f6958e13ea65bd521b45df3fb820c9cc 3256546f0f70af9c39c80a095f51c7bd bc7a4151d2098374513ea32c8c934a8e b7c92dfdd563ffc74533f2e74542acda b488f301cc8c7d0d4079257326eb1699 46de1dfe54a261b4c7e1f9c70054d66b 8a536e4254674fbb73e1b2d018c0512 5c400c09175e3801bb3613d5601159a8 8d5064233fdf0624b6d9c2cee7f2f72b 2d408222b334fec71b45df3fb820c9cc 91bab54d8d14100161d3e32ec60a98b7 7174c62e843e444286a8288f8ff176fe 88c9a7928bc35ab392b9c678bb1d631f e2d6a0851b9357141574d21c0c95092f a8de7f2c7e00f9a01e5b68ee10358ea3 552dd48f9a264d721574d21c0c95092f c91e878553979be9c5c378bd9e63485 c52531bfe9fcb17a87586c1eb104adc8 23efeac8bd7132ffb06d0ef27244d1aa fad354295b4c0fdb55266ce6303fe1e0 92b3275e46a63fce1ccf3280eab717b 956556bceabf511d871b94133e874f2e 291b3dc6e6f0d5a7b249ecc7669d184f c76fc96ad122a33e75f6e8ca4d589c7b cf85a8c74cb76caf1574d21c0c95092f b68e0b294c799771ebc9199df8e5ab6 8f920f26ead4d592cf66d96a8426fc6 2c44213112c85413f0c1015881a0926c d3817d6003473f1c3971c6f4f1d0a4a0 73fa71b650b99bc951d3c864cc68e22e 9ea3e05166af97ed20363e2561dd589a 5501c4caf22a5c974533f2e74542acda 276363a6e7991caa85dbc6e74635dd32 5a115cf7e21d34d249d7025d277c28a1 cefdbfba01e3128920363e2561dd589a e849b0017baa1a978a0181490cb73cbc 5adc7f63a154a43be9bb042b8623f922 a9957cf39fdd61fc612f7163ca95602 8ae34239b6c46afd55a4dbb6a97481d9 54047a2d59ac5eae3ef7ad0f5cedb0e3 f8b0dcf0788e775db98f9e89101e3f14 2c4d13cc64a679f3322f30a0f4208183 b49306bfdc0d238076247c6336e7c242 61c61c893164dbf275f6e8ca4d589c7b fa37905b884bdb169f69aafaa5236e51 736820a85063a4371e5b68ee10358ea3 8562c442745af497b5b6356ddd072fd9 62729cd3a4f7403f712b392cfc0c51c0 d12ec06509389e01574d21c0c95092f ce21542cb2b0bb3458107383640dddec 142f66a7bc5e119d18d385624fdfc6d0 e22ec5ee664f7c172a9eb0f146e94477 e66486c1f5644e298a0181490cb73cbc 4ca26cee4108632859d58b5bb5e2bfcb 3110c18edcedfb6331f3d76ec3df45bb 90143acb141fb1cb4292de5cdfae65e2 92b24dc36603b59685a979ae0f537b4e 64058330533509d1d747b49524a1246e 63f006488cfdb69bdfa0db1c1e10ab1a 61ec03d50268a852d4c639228615260 afa628c3dd7558be89367e7bd925ea7c 4e8eb4a0a6dc83e0c779d976f4b3d7df 93900698e7d9ff4d104831d5b063e54b abbca9c2aa1ab018ad65e8e6cc8ad9b8 b648f6cd54d07a1023e70120ea31089 b28c7b84869ba2aa87d72888c0a9277c d05c2dfdb34f38433e8a91ffbc9ffd64 556eebe71c16acc9e17b9e33c097dbff 5e9cb0d76e74b0a9339c90d74e7a6543 eb0c85cc627406b5d33b16aac56dbe59 6a864ca4b19aca77645b6a2a45925e6 d46c71be46696b1d41ba258440d3e234 16a8c851009d6786887e8faf8f33b0c5 33b19fdf42fd767d871a975200291c6f 79cbb3c5f6bad447abc635d6ed355bef 8e54ec9d554584cfdfa0db1c1e10ab1a 87e2d9c72eeb8c49f398d0c5832df00e 6503d74fb534ca43d4e62d99c536bbaf 882154aab31d483e130bc0755682f7f3 e5c2ab51068e9f8b58ad8ba2f750cf1d 2454758b9629441cf322c3e7acea58f1 6d5698eba0fbb1cb2a9eb0f146e94477 2afbdce92417c3bdd9349058f7c3888e f6d6ab4f49238452b45df535caecae62 67967d0213be8b199fa004564ade09f8 563b0c299b32e73327ac18a9705c27f1 e30bfb0ab456101cc0b5947ffe18a468 8877b9b8e68fcda696d7d56afa10bb68 76566bf65b49e49c864d68471e7fba29 7f87d18e6cad013ba448d8e70febd930 b7f4de208a1051e62a27a874411d1ac afb32fcdbc6716b2fb14bc0c4e180ab9 211cf10bd078f91c01c4160f17211fe 4d698b1e935897905e97b1b6281b6b04 aa8f197979376d792d563c85edb49108 f7366c0025b2eaabf5fb60584950565b b7c5eae318e4e796d4e62d99c536bbaf 7c02e1c88907e8426b424c689f1d711a db9fa74a2b9ae465c7e50d673f14088d 29b26d5aeae88531574d21c0c95092f aee6f0ef9f8a7c13b54cfe6aa07c2036 f4bb44c3b9a044ebaaa7694cf6c95b84 e7af5657b90b9a73558880eed6ddb84a 5a943e38dc477bac4310636931b68fdb 4fef29cfa7ff1498442ed26ceeb35a60 6309ba4b45aa1a648bf9fe7c1fcb7ccc 54681e2434fdc9ccd747b49524a1246e 58af19399a5a447e4310636931b68fdb afd431c30a98f782d52af5b75b4cbd2d b0d4ab08b9498de4f42138205659017c 26778511109e9e76d936ebf2a7172ccb 943e9abfee56144fc194eaff7ea54233 799a7910c5084f1a799c6c3b2fff049 b4bc7d540893226c507038fac66e20d6 f3f07513f7deb6d1e4ad2926a22bd27d c73bd84347cd8fc9599d9c8430d600ff d6ad58677b397894224f9d60ad32613 c6480c816679773dde4fca22b4a322f6 5533322e8dfb7d69efb0fe88d2924d2d 5bbdb492122b18cf65d1c7f91840e570 79c0d4ba54cb08ccec29f84f96a7e29f f0629a8139a9ba04f398d0c5832df00e 324c0e25576498485373b650bcccdac6 f858ecde18c5dae2f398d0c5832df00e 65425eebdd205119b128e24d154447c 3a7b68f7312c16f1e9bb042b8623f922 5787e7156ddf7a2adfa0db1c1e10ab1a 65e35b8378bb62a3801d0b1c6eb274a4 2eb05cd394f94bf7944366528422e02 e465af1099b63258e17b9e33c097dbff da23f8427db17c3c627a66821130f814 5b83ccf84149f28882613fcb45c2087e 1c29d002435ce5f484f78eafcf19b8c2 93cc6af2bbe3675cda8f53dbeb7453f9 b3158c23dbd08f554cf39544f467e5c6 e1385ebae6a7869d23a4cda08ffef080 b9c2454fc2ef38db3db7c6064037cd52 8d437b97fc1cc7bae9bba7108b76f097 11f5f6311449da7ebb01628f533af3ce 5260d7e4d379219df2e5d34c7b677bc4 8d698e60c436d75cf398d0c5832df00e 83cdedb3431e8d8a41c95631f0cd177d 4678a534b01fd4d6a29efdf1e3212661 98db1220073f905159f43e87f0a59fc f187f9369aa0a93200d439345883b61 7c56acc57cae84a9a3e7d768d81f6afa 52ffd6fe29e51364b21928f7573b58cb ab5c8c38528f06daf398d0c5832df00e ef720d2b2de59184e775d184845c9f5f 993d30ee5f04eb7bc41d2caaa616b8ad 63f06aff0721b648f322c3e7acea58f1 9de3cd602d12d178887e8faf8f33b0c5 a11a2f20b1680f91b626640605322b5a b8417869805cc9913ef7ad0f5cedb0e3 f57c5e8f460e659f395ea88528a634f e0c6692e0af5dda1459a1795a6d0c69f 7d75382b7b9e7bcfd88a3e0e92891ad5 37b5f7222e0eaaa78803395bce6d7b63 d11f1c28831e85a920363e2561dd589a 185315ddc6baf393e0b4198d87217c56 5aa9c76ab234dc2234560c18f9de360 fb2755146e61262fd50505ee01b106d8 453391a5d1d60bd51e859883d2ec3f1a b51a5f044c349741ebc9199df8e5ab6 5b22a13742fc7224079257326eb1699 62e30deaa5aeac183ef7ad0f5cedb0e3 88842eadd96e5cab570b6bda9783c8ba 5338db4536b4a889de7da340cde8d034 bd1ffe5dcd7239d8299f55a072267eac d458f71eedc7146994fa1ea146084110 95b29837dd0209a413e18f148987464c ef793b2369c5dcd9bb63f7ad325b6424 4bf9f2ae5f3b32e5d74f2f4a7f5598c2 f7023235e0282c797f357b05b0dcb89 2e40fbdc900e69593971c6f4f1d0a4a0 2003690fcc8390a24c40f34de8f3bdb8 a2b1f43ffd80d53aed46d95e646228af cbfa6c888ffd893b31b5f9e34ff03906 b044555289c7439f4c40f34de8f3bdb8 4c18da768d4c81c787695b38431695f3 b819ee65569e9da21acadc443e8b347d a4180d6214012dc7363d10d9d37a65e5 7998efe14649e07c397a4ece637a5 9b9b41d3d02ce68d1b009b4923bf4541 4aa41b48ef7711f89e87d2bdcb41f548 a8277672da45a94e9d151674c6eace6c e878e519af882f493fc48162942e3418 ab6b43b6529d6d6f9580f98cb259b96f 4ef6b09f9a8e1fb233ed13d3bda59480 58e73b03f3ecd4a45a31d91ec836a511 9c8dd83df9678d3bc33323f64a5f289e c117b031376d3c12cd5cc02ebe46ffbd 1cfd7a56b1d59ed837f7fabf76ffe0b0 703dbbf27ae78991a21971bc32fb0326 789c800c7f6d9e00b5f0ecf6cb865832 3d7e4939b677bd9f3670cf6e57497e9a 2f1446816ac58936361167c63c6bbe5d bc7938b4fc00ff71984102bc982dc4a5 6ca4143e8b989ddf8dfd947f5413afaa 88c752eedbb2e133f7f12bd413763dc6 29faf5a7c444df58a1fabddca717cbad 23a1ad8f7fdbb6a54821f0e819875cf6 cf42a073500a1a222a9eb0f146e94477 94ffa3ebe53ca46327eff743d2137fff 24e25e63d6871f884358473f5b9be205 73f855f34572cf984bb93d09975f5005 de68b68a234de1a0ea2f8efb8b3faa3 2db3489b490b0d9e2268dda5c324173f 27dfcf48220c9ce1c3554591513b53b7 361a97dfbbcdd820b182f50d8877b64 2c32c107198ac36d37bf4b78d36088c4 469f794b77f3f82b5f1f3016f773503 34fec404bf5a83dc8fe1b374a74b9d43 72da46839789175eb6ba1e8b5cf30e 4a124e8015bc6122778ed5a91adef178 5948bd85a58330628de9f116e0231954 d8f6aaa777f0cd4f5a31d91ec836a511 5faca1b9f9a94e379a1e7168a7eb421f 9785f01a6ee36e6d874a6a37ca17d9ff 1eac013c89689e58d421ffb972735edc f5024636f3514eb51d0662c550f8f994 b44a0f8900edef4c957a55139a8e936e d4562a410244eca8823eead1c8e7b3b4 9f242e37099ac424c3bf2ffa047e96ea 66d9f9f961a12754d1fdf116b1be3b27 1a33c0bb3949cd3213f068fa484fb314 85bbc49aa67149c531baa3c9ee4148cd 9d2f1644bbce8260ff26ed0bd5d4b63f 1f59ba1fc5d296a817a0d4867f131bc f5c62c89e8fbb245ce6c2bd14b4c7ba4 72d2729801d56aa51f9f3ce366e030fb 4e957072c3c876e02fc6b53066be64d1 43990d5a8ffd32774f074cdf0a32eafe 7a48d550ef85f41d4873a2cc06a4fb6 e5deab6728f237a6fc7703ebafc3f082 9d0734e39f06529ac0cc451921109913 aa293b3c1b4f1509e3bf55e5ac6083ca 12e055813ed50b7b85d581c11aa2371c 635db4f2e3fe1f918e14a32e5ed95bbe ea944f309ec70895c9fff209a296912 63f13073406d8a2b4092d3b515916436 b03efb93acd16a49699abba79f165934 f1cab229b68c9ac1c4dc2c94f81faffa e6e085e31c30925466bdbbf263e9429e 8171c9bdb75a10d9abdb18c1e87978be ff8251d486de70545272b3489d12484f c2007f762f6c3d9f51dabd6f23097818 bd2d91052e6c10804c6c80caaf15808d 98ad42e08a991125f0ea0ee719f6dcd1 cb3bc7b6610acb7d7f38a9bfed62447a d14285fb64811217e50f6aaad9a07bc 65b461241dd4a4698152e0baa78ddca4 16d8b1fde755f7f96bc5197cc4c47fe8 e5c1a7e9bb2dd0d65a31d91ec836a511 b7acad8df6aef539a35fdda2e8d5933f dfc0bd9721814628a4eccbbe9e05e638 9471b1f88cca01134c40f34de8f3bdb8 475853b0ac6bec73eb752889d5199f9f ca5fe10073293be01de55fee5ac2c5c2 d922dd8309247d10ef94793a67b4c5c0 576e85200907fec189d3b4ea8dc19f36 7628ba96cc90fb4df256a8c3e3396495 1ba62454cd137945337410fccb2e7331 eb7b66a6557a05a4ab7f9d2da6fc61cf 529f3a898bd030f558b060a361031075 acf4fb74200b838d874179120554c44f f4308c030df7d027ced68ac20944148 19f4ee5b1f70c6a47117786c46f53d55 f4b733690a0fae8ff357e7c4167f3100 6751b5616193e6908219b633b364ca6a 99c7341e243c7a2ddffb6acd1a5cf214 93e9c3de55b1a662989c6c7df583f91e e6b83a9d10349930b611871e114769d9 c82577c608e88a8fb2ce325c854088c2 acd123e2a1fd25366cde9ab9486e09f0 cb320fd1f48f60d347e20662b9cc792d b747b1fe2a8e76bfefc97c4bab792c9b 5d0499650653cdb9a37f3fc191551700 c6c69578203357f3e3bf55e5ac6083ca 3bf8ec07e1643746b319b8417d912123 f2eb4b53ea11200cfb10a282776be584 298e3b4149c28821b9001bf6cb0603cd d5e77992b28da2729c90f715a36a51dd 90cf7907801560fd27766fcc9fe2f132 50ab4ba93bb4141320dd2dd4d7d7656c e1bcea986fcbb7fab359198a2f47cf13 f682ee3b4f4dc3fcce029fab54b6cfbd 6aa3bca1ec6b261edbddba07a492a0ac e51ccf3bb4413ceb61775b840d882da9 daa10595347937b9ae7dd8d7b134d1af d4ae1449bdee448b1ab68128992ea30 ef509cfed1b359a7dc1ad15ea0771770 93b8f4ddd36419998cbc76a30015552a 9a9e5e5e3e034e74fedde756c9eb0eaf ea7d44b28bd22258f5ec01c1dd7b80e 813bb87d0679eeb9e4f8604d0992a17a bbe69ee745bd5c427d35e00bb4edf01 5edee1135040e2a9aa2b654345545ea d8ce373c4ad4e6913caae5373ff4181f 32ce47d38aede60ed614b9a1d2062a4a fbcef568b50216e3e180a1a604561d3b a4a51863fe887cd970165cb455c090fb 67192701cf183eaaf2a2172bfa1bbe55 3fbf353af74136feb9001bf6cb0603cd a6fe968066893c10faa3b42d05e08ac2 4a0278285d649ac779b2745bcc82f6a5 ba85d89312054ee95793a80f4f864500 ab70b452a7ba1c445f46e754938b29e8 2ecc5b85b343b20c2ca06fd2350bea43 bcada2acf7cdd8c29a08db804545b684 a9d5719c3c2af900ce029fab54b6cfbd c27f121649123d0a51d91df189dc282b 44ec5df88564c859e180a1a604561d3b 5ab3bc993eec96709aa778fe3a2080af c58d1c25553a224ad9d271f9da38313c 78efefe36b492b6e5a31d91ec836a511 db90e043486f216ead1d87becf13ddd9 93927ab6b44bb95a1c4980134f4ff624 f153783eb4ae84f2405c6851258f4dc0 e1d8c419be35ee1e209a4a663fdfe000 893bca10c44ffd673e1b2d018c0512 231104a34a7b7a52c67a971de046381d 6cd4d9c6b51d785bebc9199df8e5ab6 6d75b6211f3bf8dca999ad3d6fc50304 ea4215e0c4455737dd3b7710c385b572 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04090263_test.lst ================================================ c518e4b872a0841e0652a919e7ad7e6 9af23e8759e070ef35d753857de68a9a d2b09323f863db7a71ed4e55cca1417d 74a38b74bb57a2af6a405aa597e7fe24 9f0b13efed3da628309c2ee598f7f2c8 b76f8c041122b2dbf112f20f44aa16b 17e2291c6ef778034b349e4b3dd5565e 8bf221c8f17b152b2607a47034bf62a6 5fa42f48d1d279bb7de50e1a7b436c85 a2d0d9e62c7fa469f02ee453ff283e26 561430988b5af11bd04b05b0f20a897b 85d730adf18e0c43a06a81572261e82e 7faeeb69a870d18a2850d4a1a9c25bca 7d310ff81ee66564b38e8b1e877a5704 b85aa72e2d253f34e38850a3ae501b7a 38d7ad99e308ddc334c4a8f12da88608 e3230062ee3def46aca1893e093d31f3 bf6268d9d4bd22d89cd99d3d15a8756e c91b4aa1105a0e506a34aa94ca8a3355 5a79d10c5665b9dc895b56cd0d702185 1762f93a8249ef356e4806bebefb1ca8 c7f54b82e3b1682b65564d9c2ed3b493 760165682193d0d235d753857de68a9a 25cf1e85d9875c9412173f61ff9d1fe5 d3f3e2dba3dc32c0ebbc1e980ea10b4f 48b607ea57a1e16d309c2ee598f7f2c8 97a7a1f3c53b3c5ff9489a342636086b d9a07758e979ecca44bebf183fb16c3 317353de88cac813d9e057a3558cbfd4 6e4a5a5577d06899498dc39a5b1a1c7d c446a7135467cd83e906ff5bb78d7b1 9384db12f13af3e4e1abf5082bc04e75 8978ffe2b8b770c363e66191800dfc8a 5e4bd1ed44830fb147e5d4c250a3c98 e9706e37ac92aa199d360253182ac1b4 9f4c4c60efdb3076d02276f7769397e6 8d0947db43c20e819ad96e0af6b934eb b7ebbb8db6add885e5fd7320f47a8553 8d5354101880490994deaa9fff391d41 37681c6cd8bd88d1d04b05b0f20a897b 61c0df4a0db0a32fe73c917c8db80e59 f42ef3273a8b4cbbf4f70c928a738b3 12df496292b5c016f9489a342636086b bcf362f325cf658e282dd3b430ec2654 fdee9fa34e570910f2a8e4598a15f7ce 73cfed37f9da046de2bb19fbad3e4596 83dafc89711bbdd68cb93ad688d1ab8 aa724e9dd919edc3fef144202cb2b935 d79182f4d76d63e9f13eed41b64dddca b577e94cb0a28f73e8152bb1bb6e4c3c 5c1d73e16d1a4459b5070c7ac310bcbc 85b6261930b2174d85639a40426ad4d7 ac6d4b9549853b509a2ee232a197081e 23a91d141cd1cd36a9405d5e0b8196f 25796f85c74347726a34aa94ca8a3355 5605d839bc4fee8d51b9e8cbda863b2 404acdd4cbb0544eeab5ee569c9de1b1 8650b7b809ea14be6314c3b6a3a65519 9319229e8b90b7d794a57adad86ebb52 70ec646e9929c7cb9a2ee232a197081e c41ea087ba71931967a4cd2863eb1ca 43e2cd954ae1e3ed18bc22abef3f86ce 48f60ed3a4e32891fe00453e7ccbcad3 cadcb2e4e882ce75dd0a2071dde26395 41da6bb82abdc626a5aad165050e534c c5874d1a3b616a641703868bb196594b 8e36f1a160e0b98c93cea328065cbce9 cd4fe695c04daeda6d976be0196645ff 87f0e810c573b90c803b54e9738b20a6 a52c4c07d951fcbc3068951f59ff267e 8d9471defc6f3a8fe71e857afa9df271 eb6e7e6241c20448a3fb48700889ab3a 178539e39c6a83efb1c46f058c033ec1 f5ab909cc5813c7ebe8eb764bcb3c31e cf21d9de1440d3d203f35d9b3b48203 57cd6329f163043a551f49d4582a8d17 2616ad4d3e8f3ab88af39b443dc477ce 4d355e20ad1b6eb6e7da0b4c2db4425f c39040b055a5ba329a2ee232a197081e dcf9d53ebe90d9a85f14a92a8b55f317 c02b44f51d159cc4a37c14b361202b90 54e1ce2402c4f754aca4b8a57632be04 cbbeaec355a86ba9870906b5178d97bd 63609476aad03e4b9a6e43b878d5b335 8690ee57423c0e591f3140bdc5d4932 12038871e583f645af56497f051566ab ab379b3916c45a78710c119014476e8f a6984e79681321d7665e26d8660e8f05 8527c531b4e23b85819b42f03f652dac c89488a80cba5fa5870906b5178d97bd 282f9e161a0bbf58fe00453e7ccbcad3 1c74382abb0281e26314c3b6a3a65519 7d7a915cefca95471db44ede0efdfd5d 57337a97460a63129d5aeb7097eddbda b79cabe03c878d2980c2e60c312b0f09 fcc1826e28e6f512b9e600da283b7f26 722051c679217db6f436d0d7fdd21532 2bab6ea5f35db3a4aca4b8a57632be04 8b00e0ea294fdedf8af39b443dc477ce 5c960809f4f0424d217fc13ba9e6b2fc 8deda7d1c75b33676314c3b6a3a65519 9cc96465d70061cb94deaa9fff391d41 66f804b1400a139ab5aa01b641366717 d8e7abded14c00cef02ee453ff283e26 9f4658773bf2c31ffbf44f447f38c175 45e88d85974b540732624d0392494ea2 b9220d1c981e2824377a1335e81633a9 5d8c7291e06122c14eb1cb28584abf8a 81807680baebc5975516c1e9dd717741 81d26c915198c2d857f253aeccb15f0a 347c9ad6b867bf885d0dded52efeb4fd d147dfc972ff3a8c673a614c45f3afe4 313b61a27e01ebff0fea2ee98610322 fee4130baaca04225516c1e9dd717741 2da91be46310f550fa6c79a0c671edcc 6afd1407c216151994bdc5b116ecd8dd 8c4b9320b44f674ab09afb04c84cb438 bf76395bab45ffac2249915e95f55f08 c65cf6b063e1a21025251b7dc26d833f 45a794d26abda59e49c13db2bb1e6735 337d3642a2d949a4f58d2dcaa6073061 249e0936ae06383ab056c98b2e5e5e4e ffe08785458e09666314c3b6a3a65519 a718521e2963077fc24d00518a3dd6ec c12e1342d88e78bfdb132fbd93e54108 272e1f3a719f2e35e2bb19fbad3e4596 8949412a776f34e6a821a9df9523f811 ada26cb4cb6e0b1946177b6d1ecbf989 69e59c0feb5415ff71936222e0293591 dc29aaf86b072eaf1c4b0f7f86417492 800299ba59951df3527ce7c85e81fc57 7ca6a11f827014b4643ae903098a314 b5f4600ef0e9a5a8dd0a2071dde26395 d4312787c89edb399a6e43b878d5b335 21b7114455da0bf033e73845251cbf4e 8fbd9668fdd563f5359ad7d9ce49f504 69cc7f3dcec397cd3215e5c5313f5f42 9397ae7d40c327044da9f09deacee7d4 595fcd065407f54ca97e1deede586e49 b095a80476a8e002bb9224760a70fece cc362ac31993fcb4fa0d7d9af888ead e0c6be7a5b560f3af13eed41b64dddca 75368dfd449ea1d729712ea5520175b6 6646f169a45f40bfc510111f5d1cfcfe 1cc47a6181beff44f18a63d96554f7 315038c85d3e3f4a1a857c47fd0ecdc3 b3a41cbb4ddaea6786225a62b2bc2d97 9d969dabaddc27568bb83d47cdb90d09 157c2b391f7a7dda1a857c47fd0ecdc3 b8970e3d0eaa2880dd0a2071dde26395 5afd33d495b111449a2ee232a197081e 35b5cba53b629223cc2e8ce9ba1c97dc 11b137bf4816ed40f4c39a35147bf949 5428fea9cd816d764fe44fa90b97c5ab a7b088a849fdd41c25975e984b0e050b 1cbfb1c063b34ab4ab379c9b5bf12bf8 1e7dd1677a62d3caa672357dc73b83a6 5a2ce6338b4e399f0fea2ee98610322 a6f0f0aab2ab2591341b8a806253912c 124fa4277bd03c74359ad7d9ce49f504 d5734bfe7c57d3bda1bdbe5c0cfcf6e8 b2c3114a9acd55636d4858690640024e 3553f6cf76c2f9e1870906b5178d97bd 60ac11a84e307db07c52b7b7b148ce27 5aac06335039030132f8337ee2b84248 a0361a353c93899fbe35b76ae96c4b7d 7b0889c55d482cdcf0fea2ee98610322 5f8a81e3c0711e087d81debe03396504 c383dcc4c30c70b41a3b39b07e4b3d0f 5a420b1aff4cbaddeeda694c82280de 66e287e1d2e9c9f6e71e857afa9df271 2c10978bbf84a263b2b9ca36f6b76586 cfc172b9164357ad42a9381145738f08 84b9cd6750fd102a9a2ee232a197081e c802de6725483fd9ab66079ce2700442 db8f1174280680de5e561f212b7229f3 1c1008be00fa5edb30dd2b88f7efae34 45f3755b324a97803bce1f290fbeceb2 20468faa3d66dce03cfd5b33045bf719 a15719f77035596aea1c54714433d676 55fde587d83088b39a2ee232a197081e 56141e8844aea9e4d6c7a58fae95cf0 cba7b6437ab3621ef0fea2ee98610322 329f6414584d87a999b3da21343e5637 1ecdd9fb715c6fb2b0a59d0f63b741eb 736200c1ac8d1c34c14cbe2c343fa431 d9c6c64bc9b2c1e0a5dd675711905b91 c4eff07f05998965c79f92df566f8c6b e3f16aded8ea5a2fc79f92df566f8c6b 8f5da7a2501f1018ae1a1b4c30d8ff9b e27f87039008855a341b8a806253912c 164248eefde5ce846314c3b6a3a65519 b01199433137d6123547ed4d05d19f04 7f41235f55f396118aa27cedfe9e8bf6 a7de37ac9f6fd8c4d6e401b0db4905ed 334ee6c5bd30011af8edafa0d47e47db 1220880371b176f9a06a81572261e82e af877a0a066fa63ffd180252c91ed0f3 6cf13d5b7791b8618af39b443dc477ce b3ae08dad4ceb33c16b34c3751bc447d 156dbdcadae5e010337b0188275140f9 c57d7e81270598096314c3b6a3a65519 3d9907c402689521d8a2f3b4102511 a4001adbd9f3443d3a9a4f49cc5d8efc 262510dc5b4cd7003d48ceeccdc87fcf 3b4fcf1d294f11bc5db864c34fc9b1b3 f9ee6c612895cfeaf4b4b1b903442d1d 8894650164a2222b1a857c47fd0ecdc3 ba405d9633ec030ef27eb335b754fdaa 71d9d636a30ed1e7d6a22172ba0f0af7 43dade9260b93b2c3d204f0b9150b384 8bc74fea7c5e6f05f95499016f29fbc4 ba49c58d6d320357f1cb19f636b1c2bd 15a209524ad3fcb67b84b9482c4b66d7 d0eac7ba7e964d72cc34b900bb2492e 6c95a697b85c6a52683e3750b53385d5 27a144ab9c20b710ae9e1c81f7e5b0b6 db396982ae541ac97f5c403400264eea e49e18cbd48a2479cdbadd1af48b5cd6 c0a429d6e4cc9d0366597c7d470782b4 cd60840ecdb0138e4b787ba27f895fbc 85d9133c2be9be93d017eaebc1ed8e2a 3c42d32dee40f39a1ba59fe23593fa2e cd50da8bd34f050af27eb335b754fdaa a7b3c912a793ddbdd107072754c68ce7 c044bff4423c7889a2ee232a197081e 8d9d9b749562c59a9a2ee232a197081e ff042c9b61e609a78e4ed0a212e54db7 1cd506c69f575ba530dd2b88f7efae34 4ec09a25c05bc7d0fdc1361c2b9ae6a4 2fda76fc28c9133d8428b8de1af34c50 91ccf1fd54bde780857835988c6a287b 8fedf1a088427ea8ca3e540900266737 c36992c1accaeba6803b54e9738b20a6 d90b571a1259cef1ad51de5d9ac9dcd2 191f8debadb867fbc24d00518a3dd6ec c5cfbac689f8f49310e71dd8027aa9c3 278f6f0588771123f8edafa0d47e47db 7ffa338b2693aef651cfdb4c9f126c12 94386a700272405ef0d11ae402ef940e 9a6c8702a8f5d01ad6945707de93a7ab 3ff0d95df1076951385d661539b5c1fc 874cc0d822e74148b88eabc621107e4c 31895d26609fb45dfbf44f447f38c175 c578ba526b8ef653e28e3d2f13cad462 14a07147c6b74e9d914c738e92faad58 5b1dd450a929e2823b2b25ffabe35ca6 b6f2b71e726f5dabab97b3fa5a6b9e6e 22e4139b7fd37bda2538e024d06c30fd 2d49519d725de02396e5f13299458076 ee01a3d156cfde95b6f73775a54c59c6 ee4cf4706ce605bd37e67c992a0a6e51 2150ef6d0dd9333ad1f5735620433167 bb1dff989d7b563124fcd7bb489fc827 1fe9e8fbcee0dcc8683e3750b53385d5 38a906533b048ad8341b8a806253912c 5b6bf22e5c355592882cef3540bf556 8c0e6b3a8ff3e1e75427d4172e3eb61f 99cd8bbe5b2f92fc643ae903098a314 4bcc0ecc49ac0617525b3f0594400a46 79008976055024fa93cea328065cbce9 48cd9104129535283623b64770edb4be de9fcce5174bfe09db181f2efd806577 469427702fd95c3c6314c3b6a3a65519 3db828bb2a32a5f356c95a1e5409420d 4327920bfe590d3d262eb9a9badf3c08 556f1e3652f8c8984a2ac5bbe9a7c771 2c9de4575938dc88d1987c07c912c6e1 ca4e431c75a8242445e0c3a4b827d51a dc222cfc347506ee73482852b5932f76 8cac8a38e96e3754a59c12bac2e48f46 3ed5ea03e0eee521bc6e84bc30e573cd 7a2904413d538525bd337aeee16061a d35379324caf0e7380c2e60c312b0f09 390d25757d6532d5dd8e6e2fb6475d03 c14017bc897d73f46314c3b6a3a65519 97e856173cb708ecbb9224760a70fece 7eb5fbc480326d64f02ee453ff283e26 43fc3a905d6024290dc2ed23ceb8a8 39eb4b7bb1d93d94437724fec373d206 baa007b1a903fc432ce452abffb6910 41fd7683b4e722b716b34c3751bc447d 7c31ae88ca4faa649a2ee232a197081e 383bd13aeb390df0f8edafa0d47e47db 4a56ba0b85af56703bbe4035b770f62b 98ed5fe737e80b11eab5ee569c9de1b1 8fb4cf2a9f6d0abd8e7e8cfdb2f674b aa235b7d9006c30de98e3214935cca1 cb392c32ad0446aa576cd215d51ddd fc2f5a2623b4373a83bd2c1aefe617f0 37914b7cd5c02da8fef144202cb2b935 6d2761d9749fb354167e6355c6e5b5ad c0b2ff6229e1175aae9e1c81f7e5b0b6 7fb2ec71361813bfcec05e03e317cbf8 bcc0a71596e9df4a6314c3b6a3a65519 7787bf25c9417c4c31f639996cb3d35d 2a18722913244bc3c24d00518a3dd6ec 47dbdfdcbd971cd2203f35d9b3b48203 27326efa9e84ca6aaf365ec12406f363 280896ad10aa1272ba11c8c9c0c3770d d33c5c2a6d3c4c64d730d5e13144e77a cc380bcdadfc3040ab49837258a1bfc5 a5e62a05ffed4b0231f639996cb3d35d 2632b2d716be1677914c738e92faad58 796816a563f04373c24d00518a3dd6ec 6d5027e3411b23459a2ee232a197081e 49e4708854f762ae9c27f9a5387b5fc 7dba6294173994131226a6f096e4f8c8 c4f95f531b5ab758b91a90edeb58ed0b 7c8a7f6ad605c031e8398dbacbe1f3b1 605cfb5fcdef75539e6170029f747a35 e3a673dd3db3fd2c282dd3b430ec2654 206b4a7aff5ae78ecf61781659594ce4 bb95e848c9e1940a2b299c40b68f70c 7e826b890b683200b63969f9f8d6f075 a5f7776b13c11e3194deaa9fff391d41 487330fd2ba7d55f97020a1f4453e3a4 7e13df65e9fdba575814fafedc6971c7 a86e3d993f82d44018a76e4544dcc8a5 e63cd617410ceddfc9ae1c09f478779 a11fda24d699c02f75e83577a23faa92 6bbfdbeba3b0273316b34c3751bc447d 26516d0ce97296dd49352dd33f95cb9e ef46f9c14bcb69193a3a90ed08de76ea ebd426ae34b743f4a50ef3fc203c6ba0 397b2068e029945216b34c3751bc447d d1e786e052c26ed3cfb3f4d4e98ee41e 900211102042c2d8fcfb3ae2df2f7efd ad5165b445e67c06cd1b85350f224c08 42c6d1184ae147ce6e00f130b3bd101c ae57975d9461b324d10b86bd6e8bbc34 6b0c761060feebe4affd759bf1ff6b0 51b6fab73fc9ea886a34aa94ca8a3355 2306f0777527603722267cbd3eded69a 83d1b16c362e03ee99362c38b018f042 b76c7921d0fba930dcfd889babf6a0d4 b12d95ad4abbf097e149ba69dbb3f6c3 bf89af91f6f699a3b758d4b2d9dccb00 744064e205da68779180711d39b16e1 68c1bcd26d43d80572cad024c77ecfb1 180846dd3deda6785127e0873cfaa7b8 d21247f000436a8a374d02834a57040d b9b2f960a937bb22643ae903098a314 a299aa2fee9a1d297ca8eb6ffcff94f6 7bb85cdfb1794a5712b38b1d99376c0b 6bf9cdb0f879a8f894deaa9fff391d41 ed9e0161c72f98d5def607f4d4140edc f1bb43c7758ad37c12b38b1d99376c0b 2a58d9c3a766742cc6f30d9ee0d5574e 4e4b42da5513ecd175d25d68bfc74949 30621c7dddddd06f42a2e92acc266edd 7e5c0d35215be21ff3998727b15249db 384d3caade76bfbda84690bd684fe15a 27937d4b55596d689a2ee232a197081e d254cbd6f2e319ced348fc2382f06377 5835ff29188f0f493bbe4035b770f62b e62ccd699b99b48a58dc97820d1d9537 a83bfd1065f7dc34176d7cd6eb76e767 84149440704cddbed735fa1ab17311ec 2b997d20df6ec1b7e290ca81b042ebb4 8ac5aa7414e3c30030dd2b88f7efae34 9b9d03274e856982c2c44977d8755d41 3aa24b3c616c2d649d5aeb7097eddbda 5ae6db470db214b258dc97820d1d9537 144201418b5dccef1a857c47fd0ecdc3 7d286b812a03c60e310bbd45bf9024da ad209c1cf7e2cd6249352dd33f95cb9e 8b8baee427b1adbe30ae8c7dca0728 6bdec3364b44e8d8ec69d13496bd4a34 b4f152116e77505d202b6e2a481f1de6 f50efdafb9e486f4519f927f2bf92da9 230851bc45f916297c9aa6759ab09b15 b128968ac3ba7207210b7d136d269713 8adb587e61fa424ad199d75ecc2a48b 43c51dcb5c9c812ec1385c8c0f4d3915 1345ba2c3b27ba786bb9681d4604e123 75008b972144b426b8eced526ddc241c d5714c28b82df83d8d5783af2345d2c1 213c8d7870b4bddf320c2b53dcebe82f f05e17d75e8f3e2ce378cd9d51dc5be0 f0cdfecc69f4beb7fd434dfa483c57fa 2d2f48b293f5ed5d40385522d1beeb20 65b1329eee48bd00d87c63d8b3018b58 ed01d61bb0439a33b4cdad9a5bf52dd5 9586fcb3437ab068e1abf5082bc04e75 d27b357966e47647f8fb6cb99631d97 899e86a8dc53568694deaa9fff391d41 bbe366b82cec5894c082409e8305f221 a5b31577127d77d28653d927a24ffc75 48bddbcdd626298540385522d1beeb20 aca833639091b256922309b37ed10e7a 5f68ccfe85cba73d2a23d93958262ccc 897084449b84192db449aac65ff63543 36b65f1b9161a5f231f3d76ec3df45bb 51a327bfd4cbf109a06a81572261e82e ab0fa4305623f6c3cdf27c4099cb6beb 242a543a598c3d7a657e1a784010b9cf 733fd68ce2fdeeb76a853eef701ef7ce 6efe78a38abb45bebab70e35b0e13530 2f8a672751f8c284a5d999dbf2c5fd3b 86baf335855c96d212b38b1d99376c0b 7816689726ed8bbfc92b24247435700c 2757f06b6b4d3ca3f02ee453ff283e26 f3298345f6d6ed3dac4f72bf08dc79a6 fd00cdc539fded38ddd7320ddee77bde 96b74853ff1d922f42d160994fd6c822 bd48edaecaea23d65814fafedc6971c7 e3dae8ffcbcc498c935777dcb8deec2d 14ae67574004fc83dd0a2071dde26395 5ffa1a012a2b18fc83b41d2cfd151bad 4a90c8a6980c9b53aa6420fd028bc571 5f03499ea2b4adb5857835988c6a287b 10a2ef896a45a682ab379c9b5bf12bf8 5b5acb01373af13180c2e60c312b0f09 6f739c0ca5834e825dc7ef8b006fcb7e 8872698c6eae3a8ffb8c26d5226415eb 45f97261ea66fefd302ca88f2e083254 37cc0262192286c2e4235a2d12e58a2 5df56f5b5c339b15df46f2ecb43811d1 1068169d0f5df80e91cd21d02e676faf 4696d7e82c49aa2a7b6175b1be6bcf01 251deeda2394fcbc9c96fa78389d2873 5d461974aa75e99fd88db40a5e607f21 11126129151f3e36afb1ffba52bacfa2 30a009a1877c9ae282a52e2a06478500 d9180361e225bb418bfbe54b5d01550 8c2748ffe88d346ab9915b62040615dd 96c60386a5888d2094deaa9fff391d41 9445546f0d348b2ddd0a2071dde26395 4539958ad62e662ed197ecac88773a00 38bbdc92fcc8e310405d5eab6bdcff6f 723162e8e15f4ac55d0dded52efeb4fd 97291a29f435517db6a44e5c103915e3 2ce39c653c42982948b7bcada24e2926 ac13748ced7f9fca86b2bcefc261a7ea bc79d0cc0c27731a3a04e41b7ea7de8d 56026588e19ac1ce5109391625c31397 cbc84bcebe71e468d398c75d8b3af045 7da1ea50ed1445ce2511f68da65f4c4 4ae8bb7c50daf1352e4df18fcaa65e04 94a58b162f17f908ecbf498fbf7a2384 62217abb02b74e9deda1c1890030d195 1f755931c16980e06ea2d3b1b25fdbb7 cee56f2ecf92cdeca0834a5219dec81f 460ad09b269895f73f82da5dbc1a5004 3d4d7ae437d1153317c2892ca017a9e0 6ef67d1906344eda9905a3939c890ad2 5f69d649d9036be626b78ab29e6b0231 2621cca0eaf82143f9014984f90a7387 727b9b62c52fd7d6bf36cf6ce284411c 9b1d60945756d2bd33f9b4d665d32f82 b754214217c4405dda6cae4e030ce341 4223e38ce99c160724270d533c13dba3 c2ea3ff598b98f3f4528f6465fa2466d 3ddd478e24daf437f99860cd321d6c67 a4ba46bca40afb3722fb813d47b359e3 fd0e1e7c62efab3cbde9b246866ffe11 c44c0319f2f31c455814fafedc6971c7 602c00b06f2b47af8bfdbc9c53b14228 ea212437514740bb8b700cf351204203 3c9b810025d7167fe641d7676ac20451 85e714acb678fc59ed6071560148e6eb 2970d1dc154363735960f9d4a75e81d8 2a70089aa6561ce216cf8b1cd2155e02 b266dfc3d3d3606dd281b302c458427 8456aa006d740061bd8fcb0281cd4d0a ec372fed4900876350c27b805d1a86be 37f8e929e458d0a9c2c44977d8755d41 dd9586cd8cc762dbe43969badba53c7b 73ce9a5617acc6dbf1e0fcef68407ae5 9b59affd52c33944c6c1e54aa8170142 710148ab44c6e48441c4ee8eaf0d3f6e 914cae3548759cbeb351750c5651f2bc 5d806f9cfdf29bc640eee76592e4bb9f d90fda1aec4042ca42b011d8a1631bd1 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04090263_train.lst ================================================ 5909ebf625e0d04dfd6d10d22bbd142 4c41c172046a4a5e9a6e43b878d5b335 decdf532717c45767a9bdfb16682d944 528bc52f211ff34ed2a72bb74eb549ff 271e58c2650147829a6e43b878d5b335 fbc88753c7697b825e4f1f524019c e4540723eab9ff0bef0c52e20895a77d 72aaf4a05a6d988412b52a369561019 a1f46e16994569d8743d370dddd1ff3e ee4ccd4b40db28e2eb068a83f75a6c3d 74b95139078ce0dfacc2abd6f796df4d 2cc92e68121301c4ef0c52e20895a77d bf41504e86804d3d861bbf60d7f925f0 b7e59df21f4859281a857c47fd0ecdc3 8cff3ca8a9a250272472dec3b03e0eb 5dbe96b00f0d7b201b8fee1b14934c0e 12b346d7a60328ba9be47ac7c7e37815 846075a4b76fe0c3052214d75e02efc efa6700a7609d9a59c4feb3f1af9fe7a daaed98e5444c849a50b91ed3855d17b da6ec2d5f4d750303d7c323cf1653143 6454206429467056cfe6670bda9305bc 7083c94366b7c405330ab9259a8b176 b1a6f690b8ae5ee4471299059767b3d6 aeba4ad00dae0c78c79f92df566f8c6b c8a74709a6a0724f96a9670983483761 5ba39bccc3073c11e0a54e072367f4f4 53b50183730125e68c0007e5a8235290 dbdf82759d3a0011df6f54267ea02d3c bdfb8df0d6d316012b38b1d99376c0b 75ca1520edb6825d12b38b1d99376c0b b65ba6d3f77ede2d79aaabe4686a1aa9 42aa9630886c7512ed6071560148e6eb 177d48f6f156193bdcdf952acdf10f 6d66b80890d7e5c310a7d517f2e735d8 931f74bd98683d493a04e41b7ea7de8d 232beffe2c94564b678808412fe4ac8c a5335cd2243b2d8312b38b1d99376c0b b151820ba72ad964fa9286f039319ff7 a5bfb8e604bb2d8173db096a9cda49d4 20cbbde170e264f320152153c3a56171 e5a2a579e54cf1bad87c63d8b3018b58 b28e6d6cb4bb868ec27f2d9f006d69eb 313b30e96bdbc29cb1d04c72ba966611 f8a772a405e76adcf02ee453ff283e26 ceba1f5b53f3c3f0a4c018b03e3993f7 948d90262559d560886a4efa4119c824 587cee5495322f18cf1584c5b09d332 cf51da336a5414031b8fee1b14934c0e 2068c2f0972d82e569f9dfaaa2301a49 ce43c7f0642a72a25e9786b1603f45c8 206d81abdbdbbb5c63d83c622f45f33 3c33a0754d1c6a71b9a4a5375572bf62 365589510c76c7cee603a5ccfc8229e4 cca52c1d48b777b227be842e82df28b3 b26c0df3e57ab7a298a1a2453e72ce7a 17733d33502704ce9555419173518aa4 1fa5a9170bb276e7fcace4d823343363 389370f7e03b6312eb73ff4c9e061b8e 176b7637e807853d34ad43a472bf958 46ac5939e2eb53189a3e2fa8a8e389f2 196b2e3c66d59cb54a4f87aa9a31cd70 149785138bfc9c2011f7dcbb4a32aee5 b06d8b805dcfd1ebe212dc904164c2e0 8128e1bfcc18d4769a3e2fa8a8e389f2 f2e592962a9df3de1d27f57617a4976d ec688ef9a40c78451188f2b8eec55c9f ed64394470cc3075feafd6f06fc45258 64abde6390fa65fe26ffa6f51f050119 fddbba55cea838b9b2d09bc8d348e46b 65b8974ca9c4d73e34c4a8f12da88608 346d1a548be65182a67ac8a08d7e171 84fee75d9736808afa29682ba98e856d cf5538e2b369b7b33ed6ca821e0a9e81 6cbf83cff8dc7b23623b64770edb4be 6ab8bee75629e98d2810ab2c421a9619 ab4fd00b47d9d6f4fb5c1b0f759e2bc1 c224535cfe42b795a39dc4a567ce225f 18807814a9cefedcd957eaf7f4edb205 7ccf43d35755a35976ad064d1c5fdd7c 79ec181e02cfc63af4de29b99f103946 76dd6c8a2cf09887bbb7f70943d3cb52 7bd5febaf49a0cd44bec850c6c6ccac1 3728ea8fca746a8d52499cf3d29e4e95 63ab37430cb66270b5666ac9dae008e8 ed502e8af9df3df2c933c3e835f6d18e 5f68383c820c1bc4a67ac8a08d7e171 b0ec853833d21d36859a7164d38b0d13 851afe676885dd1dd5c93d34ff51959 8cfac69c394c3cf8de423072102e0bc5 bc8ffdeb04d8526e1f2a1daf140ac9f 259edfd9a26c68104c16ba0acd861632 1723dcee921fd152d43bb185feff0470 f8ac577e9f60ccaf3e7a62ab2a088af3 4aa568a12086e742fe773002d2182b7e 80915054aeb243259747e122424ea8b7 138cbc9b5456cfef55d33831e71fa52 daf8f85c017aa8c3e1f2a1daf140ac9f b73a819d88bde44c24d00518a3dd6ec 9db0f94cbc2ada72847c4fc4f8c08820 e21bcbde60deaab7716183d105fb8ab1 a1f65f97e61094e1202be79d8b285c1e 8571fdae210bfd6612b38b1d99376c0b 809d2439412bcdac896cb6094e2801d6 21f013795d1b241d525cc89e716770ad 6536ba618390e1688e4cfca4542c1342 6529b6134cafc299d43bb185feff0470 1c292bec142b39a5aea3c9294e3d898c 3222936b563fbccddb83191ac0ff763a b69973526e91e3bd68407c8bfa49d3c7 58e1eb81bae67052c79f92df566f8c6b fb9a94c179ce70c4561dce3fe08634b7 f04dfecd1ae139a23e7a62ab2a088af3 3387f6bf3cc73546434837e2aadd6d77 471f57562c00a5c7bb6581a048a6fb18 257fdddbd7b231b15063ff48525b373c 55171896c70646cdd87c63d8b3018b58 2cb0634dfd39f71623c02c1a690f1e7 4d772170bb26d40ea36c408ff083fee3 b27b78d3e1c97180fa9286f039319ff7 2859d1753713558412b38b1d99376c0b f5a561a38af6b829b3066d9a2ba0c7c3 298d300e70d6bf24e1f2a1daf140ac9f 86886a49bb69dce3fb5c1b0f759e2bc1 b0a050985a5ce6be25508ed649b952cb 34eb31e5ac8802246f2614b47f532d63 36e0d91630f7c958d4ca42bc1bef451 a7072394bb9d23f54b49cd65dfcc3a9a 8c9e592c95f95e7c9a6e43b878d5b335 686be742e65eab7816cf8b1cd2155e02 61064e4a00abaaec589c07868201b17e 1e83ef6ed5d0b78b7efb854782e23566 235853d2947a90e65e9786b1603f45c8 da7f89368a80ce9e1f2a1daf140ac9f 47db3b9c4b94ed61223d66e29bde9a55 aa47591498e4eb615dd9d441afd49974 b47d65a7c6234d06b349bd01da88f0bf 640bfdaa8cf5e3cd325474a1336ea459 b50f6037b0f9b86879d9900c00629c24 9b570b06ee8a7b6f56642b7cedd4edb3 172a4e03c151d14a9f433921788191f3 411de9a0a7a8e3e9a0d6b294e290074d 465746159129abc7c0d38eeb2893c7a 7864fa7de2295d33e6e039bfb82a52e6 734c46fe71b6021416b34c3751bc447d 2036799fd4fa273918ffe448c7d16fdf be0024e025b5d75024c5c134cb8fdbe1 a11f9df8336fd83e5cd09b5ae4a3c552 702b1c4aac9e825f51cfdb4c9f126c12 6639f08c2275398352d6d9553235a14e a1a89a8cc3557d373fab9f1733a68f6 9b19164c5b17f3016da79efb34b8c0b4 c26b1d42bad81b6397fd8ef0d14ce047 b7f7746fc15d67343571d7763ba5a413 6e0e38455b33bbf7632bedb12ff8cfc9 6d247b103dece20af500cc506a763c18 8fca9344f9583ed9f433921788191f3 e776209bfa7f2844589c07868201b17e dc263bc31beedb09589c07868201b17e 3564b539a24a1b721a638d3d0d97d12c 3d7dfeb58c481e88e16974ffd95b0c65 e818959be12871d461b28e02a259d647 f1f0a765def9499c6a2345809e2bb169 39c1ebbe7f6f1d5f4a4df88f87b30520 e5221bee9996da87d6964d5ad6a822d 56737c6d611f2a8465a6407cecfc902e 93de686cc189544335a8ac768bd119f4 840eba6d395c192c40938a189bac3257 45c5c36e3736d3d64e868b194cfd912 604d962eb17dfd5166c0c88d96ba938f 2e7c6e5ee2f07f3ce19905e7053d006d 27c9d26c58200a1527be842e82df28b3 c88aece300c3c4e05127e0873cfaa7b8 596c401bf2ea21e55e9786b1603f45c8 a7cf230b5a2967125f5038a2cf78b1e4 31a0c1adeefa95f488b9635e60aa884 891731397db0b6d36669f41869e0668 10639ade9179e38d624a9463cbe27c6a 169bddb624e60dffb6c8238440c79e2 f2e64c42370475cd52533bf53842cf9c 82686f0ea15a7c24783a7c2adc432e76 fd2223d0b93e34dce3bdba9430565083 1c6064f070b55dbfa449921c4b97dd7b 8f38c44779be7fd4340b66282f54c877 e61d4911c7142c65d735fa1ab17311ec 40f9c088e4a4eb77df3029a778e2c881 dbbb9a848b8a6697e1f2a1daf140ac9f e3d49735508753b6ac6a323abb28e29c 7c6a21d8b91fd12a1b7837f7a64e3031 6a9fac86136c7ba0f3dbacbbb2e7e80c c40d62605e84c6beba1d8c8cfb70e106 9ce27cd793dd3da29ac0a7e766b7c815 e07fbeeec2a12fe313b315bf7aba3803 36d3338314e3db7cf6099a039722df68 b63023bf7697571912b38b1d99376c0b 97532871e6ae97d8f0e1c0df18936d05 b589b1af4eec862beae3ab415b6ca18 98882aaa0d1b597127aebc12b787c594 9dd3d881c473a5323666119626b2af32 1d50f114691be38fa9286f039319ff7 4cb322a9a37e3a4d1c1943a82a09125f f3004f6eb2e5fb8eb7a51049b27f4bf4 e42d10c193cce254719aed4531d5366b d3a7c0fd2e4418861fe7d5784ec6d0eb c2acfd34d7c030f5dce23741b366d6b c9b540abc1cc7a107d0c348381a9a6e4 1fdccad4c0b826680685c30eb1daeb1 a38da7d4126b4a4912a8e5e6e6618c8e c755cce8095ceaff4b49cd65dfcc3a9a 403f8de536d9842222b13c48c34706de 1caf976f39c934f1589c07868201b17e 124f09d314c2c229331960c3710d952 48eaec39f20dfafa7e270f84701afcd4 15c7233e2e883eb55a443e4394e3a0da f8aedbd628e010a64033826da8c9e89d 1690a5959e2659d165b14b263bdb456e 869ba7b568be23521c63053ffe1a64a7 60db20e995801bdcac8247d8f020ed1c fb62b780ab54dbaab20f6e48f6a30cbf 7ce9eecd689e432892cea77f96988ae6 3722e5b8425d025895f22290198b089 e55bc0a1b57acec4a7dd22c0aa3913f0 98375ee901fa6ae4e2e7039a6accd4c0 49429e1d1e90c1ca202be79d8b285c1e 339ae95cab075926c1fb6fdac33c3f5 2cf699bd28ec65dca58b002039bd187f 2a1f207a0273683c9f433921788191f3 f5a9d847f69449626f07a69f0bbe0f4 2bdd7783684aeff0f3ece95ce0e0247d f3ffbc00ec1a1aa7ff5653e278e7cd2e 6d7b8924dd47dc6e7330912d1744819c 7231363d3ec4da1c9a6e43b878d5b335 d0f3ee45d483cd659f433921788191f3 c4f3ee55952e49ae12b38b1d99376c0b 3b3839d2a22ffe94c5a12959f98a115 faf6a45b04c24fab1d9b004d9d8d2781 f92b4caff4bc0f6d9352b002a7d38daa 19d5298e49eb6e5a30b14dd156373f09 bf22abe4fbab4acd91d13947d0d17396 8ec7ce14af18580ea5291b13c05695e1 be70ada7701ea798a8d379aabc8e63ca d03854e6d6c6eaa19be81fcc2b07ba08 da2799e2d7b9334ef0b45b4b4c7e33b7 14139593048f806e79093d8935cfe4f0 8c0827d07d79165ad87c63d8b3018b58 a99df9868677ced6ffe50f88045d4553 a8b65f50dfb2a74a9a6e43b878d5b335 ad945e636e38338d8aa7cb0651220ba4 9c70690a9d79a4d412a8e5e6e6618c8e 84ab70232093057c12b38b1d99376c0b 9cf5486d4aaa5c0dd107072754c68ce7 193520be26b57b77a5f9d279e263a051 9a5e20b8f1881145d735fa1ab17311ec 197f8aac538b6f7327b14e46288c9d26 74a11a9b7ebd4baa424c267cd8f453c4 5d40add22ff7d14c77b7d0d4764c121d d2f505aca92ee65fbdb8512730b99253 8f905b2da32727682a2679e9ffca8e38 eb1655ade2554c156e49a9db8e76daf1 d1508875426ee5f3d87c63d8b3018b58 4d1881a99b034305e71e857afa9df271 12a5e976e028409ca67ac8a08d7e171 15cc5a007bb325a3405d5eab6bdcff6f a262b6955756cbea34250dfcf5a9a6d5 84de9995b0a416b5fb5c1b0f759e2bc1 2300f57a06457c092235a9282623d937 99a3238af6d1b857178b53c3b6bafa41 394a97c4ca0132132bf26da672b84220 d5322c4c21c1d16ceff31787d7394ead 6075b98d3dfb0bf5c1ff4c99e4dddd02 e8931ae7d89ebf11d1c304326f7509b ff5319e43471e9294b49cd65dfcc3a9a 99866ea1b82e18c982cb4f2e118e48f4 4ba87457899d8385d735fa1ab17311ec a45b989db049e503a04e41b7ea7de8d fccd8e7b6bb1a6eea1ce1dd4c7e01188 d88c106c00384130fb5c1b0f759e2bc1 9b8eb0dfb6dee992572dba079470b351 2acb7ad7112de6c2394e22ae6de2db18 357f37fd725c0fc116814c0baffb6c9c 6f14f17167243fac5427e47767269c4b c9ee75f15d7f6bd13623b64770edb4be 82267e9766dabdd653fd2f31e6ee4fc0 af1778e415b0e0be20fc54d2500eb7f1 fb686ac45c8e545c8d1265a14954deda e8f32ab6ba9ab7713a72dfa25c767709 214dd04f06d5683ed17373579e6fd9be 58f7db3c6be48a83537e3f6cd50ed63c 43d4e6583cef197aafeed2d6e5e28a9f faa1fb485ddd6c9c8bfbe54b5d01550 fc1cd79a8643fe66def607f4d4140edc 20d48326842d7c601274aa253a241db2 c4787a48747c6db1cc34b900bb2492e 577e1473bbc1e2654fd8f930cee8e385 58613784e5ff705aa74a2c673ce55a44 4b4273fd49971552cb833b31b53d151 7bef98c5eb45b13c6c1e54aa8170142 a4f94ba638d2bde76227cba038bf7c95 bfbe959eb045a3826e181e3da8402358 aedd534b9f323b2f9f433921788191f3 82c241396ddd0232b3f2a90d50e9caaf 72e4958882980380e1f2a1daf140ac9f 16aade23487b928b8084b8c11aeb922b d032874b5c3129a313b55e8563d02319 a9e1e9c25f250b289546043a05bd4e6f 8935329f244ca398cd89d443b4b6353a d8e7f4c92af18cf2892fde398a8eab7b d2aef97be32d8118433d7c8e9cebd7c2 4a8f8e108cfa6503202be79d8b285c1e 39c4214ab44383258a3dbbf31a87b8b0 9c0a483ea22323c78ca4596df3cbf136 dcf13ca83d9580bd44c069e8827241aa a0e251b5b4305d49893bac51482eaead 8ef53ef4767baf0d9af0e0a4fa12498b 6aaca4e199c1f84f1087ca95a9795303 3e0b251299b8696592cea77f96988ae6 7aff2693a24b4faed957eaf7f4edb205 2f0c7483f4eacbf1c03d8e9f14212b58 1fe5ddf1ca0fde916b2c8bb96250e4a0 5aa0e518413524436ea2d3b1b25fdbb7 2a2b25ca77af35cf30dd2b88f7efae34 973a961200eb14f1a64fa3a308f2f098 f5472d552004345b51cfdb4c9f126c12 117be2f79d591136ed9c5b25fef60d04 2b44f7b45ac72b24683e3750b53385d5 32d8874aadbc73daa50ef3fc203c6ba0 fbda020053554eeceab5ee569c9de1b1 5833fa72da0bab839c82b3f5ddca589c 5e2661c632995b4e40c568d90bfc809d 5128892dbc0e8e4d12a8e5e6e6618c8e 11549f435b7454563571d7763ba5a413 128cb9e49c7e214ef2e947b62e6a6cce 61f01c585c581fdc8ae8d8f46e8d6c0 a4d1ad2fe0d98814e6cbbd79676d8c68 da50ca3dcd5aaecd8bdd85f9e4c21fcb 85a1d16ecd3989cd2e3059b0e19cba0b f5f4d746b6d0b8f59f433921788191f3 1dc7cb6866488d93cbb897b3e6934456 7c10b90abbe17fb9935777dcb8deec2d faaa98e92d722d0ba7dd22c0aa3913f0 f74ef838b3d8388b03509f6d3647539 6571520aee22fe52eab5ee569c9de1b1 fb62c74f88a285a712b38b1d99376c0b d11b1767a70922edb99f5bb707709184 a4a62998899fcea2fccc89e375e776d6 39ff99d67fd7eb1f4aaee15c65289469 8d65e71e5f925fac58dc97820d1d9537 42b231fa5ac25f7dbac3a27910198725 6169b7bdb2a76d471ee416ae4351c7b e1e43d3916a7e19acb7b0ec95e9a1b02 2b22712b66d3f1d7fa9286f039319ff7 59ff0c5e24abf33f25ff9d2d1e4772c3 9fd0c3cd4a6a4afeb8d88853b13ee149 a85ac77659985978d43bb185feff0470 fae9667f8fb1217d124c90ae3e698e4f d421d54e21e5f9edaf56497f051566ab 61204e00cd517e4e9d360253182ac1b4 19e16b7050b25507d43bb185feff0470 89a5c8583b2e2306af646833cc36618e 36846ef535bd195efa45f4d7e1ef7d0 e9fdc6039ab91746580389adc8c1bb70 84f068d182437e65b7266db39263f546 2a811e61b3d6ce11c45f65ad2adf422c 3ca8b397052d4da818336d317bffd215 56d737fe2e8ec9d81fa5c14a532505cf b5aff534c7df4d86f06f0427d3aa3395 360f8314b77730336edbaba04282b1e3 27df401605241825fb5c1b0f759e2bc1 7823da328516db23394e22ae6de2db18 c7774cf7e0e74fd2194ef2821d9a630e 6e23faad8bff1e12f7bd077790d66b82 bfa059271ad449e13cf7a43bad229f6b 9bf95da67ffa58213a653cb492d78488 638b5b75b9e7b0c4bb6581a048a6fb18 407324b2f2b89934b5945297ce426f02 8cd9afeb654c89b8fb5c1b0f759e2bc1 973181651497efa3230a4d129580843a 2428abd6cf67771461cca2fd9af9f2 4a4387ccf5b0b4a6589c07868201b17e 4c9c33529e9a555458e51bbf75d8cac6 21acb1cc84ab5e5040aa5b072f9ee3d1 5b37d0eaee45e12cea768093544ea6d8 abfec35b505a92da64c4db7c3b428292 f6f254a6b02ad5268fc148cf8ab667ca 7efdd44bf9d6ace13a653cb492d78488 55518164337571f9ad0854712de182c0 ceee9df336427c427e1ff5b356a80cc6 e3a1e9f4699dd059d9fa04bac43c622e 641157eaebb2183ae96eacf8990e6676 3190d8d6542e51fa4b349e4b3dd5565e 8ec183fdbf3fb696e1f2a1daf140ac9f 209b87f6aa188df0bce41980429512ac d835a2aa71cfd29dff790997f2048517 c36fa9da71beb581eab5ee569c9de1b1 c4f73b23f4fa46364785ea41f043d735 4929111d16135ccf613792009f64ab4d 79e07478f6a0a2305ee5dde2964c294c 5ff5a86fd864ddcaf0e1c0df18936d05 61403e9bbd37636385076c97ccb96169 c2be1232f61da4b6e79db68bf2508b3b fbf5a7f93f70cfde12b38b1d99376c0b ce351c4fddddba2a7dd22c0aa3913f0 c7b9e0958bc8f2ae320f9466abaabfe2 68b0af57466b5a0d735fa1ab17311ec 2a525d9178f347ce5ab27081157ad594 18fdbd5f5448e1eb9556d0a8c8dea494 89f53c736eabcca966c0c88d96ba938f 3cd7545839d7c7affc4536f2bcb40d3 b84b0631fa25958f67ed496709eb9df5 f02cf5cf3a6c61c7d735fa1ab17311ec 232a75ecb85c7fef6c70dd7879e7e453 7c07a31eca316cb83f217b945a063dd2 2e0fd9303c251ccef02ee453ff283e26 3da01ac97bf8e71b12b38b1d99376c0b 1f4f948abd74399572e9add3b9371377 4e817fcc0fcf1ba0b2d09bc8d348e46b f5a1080ff36f7b8c38cddde805fe966f 268b57eb7dfa94a55eec6d8d24f1fde1 8a669ef9b92912112b38b1d99376c0b a8e185dcb791be07ebf69cf03ff6f737 804342eecbe40a4c79f92df566f8c6b b519a23d82f367ffd39cbbc2eb28bad4 8e40afb2fc5d8b1c91e284193311f752 377f4054812dec1c9f433921788191f3 49083d2b9f3e6222bde9b246866ffe11 fc0cf8eee4c33cbcb53b1ee7df9d3a60 fc6bb157d603772d81eae2a60736179d a3c96f18e2aaf2efcdd76170a7089b09 db313451e6581570e16974ffd95b0c65 2ad7a0bc552f1df96b2c8bb96250e4a0 b8137473d975e1a23111ffeb58c3d257 333ef51861a0280a561462387555febb 6c51211b773c51cf683e3750b53385d5 96013016f3e33bf3e1f2a1daf140ac9f 1690354ea489c58e493055786e8f9359 ef672b394e09257d719b648239c8e160 8e461cdfdb0536e1b5666ac9dae008e8 91729b92eeab3fdb3a653cb492d78488 2193f3624198ede23f0af1eceae2dd4 69d0e94a5dc3eeb3fcfb3ae2df2f7efd faf37c99fc99b88ba3e868f66b3e92fb 8fcd6435e32af3f729454b854b87bde8 55fe2a8c65c9f24424ee6c77dead162b e98b64d14d3fbf40b4b0a5ba224bba06 152f03b7d3eb03c8276c3d558130f8b4 e63bbc4b3a28f6fce5f887ddc636e202 9a1bd54ed9acf1ae73ede6cad0df9fb6 2d1fee5d2dfc73cd231b1db6fc883f4b 35f61b951ad15590d2a0074bc2b80d37 dfc1c3367bba345c45727cc98c29a700 cac1edcba53ae3d16b2c8bb96250e4a0 e892f50659fc9f8ad33dc284f29d8394 42b7e8c381cb392740112771efe22586 71f31b9a96f1b312ddd7320ddee77bde c0e05e56826d5fbc38cddde805fe966f e9ee67ab2cccdba5771dea817d9f8136 190ce4466c6f4c04fa9286f039319ff7 cb35c8f7c723d041916965fb9c37252a 79e15b2cae644af4e8d3100f6970279c 6af8538d532e44237b1f1d03ed22f671 b28220a981c84b25427e47767269c4b 67f67bc8e340fb23cdbadd1af48b5cd6 642e457eeebe04758480c9cd0a5e2175 5005f42fcdf718e558f55d364b38127b 9a8186e85c80d89541deee31792586bb 1a6aab87fdd90323d810dcd63f342aca bc3dcabc80b38ab6ba3efb88a329778b 3d76e67762cacc714b49cd65dfcc3a9a 584cc870ac0550e87a268987b1e73ce0 2fe46eacc06b51bfeb8dcf90fc26e10c c51600abc4b5736ece58fb8fdf218569 5cb8be7d0224277b74e18e0e7a19212a a95a7781d89f271a6ecdf20adf3e54ce 868aba7b4da060a3683e3750b53385d5 b87fa4a82de9567af877f04737ced5b5 7713f61fc0b829f3e196b48bc93a41a 26744766d59c28fb6b2c8bb96250e4a0 498b4043ab8a0675e19905e7053d006d 22bf66e440bdb80c3d7c323cf1653143 ec0706775e0585fe4c82ce83dca284f9 acc7a95f567e94355ce192ce2ee187bf 44f2f626a4c73b216314c3b6a3a65519 29c57a599a25868f57c012eda7b00ebc 52fccffbaf93c3de71e857afa9df271 6c56be203155b9d2c3d04f57fc87fcb0 56b2a58cd5c679b35da6a29f026db97c d7da6065a37b9b42bc352a3301e817d3 99c48010cc0c6405e1f2a1daf140ac9f 86873de47fac054612b38b1d99376c0b c42ca534ab455a778625e5523ac2ce12 546acfcb08d2af05be90eac69c95aeea 90859d41f2b4b996cc34b900bb2492e 59ebbe41c7427a30967ff5ed297c1ff9 311f3a46111ef5346314c3b6a3a65519 a7da2c6df867c3e91c1943a82a09125f 69e470b712063a2212b38b1d99376c0b c9e48e2db6786fb7c90b07f90175a30e f955bfc9ff0d300cbd2411bccc731f79 7787dec9a3d40aa9c6b36efc015b1017 d7ac2d2fafd9b9076314c3b6a3a65519 ac1ad4d7ac10f3e1db6f3ca49e992ad8 a5f8af7423a45b293568a24dac4b6dc2 1655608678a4f9ffbc7bb5239e53ea6f 607b9d1474c640fb3d7c323cf1653143 556be45ad32a1f18726ef46500f4c772 6d026044f6c68821de698295f9180ced 1ae9c8f100db37692d356a2793fb4d69 c1d5a68f196d647fb5070c7ac310bcbc a4d20d766e6bdca4b0659fe8776130e3 1ad3a8c8c369448c22274f18b3096ea6 21d6c28c11dfaa72fb5c1b0f759e2bc1 e998d23c1e691a33a0d2eb90fc1468af 58f9adb6b5065dd6ad2b8e02a4932f3e 1c6680f257e5c97498e6e8ec38d9445a e5de6a3be440fd1866a9b092716ff368 1711fdba3382cc39fa9286f039319ff7 69e884912b10faa880c2e60c312b0f09 6cd490d9cce62e94d2c901959c439025 48e24736473ae37f4b349e4b3dd5565e 1c96532b385e22edd0a6af9bfb470a20 83859013886286905dca6305fb9f97ca e444044f8872e3b9e1f2a1daf140ac9f d65e4cc9b69a3ec4691fdeddcb509b59 18953ef908bc743a5baa05bb713f2498 5870c596f2359677d3360026d8a2282d 146529b22d3c510ddf14c6e3e40331e9 670857f79c4d47c13a6842b1f893c19 bbdcf803144145e09905a3939c890ad2 7b1b02b8f71226e4bb9224760a70fece 8181c6ea706bff129f433921788191f3 4c883b2d79225a06a5aad165050e534c b6cd61c71fba44d512b38b1d99376c0b 3d8bab78941943f7cfe6670bda9305bc 8933f22af2576e5b9f433921788191f3 5ed0e0b4d26a30fbd8990f79240f3290 a33697175cda9f2d742567ca48f0f7e2 7f9e93c855aec4995e22590d7220b895 ddb85b40a6e44c387a9af63cfe0c0758 e32501e54d05abf4f1b2b421ee7abb94 ac88c6856c21ab422a79dd7a0c99f28d 5c646e68fe7981366314c3b6a3a65519 7f7efcc097dd76ac8c0007e5a8235290 a979bcfe6e057e87696934ac57f77b3f ba789d3b971e4095e2bb19fbad3e4596 b0bfc504cf144baf2685de1ac73dc74a b2f4f17f6d59c6a53e1cebf83f3f1bdb c888076f7b8cb125550a87cda3436d95 2f2e30fde0c26bb36b2c8bb96250e4a0 96fef95e1fbb3763276c3d558130f8b4 6021c3fad833e4e51646f62c9305a389 37aaff9b0f567ca378d7c0e1adfe122c 7bde81ebddddd161cba7035647fbacdf 30a2198addc7de5cedb0c6ac5ecac060 dc4b75223b732847384cbf852f305630 a4509077129f900932dee48b245ce100 9278d3daffecc60a8e75bb5638d14ce9 fe26829c67320001638241f3ad71c10 4344ea073ad91f7ed87c63d8b3018b58 fffbe09e4890f8f36314c3b6a3a65519 e1f94a758b97b728c2ef4561daf0cd46 a4046d9996609d50b8b37cfdf060fff b90a8fd2c92f5d26ac0fcae21e22e3fc f6e2f5d6b724d8f855f41a702b987e76 16c510cfb4186a46d44d717fb37058d9 b7a8d379fa29b41adfb4916f5d51df47 f53d6eb7baf5a29ec24d00518a3dd6ec 2315893467e8b5eea50ef3fc203c6ba0 2f4209998288a4634d0af51460733e47 a8b352220fa53a06a0834a5219dec81f 8560fbd0b90ff133b96aa5dc23c036c 2bdaaa66b6a2618b43c62aa3efb9d383 5b2fc9e582dd7052d957eaf7f4edb205 bbcaf90d1025714f98ee95803c8422bf 85c46176f030583bb349bd01da88f0bf f70396fbee1bf3f2f2866d10640f3af5 b1cf5989ae77d71180ac63732535bbcc fbff23bb1043116a92cea77f96988ae6 f5b35e6452c2138de1f2a1daf140ac9f 98205844a3267ac6423adc2e6f1b28d 9642b6d77734a1c351cfdb4c9f126c12 51ab5dcd79ccf3b5ffd7722cc96c6452 22fd2b354b1d26eb306b3e8b438992c c95d2ac372888ef349a3c1009fa79820 8c43f0fb829887f972cad024c77ecfb1 377289b4275551e83624215edd93853 5ce262d2d63b4c56357baa13baa16351 5e3e2c6779b3bbcf5e22590d7220b895 3ce5f5a20bae04221fca469af258e053 65bdbbcd861aa385ac52f5edacff5504 54fd9a41c1e7b94329d95b93a79ce1ab 4fd2d1fd9aa1f2e4d3756a4e297a88d0 1639ae190f0e05196df38a7dd1b448e6 9ee24e8914555d18d0a6af9bfb470a20 2ec617c22f8a1c7d96f12bf103d650c8 2c867f76c95134e6d17373579e6fd9be a0025e80ada9cf91ae9e1c81f7e5b0b6 e2d4ef975cbfe84bd9d2bbf707e9704b cb9b99a239fa07bb139336f03eb955d2 73bf687a44580f037f3efc94c2d31dc5 ddca06d91af2db70d735fa1ab17311ec 8d5c7600f31e45482249915e95f55f08 68333b503766aeab6171d14862875338 d0d4e25322d8fd3a1f58b8bbfc791148 689a9c745c6a776021d9cbc846872d86 bc74663ae3ef56508f65605792e3e409 35976b05836b249552c3271e911ffe19 bf2bf9b61e8eafab30d6a7e7f84a00b3 9dd91ae86cb9914678cf950c87657866 52102b24df4b0e09fe75cc28d6fccb4e 7fc4dd8163f4a67d6327d46d93c637b b642c89b7359f0cb66ab132932374f46 385439035e040c1e9a2ee232a197081e 2385f3cc7fe8490bd3932d50c4a63aef b5afc3eef7f7213250b870543ad6330 b38371493e6c31ba2e2849ea51389478 c740e2cadab236e56423adc2e6f1b28d c4d201c44ab9b1f3e1f2a1daf140ac9f 188c3d3b8da2b83c2d4090ebfdad3018 8a071ea65e9057a1c7c8ce3bef5c2aa9 9a2d5bc2029c82cc1b7837f7a64e3031 2b6e43e973ee42ea1080be321101ad10 7c426a52358e8c1d64c4db7c3b428292 36299a0fd2aebb5b1cb4c4614a9a037e 5c64271eb8c09c3a6af1f39296f6a397 568728cb599dc18880c2e60c312b0f09 607a6770f3bd10a16b2c8bb96250e4a0 9e40b56e67c305db74e18e0e7a19212a 31f4d647d59ecaaa5d0dded52efeb4fd 5c1d62c9ff844458cac68db180607870 8f70b211673e64c9c97e9355e94c4f15 d5e99caa1d8e7c859133e432dd7411d a51c1dcbed07d1de27be842e82df28b3 344d200007e2f72e9352b002a7d38daa 24ba1a3b18e25e46a3a714c763a6fafd 9e98bccdfb3cedf612db810b4de23290 479adb86f868044b82771a19d76c960b f7cf0e4395996803ed901abec3fdcc06 72e4b314e45d67bdf371f38ed06fa82a 76e10c1cb25e814fe7d6f3ee02d4059f 8d3cc57dc7d9c24ff6099a039722df68 d747c1f677349e78803b54e9738b20a6 9280249d5e91334f0864f9e40a51390 ea4247ef739736199f433921788191f3 b7b3f609d8af14965d0dded52efeb4fd 2509d876e7521634ad26d867b17d1a48 8ca120d9501983b312b38b1d99376c0b ea2d9117c341df9377b7d0d4764c121d d7806192d775465cf26216cc0b9f4269 91d9c29371eb5c091b7837f7a64e3031 3e4cc718eb6aa9e4559750dd149043e5 54001db75b6071eca7dd22c0aa3913f0 32909a78138cab24d4f4334cc3aff513 ed5cba88deccbeb5a0431d1f46615221 d16ba2810dd8489cfcace4d823343363 62f99c3f2e7d133131e1c03c914d6f10 9f42f31d3b81ef232d07d103eb3a7540 b77b49b9bd84123140385522d1beeb20 226917d478be80f3542283b6fc64a8f9 461cf03b41be093d9ee71f8982c8aa68 78dd4dc65639258cd735fa1ab17311ec 5de0665cd8e490f47de08b76f60612dd eca245f9c180e7c71d9b004d9d8d2781 243a8273104d83b6e1f2a1daf140ac9f 8f4a280e59ed5fe859360964d7fe1813 5dcda2b98242d00b55f41a702b987e76 ca2bafb1ba4b97a1683e3750b53385d5 7d54a0f10b79f06af70f35281ca419ac ed9225ab8a02b0fd4b349e4b3dd5565e b75dc97eb33f6f5f98469ce4eac5b4d0 fb4969c29b155f2e9c8bfc08f511409b 5658068646336771cba7035647fbacdf 4b6647ba7664a03198467494eaaa2f8 5b9b869475b3af7281112f9b0beb0a14 19c5068675de48b839264bb933c2348b 597f7914fa401ce1433d7c8e9cebd7c2 287f4e9b70b010a29ddd1aa0a00ef579 1b7f1ca21e6ab9cecc34b900bb2492e eca3075b0b976054f471dd2a9b3b53b1 af727bd232a8f1f4c3d83d64958925ad a159a15c0f0acc22cd8875a52047b4d2 b7d6f5e0a80f9502d4eec64750f57123 5395c4dac8e66ab6543fc9b228fa4afd 2680233498fe409060c049bb6fb2fb09 42288e57b2436e3512b38b1d99376c0b 22063ea2a9d53b569628553cade61af2 f154291136c45c24545c558f9b86cc0e 90612c4b3a2c6d849d9fecebc5860b6b 55821f1ee5efcd6280c2e60c312b0f09 2edfa6fb67b14cbe6659d9c9bcbf8054 2f2f7819edaa4ab7fb47f041a00e8417 5b1434e9b907eab76bcddb6c0dc071c3 2eb7e88f5355630962a5697e98a94be 48d29b4a2d749776e2e5bc9806debc17 3c8bf6360e36d51874b27677f8e8f04 332cc5d5d3484f8920517b73a75a21ed 3a8526095bae7e553c79ad8cab094d8 65e3a44a0a13a1bb547046f04c724fd3 6a7244726ee48fc560238d65d99cb6ca 3bdae6ac0efbaadb49a3c1009fa79820 ff6e6c1fd1069b92116f3b4758e85d85 785ec43cb6f1a534e1f2a1daf140ac9f fe9777c5bc60bc393554ccf8c30febe7 55bc5e1223f4868646862032be5afc61 911535f04299f4a53f732a8d4ec0bf11 461684f261c66471e3bdba9430565083 b12faa395027a377f7bd077790d66b82 469fe5d0ea2bba70650d38f01656985e 9d80168647f0c0ac9f433921788191f3 6e2dc15452034791a791c4f82c7b99c6 3945a1d805dfde6a989c6c7df583f91e 4a9c2632d6055fed735fa1ab17311ec 5de8bdd7f586399ee0685d22b2927984 4faa63f17be98cbf1389e18ca61056d3 2c2abe6a7d754a95c79f92df566f8c6b d8f1721d811dabbffe085ac6ce469d2a 608c126f0acb73dd7e338aebf530613c 3e3ee43e001e800a8f06d4785681c4e b449f16a0cbad90088be2a30dd556a09 64e5444076a4f4f53d69fb2c36f9ef2f d6ab580443ae008d6a2345809e2bb169 95cb92425673feac6b2c8bb96250e4a0 64276d3a962f6093923f5cd444c75b1c efd09f6901b098e4eab5ee569c9de1b1 253bf52d80c11314c7d00c29d97b78a9 10bcfa94dafb185411617c2f1885cb59 b3ccd1643cffcabce37934d75f36098d e5e7552e8dd1b5e9653fe2b064cca38c a32acd243e91fb32a59327b8ab7c01fd 60a861a5b416030a93153dd7e0ee121c 5da81098c784b512673a614c45f3afe4 9ed0aa906ffae0c26bcd32c43682e841 87e23cb3540dfc59c89145ad6791be51 72405e2f1e4ad22027a9eb2a0bf0d0a9 a8e3b605c0eb659e5f6c4107d78f2cc ed1e56bac79b13df0e1c0df18936d05 d68f31ea513d3a5d6a816b111e5f1b47 4315071df41d5766a7ebb24c1614411d bd1711225c6b87332e60a638a5e115e7 e37b87e001f24db1e55d13d7a8d27c90 ade16e09e79526d487ec12cf5e4563a4 e0b38e1386eec67624c5b9ac3d3770de 108c7545e089109c9838402e8211bd73 f42647b43072abc9c48ca2220df3a9b9 4ce26b6d23caecb3cc34b900bb2492e 2d34668468d0b542612389706438d0e5 e5beb08af46a6b8f6fa28a58edcb926 ac57851b846a48529f433921788191f3 c9e3dcd6cb94418bfbe54b5d01550 8a40c59eaf7bc85c322a3e035e31af50 ae1a6e01d2ea5d2cc75e2dd4efaea578 c0a8c6eca464a1ab9f433921788191f3 1813aaa9a82a98789c82b3f5ddca589c 5ca2752062ddaa0e21fa7072ad9ba0ea 2caebc928dca9f84b205c7feccc0f737 79f507c3befe69ba2987a7b722c00b7d 198bf0b56e9235a11afbc27572ea3d1c f2b4650a52cca500b4cdad9a5bf52dd5 c07f9e5e064bd0ef93c9577cd4b35faa 9e6d1d06ae82ac106f21883e4b04581e 604d927e4954713fd735fa1ab17311ec 7b74f5d8a2ad8aec6ba53cbcffbd8494 ad0bdb0b1b0c8077b4cdad9a5bf52dd5 5de2a57211e47dbd1f56bd5c23e00f1d 5c59e7cd62f20a8bbb0bf6d0a9fb50c 9b5a5de7af6ecc4274e18e0e7a19212a f26068a05c107a8823c69c7ff0f71040 291534185aa7328217ae750b40e40d3e 32706617176faf4a32dee48b245ce100 1abeb8d7f5dcdaa4e06ed7bb63be5503 419226b09e44e5bf8c8cac88a8c48208 ed9b7dbc375d3543d0a6af9bfb470a20 7b0137debf39237d618f190677511085 a8eae38e77cabdbd873aebd175ac6f11 783e6e45a8b4125b29ac2ce4d16a7d50 2bc57c73ab84f2c7d14664a287de0fb9 3d6ea8a01c3330ea8b22dc3851acefdd 8a0a85f55ffa4a13269c192b79bdefe 2ad41c44eab88406924d7b1c81f7a0b1 35818f16eb3540c0bc6e84bc30e573cd 24386a93c942c7ebad7daa06d33b72e7 c8b9fc62a220f63fbd6317b3418b592e c146b0aa5541bc1fc0f919a9a9f1e7fc b7e7192d2b8686fb418bdc8c2bd0fb7c c825f86ca0c8550d45e0c3a4b827d51a f7f945288a571090202be79d8b285c1e 7ca37968914be27d82b2a307d22750bd 18a1fb21c8c1c18f4dbc4096bca262f3 36d4635979ae79256314c3b6a3a65519 6a5c090b753cde05b5c25a656ff55929 af960bb41e705a579a6e43b878d5b335 17bb6d46e1b07ed789cff8e09537ec10 3fba044c23facdaefa45f4d7e1ef7d0 2eea6b3bddd73b1be768fc5ed1ac23d0 b5c1dcf4ccc0b8aca74fb613494614a8 c1267e4fcd29c63b60053189e2e21dd f0cc8d1741f287fa276c3d558130f8b4 966fb54dcc7bf00ba3fb48700889ab3a e5e273acb04a5687bbb7f70943d3cb52 c45c9f4ede3246e6a54581b3915c3bcf beb75684ec2f965412b38b1d99376c0b 1a1c0ae2b0a3cf3c80c2e60c312b0f09 a3896a954602b229d9d2bbf707e9704b 5fbdc4c221b31d5b93153dd7e0ee121c ed941e7672a4cdb0bddd549216d19f7a 36dee5893da238565dca6305fb9f97ca c7b8d834209413393110fbb3943dde1e 2a45063d7d03b865ebeab56de94a5835 b3bdd86b01306e7b410d23b0a192e911 67335d8a40daad7a7e60e1bca0143d66 575ccbbf4be84e3ff85b811e02bb4272 7537fb364b25e32e999562d1784e5908 955021cff365f5907ed475464ab76870 22d742f999dd7823bd2cd7f810561bda a669193672e033f512b38b1d99376c0b e65080fac483ce98f0878b58b4e887bf c80a831394e5fd78f0fea2ee98610322 fa35dafb0a24ed8b2511f68da65f4c4 c513665dbd0d0606f85b811e02bb4272 4b5668e651a6a9664a4f87aa9a31cd70 520ebb92353e7fae6f21883e4b04581e ffe20b3b5f34fbd0cbc6ff5546f4ec42 43ea7cdb23aa0e3de1f2a1daf140ac9f aa03af3233ff0be207c113ba65e29ca 3d5bdd3fb1f4ac0e12a8e5e6e6618c8e 5eaad35703c992f71092539e96a339ed 6ce72fcd06e465a6cbc6ff5546f4ec42 34ad54857a4dd37e12b38b1d99376c0b 41a9912bfe0dc96239169e4b52d9f093 338998b6f6f541c712b38b1d99376c0b 5a5f7025b960f4bc745f2f3a558dc3f8 c6567e2f9896825b49352dd33f95cb9e 2eaed43aa5e4ec8cc24d00518a3dd6ec d0062058d4eeaafe494dcb92319db1d8 de0f9c9b67c5f5a6422f205de59ac7e6 f7ce17ee88cdec33973c46c285b944d7 e57483ce26ca69b08f70fa6e7b12c70 8a95676f5965c580276c3d558130f8b4 3fccb4301ce84fbc276c3d558130f8b4 b10748ed5e3e01f99464f279e4e22634 815a2488eff62e6ce641b9ab504917bf 77241daf76a045c099d9d900afe054b8 b34827c2da8ed1e32029d06c0cadaf74 1ef4b49ad8b4e51f1dc5248baf82e0ba 661ad35c5c3a908c6d1e04c7ae242f3d d35bd51cdc04c103882d915ba9d043ba 76d55781aaac09f918b61860f81c82f7 d7bcb405e59d20a112b38b1d99376c0b 87dfac7fdf6e81bacbc6ff5546f4ec42 345179cdbb6ac9da4dd752ddde80fb1 8ba99099a99012c77ec95138ef83ef2f 94540c8b2d13b48ae09d3d2b183cc5bb eb71e9847932ddda558fc0121b183f15 5eed8cd506081459ed6071560148e6eb b13c2dec1a1dd7ab9bba8f87a19ff3bd 1c2fb199540516e2b30eb7cfb209da0e a0a36ea333e8a39319dde5f6d908cdf5 d82fecbd0fa3fe757e183a626c555090 d96e0f2fdcdfc47cf1cb19f636b1c2bd 9751e6d0a0d6c1919c82b3f5ddca589c efb99da78fea81e3534b1adc2aa1709 22d2782aa73ea40960abd8a115f9899 823b97177d57e5dd8e0bef156e045efe 58b926ca85b6ea549a6e43b878d5b335 350c4bccc1509f83583c7e128cdb4e36 df531a3c9ed88efcac074df1dc27122 2f4d62df133d15ca5874d5106201fb13 6b06ff0184e3108a4bcc18d4b892312c d07b1082474dfc9889172d41dca064d9 cf72122ff9caadf0622bf4353f4bc7c7 e92b167233273b73f4085f263b03d26c 3dc3dd08910169be2e3059b0e19cba0b 3f9522f1af5597cbf0fea2ee98610322 ccf8ce0be2e03076a49c146495d6b4d5 be55b1a477c465226f8c560cfa1fa0c9 22c33fb33a18b5bfbe250bd311b0c6b8 6f09a5d74998c8ec49a3c1009fa79820 25d950a8c7fcf04b57855ed10703bbe0 2288e5e13ae8aa7192cea77f96988ae6 add8dbf5ef758141e63959b7baa1103e f6fceaf62bdb85c05e9786b1603f45c8 577388c27e850a97f0fea2ee98610322 1af21b8dcda98fa6f3817c125fa377ee 99957708f69cc13acd0bf1b7ed0a63c9 c391adc028f6a3df9a6e43b878d5b335 7d03cdedf8e023728d00a96649d5cda6 f5ffdd214cfa8edf94c9a8d7fabdfed 47d871d9a3b5553cff790997f2048517 2b331127befef5a184727a9a27a761c3 88b978e04c343d25c11d80527540607 9a4c69fb30dd08bb5bfb24d81b25af8 94bc0758fb14e8de104a9760d2a92bd3 1eb186e0fc2dd979901b177556cd6c33 908d00034bfb9a8d5d30f6c8adea5674 3b22c066b7786677b1c46f058c033ec1 c6e6cf657ba3f2df4376957d2c85a4a d8478e58902d241ae1ca70d5205a82b e5a481c9c2e1f17516f51ef194451b39 d91c45e8d51b2ffb12b38b1d99376c0b 2416892a9f7688b01638241f3ad71c10 5738a6de833d8da68d4ca42bc1bef451 630818ee20900d67fe0b9f6d3db7b59f b20e2aa33c1a54fba791c4f82c7b99c6 6a7ee4fa2412e0c48c4d70537b8cc0a9 3e25cad3c3379be6bbfe0a3a537396d 70db17ecfddd51183554ccf8c30febe7 677d8473fe8fb35280c2e60c312b0f09 267af66d92c1b6b6e6819fcae2e26ad8 bfd8b5214e4a174d589c07868201b17e 38cbe2bd51cfb1e47751f287348e54d3 5370fd7b6529876574e18e0e7a19212a 16556179cbf2701916b34c3751bc447d 4c5a984272a922ef94a57adad86ebb52 1ddc9f25d09da805d957eaf7f4edb205 4d55fbf2ec19dc227359b134afde902 ae688f34caf5bf7bf1ef0cb5613661a0 a5b6e717194781776559a92f80e3672e 61796c118778fbddd0bc9224a67ebcda 6c7dec6bbd8ede62f0e1c0df18936d05 3151db7f965943ef9bba8f87a19ff3bd cf36df80bbcbc74a6f8398adde24f538 eeb8c212c7fbf6871fe7d5784ec6d0eb c1b9ec727b9ad093fd0b1d4a6a5da4f7 6694001fb50d3f1237ff6d90891805e8 bbc67c7095126f60e3e6e6fc6b79d595 66c92d4b4cb90639fb5c1b0f759e2bc1 aa21e208420cd4c2202be79d8b285c1e 56b409a50c8404afc24d00518a3dd6ec 96023028ba4ec62b65b14b263bdb456e 56f810f9af40b569fa57ccfa6a55cc4d 6e91124a4ecaa1a365564d9c2ed3b493 3fec7abae87ae773560ce90a898cf5fa c4efdc79b1132dc6533df38649ea120 e6017a1e15095b4e6314c3b6a3a65519 73903a9846293890a1ce1dd4c7e01188 b5f52968710c4a4de1f2a1daf140ac9f 280cbd90ba9cfd24fc105e275e6ac8f1 39b95d373f0ca2de80c2e60c312b0f09 e6fecb2700247e1dd87c63d8b3018b58 5febb85000f9df46c2e0257dfc41d300 c6cd0f7ad931ca7c997b5c86bd7c8962 d9aea67e3209d6aa1153b2cafc57da88 ca25a955adaa031812b38b1d99376c0b 30195a2d2fe56a1f6887cd98a5557c7b ffba44e241dfb481efb47d8e2c9f3b57 f79014425f660bc4d93d9e447c233c3c eb11f8abbb974b1d12f1ef17d681ef3c a5f55a60971922fff3059fae889f5fb2 19949be9b9eca5c667a4cd2863eb1ca 636c6b4415df67c5a5aad165050e534c 2e9dad6c61b3269b1ea15a3c13db250a 66b3e706e98f22c7324318e511b81a2e c5c335bfc5858d11137e0f55e7272392 1d285f3bc7767bc8b4cdad9a5bf52dd5 f0b6875689fb72f6feafd6f06fc45258 263cb889dcad2b6ffcfb3ae2df2f7efd 60035e734229f5eb19f2faa30e245eec 29f33014b958d37e6d25219b6c577d3f faffd9098e488836fb6bde4b7e6c6613 95e3e6cb5f3c8cd39eff3cfd975ea4b3 294c7c64f92d3b5537c107a0a05e0226 47a40af2fde212a7b70797b2c89f136a 99001b28e4fc6bdcfa9984f75a870c1c d326ce10d768da152c3271e911ffe19 1bcf4a290a2fb6d288be2a30dd556a09 144551f27b55f6d69127cdd763fc899a 2d4ba3b93ed69bca2bf266a8f0187ce5 94a724430f78e09bf0e835155cdd677d 6cff6f4bd6a5d73e8411da876c84603f 212a96dc292df1bce1f2a1daf140ac9f e534d084d3bc37184d0af51460733e47 378c3f18cf130bace1f2a1daf140ac9f bc1d02e51b46cd8f12b38b1d99376c0b a9af1bb4648a448c8ff23e7e19499284 c4d31507a1c0f7b7c3972dbee3e8d0f9 64559ac87f100d517246c79258663695 cb5e01162787772ff7bd077790d66b82 fef082ee4cbfecc4a65322353bdd17ff e59086e0a9bf161b170efd05fec8727 3c92069416189d7fc7b525efdf38a3c1 173dd045c9da9aff6099a039722df68 1c4361c083f3abe2cc34b900bb2492e f6d74e48206fca39a6e43b878d5b335 17577c2cbdb7c916642f87788fdb63a7 e4ddaed36daa1742fa9ff575e691c052 7ad1c8369ecca95ffb5c1b0f759e2bc1 6e157a5e034eb9f49f433921788191f3 50fa60269066614e70a30ad089da2cd9 27803e00894dc087da95b0caa53ebe1c 37cbf8e368b06b655e43a6efcaa57d09 c640c5ff1527fde7929ae5eb653afaef 80b03f350a5de86e3a653cb492d78488 359ac7f4ddf3e7fbafc7bdb2f8d1ea84 8f520b668fe5212e9f433921788191f3 4acda16abeddc1a24d0af51460733e47 9fc9bed98828febed4713685ae50fa13 9079c787f6d944d69a6e43b878d5b335 92164d8660dbb9d278fc07d6c8069b8c adef049969b447f87ddef91dabb146f3 16308b7668753c078080f52bfb02d6bf 1d4fbefad4abb85790acff7491720d9a c8cf9fce86c7bcb3b38e8b1e877a5704 f172b2748cdd7027d234b3cff759c4bf 70871551850d47c2823acdd521e722d 9cf37ec1667dcd3b4d4925687e893b3a e0e0041f541a646689ea614fce832f5 80432cdae538023ef13eed41b64dddca bb8ffd0d313c3e33202be79d8b285c1e 6834350f16324d0527d7c45115828e34 b632d00231acfc0211b5cadd4563c164 b6799bf6047f717e7f3efc94c2d31dc5 61a502275b50f6624a38706cd8ac54a1 313c2f35e1c461219f433921788191f3 49a566dd82ea542af026df30a0cc38a9 b451d4091032fe57aca1893e093d31f3 170574550b1b5c12fd0c2683cfdf8b6b ff46f3fdaba78638aa7cb0651220ba4 82c04946433c4a8f63413b0440eeb6fc d64825461795cad2ac2ad609ecafdf83 5ce2da67625a1415ae42d8f433c1cdc1 481372303918c2b22c12168d5291219c 88cb0215d342a49abddd549216d19f7a 7da59289cc7eddf7c92cdb7e63a33179 68cf8f5e1bfb9ff8e71e857afa9df271 13dd392ca784cab79adbbc95db428a81 9773bf30a8dea97145f791e063652f65 c61fd3dd6eee6465ccaf38f4d3340ec 8c769f47d8d5b0c84b681a5f8ea211b6 51dba7756ad837615e561f212b7229f3 5a86afb38048ecc6b2c8bb96250e4a0 1e62da4891f2021d950daf47e5ba3cf 3d0012e27bf8ff429bddaef1ba7e1752 92ed31e84e85000beeb5508ef773ccb1 f6f468a51ccb62669729231d295371f 5d3a612df6585a90cc34b900bb2492e cced6c0c2bd60368b0f24bb611f821a8 1533494d4139062e9f433921788191f3 9a8ce31de8d6f549a5aad165050e534c 563097fac348e6463d476be0564f2b74 9bd4ef716fa467a6c72189e41b1941d4 84ad561ea0b15621e33e9d99abaf3052 a14547884e1ab54f48ae8c3efb265806 204decf8bb9bc9e623c69c7ff0f71040 a413fd3df8c6a915fb5c1b0f759e2bc1 a2015aca6b4268c4dfe6ef2726050c2c fdcaebe1ef2f44406f21883e4b04581e 3efa6bed63249f928bd9de6b28931bb0 a14e353d1bb05f46b785a4ac4a0dbd73 87652d99be1b6e386d639befe132b2e1 57287268b594fb3f3a653cb492d78488 92fe43536b3f6dc1593fee7ac9114e04 907def283c0727f7143bcc14d754d44d 5707b3eb79f78b5fb9dd291f5235c28e 8aff17e0ba5d749f6b2c8bb96250e4a0 458578892b309b2080c9c53be28cd7ba a90a070a0603a4fc663e90eaf6b4ca52 c29bc7b0dcdbc2b9e1f2a1daf140ac9f bd23795276854614182f019eac476ad2 ad8abb01ee9066b425c01bf8ef97ff0 366db4aa9243cbee4d0af51460733e47 d7d7d990d385ee8a67eb21515c2e5ee3 9cc7d4e39b1fb17993d988207a39086f de5438deca7f9f0712b38b1d99376c0b 420822a543c50b05230a4d129580843a 428eadf77b50d6a6cfe6670bda9305bc c44f0aa417ed2a77e270f84701afcd4 d9f1cee28bd9a88c2f2258791e7c116a 65d6c3cd8c1edfea719b648239c8e160 93112d8e6d0710e774816c28a6351828 552e31db6701e0b7381178c6c47f7400 d33dd32b628e46f1d483df64f44884fa 1c0d3cbd1bacfa815f8d7780d59bb4ae da4294d14502707a82cb4f2e118e48f4 c4a5c40e5fcd1727a2bf3fdefce3fd4f ce8a04e433d06b03a0ba30bb56da40fe 736af7558693f029774a2bc3e125b7e 7392b5a3e2ff001f13e4e654fcd57d3a 731b2960620dd7883bb8b3b6d2fcf780 df0c9cef42873e71d2888692adb4769e 62fea07f4f7a6bfc673a614c45f3afe4 dc9a54a41fbd77314aef47a2c7bc343b b8430f8c82e80d4dffc0a401ac49c50 3b614a18f9c8eecbf0fea2ee98610322 caff0ebc560479ced735fa1ab17311ec 79461905bb97ebc21a77229b9f90bf5 70928b07af4272df2d07d103eb3a7540 18b4acd3b0809e6fc14e2939682bc455 581f03521f0253636d75fedffe6398b3 766db9eda4efe6aaf7bd077790d66b82 b9d2e06cd1844f6a6325009a8a12b7e9 a02f13c708f259f97ed475464ab76870 30c4a2e9a403c9d9d7cad6f9e585deac 7a1e38f9d85548e256c58b78d29fd8a9 9397161352dec4498bfbe54b5d01550 f0acf574b96f9fc3829eee2486bd54c3 cbcc80e6964f1080b2d09bc8d348e46b 4e42faa1861597c9f2c612775ea2be4f 14a3a4e859a9462bb335d40260934189 c9812d343e4e376c95ff232cd38210b4 ac161c74926a5face378cd9d51dc5be0 e19e9ab7d858842139336f03eb955d2 d75ba8d56bf868b75a950bb73f1dbae4 65aab903355c7abeb4cdad9a5bf52dd5 e33dc844a5227c3d410e09f4a064836b 26c60364ecc5858c80c2e60c312b0f09 58c5409f614e42bbfd88a8f742d6b88f 739971469c9903eeb6dc6c452bb50aac d439acf80dc6e1a9d40e00f72aac160e 19fb748dbb9a97d3bc6e84bc30e573cd 61008422050513d987bbc659fe543122 a2f3ad5b5e88482c30ae0c71c8e3e486 ffdcd1ea957aef3dc5e86946f2168706 ce400eea04127631b8611345dfd403f1 32e4f161682231ceb785a4ac4a0dbd73 d8c06e41fedbf387e5a528a89590d5ea ed939aa2573fc0fd3b5abd28a9df8c72 35f7e2c8a6c9072eb43c84780cf56b88 9ed34fd8df53c865cccd2ea14d020703 206d5e32ece7b8878cb55268d473f123 e4289a32092b3e667f8cba909d4faac5 4cdfe4029f51c3b16314c3b6a3a65519 45a756b1fadf20c7dd0a2071dde26395 bc82cf27b55cdf2ed735fa1ab17311ec 5b7e127c67c72e72f6ebd7f0952711c3 cb9255733bf39c58f2dfd8037041a218 72033b782c4f440ffb5c1b0f759e2bc1 6e3239e448539dd25c351e299b24e355 4f0659c5971bcfbead2649d755c19c29 509f0edd2fd65d5e213f0776ba8707b3 28f82ff412a37a304c8f375eb1452283 1c231bd6dfbefeba6bd753a4bc3410c1 afda81e011c79d183978e5bb605fb72d 8f48e9f97dc644ca8752becd01cbfbb8 43aa82d8c71e6ec69f433921788191f3 60efcea872fa7e52341b8a806253912c ed1647e209a3f661e1f2a1daf140ac9f 92a71ab8a9862a5452d6d9553235a14e d805bfbfee78282e6b2c8bb96250e4a0 d442863599da17d951cfdb4c9f126c12 3a23773469b2bfa8c12463ed30107df0 3332ad937d4cf220d34156e5a2f990b d3795e145d8fb811d735fa1ab17311ec d1be6a2cebae5ed7609e2d916fa0da27 55966a1b272679b256dafdacf26ff875 c414225a3a0fd0211513ff7357dae269 3af4f08a6dedbd491703868bb196594b 45030c1a84e0c23d7ec95138ef83ef2f 299416940399c3729d05095e3aff5e6c 49ff48905ac9d95e585eba7ae331fc47 a9c06da447ff8ee6d6d33c92d1d05e93 44ab011decde6fe4c41bc86ace512f24 b20d634c826cacc3b1ba4c891c81b80a d945ecdf7613bfe0c7da109ecb5068a0 193e079f24ac1ded1153b2cafc57da88 608d83aab75edf3c48a76f6e8e0499a6 fa4cc6689173c57a25975e984b0e050b c394a39997adf53d319f02af7c25cd6 7f219882b778b66c67fd32336d183e10 13bfc7f0f9fd39f73a6842b1f893c19 ccf770542367f03f276c3d558130f8b4 369127e85227fe5e218e4ad7111aa13f 5b466dcb5113a0704aef47a2c7bc343b ee36a8770c74281b52188a7e683f7f4c b0417ea1c8623f189c5408f4f799fe72 da6a91e6557973ba78dd5400499d0e7a 57bc575daa1a56109609aa6ba54014c1 70459a553f42c300f85b811e02bb4272 4e292f614c51676c6118b98f3fdee6c0 cc4eccfdaa0aaf25efcbb3a4a9f89cf0 58d4a585abe57ff59a4b8c8271f09050 7bfdd659a04c412efa9286f039319ff7 a66887b692d9326b51cfdb4c9f126c12 580f6487cf149c497504cc74f24f0eee 97e6439ba7e703dcd7d3985b6fde9645 5bb16f97c928f6dc4b49cd65dfcc3a9a 9c8e406a5e198529282dd3b430ec2654 14fa15f31d713b7153b838b6058a8d95 3cb82befc3290e36b58435942a1b4dac dcc4bb465d403801e1f2a1daf140ac9f eb39683f67d5d2fcc648677bc9b1d6ad 8210a8ae16f55c4bfb6bde4b7e6c6613 1dc15b9574f88cb1fa9286f039319ff7 4f98bd25bb9e03ef7ec95138ef83ef2f 65cc9c9436e0b2c8a50ef3fc203c6ba0 45d3b7dd92a80269da4044967c19cf99 db2916f1dbff9d9232967a44e902e4c2 52a90db915a53200f0478431b5ad57db e5cd986f028b4e27b91a90edeb58ed0b afa74746fa10939d153a22537579621f 78eef5df96ad0496e7c0ece95532142d 179764bc36fa4246fbf44f447f38c175 9301403c048cc8a3fbd94d73a34fbe80 2d310466453c3e42fa596c3267b95876 f32e61f7124ccf327aba5d123c068416 56bb7870765f37a05ad0ccf97045200 b13e4eef50c826a2fcf264b62ed090b6 6ac3f88bb36968ff6797bd93e1caef31 1037acddbd363ef5782611375da5ea9a d81bac8b449807bab7b81b671e901c39 a4ad8e643348a9ff3f217b945a063dd2 feeb8220f21521d4b4c6d1a32dc4f554 105c9e30b6fc033d96e5f13299458076 2eedf3a4c4eeee20af56497f051566ab c18b96da3e1c8a2350780f5a8c844eae 30270408f4d258d2feaf99d0c6c9094 c9e4c1b4cdc45601dde078ce46d9fe3a ce50f2f8034fafe86b2c8bb96250e4a0 e8df7ab8879ae3f895bcf48dcf4517b8 c77af288e7c373979905a3939c890ad2 d7192df213be19cb365a9fccb786f8e4 76fb0e79e77923de9932cdadec1db39a 8cdac72ba112e8f6d2c901959c439025 c92c0ddb2c729589b6dee66cb1bf8e00 78a0c4ff75258ecf16b34c3751bc447d 6de1ce73a377df3633faa05410dc119c 4407c14eb6e7ba83160ce3b5a19029bc 3860f5c1ebea3de7fc3c7341bf676efa 9204db8d40b7fcd7fa45f4d7e1ef7d0 30fcbf2fed0eb241d8569d1a6c25406f 10439f1f81fbee202be79d8b285c1e 42291af681d91a6493ceff0200cb9e84 7e0e797780f6945fc75e2dd4efaea578 e74ab615b3008320e2bb19fbad3e4596 38fa7b145b3be7fdb4cdad9a5bf52dd5 981d2bf1b1b028e46b1aa8d90854daa1 4e699ed7d6b3e556d3cd5c5355c4e1f6 e53badb78702d54e15b3bff1113c0f8 3be7b34984a3e34fde9c2fd0f82cd3a7 782f3821e6b638d6fb6bde4b7e6c6613 b9b9eb89bea6ce2fbeef84a1ff2df7f 85eba152f5c367bdb3bf5cd8f4c141b8 5c28fd7c3d261e1b3e243aaa4500940e 897656f468deb1b9e96eacf8990e6676 582ff2c7307daccbfae4699de9cb91a 1be1707593a15cf9fa9286f039319ff7 858975ab8258845f230a4d129580843a 91fd0f24b4865bcfadfdd35441a4b4ea 320c462553b4eb18d18f925e78a25ab7 8c6c169c326e61df67b9bb226efd81df 262990856b80d83d4382b46c76d2521d 8cab7fcd543a1d0a74e18e0e7a19212a 902ca61bd1f216f32511f68da65f4c4 609bcf41c9d33c04fa9286f039319ff7 56a8f2d9908cb417609e2d916fa0da27 e6ffef0550b5b2aa7833354cdb66ee8 7c53d8e4c566843b1e262ec64ad2c6c7 468ac0df7f343a67addf8a484a63f540 a20f4c1ff94b9d35127e0873cfaa7b8 d0987a5b6c5c6118143bcc14d754d44d c514a4eb146d84163a04e41b7ea7de8d 69240d39dfbc47a0d15a5887ec2183c9 3c10faabf2ff5415ee72fba28fa8d35f 40267f5d09bb0c422c4683dd00deec1 425f45023b30fa6ecb88c9db6e396994 4f4cc3462f0e9dccf13eed41b64dddca df6581f0ce7c00421b00524af022276f 9e3d8792aba09939855b2b6b2e96290b 502bcd962340e12838bd5e76f1ee812b e6ff26a9ad6f6321ec69d13496bd4a34 418f388062cce47ab2b92fdc09121c9 8532101879b57af2fa9286f039319ff7 5c76d759674869d559db9878902bfe69 f82762004d55da3d265b6d46c677f2ac 75066ff8b9740bcccb88c9db6e396994 ab9da6638fe428e87f3efc94c2d31dc5 54ed1b7f842914285488420adf4edfd0 62fc2e971d8023e61a6fae073bf19933 c0ac896c514cd91428a27232df2537e4 fa811fb70a13c68f95eaa1471ee21cd2 8fc390879ead5efea0834a5219dec81f 552243084ecb0eddf500cc506a763c18 39dae1fb0cd33173d2c901959c439025 50b8d57468b748c9f471ee8186a0fef3 75af21a2be51a8df49f0e3dd7767881 cd6cbd60e8f7cbcbe378cd9d51dc5be0 5f2b8f1a75a51d90e76598b090652f4a 7e316474bc8b072fca74c4e4ab012aef 8a1275efcf36b408488d77a033721bf4 39219da571e93e9825c70fb1df3f879b dcc3914659963636b2c8bb96250e4a0 457cbd3f2a9a710c11f7dcbb4a32aee5 e8ceb645b5a82aad8e27654291ea5e0a 9104e081cb7d92f0fb41747dcf822261 1e6e823412133e585a5fb2c1a52fc5c 8f81c50e0b90f961b40a1b2ef5e0c995 ce38b5d04d546346f27eb335b754fdaa 57dab7fa939cb30d9f703ae3d7bd0308 a12b0328e2b9eb17f084db89eb9085ce f9564e57bef8a7446c16036d807ca393 6eda9bcd1c2f4c8fa33c2b3fad570e45 fe2e9f0363866aba8868d0641feb1888 da478adc6169bf2b34cef5923891e520 93bdf3bb2fe22dff7ec95138ef83ef2f c474fa4cf4a4c282f5cbed688a0bb106 68432645acc0d554def607f4d4140edc 2ab086ef262c8688d6a71f46c1c1c5da 9e43b09d2c4115276f21883e4b04581e 86db029236b5dbafcc34b900bb2492e 77dbed07aef42a5e3b9e9f1cae8061dd 84735b7ac61d2ed023c69c7ff0f71040 27b6d2084f80ef3a7b7f00333604764a 6d88bd6c04bd5bb01a18bc096aeb4c21 34eb6b0af5ae9f26d957eaf7f4edb205 b84fadbc6f41cd0375e4eff9f26b7ac8 60eccc70ad4f9aed15b3bff1113c0f8 6e4ed358feb31feb27c767f081f1365a 938be7a1544953152c3271e911ffe19 26829f9c5626be049be47ac7c7e37815 92109df597fb12692511f68da65f4c4 73695c25b3ec4ae372333100c25acfb3 de0bb836ad8b5a24fa9286f039319ff7 30ee49fefc0d62c8f14183c264ad03ef 5a148f5250c5d987918977c639d98325 2d81e10114fa77742c242e8cf15917cd 69765630d57639cdd7166ab41aa5cf74 aad0d20fb05f8fb0cdbadd1af48b5cd6 2762292f3f5629fe12b38b1d99376c0b 98572b8a17031500c2c44977d8755d41 a24c70db5fb77268b61fca3643811d06 816df97057a7df79f47439175208c26 6dcd7fbe37463ff38d4ca42bc1bef451 61a0bef6e9c5a01dfa6c79a0c671edcc db97f4931d2da6e53e1271d7bd927006 3594567f8d54fc9475e036b82df78473 68ce5805f49f8484a90f0d3f07dcdbc1 ff84eb89a2c7e1b55cd168ffead8840c 4a20928c1570034d77c52b6e87288e66 bd7b5781568afa0f46177b6d1ecbf989 6a62d0d41a2351af7f683793234d478b e66332d7d5d35ad1871adec4b4ff0fcb 68a7652d28ddf2035488420adf4edfd0 dce3a4c4ce2fa691e777176cf1197154 9b2cead73808a61a508db6f63303da32 5a2232cb9dd25917768d4c3a89626da8 12ad493bc65380df1ec84866750af1e6 1a2038ee147fc6d434837e2aadd6d77 365ed0964805ef59f5cbed688a0bb106 86d90ec4c1e8437dfdf24ee0428a2075 57972c646e88289b7f9e2c1c83736d47 fcbfd6863b56c882dda5b2729f8f3c68 7f5f905397b76cd2304a8d13750ddfa 7dbf5ff231497ee511f7dcbb4a32aee5 6fcfd40ef3d8dbc1046a0002e847ad2 2c0f882d4c5fae8f2bd05e1cf7da8957 bc135e8d9571775f20b92c47b3d5c1a3 791efe6841d0995a1d9b004d9d8d2781 b40a96b48a27dbed8f38658d7fd17ab4 e4a10d825ba51a1fc648677bc9b1d6ad 60c856b141ec1e75a5bed5eda256483c 3925a46f22a5587551f49d4582a8d17 7bd5d9982d9bde427b34e94db5d1bebb afc13a1565e027c5d735fa1ab17311ec f54a04aa65598c3cbd32f07d6724eb4 6f0de5ca4ec2493ba7dd22c0aa3913f0 705d24724cf1b7fe4fb30f5124687748 94a7069ee4d637de40aa5b072f9ee3d1 debc38fe094476bf2dbf1aa086ad30ea c6d573383e36ec052e38f6d9568202c7 5d667fb09f0ad799c2e0257dfc41d300 da5d74a592c747e9ef7cbef6334698fc da9069b1bef61215716e30105a919115 3d0b35ba89b8c600efb47d8e2c9f3b57 d5ee8eeeed055401a3a714c763a6fafd 486e685875e840dde4b30fdd654658ce f90191dfe0bce3ad49f0e3dd7767881 98fe43e81b9e1b5ed8569d1a6c25406f 5f2f4771bf59c3a32edc45348090e195 501312760a03072cd9deb3f829cc2475 b68218340f090e03519f927f2bf92da9 97a75366f7c6ef24b8d6e958e0707d71 b76f3783324a5f7b3018d2d3c13a7462 d72ea947f961b2bc589c07868201b17e 680162d9443e8a408e62f59b444d701a 69237e82dd3f7d3f8a5e49d8f4867e8f 4081d740a9bbdc7eb5e784742c8f0ee aad61c4d490d4a8b6dbd8278fbb6bf38 439fd95bcbf861f572cad024c77ecfb1 e4c32f0b48b6c4aa31fddac73d878514 27fc4679ae16edc887ecee1779f8c08 326eb76ab05669c55e9786b1603f45c8 e69cc1d337df7c83cc34b900bb2492e b8828cd2b6bba8989091900cc7eb1968 f646b2bad0332c0a52a927716d03931f c54be9902d947a1ef6fb0164eb28c4c2 5ecb203a4b00b9a5a6d1f73319179578 82c3357fcd007893d17373579e6fd9be d77515679ddbcd9c8064e4301e947b0d 8d1cddda904b6f363a842af7a220e7d 7744efae453f26c05e9263096a26104d 2689d78a4fba15bbf3998727b15249db 935645a83387dd25719c27787d6741f f06a233c12b64a0ffa9286f039319ff7 6e10893742a5add1139336f03eb955d2 5004ff6a719d0c16c52533855abed4c 40ad008d081e3d40fa9286f039319ff7 b4ad3d030491a7768aa7cb0651220ba4 af06013159ad2e45cc34b900bb2492e 57d7f154da3864e951dc50bfb39cd6f5 d109693d2d43e65b6ed5eb4c1d0d366c d8e64f106fc611c186029a2be51c0321 69252c7838ace59f8aa7cb0651220ba4 934fabb18c71373f1326f2506129299b ab1bf0d24526c51db524fe86a5d055d2 73e0ab2e1d0ea752bc6e84bc30e573cd 2e3256b3de213e7ad87c63d8b3018b58 c836ef9c895460ae9e4b997bcf5c860 c42fe5b663661e1b4b004f8ab4aaf710 bb7474cb9310e33aa7dd22c0aa3913f0 f373746d1ef6fb5da4dd752ddde80fb1 8fb14c7aad8e829bc6e84bc30e573cd 62586a8eabb2a67a609e2d916fa0da27 4125cf5a6e85244f2bf266a8f0187ce5 1c4ffc878b001a097e270f84701afcd4 85cd554c3681ba40a24fe41bd648bb1b d47fb169bef4420bc4e8ec0d6d668411 59997a310b8fb3c9c1cc3f503d10007e dffd6f18fbc4f7ec4bd9916dfc5dd6c7 99a1608f8e848bf6519f927f2bf92da9 3360456861b9f22020a8bc477aad122c b8ccd8d1b693e4fb11f7dcbb4a32aee5 418439dbd9a2e674a81ccece899902be 8c151b8df929ec9616cf8b1cd2155e02 8c7f0954c7bde4edc8a5aac636aa172 7ee51d04734c82198ca4596df3cbf136 c82214579ed998e06bb9681d4604e123 18271afb4b31686bb53dcfbf8e62caa2 f297de88033168facb88c9db6e396994 c7fc0b36bbaee6382bf26da672b84220 866fc73e306a47a1f246f64ee1a24a70 e502392ba0ba05ac683e3750b53385d5 f4239f72396f4170e80f8461d134c14f 4adfca873edc6ad8566f788c330079dc e6b01d0349c34a4b9d40dc50674e6347 c37c062ab5ecca2ef3998727b15249db e91264640374a2716a0207b46ab78ca6 ae221dbffaa89b3264279e248bd2a91 477f00b10a859851abefc916dc2adb50 a982e9bcf097e0e595ff232cd38210b4 ea9ee0992bdcad77e641d7676ac20451 1196978aaae2ab55537a44a51980defe d9eede71f6941a7c766069834b8696c7 3babca331dad56aa1b3a159059d827bf 553b06cd4354c8ab1c15dec0da4e4dfa 425279eb4cbd51a48bfbe54b5d01550 62d97682c57a0a14758f3dd6623cbf27 98ea642f1f50b9686b9603fc5970ab91 7fa43df6d88d2391e103b85ae3ac182e 8ab72b47faa4d2d4b524fe86a5d055d2 a4d4e316f6511990309d43c07397e2bf e03a316409096ecb625f0699ec733ab7 b094f9184c3098a781fbd53a4fc6b7f8 74e930c54ddaf8add34ad43a472bf958 1030525f8d49753e519f927f2bf92da9 945564d4497f3a0398838fdf70b3e60 fcb3636dd82e1c37741da1d923dd6a96 1a68ec72239a781627f279690428499f 4edbccf034f4ab241c3656c6593bed66 d31008f7c9b5d67678fc07d6c8069b8c 152f598b96676178519f927f2bf92da9 d91e08ed981156717a362e61d329c7ed 51a8def44b1e4f40e8e10eefab4b2a63 5f356bfdcf9cd4218d4ca42bc1bef451 a4051a1e8a1b78003940cfb719120315 c3d75ea41abecf51519f927f2bf92da9 eae96ddf483e896c805d3d8e378d155e 455a8f48d4b305bdc70a7659d08b7b72 36d72181bce0939c49f0e3dd7767881 d601235af9b5e93e49f0e3dd7767881 28d70dbbc48193e0a39dc4a567ce225f 5ca0dccd8b0f6357d1987c07c912c6e1 9c4ba5d99727de4f737477c115ad5b33 84a95f9216f5c3255d3426ee101e9f8e 76fbf623256644116c830d654bd05bb9 322a9fd05f1f68b4dc99cc00991f7287 3240b627007008146a2345809e2bb169 91156c525c67581f0cadf545f40c8f9 45c8f8e154fe9642220da6190e4d5a0b 2391fdcf2158aebf9c27f9a5387b5fc 6f652f3940aa986e3e243aaa4500940e 2d5208bb08d89bf9a3e2fa8a8e389f2 4e0cf21c4e7e1eb58c7ca3bb219438a1 10e60e0eb0d7915c8de11d571206924 dea853cf0b776f7dbc6e84bc30e573cd 6fafe3b82e6e07de460c5cf20e4c5e41 a3d111fe5fab82a54aef47a2c7bc343b b4f358642d91251d26acd17789ec9c7b 76377dc3d6b1dad2c0aaedf10d776af7 d3fa347a5df7d6207969ab08647690bc 5076565550186d3a1f23c99243882ce8 403195be81485468d10b86bd6e8bbc34 f21a0e54ed515d344110c565e849308e abcfbaaa409d62001d263b1fb57ddbcf fb6e8e453293303a4721599ec64bb469 4c31d19625e911e1f8edafa0d47e47db cbe8debb3fa41f716e96d446ae30c673 fa4dfabf8e55704532967a44e902e4c2 31da90b91370ff74f30ef438bb75825 8cff6a796ea47a9cfef144202cb2b935 f0236f202fe3588a8d4ca42bc1bef451 d1044b04ea67ab2d3e10bd7b040a4312 5f3487876c91c0b5ddd7320ddee77bde cb842e500cebf07a87856c3f95c33cd0 72b28bc54158f0d512b38b1d99376c0b 194a4d0bcc1443fffcfd5149a4a15414 b0bff9f866c3d101af25bbd7d4e31ad 1205174a90e130bf595b6fcb838bee85 54b68b9a4c40e86b3da3f9c40ebeed54 af0bf9c4b6397877cb88c9db6e396994 d08bf745e6f7e4b14aef47a2c7bc343b 8b5cb45c763602a73a70335e147b440b d400c42c4c4b3ec1589c07868201b17e a84652cb6886d873643ae903098a314 e639996b832a157e6e0c9892807c7fa1 6cf8bb50d1a8f0d7663e90eaf6b4ca52 b72ed7c7239e7bfd8e62f59b444d701a a4d66892876b5e0cb5acf79024643c18 8a8f66b04e6d8f4ca9e925ec046bd20c df2cec0219c10e0ddae3730658b53fef fb11e17c9dd72d6851cfdb4c9f126c12 6f447ae319cb3f8c95822127460cc765 2d0eeaae7231064af4de29b99f103946 a573925ea3002ef5878dfef973fade71 3a3c0edd93ed40d35a39b667673bce58 e1ba58d83c23c6d1fd4f49e0598b199b 5162b8d6add4dcd7f0fea2ee98610322 c26b3833f66cf4691756b5d674acc4e5 c6bea91c2b9ac3245127e0873cfaa7b8 2b1fdf919d42a55828b12a43019163ae ff7afbe21c3c9408a2e534aa19c114b0 e0513d1ceaac23ad341b8a806253912c e325afe389a39f49e641d7676ac20451 fd927e1258969e1ada4044967c19cf99 ae53ea0e6011cdbde2bb19fbad3e4596 c7e84421af16e48eadfdd35441a4b4ea 569416cd964e365e20152153c3a56171 89c1d5cf1ceb8a81c8b8e03401520eba e40227f3cfb50588ed6e4dd9aa9b9ab0 698623ed6f1fb3076b2c8bb96250e4a0 fe21904b4e1548ba5bd1f946b0dbc061 edcbf89b4491941b9905a3939c890ad2 9b0867286d296d3934057837e526fb02 f06f841de5e202e5a50ef3fc203c6ba0 fb36203aa01524aaca3e540900266737 6acc9c34a79f98d0ff790997f2048517 4d4fdcb113d7ed643a6842b1f893c19 c7e59e374c2cbb7ed33646b0990bb4a e0b23c80cbe3a2d8fd8c7a1bf5db0aeb 8be6c2867bbd8d27143bcc14d754d44d 5b99c77733a74f36b74ae5e50aa93037 175ac778b726ef5d48cb5e52f6edec2b 3977db3c5730fc7216cf8b1cd2155e02 c3065c23eea6a998547046f04c724fd3 4bd456ea9809a296c60369962d1bf5 5835fd744208d5c9e6f7dedb7e5f584 8e27088dc71b89f9faea005b8f19889 e53f8481983564828ef0c1f0d9cc8b8 fb38cf43741e1189396ce275998d65f5 5c463ee11ad412ffc75e2dd4efaea578 59159483028516c55de49355f870af76 26bf4f71d7c24af87ec95138ef83ef2f 3e5711b79fd4876a4ef2a27f51a6e36c 96c96b2569853438663e90eaf6b4ca52 154c779086865eafe906ff5bb78d7b1 792adfe42bcc28b36b12c93c965d90bf 691880ea91ab76abde423072102e0bc5 67c285f5c701d6cd8ea092ebe8f64ae8 5019d7c3b413a57012b38b1d99376c0b f267ad7ff7c3a5dd763221be209af140 8b1b66ae9e416cb13b5076da3c7eba98 2ad5e27d42573768adfdd35441a4b4ea bb3f4468dc88370c9caab46c14deb892 1aa5498ac780331f782611375da5ea9a 5eb64afe7a276c243a653cb492d78488 6655be7932b8b984c04419d9f4e18d0d 50e559a32e81e8a9cc57882dfaef8a57 926ced4104fb5d572f63bc22c4d8bf9 f6b9cfaabbcfbc494298740d1f3c17c a2b803e958f8b80b8903bced1c63244f ee5aede335490e0f76b7c600f9352862 76eabf417f880fbaf0cefc099c5b436c 181d88c9e36d9ab88aa7cb0651220ba4 e574eb37ea6ee685e1f2a1daf140ac9f 3eb4bf4ca864e428ce168de955fd5025 b942751009dacded735fa1ab17311ec 12ccacc72630c2a4c4a6c34a09e62a92 f31b23b6dd65d8ed8edead259832feba e9cd2397c0a7ea86341aafe10fd0cbd4 42b44473503d82101c7be7f1ec012899 621502aa0a01864d20ded1536778b0f e24570b7293756b7cc34b900bb2492e 6e127603e720af7855731e75c389c9d 30d7d9f98893cfd62511f68da65f4c4 3be0bc4b1169ca4959db9878902bfe69 f71fd8ebea347bfa3ed1dc72750c6f75 4c727a571a5226549a6e43b878d5b335 1939215162425a252bf06c32262648ff 8aeacdb5884311663716c1574460b140 28f2da42122d400d9d5d6d3d4bb65831 b3bc8adb8349c958de423072102e0bc5 60cd2f3d326475e829c6b4b73d88655 60fdb51a9cc4011289172d41dca064d9 b52e26101ea750dfd1f50c75142faa8a 3238588ed960920c400c7ace1cfd742a b012c9d123aa8064ace721126020c1a3 64021a29f7245e0fefdff89bf9a96890 5341d156f8af28966a52e97955091b6d d83e4e5a7957117be6e1d9f65d65c2b6 b7e25fa0ff4920f28f5b599a9e7928c1 dbe471b64f9d8647e35dc3ced109600e d04048099296ffe4dd084a7dcd1680de 5a64d7b0677ea932d08e423afb7a8cd2 163101758687bfdf30d6a7e7f84a00b3 6fa6eb2479a09474d87c63d8b3018b58 989b655cb51914dde423072102e0bc5 2254c238167dd6a5672ed1a3426b68fa fd95cf27de958d85827b7030399884a4 39ad36394c9b7267e2043871148f79a 604f91e5b306393fa884e15a61a5f4a2 e88c326a1c2a570fe2bb19fbad3e4596 f55544d331eb019a1aca20a2bd5ca645 49fb34153b09db8dff790997f2048517 81ba8d540499dd04834bde3f2f2e7c0c 4defda42f01b1345119486cb086a6c5c 5105e493bcf5e63f75a82b88fe6e733f 7cb94f3b4bda0dd9783a7c2adc432e76 ee7d9264ce8c77d79d9900c00629c24 2229f60c2819cccda50ef3fc203c6ba0 83e29d672713f0da270e90bcf29dbfc9 83a6f7a02470263ce71e857afa9df271 41c55010eb7ab373a4dd752ddde80fb1 ed5e68fcb3a7be0c886fe00dcdc18c8a 7eeeec55dc10e1bcfa9286f039319ff7 8325595fddab7e47dbf42f7773eadf2d e6ef0c7bb7c73e4bad4c449f974dc221 1a8c91b4803b3470f9c75ffd2648d7cd a58beed0a033875567a4cd2863eb1ca 4fbeedb2f1f43293b95520b5e9aadee8 cbac383f55b031eefe3324230bd9365d ac25513a060b0ca3cc20f30a7355a75c d03318b031d2105b5bd5996a1713323f 7d2adefb8872fb564d73c4d754d3623a 7a79d63c2cf6df519f605c8c86eb1ec2 47879a6571648aaf5a5d51f7f565712e 59aee3729d8ae9a6a8304814541fbf2c e0824487f2bc4502e9acddb06da3928e c9b36427b66414de42ca7cc070f21ed3 3907ed2cfe0cbd22853c6f214c15e60f 5df501ece93bd3f522e2c8abc98c5f41 da421715af11fdb4beac07ad11d3663a 639b18f1cbf26228e666ec68139b7ff7 5190f781a1fa9b9a733a41fc18f7f056 fa9f56b25119ab802ca888e33c9ff27c b548a4e02e014405de423072102e0bc5 ca012a47cf5efca23f9d84f9a87a44e4 af6601f4d67d85e9422881265f219fa6 a467801481b450b8cc34b900bb2492e 93743b9b3e33a272531756272f07b3a3 f1938c5ed63aaa7c91c108af8af49f8f 5e7afb318ff701583018d2d3c13a7462 b3ea2d0331ec9ec650544cd7fa263944 897e6a6307da50906314c3b6a3a65519 aa858f23b682f5616314c3b6a3a65519 18598beeeedb20729a6e43b878d5b335 c8b20ee08253136b77b7d0d4764c121d 18e5827d2cfafd05d735fa1ab17311ec 52486aec2292ddd48f0d3a3dadaf3299 c8889a93245d305518c3adaf57b2e1d8 2ed25f939dd286cbf4c4f1f541cfa2a7 2f86138fadf4e2f5af56497f051566ab bc187370b495d54b4c82ce83dca284f9 fbba8fc424ed0ad6f8edafa0d47e47db 937f3a803767480efb6bde4b7e6c6613 36392e6edec3c8b59aa300fabdebe6be 9c3f797d9b352d35669d741f4ab14065 154d2a83fc91d473d735fa1ab17311ec 77ef2da2754d6b82fa0021572e849910 bb46900b4f00ca7292659aea259f7c91 7bd6db14ec6c37efeac2c9f41d1276bf e479b8f33a323147f0eab8a2ebef8e89 2d203e283c13fd16494585aaf374e961 7b6a6e33903b1639a5772249c0d44247 94d526e75ba18f3326243ac6fb5d9ad9 e4bbdf84d07fc208703494a0657c2b45 281790c93c1f8876972d2a72136fdc80 1ab4e79889c1288995f22290198b089 32d410088758f9bb89dcfda443251892 afab3cfa9a8ad5f55dec35fda9dd6781 f0bf5f36ac0cbb2b1a77229b9f90bf5 7e225da92fcfb868eac137faa8adc92a 681e871906643ac4f9a24531fe7127c2 55b86089f042d17f81d2fc3f6a98fa93 6e1572214d2606dbcf7516eda265328a e54b7a716399aa646a29c14eca4d216a fd2435673c53179dd1a62290a53cce98 f53a4093fb00a490683e3750b53385d5 f730043e6a9843befe2133a365e39c7 e85f80f7fe4c8f3266597c7d470782b4 10cc9af8877d795c93c9577cd4b35faa 45272a2a7c41e0095c97ca64716dc6d5 94510c7e5c40166d1fabf3cbd0fc77bc fe286de2443835694aa96bdf46776318 98f15a80dc5ea719d0a6af9bfb470a20 48d5a68d2228359fd735fa1ab17311ec 92431d034edd34c760c81723f0d4ce20 47a5a10a047f2c2582950cbf0fcd4d4f f130c222ff91520182c15a8613f6374a 7da8e9ece43c210e44b4519fba3aa36 89f4f2458aa64d94daf2e4c786df29a1 e06992f45548f0416b34c3751bc447d 6d751616e0ca4ca0aab32791f5a03201 5bb02bd49d2ce6e590b94f57d8818348 befe2c697ac907f5410d23b0a192e911 164fc79c2ecf843bc8e292146f3d4d52 2eb8897f028d20bda27aa199c0989017 59ac1042dbfeb36e51cfdb4c9f126c12 f36f38edfbde85c73a04e41b7ea7de8d e9fd75b68e06c18cb056c98b2e5e5e4e 667772e778d69333e2365746e867db8b 5b70d54d7f40fd8e5c413e9fcbe8ea71 35af9072a2ac0c485ab5fe67efb19452 9548b43e0f416e3a4a4f87aa9a31cd70 1a289f162d63c0fa8dba2b86f956c537 981b30a44557ae28caf05f9cece7ada5 ddc90b69e90b208580c2e60c312b0f09 71b79bf11ce7ac96b839c45792f79dd9 9301e31bfb2f8f8d88be2a30dd556a09 7edd1e50920e559e0befc0b4697d414 75bf3b1cfba045819e172a9318b5b7f3 34e8142e7b3cb229d735fa1ab17311ec e8a019a32c42bca7bc6e84bc30e573cd 78a1e4efeac9bb6f55d33831e71fa52 5fde8eee79ab6885f0c705d37665dc32 9ebdd77ce251d68626243ac6fb5d9ad9 f1f780b6afd284d0764c65bdf1040995 cd157c59d1caa30b1d9b004d9d8d2781 bca09e37935082a925ff9d2d1e4772c3 de637cf64b212f4061b28e02a259d647 144f38700549b35b31f639996cb3d35d 82c56ec37b153eaf97ad4936ef9fbcdc e35192fa08101d5db257aa9856dac07f c7f8678e3ea91a99de50356926b60476 277fd403270ca32b72e5d9d5746d6da7 f5522cbc96faae02cfbc7d85a5791e93 a15d5a9816ba40bb76d500a9282a3dab beb9c8ac912c770bd5e0e036a4082b58 285854c90afd66c4c9e18dbb8de06b45 74b14a0da86ff0b6e1f2a1daf140ac9f 218c020fa843aafc99f5e7ab39748cd2 9718f974dbf0c599f0e835155cdd677d 8f268f9f187292f1179177d1cafed62b 255b002258e74085d735fa1ab17311ec 74b965dee85e951a818accd7207190a0 f5cfa769619f708bda733a39f84326d 20ba04acfb3a2df63fa974f1d1a1ac62 8145a8a2b974f4df8ae8d8f46e8d6c0 b3e73818cd2e03c080149f7d680e9c1a 57c6c69a1406e9be21d9cbc846872d86 fbee616945eba3a3dde107ed8a50fb4a f8af5b4ded94bfcb9905a3939c890ad2 87a868bd1d4cbbfbff56a19447480f3 bad9e6cf69ec4553db181f2efd806577 1e57dbf3e917e55c25ef5089f95ac09e 8caf6dcbdebba2221326f2506129299b 2832026da7b9c61ee1f2a1daf140ac9f 28444490d359fe49cb833b31b53d151 63c944adedf86b80f8915bea3ae2769f 347cee581e94fbe5d735fa1ab17311ec 963506132e08855de5cf42144086d22a e57dab2d63693b0280c2e60c312b0f09 511dbae3805dad80ab5938f464bbb85a b017d865b68cd1adb4cdad9a5bf52dd5 a4888af5b6c4c631cb239ba7670e0fec e48d07c71fac7387870906b5178d97bd 39bfd3455413996df8f666ba0e601ac b6feb20b14f9519ef933a612bb11b1b8 421da608bba18bf2688fc2fc0a14edd5 8588b43940114af7eab5ee569c9de1b1 6bf8c32f62fb38bce1f2a1daf140ac9f 1d9d85fdf5241ec31dfb190851825aa0 e1fd9153928081d93b80701afa3beec5 6a283eba0e45bc63525c1baee1f19994 1d69667fdee51c20e6fe695987d47043 f30464cf9aef3abea7f9996575f1f5f7 cb52cb876bb3ec76aca1893e093d31f3 c0d928c692fd95b547f0c66d8dcbd422 6072a9dbefe5fb3ab397b12318e6683 5f0cb03ebd45ee7d735fa1ab17311ec 3474d85a58796c7a935777dcb8deec2d 6e700588bfb6de35f30e6249e336e80f 9168d4697d83cb9215bec5c0df04f3 f80ec2ac6f6e851bca7250d90eb506cf 513ba432b16287f5baf4b37340b9dde 6c82de0208ed0f551ff1879fbc41d0b 574e6f325fc821ad6314c3b6a3a65519 27257aee4b0f91b1a16c70da5e24216f fb96b1414205d7b525c70fb1df3f879b e93954daf5406e15e564d15be4778337 2f9d017b565a274f2a1ecc02c3ced6bc 19035d7059eaa5b1a27aa199c0989017 33d90fc45cfadd54cc273c614d275d95 700b82751c12e8ea3745d03a006445d 5376c38ea63848d643b0dda994f793ec 192309e06577f893bb4594cb67b6eaa3 1fa2cbd03c1d57829f7e0a8a6309376 27fc3208942d136b92cea77f96988ae6 58f98b4bc889c7f580b72a37a25b7e72 23a5887211380b2f663e90eaf6b4ca52 4e007e41bad1b1cd735fa1ab17311ec aded0c6beed6938ba39dc4a567ce225f 73dc8568cca29c0f7bffd97a22e78e2a efe36ad683de3640a5aad165050e534c 48620fb309184d4bc5e86946f2168706 5d2c6ca737f9accf683e3750b53385d5 b6b6d7cbe981d57276c3d558130f8b4 e6fb0c7f8a5f944363e66191800dfc8a 216637165f69a2b5be0132953bc535f3 ff3425cf1860b6116314c3b6a3a65519 b3f0d3a6734e040be658483f9f1a085 2165d568388bfe649a6e43b878d5b335 1f01ba0f7e0948f56108ae6b1ec0f04e ca8c360dd014910ccc34b900bb2492e f4775027ca39270897ddede15c51e64e 54ea995ca2645fe0f4c4f1f541cfa2a7 7eaed6f53420b4ca51cfdb4c9f126c12 82ed6ca9d8f6e80ba46487e924d32c5c 2f5dd43b4ffd7d433dd48eebe8f7b24 9e6ba8035db3ead6cc34b900bb2492e f97e307455ce56a734e7e0c760ac1c0 13ff0ba1e8d79a927f71da36e5c530dc 91b0c8975ce241d69557371cff545901 4bf3fd740498b489a7d276ed256acd94 dbcad8c956d195a149a3c1009fa79820 e8bce069e560a97f310bbd45bf9024da 121ef8a289b232a73c5eae1befdca7aa 59b69d23c7a2f9568f12efb4f632da7 36083138334c7981d735fa1ab17311ec 78c7c7037e2ac7a7e0490a4a721b5273 cfd06e58d354213c8f2a8ddb5c970b6 951b61886488dd94d0b636a2d5e450e4 508230aada88eb0a550a87cda3436d95 173476ce3541392d735fa1ab17311ec 38c4d7fda771b9b984593c54486394e3 4106793af469db6bf0fea2ee98610322 dda8e93517cb8c0ac9e18dbb8de06b45 cc353b464c22be528ae80165ba928e0c e6887514f6d28e446314c3b6a3a65519 409306cbe659e516bfd79d2627fd465c 4301f958c305ddfda1b7cf86a93141b4 6b14119033dccaa5d735fa1ab17311ec 305a895b0b06808b9d5aeb7097eddbda 3919b70a16c630f9d735fa1ab17311ec a759e6ddc0378dacfdb02ff6a9949154 8369cd1bf3c6f377504cc74f24f0eee c57c4311f1f23690603b56d612737c9c 6f09b74771f8b4808962281585efe24e a2b9d8c5357fc0aebc6dd9ba5ebd71f c1e4e78ba2b714175814fafedc6971c7 3b8a22fe5666ec993bb35aa9d5fb636b 149adc06e4b1404940232a3c75f1f92a 34d2582f7fc79e07a5fc2a01ff709b89 84b0027c1568c9c3694547efe15425bd 487ef6821e82c9548839ade0cf1fb995 d761053ffff137701d9b004d9d8d2781 6f86a5fd7d3a52dad735fa1ab17311ec c253c204b55470eaf4e90b82ab227094 1632f8ce3254cfccc8c51c73cb7275ed 30d2c5e8e703abe3f6503cf22f39c9c4 199c603cb0ba88899ac559af07c55afa efd891428cb699e78dd4952817969d63 d05f6ac929eb1019f5cbed688a0bb106 81593386d69131c5228625d43be3e606 f16eab54ab97a97c8cb82d02bad057b9 7fe56b2c6ee7d118994714b2bc8b41cf c497e1a1ef3515f197e3ac788f68f6 2348490cb8fae973b6792578a0d9ae89 1fd98fb84317ae248cb94bbc7f05ffb7 78e2a75ff1d93138e8914057d776d90b 3ed4ce6dee76fc90180d8ddbbbd9bd3b 27156455bd418715a50ef3fc203c6ba0 e9adfa95465f806b056c98b2e5e5e4e 166508e16d31488a6a34aa94ca8a3355 4dff14f1635e9abeb1e00d60b0f9cc70 5f8daf709c9d4edfd3b936925082270f 8b0710069d95b4563a411ca33a218449 f499b088e48914256f260fa9465b564b a2570eec88282cb3d8569d1a6c25406f 8036d88d38432a11ff18bc1311316304 ca13a3342c397d68952d52701459b1f0 4edb165109339c63cc4d8251423f62a2 d980e47a5890b42e296e0e62674e2efb e01eee98a8d18a29a2d71a426315b93 3592149d9f069cff276c3d558130f8b4 7d0b9246a180c59785c111973dec28b 354d382fe282ff567ce76669ca87ee34 46b29fe9796be46497ca877cfb285ed8 156fbb9dc2645686a3daeaea95a3adc4 4a0f1b426cea6f13fb41747dcf822261 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04256520_test.lst ================================================ 3b8f2b955ee9a904b3c42e318f3affc 3a98a93f381ff5fb4b3c42e318f3affc 9d5461070e008c453bdc60e3df3aace8 a7f45bd27efe50af4dbf8d635749f669 f2edaaa8bef11dedbac8a2db6cabda6a c9fb9cb259692ec0f7248d9dbed7a7b8 eaec2a137b0858aa599dcc439b161a52 f9429d6bef2df25e4dbf8d635749f669 fe602b7929307607e59b39f8355b80d 1fde48d83065ef5877a929f61fea4d0 cb61e530b7c20409512941e37c7d7dd6 20eee9b40b2f6f36e4947ad76f8ce42d 629e4382f2d569f366b86624c235daca 55e0dfba8cc226871b17743c18fb63dc 14658bfae450e891b89b974fa14a05a d3cc9f995b1f2b2dffcd08faf4fccd0f c9f83c2615326e7aff04196502786921 3c0dd3719baecf3319fb4103277a6b93 2a9fbcc138834d07a6bc98af4c2f54ca 559019119818194931df860464c5f16c f8fc1fa935aa8f792ebeb1e6a8111f53 77196cfcaabb6f750cf3715818ccfe8 b8ab014839e2a28af62af8489541547b fa5bb6d18535f66219fb4103277a6b93 9571cf49ac1752984ee1dfc331dd3e94 fd181390f71ec72478ae896933c670d1 694c7bf2ad1b133b1ce14d4c70990479 1c9d333bda4b2977f92f3e7bff4c4ab0 9c103621101bcf9919fb4103277a6b93 dce866778584da8219eb0cf70882af88 7f0bd726971e34eef9aec59741c69cf7 80e34c832c4881c1c1acd07b40d583e7 c09ae0a971165afe4fb315ce917a9ec2 b6049bcbc56eb65e2553cc33364504d5 f6190e61f116d159ca119b1ec88d8df8 42eb9cb2f34c1ac81be5c5f8d4f77343 c80c48b901ad94effebad4f49b26ec52 753e1bb8f3164ded7b3ec0bc4f26f615 19dd57f04ed04422c528d33bca1ac2 6a42a50f5f6d959ec036a40816608369 ede1eb2acb5ba12e7282872e507d5fff 901440644e396746bab0cb5a4ccf2fb2 899389d5ac054e7f33a851a05440ba33 7525a8d905a7aef4b3c42e318f3affc 4e1ee66994a95492f2543b208c9ee8e2 f3e10fe9995b4f864b3c42e318f3affc d5a11602655790bcdf6cfab91d65bb91 54a08dff9191dff13462c3e6678345f 2f1e6b2c94d6b6c474072e8e7f655555 e352b0882699b66a44db04bfb021976e e48455c2ad642df1febad4f49b26ec52 240b9fc8d34f3af17e20865350fdf369 34fe095ab6fbf3a09c0b027ae5b223d6 d13cd4fdf27074854b3c42e318f3affc 8ce496ed6befb8db78fffc86da230525 a0646924dec3b2c97348ac642586ce23 4cd14d58eff772da946789884353d9f6 c3664a4a708086a448b7e15d7b3646df 979ca0cbd4bffe37c7b11e86284a2e 6c8364730b3c64a43fddc4e3be2d83c8 1299643f99c8a66df59decd9cfc8a5bb 47ad0af4207beedb296baeb5500afa1a 983f0b9bf020010159f8e31ca87c470e 40a6a3ef4e4e4c4c300703f05f8ccc25 e75990aa494d4dc7371ea954c8939aa 14aa542942c9ef1264dd558a50c0650d 450b2b913495b73e9069b3c9aa123329 b3b18a2b0bec3bf1593ebeeedbff73b ee7ffc0b1cead515b2cf0fffc23ad5 784b4379cc7e74e14fb315ce917a9ec2 819038a4b8db3ed24b3c42e318f3affc 2358a67773472af0826fc8d57346a2e4 9900929c21330dacfebad4f49b26ec52 7cb3f49789714865a494798fa117187b 453d56b5906989fff29666f384be6c43 9866fc915383a06cc85117b19e0f4ee5 302fc57b3d180ea4733824eae5cd9ae 235c8256c6e973de19fb4103277a6b93 2a310d5bb9e5b1ec162227055a96104e ad856cfd25b91563c681404257d94ad9 8f1ce2b3b4f352254b3c42e318f3affc 31ae964a8a9a15e87934a0d24a61231 acaf2b81121c78f6acacae5381781ae4 a47681de164dccc6ad04591c9486ec0 30ae6ca65155012e4b3c42e318f3affc 7b914fb42c8f2368393b1800bfc51a93 f7c79c7a8fb79212ddf7c7c2aa2325be 9357812939117927c0450f087c15de65 d5424df6acaee9762d19175e7d19b7cb 45aaa81cb6b7f1585e7dcc6fa9b3c324 22d997a2ee077e3f48fda83c10428379 5a8adf52078b5008490ad276cd2af3a4 ccbccd9a5bfd52cbd29d1a0303294bae 6b6509e3589bc296c10c5f14d140478c b44d152534373752febad4f49b26ec52 6931000a5a1932b6a494798fa117187b a6239b94b8def78a2f7a42055c3e9340 9fa4f3e75f6bcd89b758c822519f97be 1543a5ea73b6ab10df2fa7eaa812363c 2862150fe6816499130963f0203c947 cb311c253401e27165eff2c7075317a4 33ee49115aa7125ddc37657f7fe19edb dda3a0ecc85a337a593ebeeedbff73b e3b28c9216617a638ab9d2d7b1d714 a259b6ff6a4a787b4c30acd2d55583a 4c1ac8bd57beb2a9ce59ea70152320fa e4066cefe0230cc7b2ccd937df5da28f 91e6ad8710f56cbd91d7b2865937b45c bbf1d8071651580cc79b370d801db3b7 337f25da3cdae83bc7660a81296c2300 43e3fd98669121eb826fc8d57346a2e4 5171a910435f4c949a502993c14408e4 c446a77a01eb3e59a6380f3fc7269ff cedd4ec33ee3b2de7252a102efb37f50 e1fe7e3d2dbdfda9bb5bd941c6665c21 9e0feaee4da30fe7fa038765e58dd68 3d5084d5e7654bd11cd6319703a6cb25 f36535e1853b9aa5fbb258508605d4da e6e2ed3f41a3eb951197663c308adec2 105849baff12c6fc2bf2dcc31ba1713 a8ff859fcdae8f70f2543b208c9ee8e2 bf16681e4b86db58ea07fbd08eb87bf2 ff2a456b438b0f2ba494798fa117187b 63e45aeea568f1b0c35131da26f8061a 4ba2ad7525a7da6c4daf5898cf18a390 95c9ed9cbdae00eb768c07b3cdb90be 621dab02dc0ac842e7891ff53b0e70d 8458d6939967ac1bbc7a6acbd8f058b 8fce754ab94cf3c0e07a1c4b84dfd325 b1f4e7cd4a1b24b4e086fd45e580f116 4146baad4a04882613f96345312df593 308a144f77a7aa2dda625e752fc62bb7 98546869c4ac8516febad4f49b26ec52 396ee2a2333e80815b903ba10d2ec446 5c39c2691a36d9e5a8f59bb67a917984 4ed87061082a0ecb273e86fe77f08a50 6d60b813582de6c1febad4f49b26ec52 36d43bd7a4f90e69e2ca61e91f2755b7 42f33746d7f0a8a24d3485a4d7c3a3ee eac135eb1aa4665c4b3c42e318f3affc f1d1fdca528582dca6c4f2c64bf812b4 9be24460d1f7d084b3c42e318f3affc d6d69d04e3c34465e9fa215d22832290 7a3dd8889b18cc80f51f77a6d7299806 82d25519070e3d5d6f1ad7def14e2855 11f31367f34bfea04b3c42e318f3affc 7c8dfc67f9d03d02bddaa551be7f3f7d 43131890e972bb1febad4f49b26ec52 a9a8156722fa81dcbc36ee6cb276b00a d377dbbf7b198ad474fedb3ee91ea4c1 ae36181b10bbc7c564810cc21086da42 ce424dd12ccad62575206c207a147264 fee915afe193518dc036a40816608369 a409f5a41d2acd344b3c42e318f3affc 218a7b0cfc87312925a3aaf903a41c90 accb504861a4091b894b04fea82e6039 6dc235ab4a2c7c6810edd100dffd8d85 5b693b3edfb323d0febad4f49b26ec52 33f862846366476fc79619984c97c1ff 7b76ae65480d1312538c0715f23f94d7 4180d98246089cf014038d588fd1342f d906d689ec1edccffebad4f49b26ec52 146ad9d78f06f1f0b246c4171f2c393b 164f50d574036cfb2ff0fced1c150b31 5b7b8b094a52794675543092060e57fe 144cee9408bcdc3ad062f9c4aeccfad2 e70fb6dca41fc8bdfebad4f49b26ec52 cd1086902b5eb749f51f77a6d7299806 3ffc1c26db51a3ac948a3bd895ea5ecb 24cbeedf72674d1eb615f5e15a637115 580e58ca5b0f8dcf490ad276cd2af3a4 a6ee2e98e8ae755f37af16b2893f1d4 1f28f2ccce4940f2c6fe57159221338c ea9aaecb6305da9ff51f77a6d7299806 ddf7a59004522f04c366b8589aac6975 dd572d69cfa263bfdb10cbf40397412f 137589e785a414b38a2d601af174cc3c 9a1b39f920863964b3c42e318f3affc 74369d5fdfa2356a066c1f884f0378 dc89ccf0f13d42a83abfc4d0a5688916 a4367b42274cfad1f2b7580a739cd4d5 a0a53f2f112055d496626c84a010ee5c 21140988a7602153f05a611b5fe35f32 44503d9ba877251a4b48718ea0a8b483 b403f11f5ea4a6a9d8c9ac981f1e537a a49f6cfce3d854c7dbbc9440457e303e 4a7db7357b6b6249492d9da2668ec34c 5cfec53fca53be4cc9fce74028b97ec9 13169bd2b9b02ad44089c2a25bbcbf23 6c74c7ab655d540dfebad4f49b26ec52 33d6c09be1a1a88a48fda83c10428379 21236ac9a464b22a91fa1c643766450d 369dc8240dd358bbfebad4f49b26ec52 63865747038e4c66c35131da26f8061a 26fe44345859362569e2e0d2caa039 30cc7577792d4dfa4b3c42e318f3affc 8603da907b2d1bf0a9c6c82c1fd82c5f a0bb04577e35ca2440ea7eb155c4e420 859e3eab73311f38ce59ea70152320fa eeb9c7f343677bc7167c63de52dd6bbd 2853c28f2690b0a48888e7425bc4b85 d580b1bcffceaff39f2fd5a6f642de3d 51dd0bece7876a8744fe3ba945082ada 96055e2a648903bbaf2302630d34f30e d1f68ceddaa3b0bcfebad4f49b26ec52 d644ef328d35d28ffebad4f49b26ec52 38fd2710b8fd5eceeffcc073d8ec38f6 412b9f3244a5cc56b667ca2c169528e2 306a6efdecd98ab1456cbf78e1e89022 398bc907b92b0260285dd489701ccbff d31fb17a6a6515d5febad4f49b26ec52 d0b06478f56a1306e8f8c11a24c52ebb a875e8dc1a39c769440e386b5061b2f6 1aafe6bb91e66b1a22e6294dfcaabbc8 de91f9457052646eb658faecaae06eb0 de4e483a1587da9fdb24ee630144f57f 1e71489bb315efa0eea222b336f100f0 58156edc9c54973014038d588fd1342f 96e21b275c9bd83bec7cbf3284585a40 431ed7bd770ecdcafebad4f49b26ec52 3d863a4eb22c548e9d4d5dcd2cc33826 b929ff628fee53d452f2ff843abfed75 b3b659db2b29e8201dd80053668dcec7 841cb38f7447dc698e4182295c92f949 7dedfb51ff65c27f67bb14b25f99796e 201a6507d261c9113847ce0a45864e80 1c4bfbfceb9e579c708f430fbe4ae8ff a8f10f404b317af4946789884353d9f6 b6cbabb92f1d0965de85c11d95003a6a 49e39486a1df116be3923f7359326ebf 8880686b417a054fa1e36ad603c7b9c2 afb937bd74261f5110004612ff5e29b7 5cf46a99a9dfdc07411e8b42940aba04 a05d53587e59b2ead6784d11c8f5b5 ecb362a469c76e76febad4f49b26ec52 ee5631d8abed7e69b06dae6f40c44a8 fd7aa76019f0149b6626d14151ce40bf cb71cb7b36dbcb6f826fc8d57346a2e4 9ea47bf98413280bfebad4f49b26ec52 fe63ff3ee440cbe2cbc66df5fc1969c2 8bb72bf16f65fced40ef1c8b63a628f9 fd2449fd2aa8b142febad4f49b26ec52 a409a2548e7cdac7febad4f49b26ec52 c8e37189356e5d1249655ac7c771b113 8b3b675ddd2305b98eca6e74f79ccd04 3550a44cffb1fe001acfe75c509b3399 7bc386f19f261758664b3b9b23ddfcbc e9ffbfa88c9bf2662f3a69b1a6aa6812 40337cef87a495ff6e8f2cf4a97051f 6d7972e468db59a6613f0dbd986ed6f8 9f12f8119a52b141effcc073d8ec38f6 c63d2ed731595cdd8cbb8bac2032149c 8a470e5b043a38904b3c42e318f3affc a8abbef69d380399429c5e5ac1d52cde fee8e1e0161f69b0db039d8689a74349 3dd89f170133fbd7d609055a51359428 390562a0a7c74cee19fb4103277a6b93 c7e3aa97aa279582febad4f49b26ec52 1d4e0d1e5935091f78b03575bb54dfd4 6bd1d677786634ad27118ebb1d23c10 aeff4f4375c08e8ab9c8adebb50c258c 5148f79f518a42794fb315ce917a9ec2 9ab0a81e580dc1f4f008d8a3590fb522 f39246dedaea087c397356311cbeea4 7c31c4d88c67d094b3c42e318f3affc fe48d9b6cba42ef214fa93b6acf93e82 f7b17391a903c29ef84b0be7f50940eb d71b806ed0d2108dc149927e19d9b07 ce378b91236095622155ef587b4a7084 bc0971df7f259c581d38890680ce527f 970aaae286331b9cfdef1c01cbd4ae0c 8a207daaf453777de79c8740b4fafe4 c866adf9f2d0bdd9f3598efd14e493d5 5d6a4faa40dd337826fc8d57346a2e4 64dc2fa7007421f9cf46315936cd9301 babdd63b18d73a196625bd63cef94df1 605fd6f6541ca57de56133f0e7d362b6 1fb52b6bac60286afebad4f49b26ec52 2b49c5bb1f8f8e50febad4f49b26ec52 930bf61aa004692c1834dcb2b62a80a 65dd8c9418c29ddba066c1f884f0378 a9bfb70669bd7f37757a6361b10ec08 c9e41b8e7827cd963dbb061ded33aea 1d5675c6d28fcaa0f797b840852566c8 225661a6dcd77e7dbd05ef637b36b199 67711689ee7d8dd76b4675882670d943 6971254cdae82dccfebad4f49b26ec52 b435dc75dfcee77c4b3c42e318f3affc 16ca439cd60eae5f23500a5b036df62e 6f202d8517db172a5b2e09b1c446ae22 514d64dec987c01d552ef6186e5d52ac 32464457314622264587e90e2fc67ac9 f2fbd71be2c50fd89fb1d3c5138b2800 bd3cb48163e43810f29b3e56ea45251a 2e474051a376ecace543d6ca26cbd98 51f11001548cc8c0febad4f49b26ec52 b526808fe0903b4484e132150e6e3ece ed80dfdb4a552b189d4d5dcd2cc33826 93d943320472c9fc599dcc439b161a52 dcfdd81e4410dab49f2349486c570dd4 2507270b7e344bbda494798fa117187b ca6a71e5ad6e8964ad33b69f9597739 3b15020aeaf67cd5b085db76290ca220 58738b85e8a13c14380e1a7742e001bb c6edb435655e832debe45ef6009149dd f846fb7af63a5e838eec9023c5b97e00 13d0d8dcb20c0071effcc073d8ec38f6 3cf0d27803acc8cf1290417619264ca9 e232e06ccba3e82d27039dbb84e920ce 6051f687d35c6ba577dfa90ae0b0a3ed 8ce7a3ce304220257c071b4859b99983 77f5e753014c5b69b4b4d657a4935834 90275a9eab184067e2ca61e91f2755b7 be5f2498434ecf9a4b3c42e318f3affc 602e0f167c5edf327289c00b6dc9ca 2c6dcb7184bfed32599dcc439b161a52 784093cacaf5a2fcf3598efd14e493d5 c304687f0778986c6f1e631ee7d027b9 781ef644347280bcce59ea70152320fa 6ebad671c5ccfee94c02d21d2fa4d397 82c4b96fb61723aef3598efd14e493d5 ef2d1c27124c41e06bb6bc0db07c71e8 f67714d13805df294b3c42e318f3affc 57094371244c13fbe4ee93147efa8cb1 2e12af86321da41284e6e639680867d1 59959eb5b4cd9fd15e0ae65e074d3ee1 6fae3f21375b43b24ad33b69f9597739 a731e2ceb44d59e1cbc66df5fc1969c2 89ce842fbc7c786d2d19175e7d19b7cb cf651d12e2048e1a4b3c42e318f3affc 92447fe6aa69f89fd25437aef1f56568 fa279ffe1c3d480e4b48bc115078129b e78c23ab7426227b4b3c42e318f3affc 19f52379f01878ad9517a37c9996fdf8 14016326133a68c72897bf4febc9c106 62a0f0734b9111084e78d6c405d01fac 8fc21752c5c874626b4675882670d943 4e8087f3851d85cdeedfca8b846d3b01 4f2ab57322d7a7e3df63d1c7e43c783f 771a9729f19fcac4bbc7a6acbd8f058b 36f4fa1689803b442d19175e7d19b7cb 3ac6d1680c7e0ba4fb315ce917a9ec2 1faa4c299b93a3e5593ebeeedbff73b 3f79bfdf49c2b654c397356311cbeea4 251fc26346ac1897febad4f49b26ec52 934cbc4617c6a6f4b001e9ae2ac46c17 2554d1db5fc9ebe525f8fb09254b26f9 96aa85a45fed687dbbc7a6acbd8f058b 548f0e39d6ce5adac036a40816608369 a4de0830d9a1020e3b85980206d96693 3d0aea03fdbcbcc1dad4c6b86f1850a6 f20e7f4f41f323a04b3c42e318f3affc dd85decc87fd988c524446331aa4f326 6f6a4f12041ce6d2593ebeeedbff73b 3a99bf8e2a3e5e294b3c42e318f3affc 34bbfab80042b25bc1bc03f4ef8a4411 96de367b3365416ac580fdeb5460f6d6 91839305f25521a3fa5b6212657ae4a4 a5bec86d283a19aef296d2773652c8e4 1b4cfb30e4f49edb4b3c42e318f3affc 69b501570e12c4a12c216c5e0f221195 4a463efb8baf30e42d19175e7d19b7cb 8c03e6ea484108bcfebad4f49b26ec52 e1662c8dfabda9e76eb9b08c8a74d159 1fe1411b6c8097acf008d8a3590fb522 3f1e897f2da10d808e52cc55aebae3ed 6e4fab35f29925f14f438613584cbdf7 51194e8dad49dedeb38821f893bc10f9 569c7293b52b633814038d588fd1342f 58d87762038f551bf2977dcfb5a9b56a 8243278b0b5881fd41ee82033240ca28 f756d6d576a3e238f797b840852566c8 1b25f96d97a94b05125abe33bf4f0061 2cb0f608feed6256165ce3a6b1468e1 d84ffaa12c52d6a9994626ba7fe8ddf7 5e6fe3ce7afd4490441e918a50adf356 6b569ad307bc38c06eb9b08c8a74d159 51142db12ba0b421997d55757516b24b 18f8fb3fd6222959e8f8c11a24c52ebb 7a77351c67566e4159a4e5a60d4753a ed1acc5b1cf032b94fb315ce917a9ec2 a996982326ffe668593ebeeedbff73b e16abadfd438100b65569474a61cabc5 3946ab8df54210ef1789afaa92d90146 da77fefef637adc26eb9b08c8a74d159 db01af2b84f8a9f615a72fd59f390cc3 debcadc4067158674ab1b242068f86fb c309f25d69ad12dd4733824eae5cd9ae 37fa77e9e48371545397d07b571cbcb 5a95984eaab1d85dfebad4f49b26ec52 31256698e33ac007dc149927e19d9b07 7e9f11492f1db0e5e81fe3f8835bb5ff 49d28b2dbf11e3975e4b35ff1ea95f37 5f32acd6df675a414b3c42e318f3affc 855a071aeff2351a593ebeeedbff73b 5d2c7b6f863379f1788963ea499c61d c8466c51d29e4782dc149927e19d9b07 4c92e530e76f4ee3febad4f49b26ec52 8bd993fc6a605a63ac4c87b0cf5278e7 29fb859b965bc4af691e0e3fa7867bda 849ddda40bd6540efac8371a83e130ac bfd15618fcd88e104017642dab433250 377fceb1500e6452d9651cd1d591d64d 76a9d700dcc91a5fea4a3d2e6628d0f2 cc644fad0b76a441d84c7dc40ac6d743 cd5f02ca40330f18febad4f49b26ec52 bc5a26c2915a592091a3aa674c7ec1a3 c144f9c06cae44492fdae21c212bf119 a0c9e23365a3516dd60ef9801956a8d9 1226d123e89626a2406329dad4c94770 4ac96465d859ecc647826489152a0c30 f444000ead89fbf2558ba0061239252f ffc1283c098f46cbc6ff4c4f6444568b db1ca6cab18d4084191c3762b497eca9 7598c48286a63854c02170c33e00ea64 c8663904bd8af794d9b53420a5458c53 b9a1600948000fbbba50f3b3c1c84054 8e74405f71017cd5d509fba1e6dd3b0c 317cd5686899922e19fb4103277a6b93 fb65fdcded332e4118039d66c0209ecb d98731f20d3de9c4d9b53420a5458c53 5eb193a332576b775e333fe3dd3959a5 8daffd33afca5e02ca8dac6d3025a7da 1bbc63fe00a7c3e2bbc7a6acbd8f058b 949054060a3db173d9d07e89322d9cab fefb2c5e88d7e647eaf288f952624966 e481539e23b4665e20768660cf080d12 3ddf9a51c44970fd5e4b35ff1ea95f37 12ae9aa6900536aaf24f0645d0949356 9ed01e198c9d70a5df6cfab91d65bb91 83d39faa5782395b651fb4677c188d35 325003759d3fefc7615ce01bf34878f0 58cf696abb5d3e7426415728d9c23636 c37d49d715cc4d2ec7e48270ba1490a5 1ebf04ee0e620619ea006adb8af93414 20ff83acfd590101be65001d50394fd9 dbbf72729fafaf3737f67f4322e8d3d0 76fb7ca32181075e9a547820eb170949 766d94bac9ae085455f9a00acc25f137 c55d36457611e7fb826fc8d57346a2e4 8a0ee11e68d4565d72e26fa14efa9297 337b0e3fb3c00f6e6ff454af1e8947f3 ef479941cb60405f8cbd400aa99bee96 4e7062e2c776db18dbbc9440457e303e b228fe3ec218f2b7fd609f4a869e9831 5560a425c597eacbff841fc99bb16039 5e3be8a7a61235dc2099f9e22ca45b04 f43414acdca3878674c5bf7a74b1b6df 3582dc0c828ae4b1febad4f49b26ec52 413e31ca041f65ee5b40246fea20c2e7 b1db7a545796dfedce59ea70152320fa 776e86412e7f3c6dffb78a7278f8e374 17278f64413654cffebad4f49b26ec52 bc8e9f4d4076ce4f6b4675882670d943 8ae5acfaf2b115382d19175e7d19b7cb 730dfb84b370682d9cd8353ccb52cf6 6c9beda59f24f107b001e9ae2ac46c17 23780fffcd205ae9f1ce854e012143bd 5f50ec09722ee31fbcd054bcf140e51 f85f8e6cefe5aaba4b3c42e318f3affc ebdeea981de34c1b2d19175e7d19b7cb 2ab2a7cdbd8770318f17764fa642770 ea581514b73f4707febad4f49b26ec52 3a27e270712fe178ce59ea70152320fa 5fa872fc2e0447fe75fa15ccf4d13b00 4c044b514ab3e0eb6eb9b08c8a74d159 402c270ea6fd4754d93768e7b9b1eabf f813edee6c5acaff4fb315ce917a9ec2 85bb2ac1c8896881837d598c1c392d83 e91742c726572352593ebeeedbff73b 312ee9c8bc6ecec5ce59ea70152320fa c63e1750f61af4bc4be7464481982099 23eb95ad8124b45cc27ecf743c1aa320 9f5fd43df32187739f2349486c570dd4 fcf030593c0bfac4f13ce777d031b4b2 a1b02adc96a97e176eb9b08c8a74d159 398fb143825e597b960f73850432c28a 9d117d7cc29c3ef314513156cf2b8d0d 7511cf30cf10869b4f7ad0010e5a372b b19003d682594a71d37a26a6fbb1c7f 2658567ef94749293784599b9f219d55 21b22c30f1c6ddb9952d5d6c0ee49300 e55e87415f0c23baa1845d2858b500eb 346f3d9b39930b87dbfb0f09ba9f2d99 719eb32ac85c77ac4e7bb85618505650 2b9612dac350a3d6764a784715fb668 33f47039e62a39e5febad4f49b26ec52 207e1410735bcf5a62556536221025bc a1743777bd7c796b57ae08c3105b4e6a 28e246db6ffc3497384b87f5fc9c7afe 7cf34cdf58717ef0826fc8d57346a2e4 9c18d53831315667af78305d7f7113c aebb3daec0cf81e695b2988c41a35527 75d52bdc003e828af2ae88c7a945acd 7d04346070eb5b9d19ea2628fa9897e5 e8d6ed94c67d6f43708fed31e484f9c0 e084204cf0c6a345febad4f49b26ec52 18a6381f8a0dffc876828214888cb11e 2e04a6dedc7cc5334b3c42e318f3affc 6923a7384068b631d8e0f7676099972b e0c9ef28aff6484e6eb9b08c8a74d159 523daab7896a34ed65234765b3a00e8c 6c6cd4a17f142fffc3c1d36485e9888e 4e1a956e406bb70714038d588fd1342f 5f50fabf8c2012034d4134b9987a1946 147df78321f90f20a494798fa117187b aee5c13c32775f24b1e5b4bb39b2ab9f ba8afc95c19a3d369753496ba23f2183 5e8b318948817989a33ae3b0de29197 5d3a1feb79ab7987bcedcb5f4c7257b9 fadd7d8c94893136e4b1c2efb094888b fcf30cec3180c05da5f9d52c12457194 1de06749f136ec8da066c1f884f0378 402ccbc3f5f26c095f8ca2b92d19277 f8d7dc3e169cd91d593ebeeedbff73b ebc8467a8de995924b3c42e318f3affc c8caf9f60c19157414038d588fd1342f fb2bad5e3ba66eaccbc66df5fc1969c2 8827bca86b63f748b2c9b996c5b9e81e b9ab5b0ba01f4d896ae963205db1109f 4975537eb678cd54ee8a0a0ef14611b2 3c05461b9f6330efc61d98cf72b72c17 cd47287d6da7492e64810cc21086da42 a6cd2326b2660ac9a4dc2316a7e66d36 26d165613b7baf134b3c42e318f3affc 909ea8e0e2728ced59f8e31ca87c470e 4b86c8d86e181ed8f51f77a6d7299806 4c49cab86dc3ffd2c84c076312b543ae 289e520179ed1e397282872e507d5fff 6f27ca8835f0d0b54b3c42e318f3affc e8e8f3249b237cb3450fa717654492da 1a04dcce7027357ab540cc4083acfa57 65c32eacefa3f4fe2058afcc28d23393 9ee861bebbc312d97fac4224dd2383a7 12a0c645e0bb6601ad75d368738e0b47 17770580d5c314ea268f063686455b81 6a6228e06f53e31b63c49003cfba744b c365bb7af1fd9fd490ad276cd2af3a4 961a646cb33dc785b0ed39ef5ec2add2 da964fb2d92a461f6295e8bd02084b6 d3a1db19de4e3fcf7cd71f0b7b44a907 2b7e704b07fd21febe65001d50394fd9 54215008a46fdb714386ad145fa8aba9 afdb8885328a9e1e8cbb8bac2032149c b146fb259f64cefaeb6c29873b08c02 4e925afce2f8fcedec9587880f9bd7d8 25fd91f0cc5c2e30e1c2ef56608a124e d54be63f3df4a80aafb1dd61dbf468dd 8e7d422141080fee59f8e31ca87c470e 29065562beae791be069c558a1f154b2 139b1622071f1864f7d7105e737c7740 a157ab590ef0f9b6dcdd187a6a5d68ad bade4726190d638498614b18e654375c 6ed0a767dc4c570e4cb7bc8e4c7cdd90 61ce96ea92a12f402e0ec510458499fa 1d3dcb5fe999334f83de73f58b2fc4ff 3f8523f11a622d8d6983f351200ac6a ece3f9c071f7ab04bbc7a6acbd8f058b 3a01d750779057f8febad4f49b26ec52 5b5bd4ca75b788c6ece5b3f5f7505a42 ff73fbfb9f4a273be738f481f8560d58 e3c42f99d05348c6d456f2c60deb666b f57c0d39936a324371a782a4379556c7 d8a5ba127550669d55030a5efaf6babc dd4c87420882a7e6dcfceb73ef9b6e3b bb39e48c9c10abee77f0370a839e670 3c61862eca2f0979febad4f49b26ec52 6822eea5cf7f5fc9d92d669b28d58950 c47bb0485a3aa2407252a102efb37f50 3ab95ff520d0970b6ae963205db1109f 70e3bf6b0eb99dd6cdcf4980e386b48d 575876c91251e1923d6e282938a47f9e f611f7d72fccaa4c8bfdb54347dbe48d 87ab409c03acea4af994e2a430ba61bf eafc1a44c43b48b24b3c42e318f3affc e09efbe78b2adfc322d06a647cb73a3b 6898a9ca21823570a888124bc30aa1c7 385990d0223c92b5f3598efd14e493d5 ae69ea12f45b428a327289c00b6dc9ca 7d8fde70f5c3f351567232766992241d cc20bb3596fd3c2e677ea8589de8c796 a17c259d1af349dd45c21ae2e309d69f bb529f670d4cb04160d8f573d6badb2c 37e4e81fda1f2c923a2face9eb30ef55 b6384ee46eec7bd5df8d3317f6046bb8 f17b64b1f764ba323bddec837aa40d6 55432fbc7604292ed9993d66b5a0e2be 5f1a2fef69c5c0ce19fb4103277a6b93 19192524e6ae1e85cdca798c54fdf54a fcbff3584d926ea3f13ce777d031b4b2 d3c5ce89b20dafcc57ae08c3105b4e6a 9d0dd1f2ebfcf0a4cbaaa37255ec05aa 3535ee6f6b070f07a1989a802607e7f3 9428c331f2230e33a066c1f884f0378 5a7b6de19865d1332c8896155b09445c 6bb62bdd954cfa07e30cb284f2e8e5bf e93e9beb358d9fb8c397356311cbeea4 3140b8db45212ea0d9b53420a5458c53 26b0765b08c86fed52db1d2b4104f173 82b6391291239d90febad4f49b26ec52 9a88dcf980a527cb4b3c42e318f3affc 5a419dd9295d84c538ae0e23b03ac623 103b76b2594a1582eaf14273fa406ffc 13568cb7d4bb7d90c274f5fac65789d8 2f87e4958b3c1d80b5da5256e41fa569 187386c46e9fb3a44b3c42e318f3affc 681f7af0ffc7e220db6d2ff65cc5b310 eb568f8bbfee977c6b4fe272da0db543 d7a7bb6725ac5248febad4f49b26ec52 5e118f0edd514706593ebeeedbff73b 588556b08760e93b928c76b41dda6e10 24f03d70f686533d7583d8e3d877fffd 5599465b099deb5064810cc21086da42 5d382ebe0f2ab55efefccbce7fd86667 a7b07dd40ee6af36747bd07ee1e3f697 8d69121ec9f174cb4db79ead79f57b22 dfcc3ebaa7e5ff1720768660cf080d12 3c08ae3ae78253bb73800789ccff9705 5bd1a7825fd8c16c6eb9b08c8a74d159 5eb9da1ae0ae618f1190e285a2cbc9c 4dd014b6e5a87cf462158b7ee658e910 40f968fe1a3442acfebad4f49b26ec52 a4fd0a514cabe8c34fb315ce917a9ec2 3b7f2867c3d56290267536df1b0cc6 fd1ca30eda9a2163e2ca61e91f2755b7 d66ab7a970a3344e34e89adf02e34b7a 22da5fee0352cf194b3c42e318f3affc 349402b08cc7e5e9492d9da2668ec34c a6d807661eec51a8c0b437e347e8066 7e1321155d43dc8bfff16555386d173d 458bfa76a934921f4494e96d71433541 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04256520_train.lst ================================================ fbe08af112773184e6fe3612af521500 8180afee86f2075519fb4103277a6b93 ad023095f1868d3019fb4103277a6b93 dfda3c467eb6066fe6fe3612af521500 98f2d21c4dcac477f7628281ecb18112 b67232c18d00fca7593ebeeedbff73b aa7489c9c7cd0c1dc3a1be62b60323a7 fcff900ce37820983f7e27638e63d848 af28dbdce6ed8cea19fb4103277a6b93 38fed916a35dd43d7c8c503b4b873379 33ab50198c84645ef91663a74ccd2338 8a1a39223639f16e833c6c72c4b62a4d 2d1ebd7356968c0919fb4103277a6b93 834fe65aac9ea9bce589b08489d157d d851b8a016cf114c742f75bc7df727ae f2e7ed2b973570f1a54b9afa882a89ed effb1b260f100f5919fb4103277a6b93 a1dbdff3da83425f3eec26c23f5bc80b cacb9133bc0ef01f7628281ecb18112 8731945435676805aa29e9f0529e8ef7 1e678fabd0622a1119fb4103277a6b93 37cbc18323826bfb19fb4103277a6b93 c73d63f9080e84a91b17743c18fb63dc e76457b55a3c041cfe49db72b6ffb2c9 216821d05f00b1ccc3bd24f986301745 ef5eb51bbb7141c119fb4103277a6b93 3319a9b24416ecea7ff6ace05b36a5 e9821fb7af7db92b26f6c8b5b75f0ee9 e491dc151c8e801186abe5555a3b447d 359b6d3d29b08dfe19fb4103277a6b93 8affea22019b77a1f1783a44a88d6274 41aa5dba48b7a3f683257865d0a50551 308f0ebcbcdad58119fb4103277a6b93 e80ade8966a54fe419fb4103277a6b93 73379ebbbac81af13ee8e30b29f70dfc b0fdc43b0b4e990719abd93be2967664 3a44efd1fd14ea66dfa4ff010b8b9d1c a6054a189eb45e30672e57a20276f6e9 a89e0f5b5a8157afb0aea9d5db2857a9 f4391a20638d415e76e9713f57a5fcb6 de82cd275086d50e41b160b9adc112fd d9c184cf0d80efa6150855094a28ed1d 9ef9ea0de3fe64d4e7e684d25d4dcaf0 281330718b2988624b3c42e318f3affc 4e05ca172c988b72dc1f6c4cdb4bb9b3 f5960ae57bf84fe77b79156a61ad4c01 16bb3ec52397cdf9cf01bc59d215f0 3e499689bae22f3ab89ca298cd9a646 47dfe5f98cc9075850336112dffe8551 1f6dce83e8d582e9efc579970fcfc006 d9bb77735ff0963ae7e684d25d4dcaf0 b5655dbb1a19b94c14038d588fd1342f 1c78365aa05c3d2d64614cce5789ae5c a8df97262f1f0a44e4975e87c20ce53 41b02faaceadb39560fcec8f64d76ffb 9d54e00d9428c07e76e9713f57a5fcb6 aed821e5939f74a461bf0ba277ea473b c81cf82daa56a165271513b292108db 3aebadcd37bd3edd8f5ae2c97614087a 9e4cbc2bb68878b57984fb9ec7e40829 9ec5fcbfe43af15b851a116903680096 1896f141f12a0df135836c728d324152 4f2c9a0709eb8cb9202316dd49948ea2 199f330c7a4880b84b3c42e318f3affc 7cfbeb2c5af830a26a97150bb2a72733 3610635cf623f3f8917b96045c9b6dea d3db0f5bf70b9e32f7823f022ac104a2 f43b6b571d66991f95ca4adb70946a21 67708b6fc3e76563ca691253f597ebb8 250f7b0081d2be215cd6dcd866c8e6a9 4fa4da6b966578cbe78a749ef6aadd72 c9ebc7c6abcc9432560dcae81449eed0 b4c1dafcdd5cfe67d070a4f9796238 82a13477581d96a1fd3e75cecd4d5ab7 adc4a9767d1c7bae8522c33a9d3f5757 465e28e9cee51df8d5cb6d178687b980 b3d216ad7575478d202316dd49948ea2 81018f492277b7649f13e3294f6a3574 a73fc5b447cab6493ca57f5648ff1b0d 8769b3281dd41c771b17743c18fb63dc 69f6a6087f0da861af8fee88d245152b aa41f9c1ea3647ef5dc3653f8341633a bfd337ddffdd91b4190a91fd9a6f7d55 735122a1019fd6529dac46bde4c69ef2 9f1de8e71c8a85f23087f84b199fd297 e3610bdf0eb38f6b4b8710a3469971b1 7461a53eae4126a79fcf47c4eee9d700 c04dff28e5b5a2e5c283ca2c9df7372d 65ec93f47687b6b4926f354063916d1d 68a1f95fed336299f51f77a6d7299806 b7cd67499b36cf60417a8f1d2c94eaf6 7ca57c98a3557774f251828d7c328331 23cb1d667213c3a7e897e87345fc323b 89e00bb2b82e9e86c036a40816608369 793aeb3e33325c491f4fac9ac5e71796 63338a227246399141fba545b7232cfd a841d5d39c5ddbc28ec45320afaa5d0a 9c3b2d053adaca577b50cd55c08e6bb6 e40e193e6468db644b3c42e318f3affc 210076a2e26d5d53adc3470b30138f3 bff79b49732569307ea323bc74055b8 95d394154dc98f0ddbe9c90af547c85d f55beebe7409e84c873aec32fa476d61 cd249bd432c4bc75b82cf928f6ed5338 20b12dcbb70869c06b5c5023b0ce157e c9c0132c09ca16e8599dcc439b161a52 2dd491294a34ed7eff98db9ea1554f19 d72e78905c4d975f4f650cd6cdc94858 ca81512a7d7934d0b8e42b2c59ee19ec b797650c894719b99fd71c29e8052396 e49c0df0a42bdbecc4b4c7225ff8487e 58d4563bd1114e6a76e9713f57a5fcb6 d01ce0f02e25fc2b42e1bb4fe264125f 43507f90235fd3214038d588fd1342f 39a79339b49d7cfbc16a7f7cb5642902 cbccbd019a3029c661bfbba8a5defb02 2c1ecb41c0f0d2cd07c7bf20dae278a d20c3649494f2aac14bac2ebb8f636e5 e66f4bd6f5075d1755f9a00acc25f137 c6329e1d12285ed761fdb06bea79b81 f27962a9ea7a87a87140e995552e7616 96425edfd54c925457bd9a2a12d86bbc 3aa613c06675d2a4dd94d3cfe79da065 4ebbe3f30aa1f5eb14038d588fd1342f 695b90883d398e5b15cdaecfa8164583 1bb6224360321002b8bd10c3418cc648 dc62af0b1d8af2c676e9713f57a5fcb6 a0baf84e4bde88691912372ddaeb001 3a72dc930392152e27787a85c3bfabc6 986f6fb4a7e513614e4975e87c20ce53 8920c0e0737409e29f2349486c570dd4 71fd7103997614db490ad276cd2af3a4 fbb0d2c65c3a26a6490ad276cd2af3a4 f92dd3f4d0b4475514038d588fd1342f e4ca81487385c5f490ad276cd2af3a4 27c82d27a4d38e6f41b160b9adc112fd a11d94a5675bc703265c64fa53bf2c02 8426b07a7f599d011a3b39b07e4b3d0f 84ab3d4610acab1adb352b8394e172c8 5b06dcaf32f92e7eb3878cedd8c8fe6c 2f0f7c2f9e3b04a8f251828d7c328331 8ed3fa69c808741a42e1bb4fe264125f fd56410fc541a09a749add7c3dfb27c1 1670f9ce4de8a548d08f8c5dee475682 f20e7a860fca9179d57c8a5f8e280cfb d053e745b565fa391c1b3b2ed8d13bf8 c293fb5d58a88ce85b903ba10d2ec446 9d6ac979ebf86ea9f37af16b2893f1d4 7c299b1e1374a538e78a749ef6aadd72 1575354ba1faad67490ad276cd2af3a4 4f2fc9895ecc6a858032f428909bd170 47fbf101a830769fd1dcc55e36186e4e 79fba03fadd8c00ef10b04ee8b1c6914 536cae63d37ef32265ba78ad9601cf1b fae52eb61560b246f8555ec936cd4b63 e541933c90eec36182db9fca4b68095 ccb08f869edde5e6d8adf1ca87495d41 b3fbac6ffe8e00622f6acf89a420ef0c 4ed802a4aa4b8a86b161f36d4e309050 4271d43fd97a7baa591cc7aab9026e54 fe56059777b240bb833c6c72c4b62a4d 9625852787b360bf20900f5b6ea8b024 7cc630a72eca68c0457ba044c28858b1 1e4a7cb88d31716cc9c93fe51d670e21 f6d695e08f246d4ef5b0cb6df351ab49 f5d7f60d4b33ea4f63d977b06bbd429d 8b8152865839a79719fb4103277a6b93 3af5eddf5022015788dcbe86402c7c15 1037fd31d12178d396f164a988ef37cc 13b9cc6c187edb98afd316e82119b42 ff2dbafa8d66856419fb4103277a6b93 ace76562ee9d7c3a913c66b05d18ae8 3fd28462dda59ee49ecd5a75a29f0715 5af36cc3a98642019fb4103277a6b93 d562328792a3314519fb4103277a6b93 6645c2afd5af2cd2610c2a68437007d6 fa877c7d428253515e4b35ff1ea95f37 44854046021846f219fb4103277a6b93 ef185107fb8d70ced06d60299de4d22 acf23f78322f00f219fb4103277a6b93 e3992b75b446fb5af7c7ad2549a1b15 f114b76d551b5e5affcd08faf4fccd0f 7ab86358957e386d76de5cade2fd5247 f76d50f900b034af19fb4103277a6b93 ca8c140ca26c4d6cc9b96a88ab877904 79df431936df0a0719fb4103277a6b93 c837f4472115496cc93e5ef112648b04 be5def882071141c1a8781c24b79ae57 42ebf2d478ab8af85ac3e286c38c6d66 356ee11c9803f1d2fa6df2d54fa43ce c00d5c9b043b600019fb4103277a6b93 ecad0dfdf6338cbd457ba044c28858b1 1512e3c41de7a461e10a48f2bbb9bef4 572da8680677fe8937b2bb75885cfc44 f16d8f18e03669308f00a5ba54aa8088 f50d32a6083c8f146dab7044457400e6 77a56bf8ea88336019fb4103277a6b93 48834ca61f0b759583e21877a4e60599 b6e744f896a202c119fb4103277a6b93 8173fe7964a2a06319fb4103277a6b93 837ba605a4ab4a4f19fb4103277a6b93 17c61068a15115a87c2f226180343d2e 5105549b9de890319fb4103277a6b93 13990109140043c919fb4103277a6b93 e8f21fec8246fd5a8bbe798b99a6a988 2639242e8f06f93919fb4103277a6b93 d08fc6f10d07dfd8c05575120a46cd3b 1b8894ce5f53e0007143b902ce4e435d cbc445c307221601433b4c9b207205a9 e08354a352fd0d6914a163d2b227b320 388aebe52bbe88757143b902ce4e435d 95829021770f25fe15afaa91253fa857 588f01ccac8746e1122e20a0279089a2 ce049a259cc2e624d5446ca68a7e06a3 82f8c687a9cf7dcd5dc3653f8341633a 262b2e2a13c8099d60f888b4e2fd3e4 74490c45305da48a2b3e9b6eb52d35df e0591c0d35f82023610c2a68437007d6 640aadadf4fcba8355f9a00acc25f137 107637b6bdf8129d4904d89e9169817b 2a8554af80cfa5e719fb4103277a6b93 f3a24b3131da1ce619fb4103277a6b93 b351e06f5826444c19fb4103277a6b93 fa0eb1bb05ebe3f2dd3adf3090c701f7 5f145696aaef1e6f342398ca9dc32672 8c69c0bafdf91e85c05575120a46cd3b f98615e51a596fc5c05575120a46cd3b 9001c9558ffe9b5651b8631af720684f f4370eb6449a1e8e191682d3b3321017 6a2f4e3429093be819fb4103277a6b93 ceb04c53d8aae1319fb4103277a6b93 65711cb0e57123e037b2bb75885cfc44 83ce58add39dd471d314007fddce52b0 a9da19aecc65656019fb4103277a6b93 1d878962087fbab2350c104b3ba8ddb 7e7c1aca9d7ce7f2f7628281ecb18112 f2446f65ba438c2119fb4103277a6b93 ad274aa281d74c7d78e2b63e72b94e04 1b0432fd7b56f7e219fb4103277a6b93 d9ae4cecb8203838f652f706160dc96d 10e0543e6e316dca30b07c64830a47f3 1878633a36518ffc19fb4103277a6b93 73111c5505d7b5eae3db80a3cacc6e3 d321d0c149d7762acc8bd7a04c9659f1 dfb54a98465dffeffcd08faf4fccd0f 93bd851dc5bb3527d437a7a1ae2552ff 49d6f351e82d186b366971e8a2cdf120 499edbd7de3e7423bb865c00ef25280 a76a2d34a1aca99611e76965808086c8 8f23005418fee71819fb4103277a6b93 cd10e95d1501ed6719fb4103277a6b93 8aa7651cbe3651d64af957103f4767ac 7577bddda1f3b6de73a5c8eabcf6c479 94728591e785c00278fe949fc1419876 e9d6a366a92a61d979c851829c339535 f736f06f8fd04e1119fb4103277a6b93 455fad12d4170e398d36ea78699efab5 8568498cce4c2441ebc1a7ae7c4c250d ee63182f95899a7419fb4103277a6b93 93b421c66ff4529f37b2bb75885cfc44 92be674b2edb7f54d18c447b567dbc27 4307657b2731fd392c37553db37ec752 104256e5bb73b0b719fb4103277a6b93 42e06113efdedd0fbc19762eaa7ba40f 99ca3d9ee631247f36d8dd30a594b2af 28b9e6b16443e183fcc04d1259a0af57 1667fb24efa940b9527e7f2c027f7469 c1b8d982d97e337f19fb4103277a6b93 bbd385cb3ee28279e3cb1f46427ab37a 9cddb828b936db93c341afa383659322 e4e0f428fcaa01bd19fb4103277a6b93 2ccd286e8d5963199201f2703b45dd7 c5380b779c689a919201f2703b45dd7 1aaee46102b4bab3998b2b87439f61bf a6cfaf6913d9559b7e66b3e5c11f24d4 9adffacedef7ae4219fb4103277a6b93 d4dddfd40635a72f1cda25fa42fa5ece b24e1117e49c75f817b431cae0dd70ed baa8760ca5fbbc4840b559ef47048b86 470dd8c92aa1b9ba593ebeeedbff73b 638c8ca3dc94b152f6d79b8d34aa426a a5274620fb2ba9a23862dad076579451 7b3bab9058f7de33fab6e40cce6926d7 6f0f6571f173bd90f9883d2fd957d60f 4742de1edfb9462a60fd51b2fec8dcce 75214586f291a04fd45611d32fd7733d 3bde46b6d6fb84976193d9e76bb15876 a680830f8b76c1bbe929777b2f481029 99ec7e5d04f32409d45611d32fd7733d a930d381392ff51140b559ef47048b86 683384e0e6eb5d4e81f667e2a25e0619 c5e55f00566f0da2ec012e3517533bb1 af9d9a0ffad9c2dc8a243182cace7dbe 5aed18ebaa1360229d51a07a5989d077 3aba6ceca44f747b29a72cc7a32af9e5 f76d1470e843601f14c803eab703899 d9fde31ef5c2f3ed17b431cae0dd70ed b4043ab6723a39f1406316a80ad8bed9 944842d74aad4e2617b431cae0dd70ed fa563ce2209de1961f98c0761af40e04 1ea101b73352ccd9822a33e080d0e71c bb31bd378273e437f4b35f4029eb1ecf aa27de991298fb2eb3a010e5a9dcf3a8 305d64b9fec0015b62a510b8f97c658e bf816001f25b2ff822e11aea23332c0 241bf145fb2d14e67ec0186a79b9da3b a5d1e07789845c85a5aa2898f4de80a0 90506850596aaa99891fca5db446d193 a86bf379ca2ba8d8f2d5a0d235580548 426d75ae016abffbdfa8261e130bcc9c d4aabbe3527c84f670793cd603073927 e42f4a13086f847be55735bbf02fe10b c3e86ca4f6ca077459d0a47cd36512 37113588c2d2566b4cf08511890c3458 9e0b01fab5d15b768695754f4338760f 9dbd663d977c64d1b982b1d54ee6ac1d dd7dc4e40e7d015c19fb4103277a6b93 930873705bff9098e6e46d06d31ee634 c529a567cf7e69e2c16bd6fd1b8c7eae 660cad84e71a5f67a74931688d634d2 c0d3ed00259b4d9da326264e704c832e e3ce79fd03b7a78d98661b9abac3e1f9 626104245de40df863860d683ccd0da 9808424960998ae93d4d11ac89066d36 40a6ac0c94ae686e8dd711af5650bdcf 21c071912ffe86fdf564f8e3eeb8449e e9017aa5115303957be8ee92c39a9d4b 741dd57baaea906cb0449d422c1e5657 252be483777007c22e7955415f58545 4f6ba19d62789d90d71c0b5c63bf171 f0a02b63e1c84a3fbf7df791578d3fb5 a995c3e90cc656e0c81bdfff91c7f69 b913574ffbe7400ce8417aef1b7a422 5850eba97de66d8e283b00891f680579 b1b2195e45bf0495593ebeeedbff73b c1950e8c9869a7aa8dd711af5650bdcf 6e3771d48b3982d0eca22c501ad0a77a 7c4bf66c71ca90b5c2c449c0c0579ec3 fb1bcd50b847a99d7948cb8e1d9ee487 438c3671222b3e6c800d7b7d07715065 81180dfb3874d4c76dc992d5c5e6b2e0 7f6c75c2d820337b69867582939a3cf7 2477014dfd55144ded526a7be77b30e 163af537cd485a75e73748f506e4b955 e32a5fdbb75ed879568af879e5634175 317850f9c80cafb561bfbba8a5defb02 1746d1c62d9efc742665e2e07399c56f b090f9315fc9e0cf9936c7914e42d921 ff35b2519455b6577b76a7024ccebf5 53eaace9bb8bb34ab4fa97f642d1a681 54506969a60017ac8f0a57a8b9390a 7f0d93163b0db7a71ebf17f9e9667427 e3d3c8dfcb19d920cc3e9831f31c9164 7db3c05e67e9b847393b0262b4e8b707 71e0e0315d718004e7c7920f6a65a54d 5c54937316aaac98c563fcc2752ece39 cd280bd68e1ce7f266260c2464355988 253ca4f655355b6f8bc1f8036e08e44 9473a8f3e2182d90d810b14a81e12eca bc2c0cf666122cc68f5c37fe197319e1 c57bac39e7c4e151c8a0fe52b1df3602 470bc951c8b9bb5b4ea6967a5607d572 f398deceae25a0e752ac884aea4686b 5149af0adc1f4a6aa45aa09d68b87656 964887dfda95963fb0957d845ac33749 3b7c1e67ee312cfe1bb088904f7cb154 f8998de3b4d36dea4b3c42e318f3affc a97a1e97d08a236a68d1b9a1d97e2846 487635f7daf9ff48b3bd1e430b6587 9eaaf854334b3bca676de9b6e111da8b 8e61d151220b5397970d4dd67731c543 fdc419e377f15e728101accd22c701b9 83d48b9accecd4bae7200b78e3310827 227a9255c15c267aa5c25aecef10278f 470dd418057f9946a30f938496151204 3ac827b804fee818b0b88207ef0f5bc6 6660af5568f1fcea324a6d32f13e7cb6 aef8e3f17370fc8ecc98452c8fce6b43 6bbbddc84bc4d3a68eb3bc6c6d15f9bf 7a379a92b40f0efb3920d120afd003e0 fce0ca2464802f5ab0474c2e080078f5 494fe53da65650b8c358765b76c296 3c30c45a5ba3b535f564f8e3eeb8449e 20222a2bd14ea9609e489c1cf724666f f1c533e2cba193631b02cde7e81f0fc3 294dbaa0e9afde3a35836c728d324152 125ace480d9f2fd5369e32fb818f337 35bbb0da45fbb2d93eec26c23f5bc80b 742d1d33eb66d91014c0ce0d45458397 5a94cc0c277f391df9aec59741c69cf7 3b34c3ac871a2d40593ebeeedbff73b 2c7d2bb93b49197cded06cbcf08b2fff 81afa90f6229e7b456cbf78e1e89022 34e10b72cfc4f36ad8e004adc6acd545 72045d74edb0547581a172d69c52a28a 7051b028c8c1facfced9bf2a92246703 c23747cbba5d5f9edbb047330001d95 241a341105cf3dfe593ebeeedbff73b 40df73dfda0e26ce442b5d6d90d0cc78 7961d0f612add0cee08bb071746122b9 19b9fb3d3763cd1e4c4a4dca0a101f1c 3fcb0aaa346bd46f11e76965808086c8 ec77376330a7975214e726c15c7dc200 1685b0cf2d1a2849d0a2ef258a9c71d6 fd33f7d4b8fcaef5d39e33fed94f56ef a3c1bd440f319a39dd7092ed47061a36 7d4d8e65979c28c1f8d4231017d95f74 cfa5feb7486f88ee1b8fe07f15de05f7 9e0071fda87df6892e73d126bf16e692 f9f8f089be14d5b672b33dfe598bdd77 836d2a7bc26d1b75ec195f2cc52f3287 48a44ed3050ad12dd5b24cafb84903c7 642aba784c86bb67fff16555386d173d 8190efdd2054a0d9f51945de050323d3 bb4441db7c68a4cec7c8ce3bef5c2aa9 59c32d74e6de63643d41bddf307a46a8 64800f14a795d8759055f83d11955109 6017c8c817937296e1df71e82caa58ae bf504bde782c3f2ce8ced3508709e1db fce0bff765d0c49777ccdc3441fdc624 51e5da3e9f55c77ec15dc8fdbaa55abe c955e564c9a73650f78bdf37d618e97e 7d4113d5cbf4ba376efe57da6d3d385e 7517e2a0c921b89d593ebeeedbff73b 8331de0bbd3b0e19db8fa1712f9ee93 328873bf304530b01b17743c18fb63dc b675ac4b668ace54bdcf8e3531f470bb fb0c0e7d7094b64c8e5f5b49c9f5b3f2 94988ca3a0f73d16cabc196a7f35f1aa ae2c9a06d9f7076532388c13cc4a0ba3 c4b2bd128c424f361b02cde7e81f0fc3 3dee5f41a11a1fdbdc83753cd31caa42 f178d79c569c05d47edb0bede88c064d 61d93b7c3e83541c81dff5c2e57ad46e 12cae0fa5180fce64b7366b9d17acf07 9875190ff87d3eb6a510987e3d5db7c5 bdbdc31c4ba48868bd91edd7a65c1323 7d71922494b8788ce10ddc5f810dd417 dbe7ab8fbc9429c2cf40e78cb31675ae 6d31bf9cfaa63bd1455785c13440f50e 1a4a8592046253ab5ff61a3a2a0e2484 75b57fc1eb40d27114e19520b26970dc 7606f7f0a8d6434f4b3c42e318f3affc 3681d113ea4b98546609f3f8aaad34cd efddbcc9852c0584e235eb1ec8984f53 d0ce2d65a1f3f7f0942fb082e747f0bc 8952146d844d41f78dd7a714af22f7ca 526b961864b9cb0ca81116f5456ee312 6905206d5f2ac04bd9e0690b0b191 45ff5f465a6a907488e82c4bb71ec6f6 5b702274926a8c433be1d0c32f5added cf47942a67cae94eab49dceef0d15b99 7e2fb2fd4c604bb1ef6c510e24348d3b fef42356f1acb01b593ebeeedbff73b 9500ae0f745fc9efe5b815c86e529aab cba1446e98640f603ffc853fc4b95a17 2ae32451bd6b947e593ebeeedbff73b 1ee15a07c2845ab1b9f43426f477bd71 f125875fefd6a02af487e71bd57b6e0c 58663919dae316f31ea2c93416c12215 234ba0e3cdec0c306512b7b24f3d84 7173c0462d9ee2a344949d7685cb63ea 336ac1316e0d5cb7e6fe3612af521500 1210afeba868a87bf91f8f6988914003 66d4f7c3c9018c9c4d3ac4ef5709159c 46c6d2fb8c92cba419fb4103277a6b93 aa2e8a77de22165ffe369f4f96683f52 9b3c9023e8c570d5b307b2a73ae3e74b 556166f38429cdfe29bdd38dd4a1a461 80d13b57aa31f79cef188758bf2e3a30 d9d61f08002dfae421cfc6e95839d798 fdcf1197a5bdcfc1ab610b0c94236463 a17ba222a54865cdcbde89e0c48a01bf a39fcabef17deeaf593ebeeedbff73b 2ebb84f64f8f0f565db77ed1f5c8b93 df2fd8e97036e287dce02b254c09566e ff51b4ea697e7bd2a59fc0a73ebddd23 63eeb7ea2c7683b3f811db9eaa01354f d8751c7d4156c98ef09df371fae9d63d af796bbeb2990931a1ce49849c98d31c f94cef3a1dabeefeb26131b3eacda7f2 9e9707ea4d5c5968a283d3d51bc54a1 167088246175f31c593ebeeedbff73b b251364a878eb5fca192483aa282f8e5 4fa6c9c06efa1fe14156f0e87c6858f1 267dcf5952e84873fad6a32f56e259a2 fdb3ab843f2a244eb9b4a0bf4166f120 901eff0fb9cf6e0646a3128b588876cf 47c45ac7187a9674421b433358248213 deb7ac5670e9bb27af8808fbf39db46b 7b2ee63737854db3bd16d4490a10a752 207c81a9bbdccbb8e8058cf23f6382c1 a4b1c819d9b606473decfe0ce0584f 39f5e0c179377860d3eab83c82350281 e8dfcea40c6cee9b990561fc34164364 3d95d6237ea6db97afa2904116693357 660df170c4337cda35836c728d324152 a25fbfb1c72811d86e4d44229ea605db 1b5bd45428de094f593ebeeedbff73b fc7b96235eef479075becd8a4c3f1866 e5f51c7ccf8ec35d2f134420f7b0d7e6 8ead2b6ac2726710707cdefe012d0353 4756416d882c569b7acade7eda5e06dd 509a533e17fa45572814c9aa90ee14e f8519e593fdb348ab3d135d7fc8306a1 31b21dc34d770ce8dca17035ebddd61e ecf29f5698798a74104d78b9947ee8 67626389926740a08de89023dfc7cadd 839807049a0c29a6ea693790a1608aab 27be61a3c437d7a0eaf288f952624966 899f5c18a528aac2ef0b2fc3511b6fbd 8159bdc913cd8a23debd258f4352e626 5d15e6c23f233a13ce60514f9a637ce 44d172b5cd523df141b965cb8ba50814 f986646cfa075237c02170c33e00ea64 7b57ecf4b5e9617d6282231ccf88d909 264d40f99914b97e577df49fb73cc67c b2ce2532f540cbde67b426838fce979f cc5f1f064a1ba342cbdb36da0ec8fda6 d0b33818a29689a8ab5d9b3550c46460 a126dacc76977e063755f577b497208 8ffc9da1ad2dffb3200d50e893131ba e8aa02effc458838f2098a9f7fc86999 27f0c4cde547763ab8a40f9116438027 c05c058169a31a19b149830119040db5 1050790962944624febad4f49b26ec52 d8a60e70bde76669e484a3178a372c3 6c3b3c37c20bf2fbb40f0ac0fb9a650d 683fbc39025b9b75e71d6290824c2748 fb12015e8f705d901f8d8332ee17945a 6c26b5608557f3e8bb41d1ff31a800de a3eef12c108186997b9a616d4541ada8 7b9d9c738c6042ad1c2c02171f63f02f 70be13428e2a6eb1a789fd2e20dfbbd 4353b992d238cff0cda85f6a3e19b0a1 eaff5688bb49f845ba41eea807f5d3c 735578d3cfa39279d098b24937823a09 be19ff23b9cf375d6ee717407316be0 f693bb3178c80d7f1783a44a88d6274 53ce13a6f6a1a5f9f15e23b99997e42b b86d536860cdcf4ce7321f25048c6142 c6fbb991bf184331847d00e95a10eacc aeff3da4a02a22b07b0278d6b5ba1920 d13a2ccdbb7740ea83a0857b7b9398b1 66ea6f8add81adc848fda83c10428379 3e3ad2629c9ab938c2eaaa1f79e71ec 461772d07ff458d7470846ec41d04ed8 df912366bccfcc0258db0ef36af1d3c5 c69ce34e38f6218b2f809039658ca52 d3a8b906f6909b0252899f0b4e8d8ae4 4fcaa3e642e153f3450621b513a975bb 85bb20bc97b61c17261770c74651d29a 2780834da1be89d1f51f77a6d7299806 fe29b89c392e1bb39a2d92ec05f8de08 d255253a4af43b4d4cb1d8db6be39c65 e471ff9cacad70d391fa1c643766450d 6aef3ffcf683005263cc440c7caf3d76 63d67bb924a00203fff16555386d173d 69257080fd87015369fb37a80cd44134 e1a653600512eaccc862eec8232fff1e cc906e84c1a985fe80db6871fa4b6f35 5c66c3e86a131bb969c8f7b0ff61e3de 55f6500b52310f26352ecf815a233abb a6e9d5735c36b80ef4a06efdbafdd7ea ef99fe2058dbf199a2ebd6ecc07363e1 db19747e2c5b126148cd16ceeddb841 8bf3680dded4772ff51fa0238791f5dc 709f1d6837ed560bb12cf25c409aac26 244499318ac9251c3bec56bff764ba78 9f575d367e59591128fff7ee99dcfdf8 e86d2ddb1e38d2e082db9fca4b68095 1fd45c57ab27cb6cea65c47b660136e7 b672f2487b04c2e72a7455a9948f4f3c 5f531e379365040936a36f8fd7d27134 c136abd9c245ed8819c798cfc4624378 28f2563c5e757b1c1b7dbdf53d301715 1a78f3397910037885f6153ed2033a1c e03147a11bd7c10e3d23022ce06f940d 9aef63feacf65dd9cc3e9831f31c9164 a1262399c6c0ac93e84291b9d249a95b fe3d9267a166c57fee7d178666aae23d b2aaf37365cd30776b9a660069df73df ed394e35b999f69edb039d8689a74349 213484c5675cc80b4719088c8e42c6ab 45963319edb54bc0dcb4d348d782a96f c75ade3248fb4f2f8962005ce0e986db 9b88f0839b22b33022fea5173e5c6318 11f47772cbe2a2d0a5f9d52c12457194 6d41a09cc94d2505a82acb2f2fa57398 42b297f23638f17e27813b202e608c61 75071b6962f431175becd8a4c3f1866 e7eb561c782fd92163d467b618e97922 5f5c4e66f07fc2695c0be177939e290 d8fa31c19a952efb293968bf1f72ae90 823219c03b02a423c1a85f2b9754d96f 71783c8431b28220593ebeeedbff73b 615ebac351d7e8356051d49e4b21b83c e37b46236accac968cbb8bac2032149c 1476ee6116538beb1d0e6f3a33226a84 4ec9d99e4094a2bd91659e904513cf6c c5f48faf560bbcb3debd3ac8a0c825d6 d5aefefca08da17819fb4103277a6b93 306679647d906c39bbc7a6acbd8f058b 5d27c5cc1395586c66eb0dcc2b2e2221 9d1e8c37315e292f31a50841704a69bf 52f6fbe3a36a4d1f19fb4103277a6b93 bc6a3fa659dd7ec0c62ac18334863d36 9695e057d7a4e992f2b67ae827b02632 273e8e15b6740e5932a526e2e9a7e9ae f97cb4e2aed44b05593ebeeedbff73b e014e3cecb1bc2b949a3c1009fa79820 272594b65264b90192fe219f5eb82836 e9e54de1814ccae5bbb6a513934583ce d0bdb5de2ae0de1adfa4ff010b8b9d1c 9c0c2110a58e15febc48810968735439 9b94f7822f3d73e84b509f4ddcfa8ca1 124bead2c137a6d1f652f706160dc96d 6caa1713e795c8a2f0478431b5ad57db 52d307203aefd6bf366971e8a2cdf120 dd36ab979c4ff93038dc42f802aebe31 927967e761c52c11eaf288f952624966 ab2f0f582e3fa5b1780c9f3df5b1ce52 b4c5addeacfce8242165c54dcecaacb4 c59ef7c56b4d184f9cd431573238602d c2d26d8c8d5917d443ba2b548bab2839 ea06841d7501d07436b31862e09495f2 1aa509f3d8c1d1e46bc58b7f28700afd fa46769b0817a8744f52551bb6d0494 e29fbd1feb9659dc843ead12644a79bb 70a16608ffc4988a81ff2b419139512d fdca3e183b3d1eca45e6e5503635ab1 340daf71c78f53ac593ebeeedbff73b 6f22991fc456e7a5f63bf7d908efc575 c70310da520e0499c2c449c0c0579ec3 630d612af74628053b28ebac0b25d03d 8aeec0b2dc06c3df9274d508495753d2 ebb29b67c390a28ae7c7920f6a65a54d cc7b690e4d86b471397aad305ec14786 ed1aee9100f58e26b9b072e1f62798f5 7fde281d5d2cf5bcdd2b32fd72ab4fd1 159a8e14ee6dde05f7628281ecb18112 bda845f53dace1a7ab610b0c94236463 b2061e554db928f233442b36ae29e50f ada8ce574ee473827c373e0e7470a338 b3c7b4435c3d05164dc11e421397c795 627819d2ea8ab9d9c97e4283c3b75587 31fb6cfde1fec63897f7290a893b9fc7 9cf60525ffd70735edcb0677ec04fe0f 39ba41744345959256a9d1ce1d40376c 24178c4efeadb8bbadd1969a2adc38a6 f094521e8579917eea65c47b660136e7 791f224b44cc67b084a05e54516915de 1c7c7a7b20831d699cd2678508cc27b8 857c44dca7247e5757baa11b83badc8f 324d7108aea113f5b60d98504d0756f4 546a90c5b673720bdb01c957364e77d0 a4ce7b3e633a6c802c5d34a902e568f9 4b7f63ec83da1c25c59508b4e3a82241 8c1eff1f448e33f4d56c79d3df7792df 20b6d398c5b93a253adc3470b30138f3 ef05b57542cbf151e7e684d25d4dcaf0 c4ebd90eb8496903f4ed05effa0aca88 4b139ceeb56ca3a1991d32d5bc1065a5 a1a8920f91e2f3d25dc3653f8341633a 9c868997ced1aec1dd904956425d1eae 87bdac1e34f3e6146db2ac45db35c175 53c1b173913bbc2b63d467b618e97922 5e0fa460af0e5e898223ee0bdd50697 ece6da595e7754b3eb0f7c4d37fcbed7 ef511c56878424e4a6380f3fc7269ff 91cace4fc498690119f778c7a8b12264 9ec7016d6978216c94fadb3555028734 41f47dbde823f29640d304b02c5868ea 43720278eea721d27d18877f45b7c3cc 7f5f4774132a25f3bc8126c23d2deb4c 68712432581f8a855739643afbd8c926 98cff1ad40ad54bcd05576067379976c f3abd87858a226aabdbfcb10306a3977 fd4285c2c5050ff7e8bb25231731c25d 68f6b68bac9f5d64d929fe644a1325a3 37cfcafe606611d81246538126da07a8 cb3bb5481f214d6bf51f77a6d7299806 f1ce06c5259f771dc24182d0db4c6889 f1ae0c66488c39c8ecf6d12e1f8958fc 32198f8e02253fc0d1fbf79741fcd6d6 a98956209f6723a2dedecd2df7bf25e3 d6f7727a3e5736437b9c6deef486a7d8 fe154cb3a5dfdffc5ae252905262c0ed ab347f12652bda8eab7f9d2da6fc61cf dd375d24e534101b33f2b52ebeafcf18 7b9f151735391e7a14513156cf2b8d0d baaf2c0d399f7329e4b6769f60f49f2b c708f4b2649d5b2c3070413801574f 6b25476464cb4934e039576a17a0737d d3a550ef8b98f55b21cfc6e95839d798 cf571875efbd60fd3d2617f9171b5ccb 54a209955f7a47bed8e8a8a207ee5bd2 c71a8fe3f0f14c074016166a4bbee8e7 8b066cf28fc1319da11411fb873de302 16cc2e83a7ed73b7789a00cfce0c4a8b de1fc3a00a11e87af62af8489541547b 954efb8e36610d1bab610b0c94236463 4f7392168ffafb8aea91375557c834d7 62e50e8b0d1e3207e047a3592e8436e5 145bd097a4b1cb8a44db04bfb021976e ac36eabbb3b405d3473f10e6caaeca56 1a9d0480b74d782698f5bccb3529a48d cade7495591007c2ec53fa9e4378e66 9ceb81a09813d5f3d2565bc39479705a b233a919f5d2f6ac2ad490d4d7fae486 d9acd27e2a9b12d3ae685ca100c909e8 fa0218bd49f8cc6d593ebeeedbff73b b23dc14d788e954b3adc3470b30138f3 9381eb770cfa95bf6bd365389d6dc6e7 c2aacd7edbf9b9f98f83f8853be14620 bcd6db8d23cbb9a9cf19858fd1963d10 60ad8be4124fda92408442c6701ebe92 db7851745fb04cf732388c13cc4a0ba3 a47c0cddeb15490cca68d7e2f215cb19 b50519cfcc841200e8f8c11a24c52ebb d83aea7de9d3d4242c37553db37ec752 62d40988172e8c685ff61a3a2a0e2484 bb2ed216b00409665634c21965ee6bab 2434dbf29922a0a44cd8f60141ab9d6d 85644a68a1d5f4cbab610b0c94236463 2351fc9da59d571d9a404da609e2789f 9156988a1a8645e727eb00c151c6f711 c51dc6c9f8db03f51e8fb9cbb32d2cb3 f080807207cc4859b2403dba7fd079eb 543e257122d8fcfacdea6af8dfcc2b18 eb34216913b891ad54a1f8a695b8eea2 8d5acb33654685d965715e89ab65beed bd98ff55306cdd592c509b30860f3d1f beb06b61dad3795c95c7d6b48c371712 4b24bbd3cb03206b58db0ef36af1d3c5 932be91adcd83bcf1336f52415aa0825 4a264b02e0d8fc214b3c42e318f3affc 4fc8fd0b2951d0a0b035d20a1a3ca345 1f0f9a821671271eaf288f952624966 9d2bb2163cba8f54c0e58de02a99f31e c41b7b7d81b7ea5c60a641d065bc7a27 7e40a1af933a05a6ab610b0c94236463 dc35836a8c5bbdc919fb4103277a6b93 b8469c14aeb092f74fde46457697d80 440e3ad55b603cb1b071d266df0a3bf5 89b66c5a15e9c00b9b43c20267c98bff aa26a6735be82e5da7de3fd12bcc8851 fa1e1a91e66faf411de55fee5ac2c5c2 2de1b39fe6dd601f1e03b4418ed1a4f3 cceaeed0d8cf5bdbca68d7e2f215cb19 4f863fb727ffab64ffffee5f2b1293da a32e10cb422cca67eb9f96cccd63af6f 9fdbd10380d433d0f564f8e3eeb8449e d87a4ae5c2a768d4283b00891f680579 9dc28627bd03a2201e606a18cee01990 1589b8a09c8bd67551d07d3e9ad67a2 ab1e7ae9a7e9a14a3ddab7e2e0338094 a54fbc57992e90b9593ebeeedbff73b c7631617fc36715c37363131ac7e8139 c3cc9a21c0732ef9b2f052bd9ec28053 9a7f267890144d4a7afe2ae8eef63a8c 2b5d99fd8dbdb44141cf86c757faf4f9 4991f4fe771cae7f18b14db3b83de9ff 642883f79c9131d842c47c8032438a1 d6b6f8854bda98a6ff458e602ebccbb0 c8962afab63de682a9ed6dce8b2a37bc 1de7678ce07c845e91ae3c216ac0d5c8 85293b59b0f9cc1e593ebeeedbff73b 330d44833e1b4b168b38796afe7ee552 ea0ee7b60919e35bb1dd813f3c0d0dd 8efa91e2f3e2eaf7bdc82a7932cd806 aa7dbd4acb4878c9620f1933fa113025 25220d902288e352632c9ddc45ef4651 854ded41212e767c12132bd78ab15cd5 7430f611140fffb68101accd22c701b9 e4c4c35bffae3ea375a82b88fe6e733f 608936a307740f5df7628281ecb18112 8b62bb92edcede30886ee1269f93c784 4c0aeda1ff524383ce4f58889c7849e3 f0f3a9b0aed5ff1cf1c0e03f321d0b20 5e9a36c61649952f555740dfce3e4a45 923e063599dc9ac7679edf1f9e4dc0a7 f42ca56e450c3258b4602b4f31d3d1c0 361b60c0143d91c3593ebeeedbff73b 9e57afbc186ff5387c0c12d35fb75ce3 4d251436236babb87189b31b3e8c8ef3 3600642b1b3a91422d83e0e365c4ccb4 75e62dceb6fc577e593ebeeedbff73b 3a525a1286d4879ed35d1c787a8f626e 1739665585ec210fb04cb542e2c50eb4 21b8e95a91fe7f044fa89de6e82c448 ed90b3d1d41c46a82b09cb731e7a040f bcff6c5cb4127aa15e0ae65e074d3ee1 f2ad41a5ffb961c4276813f95a6b7283 75f69b9fc22c4c04eaf288f952624966 5cc8f84b9b53b30bdfa4ff010b8b9d1c fd2596a60338b08b318694f1cc6fb1f8 bed924f1f1208f37f0bb193323cf7c6b 3fdf33059301e1d248fda83c10428379 2efc425b95430055f7406d785bf36110 188505b2fc90ffad780bc2708a85ba9a 7ac7a4f53a89ecb48f966131432ef871 6ab5321efc4b3772492d9da2668ec34c 8904f205681acc62dd8a663469942954 ee71654238a92dabddcbda91db0cadbd 8f71670ddaa954c963860d683ccd0da 9d436dcfd61622d6199833105dc1a90d 7162718ec5f39640701dd519cbbba0c4 ce863933e9e5193322d11432250c3331 527bc61087456aebbf27ea70a1a65d9b 828940d7035de09f62e682c9809bff14 9d5815f9ba8f0ddb19fb4103277a6b93 5895b40b8c4d103ac60ea5009df4047d cd06c0f38b4db9b4c397356311cbeea4 9f47842c7fbca0be593ebeeedbff73b 160887408a65f88f67903707764646db f23636645d46b743ad4f8dd77b0e70fc 60bca735b8dc8e487c4364ecff196aea 35d44bbbaa9763a1b1b2d85ddcddb619 b8909a5d6702f6f31680549bb1d1b739 dbf6c49376ac9591c8e7e2daa5cdb0c4 a247bf1e595abd266080784e4b7841e1 b913678e74f02db521f0090670ee931f a2b3c5312188bfc2789b222a43900931 2e2f34305ef8cbc1533ccec14d70360b 625ffe6a78f1697d87ea4c09ea2202b1 8092428a6a37b0b9970d4dd67731c543 9177c05744b77b6f6157c3a167984fee a4c8e8816a1c5f54e6e3ac4cbdf2e092 fa5a0b7134e3e9ecb04cb542e2c50eb4 557d878e747fa35db161f36d4e309050 8fd43f2955e4d397b822d48a43773c62 4373d31c2ac1d0bc57278947e7c4dc7 8f6760875b37750b19fb4103277a6b93 b1cfde20b5b0194af91663a74ccd2338 addd6a0ef4f55a66d810b14a81e12eca 9b1a7c1df1ecc3c0cabc196a7f35f1aa a659b730251c2da7b3660298957b3f6f fbd0055862daa31a2d8ad3188383fcc8 a7bab06221eb932e79c251b4a7838829 ff5aa5eb5ed4041c1ef9727a7f361b49 2fc5cf498b0fa6de1525e8c8552c3a9c 50c1477484688492bbc7a6acbd8f058b 5e217fd0fd2b1ce7d3a80acddc1093d9 e963f9423720600cf506f5cb7d8ce57 9ea95280cf81f9c5c151419181ef256 89f4fca1f562f9103264e1c4b42b3e14 2a07656f030d682536c2acd70c777ff0 d510edfd51ee8a942dd4967de4160123 507d740bec19238d18f52c8a4cfcbe33 de3589ff77017c7df15e23b99997e42b e09005010542d8193d28966b7ef7a935 fc3350236b25f198f2b841e334abcf20 785505b155a724cb6e92e37d6e2c659 ab350e81ff71034434895070e6a9b93 2d5cd8bb42310f3eb04cb542e2c50eb4 2e5d49e60a1f3abae9deec47d8412ee 2eb0a772c36144eba3f22b4b00de6dfb c0580211c63f4fc9cd3f9e8648111d1 e4e660790950c277cb1362eb0fa793e9 9f6d960c57515fb491264d3b5d25d83f d0dd5aeb1384125bd0cd98de57e6803 12c6a146bde9f6f5c42c7f2c2bc04572 a8418bfeae7c4cffaf802a9d0ab09410 5209919e8e113ce3e09a21c3ea84d95c 725041f78f7c4274515d5d6477915e98 903dda9c731b73acf661d29029f2c819 d7af346415eebe008f36404f302c9440 395e53e3fbd2e717557ab4b593540354 374c336ccd894dca717b2a5841d92 bc65c38188f1e72c532e8683617554c4 fce717669ca521884e1a9fae5403e01f b0b942c484db4fd7afb07a946d621b3c 4faad33041ab0f80dd8479d78721b157 7d756e083f671c091b17743c18fb63dc 2814c27c1ac5370a30eeafee78afcff2 1dab0c0c72f9cd6f593ebeeedbff73b f563b39b846922f22ea98d69e91ba870 9955ce757c0bfaa5843ead12644a79bb 13b60f5be9af777cc3bd24f986301745 81d3c178c611199831e05c4a367a9ebd 7d6453e00288991c61bf0ba277ea473b ae4f28a7c4e22d9535dda488a4bbb1e1 aadc03f6499b5ec5b60747861a92b009 78fa28a031f1042f3bd16075d47dda52 14c77d23044bdfd5327289c00b6dc9ca cb7cee345d3e7f75593ebeeedbff73b ae7af4ea5c63938878585c45c8af09b2 fabbe9b0db0846a8a823d9fb27aec30 3946d23c7716c30d91857b3d2399f830 e0b897af3eee5ec8d8ac5d7ad0953104 ad1428e73eafd4a6660dac8da5753e14 83410e32b49b4f9957aa81cfc66d7b2f c9241b6f755e7134f564f8e3eeb8449e 9df9d1c02e9013e7ef10d8e00e9d279c bdbb64bc1fac0cded0176f9a144100cd 9e6ba78f80fbbfde5369e32fb818f337 af0c4f45e0444ecb01c58badc8bbc39 f0f42d26c4a0be52a53016a50348cce3 6c4e0987896fc5df30c7f4adc2c33ad6 7d804eb69e0eedba450447b3239e17e9 7ae657b39aa2be68ccd1bcd57588acf8 81c3f54ae8f5c434970d4dd67731c543 6f48fa0ce33292249ac506757b31ba4 d9ed3fd60f4d42aa5f75bf17509b9bf8 dbadee62f27c31e9214c7379b0e80b7b be129d18d202650f6d3e11439c6c22c8 c2a8f4c920b6f7c24097c269bc92f53 70e157cf567eb3aa79b26024bd30ee26 d53620b3769bcbd664518692a46d31bd 7c92e64a328f1b968f6cc6fefa15515a 349f3f4d65f64c1235836c728d324152 c943da3efba4955d3ed66fc182459935 4ad0739a957f27dcad2fb8cd0793fa9a a7908e8fb217aff63d6e282938a47f9e 52dd0fac460adb45e2879d5d9f05633 c37832a4b22cc13e6654a522b30cb96 2b1f1929a6a5a6517b431cae0dd70ed ea49f8fc66df2b1819fb4103277a6b93 fbb78f2c30bfa014703a79ff0df43433 5fd7cd5ee43e0cf0eaf288f952624966 72252b1486f22ce3490e0c0c00192ce3 66df0b92b5712c0c917b96045c9b6dea 697161cff5d04992a4dc2316a7e66d36 94699d5b8a8682067ff6ace05b36a5 aa8b70ecfdd237bbf91663a74ccd2338 a3970706133f033861b5428f30b376d 6aac93deb58a35f56a3237a661a9fa9 59056471bc89a215b3fdb1a7c9a60207 3ffeb5868d6f5dbd8c46a3a266762d7 4444828846fc38269fbbbda5e1d9195c c44ab66d4938052a36e4b0ae0f52067b 389751629226a005cbde89e0c48a01bf b16b22f49cfd1d2541dc8e09670d2b5d 21addfde981f0e3445c6cb69e0968783 5161e139d0a58822a773e2c829d72a13 8e2912b6699ea81c3db8e8b3ea723cce 35e15a666990625a1aa34bfa6235956d bfc0c2ab5bcaa2df9442d81743a735a1 4d33fb26aa7baeef88dcbe86402c7c15 af978eb2f903536e5b9e30b3558dc362 51a14c2d62a2963d86234e915108e6a 8078da16e565846181ae47ffdeb90d54 194ca5fd43b1c04be9ada1586a8c9364 ef6ec9f481a67015ee3907b60a74e8f8 ad7dd9434ad5f61db759217db94d2883 6a5f98654b75a18c593ebeeedbff73b dc079a42bd90dcd9593ebeeedbff73b 5649e603e8a9b2c295c539fc7d92aba 5ec9b56623d25cf1e7d9f0fed41b005f 9aa3c3c03d111640490ad276cd2af3a4 c47c9d6c6c8291d61008a8e167b50735 daf0e2193c5d1096540b442e651b7ad2 2c3a679d6640a93abd16d4490a10a752 23e7767edf2f861e58c75a3520cc91a3 e8840d7ef11fc9d4a54b9afa882a89ed c22b660349b21edb246c4171f2c393b 56652a99cd43b77744dace04559bf008 1837416f6aef641bafcd24b8661a2fd9 6900b73a93136591bbc7a6acbd8f058b 2723924e712ccf1b98f5bccb3529a48d 212a8cab17af2454f8b0f8060696d1e7 35da4cce6961e4f2ce9d15b850baf786 2a7fb9c95b0e8eec8de75bb03756213a d1784efbc243913940ef1c8b63a628f9 8f4ba17b19d2d5a0ee50221b2a22a6a4 181f594fb55e7d811b17743c18fb63dc 8d0472ffc368a8e431b5f9e34ff03906 5660a383172900a6593ebeeedbff73b 61711ab3e6fe99ef1c6aa36e5af1449 68c58177f6ead1ba9f2349486c570dd4 ea9a266329617a165298386582afecd3 9805e011defa15f37fbc060fd555478 921a1610397b62a7db03e4f5c01cf109 4e43e29a68b72d9fd9246d8a288bd77 de4d86efa8bdc67684ad2abb799c0f8d cef25c3f7412814b4b3c42e318f3affc e3f5405a4843343e91fa1c643766450d 3a693ca4add94bdffe1db2d0679386ff 5ca1ef55ff5f68501921e7a85cf9da35 8fb75426dae65b66a12caf23554642ba 81a032241031c2e5f97ef3b999ddb957 bc007cba6288e3503790005cfb7639de 2f458ca5f25954ea9f2349486c570dd4 549f6b723e4bcc91e2cded16638068b 4198c7de2a9f450bf07fee5fc5c45ee2 8f3545743c58b730a92a1b6e1dab7c04 7c9e1876b1643e93f9377e1922a21892 7b7c14e8fd0521bde4511d9a59e40339 790e42476f871e29e0a954c49a0c328b 67386a2dcd3be10b8a09f7075b904cc a2b93b7632e98eb944949d7685cb63ea 1b17f84df81e0165e336453ccee6eebc 951e63303cf5eed1cd4a89b0fee32930 de2bb45b7e200d6916d102513d0383c0 6c50fa0b3f1bf58e178548484b14e6f6 aeb5447d59fbe49add7f28fcffe810f9 980d28e46333db492878c1c13b7f1ba6 e5dee68606d47d3aca9b40e76e725878 277e5fc4d325fb1381f667e2a25e0619 aef57ed7044469ba25e322bb8575a360 4b7785695ead572e175255c493aea87b 37b94e004ee1f7847c63c1e5173c47a8 1c54ad94269d0e786abe5555a3b447d 9cff96bae9963ceab3c971099efd7fb9 e03c28dbfe1f2d9638bb8355830240f9 5a2da4b824000054d8390ec1728b1e3e 5a0fb2d34e0dc4445369e32fb818f337 1f74a21433c43c784209d14d674fb332 ca2204f36a01e3515b943c35c765be0 51ccdee7080b11dde21111e385a0661f 7822a1ef8d1eca8af51f77a6d7299806 da07e1f3d336532c2346f81928a3e5eb d3b0fe62f115f0588bd90ebf95555835 8d8d2859338eadc7bd16d4490a10a752 9e014bda9022a09095369230ec06c72e 3bc7d4d59503cc92c1a25f36f85c3fd6 11be630221243013c087ef7d7cf00301 fff8834b262dcf4aa89012425147541b e0f30a6af7bb75b8265d1076b4b6c5c 5f93127875373b8657f15fc9385a8a01 ec836d156e8157fec862eec8232fff1e fc24d012f6b12036aa1f8e0da2ec8814 b99058a0054ea0f8387625a8fa2965 4760c46c66461a79dd3adf3090c701f7 fd2c3219b28d98768dd711af5650bdcf 55d89b64ec895fbbf2ca754af3aaf35 b55d24ed786a8279ad2d3ca7f660ddd 200324d0bafb1c2e19fb4103277a6b93 5c69960804458df5255ac1b93c90af25 4820b629990b6a20860f0fe00407fa79 33eb5d4c6ebbd6b1327289c00b6dc9ca 9df8e759e084a988fb1eb57de0e2e513 33db94c3b6edf1efc3bd24f986301745 9f57f0155caf1c15404a78e172d68d45 e2965d9df7974ba25369e32fb818f337 9f4ad442e9cb51125a31d91ec836a511 54f81ca969051442e9362c2e21d265df f8e0bc0d84a8f76cece93aa52d895bf1 ffa7680b18ede5cfedeed2a7fa983956 61177f1b2f1dc0b394fadb3555028734 f6ef2cc4bb31d953a40f4c396e0c7dce 4f17918826b64fc8d5cba62773b8025b 8b4a2a614f7b2a9510edd100dffd8d85 882d5d8f49e52e81a53276bbe109327a 2bec1d8c0e8a1b3b7b98092cf509b83 ead777f4e8c5bc346ad8177a9d42d3c9 dca66ae8a95f7f70552a7b4f3448af2e 35503a69108fd2a790a1391b3fdfda26 15410f94aefb4982ded10515704c9720 bfd09a13ca8d039d24d3570ac22df4c2 7eeb7a4c2f3f1a0505babec7f39a63c 614ee0988dd6661d9559145fbf4877c0 36f7e8086a8849fd5883ca9b41ac387 2a9da31660f0c0b73505e48e4fe20c28 447281db87623862413102507b68bcb5 de431e15a30f57f27d5681734ecfe522 cd74a153b605c6a3cabc196a7f35f1aa 23d1a49a9a29c776ab9281d3b84673cf f01f6f88519a58e0e015ffca2672af29 20f82d98b188f16cad885ade4bf3150c b337556f36a5e1bb9a2041f674671d05 a8b0e2a953f3ab6a68b3e52c71552a50 4b11124f5ccf051086708ca48528bc8c 75a451559a48b42f6e525b37bf033529 c2f02274b4dd4431b4e7c0374e7ddf69 82dffa2751f8e77643c18769338212d9 a53114ab5cfe2048f51f77a6d7299806 69eaeff55a5a9c5568d1b9a1d97e2846 38f6d097455e58053d6e282938a47f9e 2097fba74518dc6e4a949e376cab703f 1731d53ab8b8973973800789ccff9705 c35d42881295d9cb86debb0a33c851f8 990adbf32c6452878eb3bc6c6d15f9bf ee5f19266a3ed535a6491c91cd8d7770 4f5780a3a0466469e5c864cdd2c65afa 2a98f28036915f805510d59f3ab1ed64 c0036465dcbeed6a912f115faa04d51 d20569519e7920bc38cb7d8503a3164 978dcc1e9c3f9a3f92a31ec18c4e190a 6fc69edce1f6d0d5e7e684d25d4dcaf0 13a8c6129a8e80379904131b50e062f6 c0228ff42e79e272db039d8689a74349 1f75847dbddcd34afac76e6fcbdc3631 d28912450f62b4efa8699b6183baa203 9c1565c6bc50ba7668bdb5c1c01fdb25 6db11b763b7c3e76fd5b2dc3df6521d5 62852049a9f049cca67a896eea47bc81 46e6485e5bea085a2b450c5933dcfcb6 6afbcbdc7ab9357270db6230313d3ce dd4a6a955c925d7762fd9a1e220aec64 6ec8a2dc3bae5a9b8b709c58c1c5ee96 93e20cc90bc4ead618a6353ea60f11b6 948923ab76b8d9efee7d178666aae23d 4b3f84ca13baf80be0c381fdfcdec36d 9c0ed8415a0a9e5c49b1e464b71de577 6cbcf4636ee5593f75a82b88fe6e733f 12aec536f7d558f9342398ca9dc32672 63e91cd73f169af037f251300f603b8c 42486ef061ba8d2e9deec47d8412ee 64895a5b618e8a6fb40f0ac0fb9a650d 7ab84ec80e11d03fe8daab4fe9011efe 5b70eb12242d4a03fb6ca00006f2c76c f49df2996692bda02c528d33bca1ac2 b32b7dd742f915581e6dcc1ddc222f68 3897ad42f73988a62406c215cad9df09 81d5e6d8bef76a51ba6c2a353e21dbe8 cd9ef0c92376e604963cdf8b01c64c16 9bc53cf72e1b969deda761b10992452d dd8de6dddffe302f84633b41c8a09fa0 63484c8326f8fe73cb922bcc33df0268 8a4e1f7cc3bb76da9c9245e96a55cc5 924761d5171a0682e5c139899870edf3 25e718b0164f54d5a9f35e635b7e48b 150da8f39b055ad0b827fae7748988f bc0ef0dc1d69ed4c852bb95bccedfda9 5c0d256f2bf7559bfc8914dd77284b3 22b11483d6a2461814038d588fd1342f 875aeeeda0a93481f51fa0238791f5dc c53ec0141303c1eb4508add1163b4513 3746c2c38faaec395304a08899f58b0b 29ec7e1541397b0e5ae252905262c0ed 5d9f1c6f9ce9333994c6d0877753424f bd088259c8ee711c3a4642fe4c259750 ae1b6411a089bfabfff16555386d173d e61751c485c937fa717300ec93e59c63 d3c677deb7e829f05728afe1a12978b 9294163aacac61f1ad5c4e4076e069c c6c8b57de92a243abb3f330b15ee1442 a39749334717e07098f49a8972f75c6a 8f5c8cdc0fc4d84aaa4296a266fbc9c0 6c930734ea1ea82476d342de8af45d5 a053322861de88a21725b4111480fea8 a693b27591fe6ca2fee6b7db2f5f826 c8b6897dac50a2c3eaf288f952624966 4dbe50ba1f562fb236413faee81117b1 592e8295672e1419e82c020151d41155 c88d26d20803d385e8f8c11a24c52ebb 36a6725f30a73f0e91ffcd1d3522e1d6 81a7007ead4051cd22ed3259ee7e608a a9698105867e9818f91663a74ccd2338 192afbc1f0977f74861e0db9bb7afc48 e1e2ab3bc1d604752b4aa1e18549d620 7527c6db4e52d511db01c957364e77d0 2b8a9009d91dc09863d467b618e97922 de6e76b4be0db5a0f81b347089add3de 8d87711b1fc30783f06800d5696e457f f6f563d47fcdfe82d67386763ad34603 34df668babda666f7b0a2c22acd10794 7cf9738a01e47dd6a123ce0dff5bf4e6 cbd547bfb6b7d8e54b50faf1a96496ef f2bfa61e1a8894dd1071797a42296ada a2bdc3a6cb13bf197a969536c4ba7f8 b543411f1fce1f30e6fe3612af521500 8d98a04f7217d91ad85fd2587ec5bc19 e9e5da988215f06513292732a7b1ed9a ff143cdc22f23608cbde89e0c48a01bf feedba483f628b8f584e3f372dd1a2d f1241a9c69cf35feb3104e94482ea9ce bca2ce9beb8b9a3c909c248d0d9da9f5 8a484fb8faf9dea01495d00ce1193982 54eb2ff4ee8889f65ff59927d484940e f8a6cb92786bbafce8f8c11a24c52ebb acd97b28893414c41e4599068fc59335 e12cf322cdec8ceb63860d683ccd0da 4781d90373fffdcaf9aec59741c69cf7 f551048075b5042d7d6d37ceb4807b31 d9d4b2af7ada1426fc385a284336f217 48e31e3a3e2aa5c0cabc196a7f35f1aa a9ee7aaca080a86798e0d1738edd4f19 996265f3d98601ea3bec56bff764ba78 6f271a6c941038a6efc579970fcfc006 c1ccf7d15c32b156cc2af5791bd669b8 b28f66155cb67bbbf182e66e17d08d5a 3247d4bf8bbcbeb6840bf649c20f40cb 62b02c1b27a5793fef188758bf2e3a30 d52584133659bcb24b3c42e318f3affc fcdc852692f43041fdac1e69603928f bdfcf2086fafb0fec8a04932b17782af 1e4eb3bad18b75f23d6e282938a47f9e 77a5f44875119a6b5369e32fb818f337 88d523dbcd94be8a4af957103f4767ac fb74336a6192c4787afee304cce81d6f d4a80e7a92e2c4f98981b7cb87854e68 cbe2e3145eea246cff40be78d008f276 fbcaa3c4d17b8b7c9b0790357cd0493 c1ae15118f856e5e3759b16de9b6963c f2458aaf4ab3e0585d7543afa4b9b4e8 4da36f40feb209fedb52360728b4b83 69e8d0b7366591dc578d107c71db28ac 98e6845fd0c59edef1a8499ee563cb43 42265c6cc8d24be09cd3f9e8648111d1 faf387a11f3f944a75dc34583b0239b8 75850c6e67073a2a593ebeeedbff73b 26b508c478a9d363f51fa0238791f5dc 9507b4091c4d02a37e1b1f098db17ba1 2b69e899da0c15cfb40f0ac0fb9a650d 70ed97376be1d0a84301558fdb0b2522 15d2efe697d229aceaf288f952624966 669568cff92228b4e6fe3612af521500 1843c388615d12dacb16624e184454c dd3d82569d4cb2b5af140afd78cbb542 1bb31ffee286d9687597e1f94410131a 30ed3ecec491408f7ea607586f414f8a 47c991f72eaa53c6a8737fcf23389014 d6f95d8ef06e6db3ba0604df5d71bead 9ac58aaf9989a0911f98c0761af40e04 3e4a24e15c63edb95554764d7c3c0e03 3c56ceef171fa142126c0b0ea3ea0a2c c7f31b9900a1a7644785ad2feb797e 999c10445b9126fabda72093f9b5aa73 ca7dc4294b1080acf256e6841810978e ea295fb4335e3499f51fa0238791f5dc a3feac5d875f764c1961e650f3cfa396 a28a2bf7c899fa38baaf4e0b7520fb81 13534db5278d476d98e0d1738edd4f19 8951dddfc3cd6b08e8f8c11a24c52ebb 2fbf971de875a1277df50de84a56e505 1908750cd67208e0c4f370f57df9b202 1824d5cfb7472fcf9d5cfc3a8d7af21d 995a4ed2a96d7c60140c975cafb9782e c29c56fe616c0986e7e684d25d4dcaf0 427c7655012b6cc5593ebeeedbff73b b593b430e799ac4af256e6841810978e 2bc178dc567eaaa7e01b76a0b6e5fec5 3aeae4150fce9f79ed3b18fbf7db0d 27edeaa6c6e2e670ce4f274577283b16 1bfe2d5a13298b40eaf288f952624966 99479cff448798a358db0ef36af1d3c5 a5a855d1b710641ba90692240cb38ca4 e68c603dc62dbbe5a1281b4d4bd889d7 fff199c067a6e0f019fb4103277a6b93 d8e1f6781276eb1af34e56d1d9ad8c65 b33ce45211c0950e3ca067e8715715df 48acfed2c1f2d42cbd16d4490a10a752 c344088939a4d4e4c8687ff9b0b4e4ac 359e995834270ead614871b18a2b1957 3ad0d0becf611ddec6fd9dc5af8f81a4 dc6308addc91fd9eb9e8bdc9c4a49aa2 9ea38e213819c55680dbca6e7b64a4bc ee5cfabb3bbf211f4f46734d27ff5aef e323d123c60c2f2e3c777ea9821e1518 23c4b23f2e74d6232fee6b7db2f5f826 4264fffd38596e3a60f888b4e2fd3e4 3acbbce6f05c2623fdb2be860bb16c8c 4ed1591fa1c692df44265a262962e6ef 9e3fd54c2e7dc4204b19d2c99e22ffe0 e708bde6a2ffa4cd1ed1d681aa8388f6 485fd17a8679ebea638c2f4fcd9a8e7b 7a32d6d22231a58d32388c13cc4a0ba3 93b4258c377ade381deb48513aeadf93 f7efea85176f8cd01f274b4885739ec6 d0fcb2993379cf9ed72ff9ec64cb596d c8b49063b5c805ff62a510b8f97c658e 28cb2ca084164fc15da92fb9f7555d73 b69fd1046deab785b3a010e5a9dcf3a8 a28bfe80037449cf5eea3e3d89293379 e46d448389af3fe4500158c23c4c5a8e b216efa7925318b1e466d83a76d6230b 79a9aa1e8b3b108cc48383e281a276ec d5a7ef075ff5e17a29f849a67b494905 6e0e701ad50f5f8c63a3732f072a64ec 2e0f5e0ed5acb122597976c675750537 6c9f559b0adfbd6985d87e0aa09f3117 336fc8a43b3120932c48d6b905457dcf 777aa4f75debc4e8acbda81da5062d85 6a62d0d3c8eeda396ba836372832f055 3c389c01263d2eaf2b3e9b6eb52d35df 25c859754525fdf713dd6eafe1477be1 581808bf8d8e1d2448eb521885c87e13 130c64a2c0232fd03fc2ef4fdfb57f60 db8c451f7b01ae88f91663a74ccd2338 810e4815b0ef6f1314038d588fd1342f 691785b64177ec582461aedb84ab8436 2b73510e4eb3d8ca87b66c61c1f7b8e4 725af978a11bb5c383a0857b7b9398b1 81bb52e7a83d1b3e9c75eb4326997fae 9b08d6288f208362dac562275d66ec29 ddc31f9e7064be80f51f77a6d7299806 411444708e41ec314b3c42e318f3affc 126ed5982cdd56243b02598625ec1bf7 9451b957aa36883d6e6c0340d644e56e adfda3aefb86478319fb4103277a6b93 3fc4cf00b8db1f03b086b372af6b049e 11d5e99e8faa10ff3564590844406360 f1e174f8ac0f5254490ad276cd2af3a4 761b8ef3b41a84b82f84cb7932f866fd 5a71471acef6f8153d4d11ac89066d36 fafd58ba00e8590119abd93be2967664 7446fc82485002938db1c6c15d875c99 e21b95b9dbfcbed28ccbec49bbc083f6 b6de66042941f5691301e24e9e27a9c3 d8087961b06c9f7d4b3c42e318f3affc 94463eb34be49887c3bd24f986301745 933a9330407d51b6a8cfd114c4b34e97 c49d9fb6c8b32b265beaf00da5b709c2 eda8029bfa428c38f6ab3cbe0907fba9 63fe6b5903df38a0ba0f037fee399b18 4e218928736f1e2bf35a12c589281a9 24bfcb97fb60fab7e812c99c6645894b e2b1b05de388e7db3b52c6376e0759d3 8701046c07327e3063f9008a349ae40b b3d686456bd951d42ea98d69e91ba870 9e2a48a4263b77a06f37a8be59c15bbb 8a01d1d686c4b0d3593ebeeedbff73b d835768fc0cc3300ccda8d28b44378b7 73c8bd191a664678f5ba7cb98f498b13 c4e36c36679f27887586d00bc0d54b2e 45cc71dc2483972e742728b30848ed03 a00bdbddfe3511208dd711af5650bdcf 1f8098eb2fe947398dc38b92af981645 26d36969b0ef62b1c2c449c0c0579ec3 57f383c1eba6bdbbbb07e1e44f4c30aa 423d4e5cadc6dbdaeaf288f952624966 c06d35db226f47d4de03ab2a27ba7531 a109fd29656079e714b96b665a8ac321 4735568bd188aefcb8e1b99345a5afd4 b53bbce3774bba2f5ade1effc174de 8659f0f422096e3d26f6c8b5b75f0ee9 a2d798bef501195c1ecf441429b11ade 1af8bfa4eda36bd697c597ba4db02ec7 73e342d3bef02e923d6e282938a47f9e fd4dd071f73ca07355eab99951962891 89f4bb22cb53fecaa0fded058fdc8ec2 b821fbd0ea6086ce9670b99b613138c4 ad5ef1b493028c0bd810b14a81e12eca ff99fb65f116dc1b24e1cdbdc9a22905 4076958da964edb95ff61a3a2a0e2484 db09115f98ebf4bc20768660cf080d12 aa5fe2c92f01ce0a30cbbda41991e4d0 896e8970c81b33d068b6f94bb42f6cd5 92ee5842113109b05550af5454dbad36 28e546337f4a5188e6fe3612af521500 857c4d70af14d9d9e9b88e9734c4cd55 5b23328fa6d5382d295b24579cf55b8 c5ded02dd51a5482e0c5923879d79f21 5f67ee55d76bf582c41aee3d4c9d0c9d 4b529738e7b5f910288138d7d3420148 10552f968486cd0ad138a53ab0d038a5 48b67f0f05994da092a31ec18c4e190a a7e4616a2a315dfac5ddc26ef5560e77 79745b6df9447d3419abd93be2967664 e92822b0b73f0ad6976792e9f0f98e95 abc6cff85c8282cf6fe2eb61cd6e74e5 f100212c5848f7d3898b4cd86bfa936c 2b64dbb623899dec7bdbd1926dd38bdb e8342d53ae929341b6feeb62eb9d939b 31e343b657358ed0a4e97ce1d10a5ae6 44a17a70369e803cc7623e33dc7256f2 9abd7abc15a5f7893eb520ff7cd241f0 1db7c7411c5d957918f52c8a4cfcbe33 1053897adff12c7839c40eb1ac71e4c1 6e213a2ecc95c30544175b4dddf5be08 e0fd6cc8f2e62ed6d1151897037aebc 930d2bd446a43e0ee8058cf23f6382c1 953196a4e8a813e8fc909e63d58b00ba 26205c6a0a25d5f884099151cc96de84 d0e419a11fd8f4bce589b08489d157d f0e243acfc5605bdcadbe66b40c67b2a e809c16325be020c795085b4d203932 bf28dd5d38900b1314038d588fd1342f 75fa63a7576e2f509ae676623bdd3284 58447a958c4af154942bb07caacf4df3 67d7f94aa2ab272bab610b0c94236463 611f5a21a6f9ad3d7635d2483a62c61e 29bfdc7d14677c6b3d6d3c2fb78160fd 656ebb911f3963a81a291b1dd4baf49 ce99ea72f222e7d58bf939d21e50c410 aa2d1614a9bbaff7e6fe3612af521500 79c3dfc2f90a5cb619fb4103277a6b93 91ceafb0b1b2008d98223ee0bdd50697 35eeee5f998f24e8a505985405786f0 8258954eb7929aa13542091189dc62b5 4a11e50e8e5c79e82cc460e9d064e57d b2cfba8ee63abd118fac6a8030e15671 d4ea100ff8f94edadb1109c64edb2c4c 117f6ac4bcd75d8b4ad65adb06bbae49 69f5626d5dda497c2af11d59b11e0199 fab5f1daa52608365768db72e79a5dd5 c5dd746e08121f8f71a782a4379556c7 b85dd5219ebb52455a1bada754e9e91 10f2a1cbaee4101896e12b33feac8da2 a6acd78fda77bddc52862c62c571b1e 118a7d6a1dfbbc14300703f05f8ccc25 9ecb691016c6295a50f06b72cb7e77fd 4ae401feb8499f5c9f2349486c570dd4 628f7a321ce4f90fcf01bc59d215f0 bcaf0bf7eebb7d7f4fa36fe4cfcd8f6b 64702fcd98b04ad21206ff076758ec85 2bd1439924492a3fcea6c8d9a419e8e0 8d91786e13808f73e4248277d408e4b7 9beb39285a581fa1f2e202d571b458dc 15c66bed7e6bdf85160c7765c528fad6 99a3e307a8e08afa575f974bef523d40 d7bd0812487f786b19c5fea91449201 b06afb4d11ee4eb9ce4f274577283b16 a613610e1b9eda601e20309da4bdcbd0 89622aab3cd599787088864e604378e7 16fd88a99f7d4c857e484225f3bb4a8 f13ce2c21e2ebba4b40f0ac0fb9a650d 8a66b03841197e23d93b543e2efc700b 23833969c0011b8e98494085d68ad6a0 ac5a9b215a7d5be123448769dbb64afa 5ea73e05bb96272b444ac0ff78e79b7 5b27e06a178965c5300703f05f8ccc25 cc4a8ecc0f3b4ca1dc0efee4b442070 7550aa9d29f252611431dc89d81d788b 5cc378efd61f0333afd8078191062c7f 24223e3bbba442ffd19c4e0cc3eb15dd 781a7cb1d7f9347d7ec5a98b3b8c425f f8ccc92a6a5d20875eea3e3d89293379 eab4334a06fafb7171c3cf047830ec1f 5e9e4d6551b775d8cabc196a7f35f1aa b23656fc9bf32eaffa22474bb826a278 45e5b5efe95ae98ff2be27e9cc5f92fd 5d1c69aafe90cc3114038d588fd1342f a2bd385c411aa690c795085b4d203932 f261a5d15d8dd1cee16219238f4e984c f37c09d7ebf82cd642ac3369eef7a7b2 57ceb2601802a37e534fa06200d07790 755f23d93b06bc168cbb8bac2032149c fd124209f0bc1222f34e56d1d9ad8c65 86ba626309daedc8e8f8c11a24c52ebb 5d2ff1a62e9d58baeaf288f952624966 4a7cafc9f91cde86200f88c4e37ac5ad 7e728818848f191bee7d178666aae23d 3d164c442e5788e25c7a30510dbe4e9f c9276f00529396bb35836c728d324152 8c6348fe629fb8c876a45e9a12af8158 a3faa167208786cef81b7bffcd0a03c8 2bb1b5865455b2b814513156cf2b8d0d dd78c16d85780d6b413102507b68bcb5 709389fcd446ca6593ebeeedbff73b d8b0f33dd965d49447558b47f7ba0b0c 681d226acbeaaf08a4ee0fb6a51564c3 e68758f3775f700df1783a44a88d6274 d09b21e5a16c2a0ea29038f04db9492a 90aa5fb0cac28bfbf91663a74ccd2338 6e7f0557400601322112c05ea370d321 8f8aa68c8c6cc6b53dfad56d2a4eefcd 84c480a1a055bd0f7223d6cbd6200e8f 3b37e15f2dfe0bdf55f9a00acc25f137 17e3db80502cd515bec7eb09198824ea 4d05c9f0f34e1c22715de3ea7b582d7 847ce2a3541a085ccc9651014a82e2b9 aced3dd677d1e2c46ef340d5b029818a e921afccfbc7137c5a95bb8b37106cdd 2459280764bc155554a99e49f597fe94 3eb1a7a9a4ea97e3e44bad6fc9badfe7 c4af170f18f0d6edaaf0ad030fc37d94 ec4948183b308204e4d5ca1617e68f91 c67a9bc21455b0d9c018b720578a03bd 4a747546b39003dcd59517820ada1bea a90cf2c399b7052cd4061e538ffc8def f567137b74a175c6f49a23658fe5597c a3d8fb85de7cf56fb2d2900ee0ae7e0 90b1058de189e4589215045784774049 4653af854bf098f2d74aae0eb2ddb027 e4ac864732a8dc40f99656b78fd61fd5 a87440fc1fe87c0d6bd4dcee82f7948d b2a9553d5d81060b36c9a52137c03278 afd1b4501cbda28814f62593b9237aa3 b08fb5e8df4c11c090a9ce3e4b15521e 45fb33cc152121a97b8f528a5a7a471d 9d56b14e39f4c1f9ff6eb780c82e5ec7 3e2cd7495af88fe352e393d25dabbb72 8a5a40fe10eb2b2eb022c94235bc8601 9152b02103bdc98633b8015b1af14a5f c06ec5cdf3500b6c965332f7444deb03 854c9e951c2cf2e3492d9da2668ec34c e29de3e590d4541c285e5a1f74237618 c46a4ee98bad8264925bc492489de9c 9aa38ab7fabbd6becb6924eecbe974f c4d472c94921bfc63a36ba9606d732a1 262833bd44fb0e522535fd8b96de1b55 e70e0e198e8de08dd23e51328875746a 251cccb082a6d36024f2ff737a52b0c8 4d5efa4209fc3c126c92f284160734ae 189e64b308b4345d291d421ca3746ae2 d5931526b56b157cab610b0c94236463 9770f3e5ebc261794f15b22cc208bec1 cb6b81f8c581bd2ee6fe3612af521500 fd2f1f0d3c4b90d535ae67400a94a6fe a92f6b7dccd0421f7248d9dbed7a7b8 80c143c03d0d7b3087752c136d371e3f 577625945f1b83d16296847c9d695b0b effe967a116f8098cc2af5791bd669b8 79edc7c4e10a6fd8b3aef1eb2166205f 47362cb47416904b76e38b52d9aafc11 db851fe630734a8aee7d178666aae23d 1d6250cafc410fdfe8058cf23f6382c1 2e445df8836c2f55722ac248306b14e3 bab33dad5baa7983ecaafbe064b13083 dac6d5f66189b340d4ffe37a3ab73512 d992ee06ffa2455219eb0cf70882af88 512434114e17c17d4a79bd7fa08bf04f 2e1563209d3318b2d544b90b3a170602 e17c6810519ba81a559916e9a5177b0e f4830a8e2ba2c531b18ea2be5fef7826 9b73921863beef532d1fcd5297483645 2c12a9ba6d4d25df8af30108ea9ccb6c 1662f76e3762fc92413102507b68bcb5 e771166e02fe1016bd16d4490a10a752 c4d65d8701b7e9b977e95ce4d5a0e556 dc097b47bf15ec8e7934a0d24a61231 79170ac3bea792317984fb9ec7e40829 3d498fd733de605a929a5204e472930b acafbbf4c4f3aed424367084627d607d 8981c0ffae1af00a50fc88ed745bdb67 1442fc6ef6b82c8ae1da81584e31b667 c0b61d423f449b3c6f37a8be59c15bbb cb680d8c4891670d559916e9a5177b0e 58915b74af8f69af5213cec267286d18 93b09a953435a00175aa7f24a9b6003a 192b06cd91bf659ce3db80a3cacc6e3 39b0b5513ce0af42cb25d116843b43a4 4997b2b6120f84e948eb521885c87e13 f6dd2e82ae1f5f8d3d4d11ac89066d36 20b601472e40f47b17b431cae0dd70ed bf30f90b1c864bc2d5cb6d178687b980 dd50bf448cd6d69016e9e510d2c2a9d e78b5c9191f3007cd36a803949e62cea 785ba264dfcf722bf284a86ef67b13e6 fa71486d68dbe48bf27b78f69ac93684 ecdefc9c1104da52bca88fbd368f59a 4afee57f3134a483d9b53420a5458c53 c460cbeabad41fae963cdf8b01c64c16 7b8a8776c2bd135694e14fba4acebb36 d29d2c5a1b35b85b40f0ac0fb9a650d fed8a89a89c96271490ad276cd2af3a4 35b4c449b5ae845013aebd62ca4dcb58 a3604a6631bdd53b593ebeeedbff73b 68aa553c520fdeada30a92122fc999e9 d9d465cf1be1142a86114f7b6efc777a b6d1a72c1f27f4cbcd701e9c04d3cf7a 664a84b65396e168707aff99601b0e71 262e433c526d8b4ad84b8ba651dfb8ac d15ccf2af52a95f619fb4103277a6b93 26caab5f69ebc9693eec26c23f5bc80b 1acdc3f794d927fd63fba60e6c90121a fc48d6602ba4904b5bbac631310d500f 3aab3cf29ab92ce7c29432ec481a60b1 717e503b3846d60ee8f8c11a24c52ebb c734c6bc3524b673ff2c92c2a4f65876 afcb115706de531f909c248d0d9da9f5 ac16057c9ab79f7f2c7685af80c3d87f a23357a29af9f63ed26fff8ae28c5292 7a6c2247a36d93b6f4553a0692c9821 b048119e0f0828d5758f6def7204bd6b 62bc75a69029614877bb84100a5c6b59 ee5d770da5335578f7d7b7d6143367b0 1507432d805eba8dd773dcca82f4a71e bd199c38c0fd7602c9f722bbac7c6194 e51d445efd61b1e4e1296b473bec7902 f05f6b3e7c0afdb352fc7e973ba7787 3a3cc27878713c19676de9b6e111da8b 87936de578cb81c4c61648d3e90c5695 852abac2613701ed7de67b59dfb031b ce6c597847e7dd1e55eab99951962891 17e050b62fc249687d3c9de9415fb224 4a1b7de779cde76487311f65d7a3e3e6 c4a70ab37043efeb14038d588fd1342f e6ecc4e6734f056855f9a00acc25f137 90b3ec9b7f122e3ae677774c24ef850 218f5acd2b8f2d7c85f6609ec867506c b651ea269f4aa92731780fdd33037c9d aa86df339042feeba4d9f38918617d27 9eef66b5d0444f8398cfd47a860803c5 4106b3d95b6dc95caacb7aee27fab780 b1d7bbccf07f38d34338dd5307c2e704 484259aff803ddd6f51fa0238791f5dc a2a136afb803eb35cc571cd3cf8f17a1 d1a40b075d8aaf62e7c7920f6a65a54d a10a157254f74b0835836c728d324152 dfc8656b5e7e6104feec1f13d2353f3 9484665b03423168fd1e5a951c425f11 8673ce2da94bfe4ff42b5131862a2dd9 69e983e816774aa01b17743c18fb63dc ead4e128aa3ef03b9283104e53cccd61 d60975380ebd13746a12da8b0e0f66fa 9ef66cd1ab321cd3872052160bdade26 dcb434ec43228c7e98621bfaa41dc79c 1d9a26feeba782e3f91663a74ccd2338 26a6dd90bc8d6a0e227f59b6a8b64739 c3c5818cbe6d0903822a33e080d0e71c bd5bc3e6189f6972eff42b9e13c388bc acf458d2b16dd918ef188758bf2e3a30 9ba5f57133b048f771e087d4163df51e 3dc8e7cd623f5aeb65498947b67a3f6 e62ed35d1643a56dc9f016d57db96408 b15fb2ddfff73f502cf0d9a4f66100ac 2f426679ff0345326e467bd7dd946c3c 592fdb44d4bbf0ee490ad276cd2af3a4 72988c811a2c88b11206ff076758ec85 9fd96a966aec6594f51f77a6d7299806 dd6f44f5b788d5963d6d3c2fb78160fd eda881a6ea96da8a46874ce99dea28d5 6315fad2852149fc19fb4103277a6b93 b58291a2e96691189d1eb836604648db 6131018e5caaedb87980e3c69ea07675 8c788c0a04623efbb45ba874f2848e8d 8043ff469c9bed4d48c575435d16be7c d7aa6e5b0c686fdee039576a17a0737d b0aab89e3318b09724a8d949d07d1308 ee57ae3e04b1930aa6bb70ffc9e4e52 46eaf99e641a0fd264558a1c6a2a9f11 f78da0aa23162f3850cf3715818ccfe8 d21b63623023b40a593ebeeedbff73b 8641e421ade0f7cae136ac3990ab77b2 8f971956f31d9faecb3a30f2c37c38a6 f2a96143ed0936265d2b890291504877 fe79eb9d45cfa9c5ca7ed590d69b9804 1193da9a06f87fd6a0064771a6f2cf3b 4bebf39e3fd794937177a91ecaf96588 e8524ce4800693ad1aab7fc1a7e09451 15d59eaf24645f501030665054ebb2a9 75d76c87ee1066ae7ca0c2077c3e38e0 2d1dbcb6802bf2017879e882bea3b8aa 2ff7a54101b3a51283c1014d9ff52cf3 9cfeab8ccdb908a7ada629e23b16719 1c756525061c4b0b4f3443b22038d340 875b65ed8484c7908bd21f911d388ab2 6f0b36b76bb0946ce642ef37786b5c80 e233f53558015ba4f05a611b5fe35f32 41c9fcaf5c6b83a61660e46cb2e4cc15 eb3b29fb1782c83de8a4454323586e35 f96f7bc4d005a88db38d1ee17ad4a4a1 2b79edc3da006592395a2b8836b4be75 ed151b7e31cf582ffe00f644e4f1521a 5015912352daa0113e2f5d8f8875fba6 3a503e0e9b48a8925ff61a3a2a0e2484 a627a11941892ada3707a503164f0d91 8ef1ea7a7c4b4e7d5cba62773b8025b f157bee08e60f88ce6fe3612af521500 821bebd7ac070a0550fc88ed745bdb67 d546b9afa6d0a22fcabc196a7f35f1aa 22c68a7a2c8142f027eb00c151c6f711 b501220805eab01a6599ee0a44605cc8 6b0254f2a397129a490ad276cd2af3a4 aec403bcd87487b5b3aef1eb2166205f a078e45c64ef80954a4ccb8d69e8d887 d8892d8a902616b1669e5c8c05e138e9 3d0575e2fbf2ed5c99e1e63653e7d97 fea783c6499e39ed4d304d5dc34c7e17 73bb6025df29d208ae17f74ec30c4d4 a0eeb4524c84f7a0b8a09f7075b904cc 87f103e24f91af8d4343db7d677fae7b c8e172e5708b1357545508cb156187cc 165a78e3a2b705ef22c3a2386a9dfbe9 8520016e497352aef51fa0238791f5dc c22dd8c395f465c87599bba30f391291 9b651dee9548be90ded526a7be77b30e 6600d60c9d3bacf8d34d30b545306d1a 853707d42be3a24c3eb520ff7cd241f0 ebba3b7239bd43cbd4fd21ba7448467e 7eddb52d83f3d48eee5580e1b1723da0 fb835879f66b7b95c43a4855019be9b5 40f6e30804ff4aae20125f039fb4c8e 6bdcfd4b681a6254c45c0f305d0b6e87 bdd7a0eb66e8884dad04591c9486ec0 2fb74a2f2b2b23a8a8cba409c4409ba9 e74d866f44f857e77b5d58e18a4bdcae 3ce2794845ba4bff5c63d035d2a7c889 436a96f58ef9a6fdb039d8689a74349 bf837b5821d05c00efe1cfa376f050c5 6d0cd48b18471a8bf1444eeb21e761c6 b50c0ff1aa497809afbd772c78d05c2b d04a6f268f16bae7d472d3bb6a889c20 64c8591e8a837cd5dc8d41086ec55d96 aa1da8200477456bab610b0c94236463 14bf301e9548eb788430c9c8b2cd5ae6 e877f5881c54551a2665f68ebc337f05 f1a09674a12a3aa7297936c81e7f6629 7061f5384074da6d6f37a8be59c15bbb 1a713136ff3c0a506298eed3ee847aba baef1491d5bfb6cb58e51facd8ce1a25 68ae06512cfbf4f95fc186cfb5f359d1 d8c748ced5e5f2cc7e3820d17093b7c2 e5b0d8cabce54f524b3c42e318f3affc cff485b2c98410135dda488a4bbb1e1 9136172b17108d1ba7d0cc9b15400f65 11b544b22dedb59c654ea6737b0d3597 fe652e6e444a8b827f06bb1a83bb6426 150c9d9b92f7559f593ebeeedbff73b fce58f4938a670db91c74eb018d3bfd5 530fc7ae6a1d6a40e830a5cca365799a 2aa0288017b4e249f6a7b03b801e1d47 6e97f3391a8de74bc862eec8232fff1e 56df8103181fd18b27787a85c3bfabc6 a513bc9521717f2593ebeeedbff73b ccd0c5e06744ad9a5ca7e476d2d4a26e 1f860a494cd615fc7d4bf609d539b368 f78b75284089cd6514038d588fd1342f d2018df95fe894c388acc944857403a5 eba5b24b9c3dc8cf9c0ca344f487323e b281da26ecd358e1e7e684d25d4dcaf0 21e930917f2cab28dd711af5650bdcf 8428d483ba327a2da11f6bacf5c7662d c91ed7cebef758f935836c728d324152 8c6d7c225ba8a152387133b1607f2aef 2dcd9c9795ce4471b65843dc986fdf7a b598d571630181e171e07968d18a8d52 cf4db3515ce7c603cda053036bd1b63f a015c48d41079f9219e48122ff512ea5 2fa5cce72c52f5ea95696f73b672b1e8 8d15fdb921ba675af592707fed2e148d 8188a091928db3cb489883f17c1c79b8 27d388a77f5b27db48186eab550b0d6e a0ce7fd10e80a9f9f0fb3e3d2a0d34c9 e2916cab74b3703763ffebf86d8dd00 b5fcd21b70bddb3fbd16d4490a10a752 af9245138b29dd19c8687ff9b0b4e4ac 32b6c232154f2f35550644042dd119da a15be5686c875d703201317d7803c43e 34878cff5db772bad810b14a81e12eca c15b0bca48207d9d8cbb8bac2032149c 5bf5096583e15c0080741efeb2454ffb 22f89fd9e2a9f1a6bb6bc0db07c71e8 d1c09e81d31e38868cbb8bac2032149c 84a119d032947cdf1da03d263d0d0387 fbf0c4f6a483bc15ab7a3d3a1341aba 7d019d0342f8a70f3bec56bff764ba78 83a7b2e11589b4cc5fc6df6674be3b9c ea35493dd0e9039e8d2d730aebe7865d 72421bcdcb3212f1bc2ef6ddd5c1612 3ced29b0f7f38bcb8964df2a32faa49f 3b3f44ac9d3245b1e7c7920f6a65a54d 953707e41b518f631125768e50c51e2a 76e0b10288997462c51b240dc7b068a0 7b405c1d6d2dbea9f91663a74ccd2338 31b5cb5dfaa253b3df85db41e3677c28 df19f437c753b93a72814c9aa90ee14e d5a2b159a5fbbc4c510e2ce46c1af6e 8494a1f6985e8173bcdc50d6b73788ae 17555a8b1def80abce101336817a135f 17a768e79ba434b91ca25a4447d3477e c8108de19d8a3005c5beea20858a99d5 b0a46e739da332985beab21ea89ae12d f644e0ae72dbe83d72ff9ec64cb596d 8b5fb1851caf5b4c5b89c9fa863d4b06 d2a3268e85d81c6c6bd365389d6dc6e7 f5ee22abc76f7491cc9651014a82e2b9 e5da166f78544aabd37035c74acfab37 7e2d4791502378f2593ebeeedbff73b be1eb41cc9eb4b04ae685ca100c909e8 be2d759412b18995946789884353d9f6 d334047dcbb37017f5f004a628d601ce f653f39d443ac6af15c0ed29be4328d5 12843b5b189bf39f7cf414b698427dbd e59bd11e144f6ca49aff919557ab16d dc2b5f9abce70f2b55f9a00acc25f137 8892a081230c9e0557b8f616df7adf9a e817922063c3b24ca296c91af58589c8 db49ee0d87af106f2de0bc4fc4d02dd6 2ee577ae974272dc9faa444e7f5fd692 8771f9b7cd6b7c81e724074e69c062a4 4a01490054b15c90ea5adc188e5a2fc0 5328231a28719ed240a92729068b6b39 b5eabf007a57d863a35a7666f0cfa5bb 3ea6bec3578d7a0a24e449d22891bdba 75418c9587b8eb0edd7fb8bdab16e83 4e37752b33506d0313dd6eafe1477be1 d3425554004d834f6dbc9d74bad392c 39a922f31e5a93bdc563fcc2752ece39 df70c07c2b0a066382241d99b4e87f38 8c9cb8a85aa36620a5f9d52c12457194 a105701680f658b8f92f3e7bff4c4ab0 f6ccf5b4afd9171c818b86d9fa7a616c 25bf067de33706e62bc36def1a7d775b 5d94769d9581fa85295994a5a65844cf bda4b8e6a69e1fc63f07ca1042ba5dfc 8e9de6e848ed53a248cfc982ba61d3a1 5101b79892ce920b6ee5c30704fa2d08 9c1b448ec62cb9fb36dd029536673b0b 3a62563bdb750b988b83086412477462 5b3b26c9ec974a1cdef028ff6a07adf4 c856e6b37c9e12ab8a3de2846876a3c7 f12c92ab5f422c07fe5adaeab9475bc5 de5ac6717fb307e6b01c58badc8bbc39 9d77156d64599e9b1206ff076758ec85 28940687b3516d6e8dd711af5650bdcf 7994498bd9b426cd37b2bb75885cfc44 16dca17207a6a2b87f6fd4fd84c364f4 7e4cb0c15959883242095a33119f8ea7 b95f97ba63ab989cacbf0573260a18d4 ff1bf2df4bc49e1f79add0ba9a2ff19e d2711d46aac0b5ed492a9f7c65daa58d 724ee53f18ea8e77cc166099a6fe7573 c070cc8563e2b3d65d06d6b9708d8ce0 a3a22ad51e59d79a2fe54017cbc6c7d7 5cc1b0be0eb9a6085dca6305fb9f97ca 1cdc625f58dc911518af974879cc252c 601bf25b4512502145c6cb69e0968783 53c81bd4b93b14491e6d59363e6e833 2bc74fa3617de19fd5bfda5cabec2102 70cf74bb4e1e14dac15fcbb4bdbaf13 d4c6f2749bd85e9a6a9633583f89b17f 360c1058f401dd27fbc060fd555478 1d86fbf39c3d2954222713fd18dc031 7b5e46d1cbe7c2de7d92b0739e572d9 c839f879381df0f0f42a90fe4baf4591 fc786a8d62aad7e7e6942c5426df6055 1a389652d23b9cc06bfa0701d875ff10 42b13b1ac18724f84b3c42e318f3affc aa21824de23b516995c7d6b48c371712 4521ce028e5009811866a0bc19f46a1d 2abe8d5b5d29ff52f7628281ecb18112 bfc6b2328c9c12bf283b00891f680579 978ab0578d8691ceeaf7fa9cda77a592 49a60133d6b05b8d19fb4103277a6b93 288837a47f55c0e9d8d964adc0b6502a 622552cb1f5670a614038d588fd1342f 34117792b1a8c180796c584ff1fcf56d 3f5fdc05fc572730490ad276cd2af3a4 29f890e465741b7ef8cb9d3fa2bcdc0 2314a3400230f50d14038d588fd1342f 7d8e6b132c64d909b161f36d4e309050 386b2caac16694edbab0cb5a4ccf2fb2 f55a514cc8f2d255f51f77a6d7299806 a27b9f94d052176af27383fc5a5a711c 8a9630332c2cb42644ac83b3e97ad658 deb0889d902f08bef51f77a6d7299806 1f438263a82a1b8919fb4103277a6b93 447856e1071e8b83c036a40816608369 9faefdf6814aaa975510d59f3ab1ed64 708e7253604979d06d83c04495f2aa08 8169b36ef1ae45ec19fb4103277a6b93 32c1445f65f4ceb23eec26c23f5bc80b 893e3f15f023e9abdba08b82bf5c2f3 b5b77de7a8a05ab4f09df371fae9d63d 1ff1912cc74a76c3b2152dcc3ff6a477 7dfdfe28e3d25a0d19fb4103277a6b93 50a4aa069dcd171937b2bb75885cfc44 2a56ff0143d4e69fe6fe3612af521500 b2c62e5b20b34fad5844a4d0ab925627 7c68894c83afb0118e8dcbd53cc631ab 5c9b1a32f54b12cf81f667e2a25e0619 1230d31e3a6cbf309cd431573238602d df7cced6f0e5e65c26e55d59015dabc6 a4ecec332f0ac0d22906e6acfda251cd 36d4a1a290c541aa21d25a6a55757584 82460a80f6e9cd8bb0851ce87f32a267 9a24fd0d36ff856662e682c9809bff14 1d4d7533d453ace4dae12f3947d07dec 758895bf2fa5e4b5e68b9e5f5c3d0eca 6b8908f72b78ddddf51f77a6d7299806 3af6ec685a6aa14e2f99eeb199d54554 2ea00b36ccb8d3baefc579970fcfc006 2b4de06792ec0eba94141819f1b9662c 2fb350e338cc61521b17743c18fb63dc b02c25874494cd60f51f77a6d7299806 8cba819b9a56da95b91b871e750ca615 5ad772a3c728b948d329896bbf26eda9 93d5203022d651c831ae8c8ff1eb3d45 221e8ea6bdcc1db614038d588fd1342f 37939caae967b34da14c5748cc240cc2 1dd6e32097b09cd6da5dde4c9576b854 a3ec914d44cd2bd8498bd5a555c21b1c 4cb25759388ec29935fd302efa96f6d6 ad708015fa2c131853227dcd0d547ba6 1af92afe68b3f837f51f77a6d7299806 3425e406f20e69efddfee72cbd7395cd b922bbdf49b4100659f8e31ca87c470e 429d58759c85f4750276e25240d21a2 2c16efe54c1368b297f437b37a859ff5 2d987393f7f7c5d1f51f77a6d7299806 d669c884e2a9274b1e7ef3c0866377b2 72b7ad431f8c4aa2f5520a8b6a5d82e0 332b2573bb3675cf14038d588fd1342f 337165c7708f17314038d588fd1342f 6ed6b121918d8f3531ae8c8ff1eb3d45 2bf095743bd8f21f6f37a8be59c15bbb 24f5497f13a1841adb039d8689a74349 4e664dae1bafe49f19fb4103277a6b93 15ca4d51db95edd783f3ef99fe735c7e 89045848f586c0a729404a50338e24e7 408199b4b50fca50f415ddcc43feede 27f8e4a89307406614038d588fd1342f 651270d31b03d1c12f1d01f48e42a6d3 1a477f7b2c1799e1b728e6e715c3f8cf ab1435d685c06277409421506a05b6e1 e063706e52feb2db039d8689a74349 71147c7ef2258b894a1a4db9532622c3 d44fb796a1772d5a490ad276cd2af3a4 ce46ea86a7f7a77b3adc3470b30138f3 916abea85193002adae12f3947d07dec d6f81af7b34e8da814038d588fd1342f aa36fd4d76afcaf8bdcda0bf7e7b4744 5259557e17d437954c90f2ddc14dc59b 241876321940a2c976e9713f57a5fcb6 1e658eaeeb68978214038d588fd1342f d0f30590066a88fbd5cba62773b8025b 7104877ee2b4f68516cfe1233e767967 a19aacbd84e0ddd92bf36b92481c5940 57f5a7660b1f186e14038d588fd1342f 51912ddf693219c81c8aa60fc1bb8474 2bbd5947aca68a81d329e53feaade57 d6176ad267c3ef92f51f77a6d7299806 57e1cdb6f179cbdb98e0d1738edd4f19 7f0a1abbf748d3b09a91829e64097423 b0a85031201b0fb1df6cfab91d65bb91 2c86b652e14005a09c39abaf208a73e5 65fce4b727c5df50e5f5c582d1bee164 47bfa972100a782519fb4103277a6b93 41149ca3a44aff87707cdefe012d0353 a63bc3a5d43888a962e682c9809bff14 79b544db8d95c3dbc1a25f36f85c3fd6 d1738a15fe737103917b96045c9b6dea 679010d35da8193219fb4103277a6b93 75d58cb9ca1475f86f37a8be59c15bbb 45d3384ab8d5b6295637fc0f4b98e88b 2c7fd96b46b2b5b5efc579970fcfc006 33384d4600a8bd0ad88a7002dfb37846 90ccc3b3b344b3ea2250bf58700b4d8f b2f2058ab083cfa0a8055fb11b774454 b2d70313d7d408f729404a50338e24e7 dd9a138fd557c44f4a6b6d001599a1e5 ae4b600e137214dfb675aa3c10a97f3a 9e88cb24b40dfbfb85b479b317175b55 645aa5c32b9fe34014038d588fd1342f 8918d572cff6b15df36ecf951968a8b0 dcd9a34a9892fb11490ad276cd2af3a4 61f828a545649e98f1d7342136779c0 53812514f0d50568efc579970fcfc006 a66befdc2b049fa3eec26c23f5bc80b 77371d342cddea8d8b424343280aeccb 874bfe0bc817ac827571d17c374fac42 54ee1ef79b340108e5b4d50aea96bfd9 583ccd71c56aed45f14c803eab703899 71a4f27e4c6fa0a1362d127df6d94eb 63b0904e68e5d1c6f51f77a6d7299806 53f4088679746f1193f685578b3d085d 2f6f16e5a1d36f3fefc579970fcfc006 341ef2d97f0f9091183903d8843a24ef 13d3462293023fe71f530727405d60cf 9bcad07a9c2e8e13490ad276cd2af3a4 9e63faa55910e20714038d588fd1342f 1bce3a3061de03251009233434be6ec0 e389a5eaaa448a00d6bd2821a9079b28 d7b69d5015110b1e2c5b2f528cea9dd6 5cfc913387c753f114038d588fd1342f 7833d94635b755793adc3470b30138f3 1149bd16e834d8e6433619555ecca8aa 68fce005fd18b5af598a453fd9fbd988 5a99fcbf7ad93010ebc1a7ae7c4c250d cca6e720741a6d00f51f77a6d7299806 4c6f6eb326716c8fc71d1873c074ffe5 33bfb06af948d3415cab680ae8f530b6 cb93c492c1c3c00a94c9842dcb05f464 8d61836ca7137a07291d22c7a0bd7119 c4dbc5a64db6c2d72a9a1691b6f98331 5b9919f927005de3b867e31860078994 6f84940f81a61eef2e9208ffa1a27124 9c113b80d75659ffdb8fa1712f9ee93 2715a63f41552d6c19fb4103277a6b93 b0b0186fd16220d4917b96045c9b6dea 24deb13c2dd93649d329896bbf26eda9 80ae351dff2476fd1fa9db366c777d84 480cd721e7bbf720b0eeccd21a9bc702 7402b0be6d04b45da5f9d52c12457194 a3cfcc4d567590e19d4d5dcd2cc33826 1f9cf65275610cff14038d588fd1342f 7e832bc481a3335614038d588fd1342f 64f47c058d0a2da68bc6f322a9608b07 bc1b55a6807caa9b490ad276cd2af3a4 5f66f9b4afd7d0bbbe99c53d7c66ee1 b3cea4461eb14a3164d6551b52610c81 222ee8debd39d5fedebd258f4352e626 a9439ca0eb112e7782287102d4d0c28e 7875815356fb41f3d772e458a8f80cd2 52687262fd77ba7e4de2cf65d389c763 c2d78f31b197e0bce2d881f085d6d86d 7dbdddc3a60664f9e87dd5740f9baf65 1b5ae67e2ffb387341fbc1e2da054acb 7b0f429c12c00dcf4a06efdbafdd7ea 21f76612b56d67edf54efb4962ed3879 828a2a981ec78e7c14038d588fd1342f 813597b7f538820ef51f77a6d7299806 a181227b44ccf1ce6199ff1c1ae229f3 1a38407b3036795d19fb4103277a6b93 3f8f1d7023ae4a1c73ffdca541f4749c cf2e145ae0b8923488df69d6c56c6047 16a5920c004800ca76e9713f57a5fcb6 bf264dae9a5fd53dd39e33fed94f56ef 1613148b579a747814038d588fd1342f 17b1927dbf59786a45b09d36414f81ec c6f1601208aa5e72cde6b082a301e49c 30e95358ed817addbaa0f6b191f18222 221153f680f3ef015761a0b53ed37cec 6d25000aa000a97919fb4103277a6b93 d97b919139287ace7842a9c47d0b96c6 199085218ed6b8f5f33e46f65e635a84 4e25ae1d1ce18c4a40ef1c8b63a628f9 c131c9feb56c6b7a6bb6bc0db07c71e8 277231dcb7261ae4a9fe1734a6086750 d50233ec66ac6ee2b70eac6546e93fd 8dc7bba62eabeae9b3af232f92902efa a8db9db73bb5a4dbf51f77a6d7299806 542656b66458b918cfc64925a56d7ba b1b9c6c7b55d5bf845ed290334fca9ad d116e9440f64d7a0e7791a1581855f1e 9ab89ecff5672c38aff5bf458c586262 3f8aba017afa6d94f78aa2d67f081607 25ce64639b8817065510d59f3ab1ed64 d0842064c9900af698e0d1738edd4f19 27781344ab489f2df29666f384be6c43 7a82cfb4878d1162986fdea3c9eacb1 54baa6e5d9584469b80b68728684f2ff 2a154c6f14a749179f6fd848d2db8a5b 96ce3abe2e2d4bd3ff24fe90298ffa71 99b87ca5f2b859988b424343280aeccb 36cf45005b263014917b96045c9b6dea 9e35945e9d768135d028c2e338a88f09 ac96d2fa0e2052a790a9ce3e4b15521e dd370ef3f3e8097abb9760cf9cd1a953 d863bd46db86b9dc2906e6acfda251cd 955d633562dff06f843e991acd39f432 dca3a1737e2e3c5c6d0fc9460109eda7 1bfb1f52f2200860c3eb4329189b69dd 62e90a6ed511a1b2d291861d5bc3e7c8 511168d4461d169991a3d45e8887248a 157ed8452a7edab161412053ff521f64 b4a72257eff26336d7231c5bdc5ab135 6d74c6092567868b65d5de7b04a51b37 61e1edb3150c71a1f2165a0df94fc0a0 1e70ddc0e4cef3a832a785b4a7e37e67 8e4999f0e6bbb791f51f77a6d7299806 867d1e4a9f7cc110b8df7b9b18a5c81f 23c65f2ca9165072490ad276cd2af3a4 3637b0d6db204c0414038d588fd1342f b2ea31ad8b8b3e19994626ba7fe8ddf7 6262bddcd8bafdac3bec56bff764ba78 7e1d225f13bf40d0d39e33fed94f56ef bc72ab493655beb5d329896bbf26eda9 d27b9c12f500c3142d19175e7d19b7cb d8a8701f3fb8855d4d0a79ea230a0577 15fad17654ddfd3c33defcb28e53dee4 294fe191a191f812917b96045c9b6dea 16632d002fc0eec9917b96045c9b6dea 875c7185cce6b8b0813204830fbed813 2b8d1c67d17d3911d9cff7df5347abca c87497b3c00b3116be8af56c801ecf41 beb7e6c36552f509de008fce66fdc56a 191c92adeef9964c14038d588fd1342f b653a75f89a6c24237b2bb75885cfc44 7cfccaf7557934911ee8243f54292d6 def69858279a9b23f841858369432cc 33bd97e462ad2a851b17743c18fb63dc 7598b1e15de58e67b18627bb8f2c00d9 18e4ebaba8998410ae8c9d3b8c4b9bc3 4774343934cead2828a3b1af7eafd3f7 4aba95b774b2cc2233ea3991d83e660a 9389ec8dd802a1fa7d7598e07139ebfb 16f90b5e8d9a36fe35dda488a4bbb1e1 b918cd058e822e00cce02970cdd7e7da 76bef187c092b6335ff61a3a2a0e2484 383e435cdbe406e76ab870ad2db8ed02 63e8ec717a68181fae1162148fdbcc5f 9e18b198e803af3513f0322d0d7e53c7 8889b2abd894ab268d1b9a1d97e2846 a37d0d0598d73b07165fd9581927b6ad 698a0a47dd9bba797ddb7abd4c043364 41c838f99b46093fdb5f60e9c5fe6c8e 4d8ec1a57f4ac78258db0ef36af1d3c5 a308db2269dbf79914038d588fd1342f 13f398918a8ae11b17743c18fb63dc abd8b30650ebda9c14038d588fd1342f 45d96e52f535907d40c4baf1afd9784 2056de97c97b2c85b759217db94d2883 56cafcac4df5308d35dda488a4bbb1e1 cd2a6bf7effd529de96ac0c4e1fb9b1a ae1754891182af2675da567c4f0a0f43 28a77ea1fc6b43f936460820a7040825 500fdf3d6ffbab95cb57ce1986fa546e 11007f74b06bd90c518b6fc7ed4f3487 b53a3566842e12b290a9ce3e4b15521e 541e331334c95e5a3d2617f9171b5ccb 8d2339ab19665ee3e7c7920f6a65a54d 6e4ea95fa805aca632a526e2e9a7e9ae 787e23d8521faa3a6b3538efbf4faad 61cedacdae156b4dcbae681baa9e61e 192ca330a80532471b17743c18fb63dc cc32fde4ca022cdf965e01bcaa1587c5 b55c43cbec762a54eaf14273fa406ffc 2860b2b5e16f4ae8c29432ec481a60b1 770b9528c04f99d5a3bafec3b56382db 5192e47e1e8267068907728f92c46d69 82aee3c5088d005414038d588fd1342f 8112da888f66bbf3c1a52e5a697bb944 a1a4f5670251b8314b35a7d7cea7130 1867c1751ae7bb2829024035009201d2 cf81e26374530f8fc08abcaf67cf0417 d58a2c86b9b71f6bef4e42d70375aed8 5cea034b028af000c2843529921f9ad7 b5c6ede83e55d05048f174663905cbff f4a0d0169abf306a754ec1f2eef2c6cc 9840eaff2718fe1214038d588fd1342f db49cbcb6a2ac87657b1c0b6d5084bcf 1059a78893d810bb14038d588fd1342f 4fbadccbdd689b18b8708912bd92e115 c805dab667ee341ca3ee83e6cad78356 c51e57530257f6e0e0771d4c079a0ec2 5eae999a81861da03bec56bff764ba78 608d9d8434e52a71eaf14273fa406ffc 1dcb4a52dbd349ceb9b8611336bc3051 4e3f1e4f1fc88029d028c2e338a88f09 b3346d1b7ced3daf1b2fbf268ed76a 354c37c168778a0bd4830313df3656b 3415f252bd71495649920492438878e5 c40adbdd817cdb7a14038d588fd1342f 9f4447e8dd345d33d68f196c7607adb9 1f620792984f66fd22c3a2386a9dfbe9 c3cb7d181b205d58a72e1f459869ef30 2c1c9fb6e940c636b1467c71658cc329 4da74e02ba23a7e98ec703e791db2af5 21bf3888008b7aced6d2e576c4ef3bde ad0e50d6f1e9a16aefc579970fcfc006 147a9f656054d718e10a48f2bbb9bef4 1ce97f222c9caeac14038d588fd1342f 294afbd7a0e90ba9490ad276cd2af3a4 12cd30f7f83f441dc13b22d2a852f9c2 32859e7af79f494a14038d588fd1342f 3abafff866f9319d19763227d95ac592 1f741437c1dcadc82d19175e7d19b7cb 77090c15f738bf3079da6431b0766445 3a1cb5501dad77f360257b24d454e22f ab38a559643b01908b424343280aeccb bb4c963786dc746855f9a00acc25f137 d7220a39bcedbb89a14c5748cc240cc2 2fc2409aa962c5553ca57f5648ff1b0d d47eb4149fbcd0c7907a5a34fd8df2f1 ba6c0baa0a122f8ce2aa36c9e5ae7ae 35ba544cb0a342e529404a50338e24e7 3ee93f4b1efe249bb21450114b9ae3a c2e4095266254bc1948a3bd895ea5ecb 9895736717c559ad48d8ff57878739ca 3cce581fbf55c31b8ccbec49bbc083f6 b56d901b6dd62332813204830fbed813 86a7258b0f094aa6a3fa78fb8c679d78 3f1af655a7e3ee57b838ce7eb80b48a 57183931e41c7aaa5ff61a3a2a0e2484 499242b0da957d1e33f2b52ebeafcf18 6bfe4dac77d317de1181122615f0a10 66240ded565b0927a8373ea4ea947e84 66c8df461f312684d329896bbf26eda9 60fc7123d6360e6d620ef1b4a95dca08 33eaa3a6a05575ab14038d588fd1342f 3a3f425190044bdb2efb565c08a63897 254fe5715b9de05db499b6b5bf6f9f82 18a45593c2ac4ffb6deee1099ca09a28 c722e02b37ec324463d444e16188727b de55a935ca4af29649a92ce7de587886 cf651c9562d9267032a526e2e9a7e9ae b5c61f497f9354d535c2f4da17c09efa 271cb05be2eb02c53b2e058a33951560 99d036d409c1fc366f12b402757e5b72 9fada8462006e138efc579970fcfc006 cf027d5b0debe18321bdbc0445d9f748 8f784e9c1bcf3f04225230e9f2d3c8a7 3561da3d136b4deba023804ba421cf6b 1545a13dc5b12f51f77a6d7299806 518cf789a696965b5e723252788c3d6e a9317911db005724f19c36a916a93d14 b8f0f62a95143a60c5ae767f471fad27 6a6c10088c857de114038d588fd1342f bed08d3f3d82bd2f37b2bb75885cfc44 490383705f78d366bf67ac39195100ff 304db04f545f53b021bdbc0445d9f748 a8395165dee1adafe0c381fdfcdec36d c81d3992ddcf2fb41b17743c18fb63dc 8dd277fd02903b82bc0e720bd48e2c3 872e3d94c4a37f00d9b53420a5458c53 dbe7fa11097535bae7c7920f6a65a54d 4146cfb4fce9055bf51f77a6d7299806 dd1e9b6cfe8c2ff65ff61a3a2a0e2484 48b2e88f7d199d43517a64eed9809d7a a702d178064c7b81fc078d27c856022 1914d0e6b9f0445b40e80a2d9f005aa7 19f0a14207f4f953bb1b55ae5bd11e93 40cdebefbd3bc2634c7384dbb75cab0d 7b1d07d932ca5890f51f77a6d7299806 40956fd98a04f34914038d588fd1342f 4c29dcad235ff80df51f77a6d7299806 4bdfbfa1871f2ca114038d588fd1342f dcba7668017df61ef51f77a6d7299806 1a201d0a99d841ca684b7bc3f8a9aa55 34d7a91d639613f6f51f77a6d7299806 1168fc14c294f7ac14038d588fd1342f 3a69f7f6729d8d48f51f77a6d7299806 14b9fdab8d264fc214038d588fd1342f 8b82330caa9b1a514038d588fd1342f c602f932c692ba2714038d588fd1342f d2964213849329b494887ea54f3cfb87 1c912a8597962f1514038d588fd1342f 139b38251b5bab5214038d588fd1342f 511d9b4ffb8ad21485b479b317175b55 79bea3f7c72e0aae490ad276cd2af3a4 3eb9e07793635b30f51f77a6d7299806 8a85b0675605ed8219fb4103277a6b93 b42e4fd21f39ff4a19fb4103277a6b93 120735afde493c277ff6ace05b36a5 9dcede4115b4379e2af4036e9c51cbc4 bf01483d8b58f0819767624530e7fce3 a5d21835219c8fed19fb4103277a6b93 b37f1363aa93688619fb4103277a6b93 a73a49fd2887a030f51f77a6d7299806 b6305089d351329681dff5c2e57ad46e a007a3cd5b8ca7fb19fb4103277a6b93 248e014f31771b31d3ddfaaa242f81a1 47da08d9c7cd7e104b3c42e318f3affc 716eba8ec4825ecb19fb4103277a6b93 218233bd68f5261dff318cdb0cb45ca 3230b6c7f396afff19fb4103277a6b93 c983108db7fcfa3619fb4103277a6b93 374fe2584abb594da094848ea4d06501 44d55ed577b77106599dcc439b161a52 6336e1ec8679ae5c512941e37c7d7dd6 21e0ce3126c67610c397356311cbeea4 eaeaa6879cb8f5193a9b2e04441ce376 cfec2302eb084b5c58f4eb05242852ad a65534c7545a4b3a19fb4103277a6b93 b7b15c6728478971bafac5c6f2fdd4fd c05bf63cd7818b6f19fb4103277a6b93 b79a15077c4a662719fb4103277a6b93 7e550e32d80421aa19fb4103277a6b93 a55140d6d7b1148519fb4103277a6b93 a7be35f955f8d45419fb4103277a6b93 89155c23787c151219fb4103277a6b93 7fd704652332a45b2ce025aebfea84a4 1b28eabac10276cb7062f2d72cde5c95 918ae8afec3dc70af7628281ecb18112 6f0477514eb4f9319b0530265e62c9b7 e922a4ef330ad87ca37f3fc191551700 49b2df85a32176c8e47780c3e225251f ba5cc31429d4c97479c67f086ffdd34 b76e0d43ac0800366a035d0ca8a43948 9b5b636b4b412d33d93768e7b9b1eabf 13181141c0d32f2e593ebeeedbff73b 4760fede61ec9babef410cd6a99ddc 93e652f343412a3e1c8509b1d97a23bb ee3d0be16a4499b7d8ce2b7ddb5bbcea 78742b25c20ae244cf01bc59d215f0 5ff07557bb0a3a30dbbc9440457e303e 366c86849245170262f6790b971792e9 ed6704f132eebc3ef13ce777d031b4b2 2c2265c2a9f3c886d0250e0e48027a4c 48484a86775668cc7e77281775c253e 2082b15a24a55e52cc9651014a82e2b9 1a525427776b39259c89c86daa5af59d 1f899a4f5418158f6721e288acfdbcb2 4424a906da6fd4c961bf0ba277ea473b 3d87710d90c8627dd2afe8d5254a0d04 1e887a97e283f6dc4b3c42e318f3affc 27ff0317be31b5932c4e6cb98409dcac df4ce626dc8b2a744b3c42e318f3affc 5319006bf5783b6919fb4103277a6b93 2d3a484f14ec3d4d7b11ae648ea92233 732f5f4226ceba1e593ebeeedbff73b e92955e3e3ee33f32650883217a11488 34e48812eaf19420499252a7ccb366fc 44e151bc576b4b059a46f459dd13f5c2 97334ba30676598958f7bbfa65d864aa e5a4cb87310ec996e649b526d4e1735a c474bd0e12d386dfe25bd42000b74e3f a46f3d5b1d3382d5cb11c9bb51caa476 785b692194203f119fb4103277a6b93 1d8716f741424998f29666f384be6c43 51396ab24d97a1bb245495d3641f83a4 e2c68936d051b926646568c803ce68ef 4ea78c36488dd185f3598efd14e493d5 3513af0a9abe4b48f13ce777d031b4b2 2a027aef8813a131624a1aaab5ca52f 8e6312c23b6ac12f956c23e7ddc28c00 23482a90a12a7052bd184e94aa5ce5e4 c029d82ea1d3af4e19fb4103277a6b93 99ec963187a1cd2593ebeeedbff73b 136d5a16b110c84566b7da89cd9376ad 4f5611a5b8b1362e73800789ccff9705 55bae67315330e0f131878391e12e811 98b6c00c4fa346cd187ccdd3303d9e5a f15d3637d11e93f5dd17d7a192a3a64c 9ae05089e29678adeeacda4374ad94cf 26891b80550301721a648655355dc699 7fe0602271e7b31f52db1d2b4104f173 c281babcc88358f31ff05e2259c2ba15 13f5779fa224ee03490ad276cd2af3a4 532e2a8e2ae6f5616bfa0701d875ff10 d5b99ed4075d9ad559497798da6e2013 73f7237dd7ed9c1d593ebeeedbff73b ffc0bf43dccf71865257cc5c33f9e8a3 ace4472862ff3f6d917b96045c9b6dea 615d9c2b37a3616ace8417aef1b7a422 7bfad524f6a550f6a6fee8e2140acec9 c951d9b4f3da0b5519fb4103277a6b93 43c435a4a10d90204d724d9ce5af6d8e b581f1d0e58ef9db584536aa725442da 525c959a4a09aea164def4b29bf333db 1579af0fd3cb306154b2f0044ac86c5f 64ee5d22281ef431de03ab2a27ba7531 2528b8f7ad0a177e1491843220e463ea 523516236632fbc8c799384bc2c5517c 67b1d2a43f266f4bf51f77a6d7299806 725def83aa65422dd4fd21ba7448467e 98f43bc0ca2c510ea12caf23554642ba d7280c7d6dbb6f20ff12919fb1541da6 173d2bf95fb2e6353a9b2e04441ce376 a0a164ffbbbdac8d52979c729a1f9cc2 82927175fc00ca7e593ebeeedbff73b fe45a0e02430b195b6f5fb02f36f9480 34a2341fbd255d82b8a06a6203bc49a9 98e474a6bbaef456febad4f49b26ec52 2e17fbc8ae8989911751d30f076514e f0961a7006186493df6cfab91d65bb91 e596ed19966b698c10edd100dffd8d85 7669de4a8474b6f4b53857b83094d3a9 dcd037ab067a0fbc14038d588fd1342f 152161d238fbc55d41cf86c757faf4f9 cde1943d3681d3dc4194871f9a6dae1d b6694e5bb51f8861f51f77a6d7299806 d100d576372b75bcc6b705e3bb4769f5 543eaf7f7a9885d57cbbb0dbdf037373 f5639e976f7b8e70a6fd13ab3827d508 e62a984beecfdd9a695c69bb6f9606c8 117c47d75798788a5506ead0b132904c 39b29bb4fd8140ac9829306a513f9466 5b94025a52c244bfc51d071e487f31b0 f6bfc818e9e265b34b3c42e318f3affc 1c2fa78dbf2d2cda9e02fc85f824870c 7b5b2e699dbab90d1ead5d83d8c2f7da a0608ab77f25ae922b8f1e4489d2e1b1 40da067ec8d56e2242a61f5042a573f9 776c31753fadd5593a1c86745128d0e2 50766e42adb211675e0d6e917505f52f 20050b94da092fb8803805d815ede61 c2294d5c7d629f11b17743c18fb63dc 32cde5adb86d540a2eb3768aa5c5fa1c 382d5ba8f3f89385debd258f4352e626 1372c28325f2794046dd596893434005 3a053bc6997155674ee2933c1153f63b 25f1d50f80494d624b3c42e318f3affc 4769bb2062392beb453a4adde9273930 711c7f25142a3e2a57253dccd1b3fd5 398ffbc5870c12e1b5c63839abd9baad af6ae25b2e295c36d79b19c7c4f0e293 b10ae372f7988e3bc242632b2a8c3129 ff02fa8cfce2d39113dd6eafe1477be1 6658d651878eb023c7db9c21ccfbc4a1 8728e0df5b94173c9b709c9b379c59d9 107bce22d72f322eedf1bb0b62653056 6b036756d21b6d8548eb521885c87e13 bf335aa14157162b6f8304908c816659 cb643270a86e8fcc19fb4103277a6b93 3d7301760bbf315f3598efd14e493d5 9bcd5c2f575295283cd8f469f840fbd8 1429db0e06466860dfd64b437f0ace42 34d7f8dbbe80413c4ad33b69f9597739 592ad41d80d018a2d614b159c22611b5 884edfe9e34533543ede9e7417860fbf 325fcce8c386f813e20babf15421d6de 36ab61ce3c894d6514038d588fd1342f 48228cf2207c7af5892eaa162d1e35d 13de905fd21e501567a4cd2863eb1ca 804b776428062f18f024b0f23b15c6c8 a939afd0e1336d17d20e3ea5765d7edb 99175131585f4cfded403132b02528bd 1d31309c617d32b51652e2e95099f284 2291855068cbe57442b5d6d90d0cc78 4a910d2734c9cffb44949d7685cb63ea 54cdb325265e343619fb4103277a6b93 9de6e26211d151931ae8c8ff1eb3d45 b64277db98afae7f8efae927921987d4 1d19f508f104e881a239479de51795b2 1e6d5797be45c5a4443764597a072223 9504e9be67514fe9c862eec8232fff1e 8c29f480d31a1a521908c34adf823c32 e6cc5fa521f970874c6deb9ede0648df 6703a4ef8b0ce866a6fee8e2140acec9 5f5150a80e5be6159141f9b58470d646 bcc3c5da89afe93517a7e95ef7821038 b0ed631f887c522519fb4103277a6b93 cc4f3aff596b544e599dcc439b161a52 897e43119c6e4b8710a82b807fbeb8c 8760843dbfc059d6c242632b2a8c3129 6cc0e9deb3b519eba347d2a9b736d5f 8634968c859b2dba5e4b35ff1ea95f37 4cd5a2a90a9bdd5eec2fdb822d0e9d44 d2a4faf6613ea1e66db434563c7f5ea3 d8142324c33dfe7595bea7c29e873d16 855407f176aeecd6ee7d178666aae23d 28cc5741095e9754cc9651014a82e2b9 ead2f0ef7103c963fc1f58a995f231d1 d55d14f87d65faa84ccf9d6d546b307f 9f5b090a3697b05f8f9cd2ac878055af 8ea11732a1198be1dae12f3947d07dec 113a2544e062127d79414e04132a8bef 25bcc7d412b1b3f27713a8d3e281895a a6ac0716e7f056579f2349486c570dd4 7afd499e9b3a2e0c1a90a4432f1af114 6d32f20579c9f422843ead12644a79bb 83f9051ae9fb1598cbf5d61bee02065 6043fcf2ea4aba3a8888e7425bc4b85 5509f181ac72de8478eec18a8a3356a2 c43bb99091f5a02cfd60059ad8523f1a 16296126c5a0b92ea597952f9a39cf73 96ee3d286bfb909a204812d6a020ec9b 6ed77417302eb83832a1c3052eaae289 1441ae85e34e1564ad33b69f9597739 7d2032e1af7fb191cabc196a7f35f1aa 682bc1622b438e58dd97e8e261a01f65 6f98760567bd7f69bd16d4490a10a752 f9f7fe005455dbec215b8895763d1ff 8737aff6eced02df3598efd14e493d5 d4704c12862c808b593ebeeedbff73b 6f08148e6be15ec812ad7c55c944504a 279150abc1b0b0b75369e32fb818f337 92720933afa1dfdcb5c1550bc8448972 3d297a9092136d914038d588fd1342f 4d5adaaa9b5d9d42ef188758bf2e3a30 7140d5cf3fb0c528b43753a53e4593db ff213b889d304febb6f5fb02f36f9480 f1e1585a89e6826a1d1a08d58541ab5 978c47d21e5c66c6f519adc9991b5f11 4538a9c622fc554dc048a125b47d14c9 9ecd7b01b9be890d19fb4103277a6b93 9af15fd5baed25b64b3c42e318f3affc 1cd54be30a2aa4effe3e4e51c69744ad 40dccfef363dd1474b3c42e318f3affc 17bcd5b12b4c3f96d8f5a246b73a66ee 6226851e0bf7fca877b7247857f4c82f bba610163b83053514038d588fd1342f 526c4f841f777635b5b328c62af5142 3b72c4223eb452168f5c37fe197319e1 946ab73b9f05a85ad5b24cafb84903c7 33ab106bfcc881b14b2bf798c0452b7e e80bb04a59bd72691b17743c18fb63dc b10f96a79a4fbb039444333dad662f20 f144cda19f9457fef9b7ca92584b5271 17fbdd9d8e8b3e8dd2afe8d5254a0d04 a03ca96c53c69c05f8a51dbffe0021e4 6caf860b216a951edd97e8e261a01f65 899a328f7c0292c5998b2b87439f61bf 3477f074d38e57821a61e560ab9e3736 3420ef8b6b20595e1b7dbdf53d301715 7882a06b4612d536ae882f622d5cda14 22ca96b824795ba8ef188758bf2e3a30 605b9827489d47a14038d588fd1342f 12766a14eb23967492d9da2668ec34c fdfcfc4e9daa45306aea2f18ee404fd5 8cb3672d113ac9aaef188758bf2e3a30 86b91784e9f32b8f10edd100dffd8d85 5f5ccb837124abe11298312f680c9cb8 adefd541f3b51aba5f5e789acd4d1122 8ea0e8e7a863b6dab2302e21338c08b 7d532887fcd3aef82ddd352288e7672d 3b66e52a5272e0b4851fe006c784eab 9508699d8e6112cbc6b21d0fcb810056 430d315cdf5b3ca7963845a6a5eacb6c ae9d32ee01af191a32dc1e76c3474bc 37b3c4bd619d1c6541ec70becd1ecc7e 7e2d1762fba4c38112ad7c55c944504a fb88e94765c2b3e9f16b2a6e0465cbb7 6580148c3214df2395ca4adb70946a21 388b70afc2bff624fe7ce990d81a91ec 95c1e7d85da0497fc1a61b0a501d38f b567bd1f46bb3b347cf414b698427dbd 2f85863e90aae79240ef1c8b63a628f9 945a038c3e0c46ec19fb4103277a6b93 e5d5c0cfeea2fdd11b17743c18fb63dc d65ef2797ae836ca8930422448288ea 8481271bdd974c424b3c42e318f3affc 224ccf9ba2b786d953353c404519f02f f990194a8401d8de68c2f5eb1dd4dfaa 371b7d7d2f2d334c574754e046bb9a7d fba76a325f400c597178e3cb5f806466 483518216d58f2581b7dbdf53d301715 fb859910000d1e219b709c9b379c59d9 4c395a8a8fb634d5febad4f49b26ec52 9cf1a9ea641d548a7e1dc33a9d8d260a 8f05bca2d46582483b28ebac0b25d03d 469a61462432d5521625c754b61476d2 6024afce9a12fd87318b348b36fba247 d1016939207fc52841b7cd2d531f3797 28ce909659a826d1599dcc439b161a52 330caf403f42c12ace8417aef1b7a422 53319f95d4bb6a0beaf288f952624966 9d1886cd5aebab3019fb4103277a6b93 b48603e4595bb61ab6f5fb02f36f9480 c6956d32c9748c746c7c6307622a722f 373b91686b4ac7859829306a513f9466 87640cfc9e38bbb3ec563cfb0e79cc4c 85a8fa447231a4fe2d19175e7d19b7cb 9b5e8c302f7e6fb4593ebeeedbff73b 2d4bda48253f35bf52979c729a1f9cc2 8d0d0661c57bdd09b6cfb56a0ae182ff 11a47d5cdd42a5104b3c42e318f3affc 7ddd55ed6481457d4211cc92ec35b195 e2ea1cd546d6cb4b94db33559ec0df30 e09afc136efcabd0dbb841c441320b8a 4b1598dc0e623eaafd86c4a0427c047f 628d837b3c51f539dd97e8e261a01f65 35c611ddda81b9941206ff076758ec85 f4526b250d9ba847a1d83e910853d9db 86d2aa8a80fd9f38dcdd187a6a5d68ad 4f0d2de3a60f247662d15c83b2279a53 515431e0c0854f1cce8417aef1b7a422 93676b6ecba89ebb38449598167b268b 4385e447533cac72d1c72b9dec4baa1 21ff7152b3bd0bc3df63d1c7e43c783f 4fd35417e08ffd8597e11b0362ef2f51 4b9c06e04d329213843ead12644a79bb 929614d79ee9b3f7ba83cc8b3ca4d7c5 ce3055223e53a46e67d4ef1ee6cc8170 86c169593e5584233af1c639b9b2ebcf 1cfaa8ba4979b36ea60b4d749290e4f 11b36d8f9025062513d2510999d0f1d2 1712200bca469561d20e3ea5765d7edb b9faefaee3f409ce2d86e6f67ef12498 c97af2aa2f9f02be9ecd5a75a29f0715 42dc453547b31f0b71a782a4379556c7 824953234ed5ce864d52ab02d0953f29 f34cda8bde3c79709829306a513f9466 fe591a1cfbb6219afebad4f49b26ec52 924339df8bd64d694b3c42e318f3affc 46f1ec4173d32c0bf1af69e9778c153f 2835a9015c20d891261770c74651d29a 3ea28d2184d19410c823a47daff020c5 c3f48348482f8c5df4ae8c93f4db5e6 6897c646edcc98c149d579ea0e00a990 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04379243_test.lst ================================================ 8343d98e3710f5bee1b32bbe69d5bc15 b7cead95e18b570d2c97486f63c12d76 86b48365b2bd587e61830bc1b4d6c5ea 237e15796ba16d86e1b32bbe69d5bc15 73ca85d8666e7e26e836e479c0864af1 bb1aa2cdf216d348e76bc197b3a3ffc0 92ed9344484dd026dfd21203bf8b4b46 fa5dce1043f44c06ab88e3acae6e8bc5 631ab9f813568a602b70eac6546e93fd 233c497df4d252aea5e91f4d594e20e6 130d574de3f9d7e4c3bd24f986301745 46f6cbaf4897aa45aae567e8dbab47de fa72e9cf7308066b1c072ac0b83fe07a f323d90dea57815e119555fc7462650d fb59360b5cfb54ac6f74453f2a3da519 7c1bcea89b0037a2d67bd369ec608dad 7cfa4ac4e24cd680c3bd24f986301745 abbdbed926968014b3c42e318f3affc 7f71383698c24d4f43dbb6421d614c0d 7fadae39394c5622c3bd24f986301745 c5a4cea5107d72f54b3c42e318f3affc c8cf1c77bbb79d214719088c8e42c6ab 7982e2f2984978c6f4b6538438a0b930 4f2eab1aa639ecdc6b17bdafaf39f370 5d7631230b4fab707934a0d24a61231 cf076ced8264a480cce90f0d61ed7a70 e65066d6b0b83719c3bd24f986301745 79c5df613523a462d42b9650f19dd425 159964114c1991b37618b16b281bdf56 bd25dfa62c3c2cf772bd03149507655d ad61a5bc7cba29b88cc413950b617e8f da0badcc10ee1a4aea966ed2fa6fd5c0 7610fa5f384cbfe2664b3b9b23ddfcbc e153f757330a4ea3cdd1f51ef2b8f2ed 52896ba4c6c35090d3c1501c166e6b2a 90d87b4d9a5a1e78f4b6538438a0b930 ba0cfe7ad9775de3276b6f6d90ee3a83 17e5a64889ca085fa5526f91aecc0c37 50894123f3f237c161062d371b5548c7 8256e81768151f74d931803ebb8c8c44 768cb2332a16fd63855931d119219022 36e167a2c51751a630bbd4cddd04c77b 1f3e217cbc871152d7465eca206fda6f fb2191ec35ad66da30bbd4cddd04c77b bdf7606e8d493149664b3b9b23ddfcbc d533837495d31706d4bba81d85a6a53d 7956ac7aba6295d1c2fd07f66cbad0f7 fcc387cf43f5c63855931d119219022 1ca75076bcebfac76c3484ac7eef025f 176d3994129f9307c3bd24f986301745 41cdb5b619790d5a74eb542502c2205f ed320d80089655bedf6cfab91d65bb91 b2d9065a028e52c7bd1dc9077c6610f5 5315fe89ddcd618a6b9a552adee29b1f 70f1b5f74faa9bda664b3b9b23ddfcbc 7a33f3e6c8a1cd0c9ccce4c6d5bb195f 656aefa835e5f6624b3c42e318f3affc 72cfb60a075369ab7252c133a7e17d94 8b4ec70a3c1283b1fb5f8baea920e189 acafaecee00323af7ff6ace05b36a5 e3b7fbed310c2c397c8d78b9aede742 995f33073ca76ab69856fa70a578baeb 7bbf01c219dd51fd7d8864caa856253b 46eb174e4df0f2e53719086e0b4ab8be fad9dfcbb4c1755811cdd52f3d07553 889c9aedc4ba47592fb02b79d375eea5 cd91028b64fbfac2733464f54a85f798 e5a84d7ed9a5ce097f4557c0cd5f53a 203d58d26d1546994b7b33169889d14c 8594658920d6ea7b23656ce81843 fead7e0c30a347b1710801cae5dc529 ac6b9f1d494c9a007ff6ace05b36a5 9c2fb771ec6073b37ff6ace05b36a5 2e7a728b482bd2d453e946fb2184f0c4 5243b5491a4f8a16a2b5862518c93 a9b81cb82f73f249f7248d9dbed7a7b8 211f8bcd0542292a90eb1f8a00f61726 55d5fce641343449d42b9650f19dd425 2eb503dde3cc027d86c701087a194026 f99ebf0f053140525a0e5699b3040a35 cc554812025dc498e7ed5b5b11f935c9 2eb4a0d015b80a8d9ccce4c6d5bb195f 174832b73cd6d91c9856fa70a578baeb 199881390e6ac3a89ccce4c6d5bb195f 10bb44a54a12a74e4719088c8e42c6ab e28354127815445a83e5416284930195 fa871f2f88b933cd7a63d8989415726b 9e5926bfdc7f01749e65a3d2929a9516 8cb6a2e9ba365c94593ebeeedbff73b 3cec584145ee513d635418e95eea8a17 3c4e1361b066ea3b8ca998f0f87d0c84 a38405108fb416d8356ca1f9220b9968 e1bdefc225831db150fa82c2f036109a 2406cdcd4c60c84132884c4c87a2e061 f7ec331aac39a17fb129901f80d24b7b f95f6251339b759b30bbd4cddd04c77b a8a68d6e43cc0e094fde46457697d80 bbc451f0431c1b06cea52a85deb0c978 ac424c33c6fc302355f46d55537192b6 bc29a2ba03444764c3bd24f986301745 40b48121d1879be2ee0605a41c3320d6 67a49674df5b8a44f51f77a6d7299806 370b45eeeb9b11416f04d49e4de95b59 a25141a07c77c25467de2aaf749e5256 1b805da9981a6393f454e62143e2dffc 8569fbd5e27a1845e7c7bcb951a9c987 a4fcd8afe8b6de585beaf00da5b709c2 3838913e27df8fe5287005440c82669a 6d09606aeb54b55659a44e6453790000 39cf5ae2b497715a84253b2030fab070 e2e3f057399a2b41276b6f6d90ee3a83 161be2d2421c18154e61d5e9018b6ba9 618469f067751604b0b9d11504ae34f c3a9dc47c5bf10aac3bd24f986301745 c7d36b8a4b79f89dc963b248f3fa9d25 ebc82e7df36f6e9a33963916b86d221f 40b632472f8e69a7664b3b9b23ddfcbc 531381f5bbc69e485769b3af36a2ff9f 55457cc3f0e7d0e06bcd32c43682e841 bb5dbf708d5eb7f82099f9e22ca45b04 9f1fcee83cacf964f4b6538438a0b930 8f440a7c0e2af79f3ed0ffd59feeec00 a656b27fafb027dbaab26ebe15e9175a 5385893962db72324b3c42e318f3affc dcda90e411cb4e35506d1e1cc84da713 7b2af227264af938d42b9650f19dd425 43321568c4bc0a7cbaf2e78ed413860a 1028a9cbaa7a333230bbd4cddd04c77b 5970844b794a55a736d8dd30a594b2af edba7eb533ae3578ece232edf44331c7 bb93a65aa5768c557b9c6deef486a7d8 e3cf80e575ddbc03d706ecb3379aa341 83248f27f069f0fc8312881285c04cb3 3249c3ad90085a9e98d5fc0473d00a1c bd7b7927d8e36c38c563fcc2752ece39 bba5ce8555c8fa89ba18ade30e563d37 b9e3e65aa754f3b49ccce4c6d5bb195f 34d82982f75a6249ccce4c6d5bb195f 904a4c3f1ecef5f852046ee916d15a12 679d57762f6ae711b282e6ae268fb5a7 9b8e6eb835f0c8bcf37af16b2893f1d4 47317755c82114d5c3bd24f986301745 f4b820ba5a347d939e0a5cd76ae8e45a b6884eb4e95d851b5f606243e56be258 5d3d902051858e56ed1397afd2317e5b db406d9b2a94bce5622d7484764b58f 452a33df06b678c6822b5ad61b22977a 68ea1f319a9d724ec3bd24f986301745 da745fe2b26f5d9b9ccce4c6d5bb195f e25fdb977fb867fdc3bd24f986301745 cd09a9641ea97d873823cce3247aa03b 223fbcc813831d8c6e526771d2f7444e 634bcd3197e337aafe4e4de1adda2150 eae36b396f6b5f97664b3b9b23ddfcbc fa345f8f107d93b9ba70f71694a4b74c 5326de43a392840657f40ff86fe708ff ab2967188299bea54cb0654f4cfa9684 4c7931492b41f960d50eef20e0914a48 59a1703cb9320c018f49a52c8d710d0f 7c46b661b94fdfdd34528a88ad1d85d3 29d9c6d84c6a126917b431cae0dd70ed 889f48aa85accd2ee73947fdf756a329 23acbe1f91d445f91ca1c7e576bee6b9 2602a7b129a08e42c3bd24f986301745 9162c1cfbd1e42db9ccce4c6d5bb195f da1e75a8647bfd919778416969ddad32 416f41390bcf0f87a961b86aefe617fd 490eb3a23cd0ec4e9ccce4c6d5bb195f 399680cabe38c8e27b3d8399a9d05045 2182028f013e7eb530bbd4cddd04c77b f907cab3a8373d56c3bd24f986301745 419412b927d11c7d8312881285c04cb3 cb1cf4ec74b4aae217923568dcd460b1 38c184010d3dbed1d0c05eb40b42c942 1bac0eef0193952558df8eeaf3dad1c 73bbc651e2d6eb22ea65c47b660136e7 94d6518cf1e00eaac013a7bed5288654 b70483396e091a75808b6f0b77e3bec3 2ba8eb5ec0a05694593ebeeedbff73b 3c9a23693b76e2f8acb16624e184454c 139e0706288b7ccf1657aaca7aaa9a5c a83cda80e5c5a0fc3719086e0b4ab8be 6cb965ebd6fe2e3bd8d12f352b5e1839 53cdb2389fe5a5e5bc78bb6f3ca89e4c f82a5f3c2a57655d825da2b9ec9c8c29 575fd4acf0112feae2b24d5cb1e4e616 735acef5841a826b6ae95494c18318 194b279c7e892a2d15fa8082e5524f79 1040cd764facf6981190e285a2cbc9c bb838e62bfa44f538705931e60ead6a0 74c3d551e32a1cca664b3b9b23ddfcbc e8c01f71fd941af11190e285a2cbc9c 680d4a8b5a30601a4b3c42e318f3affc a10ed77ab3a714f43dbb6421d614c0d d62417059f78e8e79d2be74cfb51ade1 f2b3a2f7c9a4ec19436e6787c76ef3f0 1af5dee23444c104fff16555386d173d b8c0ed645cce028b3fa313db82fc9cef 5292f2930f188e0a7ff6ace05b36a5 77ecc55547840f06d42b9650f19dd425 21aaa0dad37443f3720c3a14515ab23 ad86ddf54e0db02c5d91cd746759626c fe20b0cb9c6a922d58df8eeaf3dad1c 8f05326e122a6b973eea2c65c18f73c 1328dc6429d179d056f6ef8b6ca8f4cc 72cc0fe296b9172617271868b642acd3 2766a883126503cac3bd24f986301745 2a43665ce0526ec3bd24f986301745 6f2ffe8c014a6a458af30108ea9ccb6c b117aac2e13630bb5d23c9bbb429abf9 3683fdc45dc98b8955d054336de5edb5 b10d84b3a04085b17618b16b281bdf56 c0a18b8e41041386e1a698146efec195 57fbb082f660c4f7716b680dedf77108 f2a759729bafbe88fef3fa725923b557 ea60054e04139d95b90b5e5b769a3ec0 3c686ac317c496f9a71c812e027f94d9 6f88879125d12e03492d9da2668ec34c 1abfb0c03c81fc2219fb4103277a6b93 574447022c4473d455f46d55537192b6 6724ae69c0bde4c09b7dad6c9c46bcf1 d0b6fa6b908473b05213cec267286d18 91bf48934d3b52ea36658c6705d0c08 124cc3b92266c2767156f312cf4e035e 202e7b5c3ec079e299e8bf807e902261 827bfeaf1de70f08f7d9678498f2295 e37262abd76852ac00ee852f6d8aa3c 388ea3f8ba27da8b777b6246417c94ff 28ce06aa6f25b39f2d19175e7d19b7cb df5b55da209637624b3c42e318f3affc 7e3022a7bd00eb4195b8ea6a366e14d e9a68d0ad5177d24ba5342d638d0c267 4309b8cf22f0382917271868b642acd3 c04b363fd824528bd42b9650f19dd425 8e7c894039ae2cfe99e8bf807e902261 90be5de0faef91ef3f7e27638e63d848 d91619d6c9915368e6c5cd45aa112726 fd487468f7a33adbb2a155afd9dbbb0a c35a14f84985f92a9856fa70a578baeb 4e928377ae98ed8d99e8bf807e902261 98b4af37112000d6bbd07219dafd2111 f6f180c3e72caacb5077539b37310c29 cc58de930acd321fac242c3aebc81b2f b9cdd373211c1d406349f6b5431fb3d1 61b88b501933ebae8f7068c66465c4d6 f718cb5d6202341dc183308b9aafe2ca c083552372e71f9c7ee217c21e683487 aa54c2e6850253ffe08dd63aa50202d df811f7a858750875634c21965ee6bab 397c56f15e547fad1bb088904f7cb154 c31fb1b1dc95160d8f893d87da13e049 82b69c9b72a5159ce76bc197b3a3ffc0 3144ba0c286cc61f490ad276cd2af3a4 d40aa82ee8ef7f674e0fb7a6bbb665d a45a7ba9a2842a55634c21965ee6bab ecf3cc67ede747adba5342d638d0c267 bcdf93ab467bd7d84fb315ce917a9ec2 b2da5c4c116c40a241b160b9adc112fd 30de7eb171cb381f99e8bf807e902261 f9597fd50738ba45ba5342d638d0c267 734c761c6fd2b260b4c161851ed2b4e4 75b308ba45762ad499e8bf807e902261 d4fc029d3836221b76e9713f57a5fcb6 f954f8a605974809dafcfea63f0b694f eb6ded7c35e0a3f69856fa70a578baeb 4dae8fbaa2411c5598e0d1738edd4f19 eecddd2b28a9e59866f379f51753f72b da23d0bdcd1de093de909714df3390c0 fa3dcf1562e5f60829e4b5aa807bb4e7 f96aeb7884a318bee76bc197b3a3ffc0 42384087aab891baee18bc48b60b36b7 f621e2ad900ad48535836c728d324152 3c475d9f0433a7eaad2650d014e970a5 90c19c729cabdb864b8710a3469971b1 987b7b49a1435a4b1b17743c18fb63dc c5ae96124c15c734e6c5cd45aa112726 ef1e4af0d76ead1afff16555386d173d f0d5eefef970fa4b9f2349486c570dd4 77b83ff0d0eeb34e6349f6b5431fb3d1 8eb366f4f602219b490ad276cd2af3a4 87dda49474723fa816a2b5862518c93 8be0acca4f67e4a4ea966ed2fa6fd5c0 52eaeaf85846d638e76bc197b3a3ffc0 594a7dedea7abb21f77e460087130a90 23d4170c7a0a2a014b3c42e318f3affc a1446962064bdf3ba5342d638d0c267 79e3d485572b54bd9f2349486c570dd4 7b5c5d7e3b9d89b577cf3bb06f394ad ab8cdc829a360d59339797c21e8801b1 928ea87878a7bbe26cf876b69450cd4e c8ee4a8b703180992985858e6f5832da a4b2870ce7a54b8eec11c6b035aac769 f71296c0a7e93ec282db9fca4b68095 8118d53cd86b7aa6436e6787c76ef3f0 678f5f5a8c95b0508cbb8bac2032149c c91c78e14fccbab316a2b5862518c93 2e2894138df855b26f88aa1b7f7cc6c6 ce3c408a60cc0e19e6c5cd45aa112726 125ef28adc874f72934a4834f9d7586 e13f70868bd5e3a08d9d8badd9c0cbf8 686a09b1584249ecac3c355a33b4399 6571fbfba919ac76eca66eeb3eb4982e 3f0e61a567fe7d366349f6b5431fb3d1 d19b4bde0766723c9b3bb0ef2a08be04 6f97636bb2ac5d599856fa70a578baeb 75f9ad7ded87bffe1bb088904f7cb154 676d05aaaeecb8a04b3c42e318f3affc 124583cd4b54d9c01b17743c18fb63dc b69d9e876e7a80a29f2349486c570dd4 cacf61ed869db8e7f84b0be7f50940eb c399ed276ed35cb9a6ce08f0d82ba063 2fca68e0ce294506fe3e90bc90e90c63 9d90a58677e619f94b8710a3469971b1 759cb93134fd5efde76bc197b3a3ffc0 f29863d2fe8863d4195b8ea6a366e14d 9d8f0444a8c09adff0d4c8f4dd125299 8b3543f09b36696b488017d48a7f7eb4 1a00aa6b75362cc5b324368d54a7416f 4bac1dcc5b39f3d1a4328b1daf5160d6 335bf5e7f636ea198be1375d26d1cb89 25bcea593e4314c3436e6787c76ef3f0 5e409a2627f7cd7d63ecd64ef0e6814c fe7dd4f6b988123bd810b14a81e12eca e6ee101d3cb13bdd16a2b5862518c93 72a697466cab7851f51f77a6d7299806 1fc4b8f3fdbb5cca12464df1bb7d5f0b c0fb01629cdba5ade6c5cd45aa112726 9012c6ca245c1bf4e6c5cd45aa112726 8f8954e310eb265bd42b9650f19dd425 af953537017f49351e3178ebc750d175 497659c4723fbc4fe90ff84c89de437 571c9ffa865fa70d2dff41777eb31a7 7370a18bebe67690664b3b9b23ddfcbc 98e8e686225b86aedb7603860ca917fe 72c884f3b9b9119966f379f51753f72b 24b563bccb68e78bf939d21e50c410 6cae7a045734cfcecf03af5e7a1277b 5516cbfe2ae44c0a7062f2d72cde5c95 84a3c87bba5a472af51f77a6d7299806 8e3fc5f1f8e9658ce8b2b8dc0c816caf a1419b0cf5fd0c2c47fe5b27e60471f a4d149a48607de3d92f4c88fd91c6b1b 82e5309809e455d5f15fed2243deb166 2ca883ba6a9dc6f68985be89a0ee21a f831f836f6468b28bebbd6eb70ab85c0 5f226992dc83d5ead42b9650f19dd425 4e87db85d5dab96822339a4b4aacca6b 906eed2a218acb42699c80a6f97edc9f debd06d3176a5b728cbb8bac2032149c 425ccd56a558a719754784b56fb4c23b b87594dec9d851c035836c728d324152 724b8cfc8c4b8e16300009db8b7749e9 48273349239e81b64b3c42e318f3affc 995e0edbe7bbfbe0659dda512294c744 9d5718ed61c116ae4b3c42e318f3affc c8dd6d63b6d82f8399e8bf807e902261 384dc1f8ec0a0cc2ce152ffe2d789882 93cdfd14889492dd91a4fd87fee47737 f7600660924857c0d31d0d81bfe9c743 884d2cc0d3aa8a72640e544a5d67c33a 6f957742745697cbceddef1607dd507 81db02f2b3686761f51f77a6d7299806 68e8c6def7cd57053e946fb2184f0c4 eb363770ee36b0309a79b01b89f55c86 a78273aa10b2dfb0bc8d334f99e7f52 527445c0b9cf1cda27f5c3f15a1b92ff 3c4786ea0997d6bbc0f947750540fb22 93aafe1aee82e2fadafcfea63f0b694f dec59b04dd663d5965bc5e8933ad03bf 4b35aeb6ad7a0370f51945de050323d3 5adf5a7173e588ad76e9713f57a5fcb6 39bb09201e0cd201c17e7f250c5222bd b2b57e89a036970d22e5ecbe03e765d 2ef012ddcf1cca54f51f77a6d7299806 3d8616a9aa4a8c87cba9038a9140d5df 5d63f11757a433b914038d588fd1342f 1a767b8130e8a5722a7d46e74f08da70 143e612ff081f2fc3dd0bb3e608c7548 a7164d4766ff0e1b4ff124faf2d8d947 f8f8ff7d9cfdd395765b19233e844344 4cdfd605352adcb0da13974b3533fb59 9dd5b7e6f90ee322b56d92c5d7b06038 8d07df2bf706cda58c5591114064d173 7f28dee9ae1a39f1700e86b51ee00536 91919e69d7aec2b740dc81e448174af5 8b5c74d6fc057bb24789ee5c8d247b09 6fa34794adb6acde24dca86ff4e91ac2 33b727a7c5e984bd377c09d18bd75e8a dcf1095b329396b3a193550461f84122 7dfa5642ccc2b8fe5e2a5c16927ff414 4d8abcddafc52ccc95e7043c2fdf14cf c3c635d741fab1615f0b5ee0fb357b4c a83bee7cfe190a1dc26fa198e521610a 838b05234e648ae5db4c5469c0c1ba80 7b411de42d4960eb6e25f3efedf6785f 1ad672c0a138f8ffe286a7dded929c2a 564b7a755e3003da64fad3c7b88e6060 c1df09878a7a4a81190e285a2cbc9c 1e5f3bc86bddd77f700e86b51ee00536 18fa0155b4fd12f9a829287b9dedcaa7 2d468e75b3063c165dca6305fb9f97ca ccc1fcdb8b104c97700e86b51ee00536 a224010a537bc683104e417f71823787 78218e7cf3b5f6026e24b3256330e605 3ce930bb150aef8a69fb38085fbc320c e241cba189154397718664fe76a3c7a0 9391dcc782fa7f6bfdad344760a9dafd 18be1556eb4da5af7ccf848ce05c84be 3ac209693a4e89c4a4b99739648f763 4d873bf1a658dcd523eb3ad3d378722a 5d53ed3005f4dc6856786b90799c4fdb db5a895ae7358c97b66213207f46bee7 f5a42533b878229d942b01e78b9a302d 4dfa73e922842c02a7e7cb173e141227 8da6fc70195d2b4029820ac1e8a0acf2 780479255b0af544ef56e80181daf078 fe99a1127734f7852b70eac6546e93fd 40dac9b7b00849366bd83cbbbf17afb6 47164255adb1efd5fc54b7f07479f415 495db04c204196ec47c638c0eee4a2b3 5129899201421fe84a873bbe35452b88 81bfbd041dfdb827c08b855dcc4d6f49 e2930bd9b16db2a80d6227ff9b21190 f3fd419f725aa894ba5342d638d0c267 b685208ccf38786a6f1e07a56c129dfc fc51355d4d03ff4ae6c5cd45aa112726 c9ad84452fe0ece05ab833c88a8efb15 5740806aae21635034943af333340cd2 4cab7b493f8f404694ed13cc64e8d835 5f8bb62eec8f6f49616fb9ab42452112 75c5b314933c8bccea896321ee86caf3 878872e3494e6b26baa48d60edc63ba4 e62c51fc96e9394a647d4fd8d921152a cd895c35fff495cdd0b93fa304cfa755 6daca3df48c0e8491cfe337d09cb7c35 ece476ee957a099f5c5fd2c2f381b61 51d196f6b12a84ddac594abb03ff6297 dc537055864526217d970cb50eca3a9c 9a0f67133d4757964ef2fc89218529a9 d826633e8f45cddbc22013ebab50762 268e68f1819a225c1b4b790955c17432 fed49ae8578b251d9e5f3db95fcbc5c7 74c14e9a4ac91242388406859b1b0545 e56196f67d724cb892f4c88fd91c6b1b 2444551d00693a0fab610b0c94236463 4a3641784a9ecca04fa8d6439169bda4 ffa71bb0a75ebd7f93ad7cfe5cf8e21f d2b0fe8551e6e3b0ab610b0c94236463 719d38e7ec228bc9ad329b1997e89fc7 9dd63148e5b0a4f79eaa55bb236fb6e1 7f827b92453712f3504af6e1321617aa 9c12baa3337390578592b396b177b348 bcfda4ca76d65ca8d4eb6d6477feba27 acfadff8f5ab4e7880d6227ff9b21190 828aef6559b4e1b8a9f015dc2ef2c415 146ecd9d7712eb81e6c5cd45aa112726 5aadc1a9220fdbb8349f14616fb49d0a 9a71b92445cd3f023a9bc242c86fb7a0 279c8601278e827dab610b0c94236463 74fe5611d491a2b77b286d3c174c2040 2b564ff0989caf58ab610b0c94236463 81a84fcb2b247a3348eaa510713cb074 a1896691fe875eccb9968f25875bdef4 6d580c3fb8702ceaa864ae08f4e79056 da96905b5b3c821c8cbb8bac2032149c d67a0b5dfecb565f2197da8dec8488d d81388de1add33d8e41c171730c26c4e 3ec4be6e96bfc2512b5fb024f65f6da 9afaf5ab87a889f67acae9ce58893de5 babb0963a0e17bb59cd0aef0207ac8c6 f0d8620b49ea76db83130614d8020b3 70cfb2647d8246971c81cfce8a9fa8b 408b03db5a9972cac3bd24f986301745 e6bc7735ed67822e60a09749bdad79a6 26b2a15646f6a3a06f1e07a56c129dfc 216da8313bc7b192ab610b0c94236463 f58e58ad9952e174d058858de40fec33 cf1a7653c10aaa0eab610b0c94236463 a465210c23b0136d7afee304cce81d6f dd24fcb1ceb67ded3d937a346d1565b 2f9f15a48b674ea25c87325f4fc53794 ddc404bc12e45dbfb4e3935c6cee4b35 8dd8370dcaa8d770ea5682a3b818969a 2ad1a20d43c6106f71b1188ea929234b bc842e548e68a3cbb48513409ae7c51d 2a0f853dadd841f96f1e07a56c129dfc 6b43cb708670013d2a475baffed905d 613c706879ee39c9132c018af3949fe 4ced745f960f7439b91767277279ac70 d1efb527d5cc9f98c1dea9c21912d169 d78c722ea1a1b2d4df253edc1fde0322 6bc7148a5138aa6765eacc25f128a1c5 1bce2f4937d36446a32c566d71fa585c 8bfacae2de0067cfbfd72d7396bc040a 12e2dcbdc199f0ef8fbd401ebc04b5b4 5b9a7b7952996844d802aa676be38da2 bdf183022c888426fdda2d9537f811d4 1b273f4af777469e42fd31df8966a338 20f561347df7703c9c9e05c155b1837a a882ada8bc14e42080d6227ff9b21190 53ac82e4ef6af3da9a5ac88c7195fa36 1539b9a05dd82a3b23adfb9fc6ab1f7a 25672204a764515578439215682e01f6 fb89493e6389039527d4fc401a34f3de a05c04a3cad42012fc7ff8f848d1c6c9 337479a0afb08dc91933ffef19678834 854b885039dd51e7ba57e2d7b7436136 f5f5caaa07335f4e5c3654528317cdb2 f2bca089598c94f71d246659f49791a1 2bd90eb4b9aaff9af84b0be7f50940eb 13c51c08c3695a09eda47978b73f5994 67b9c88c4f75cd1e886a7d82f0a2cb9 a5cbc0a86cdd01bd348f8ec207893cce 72a4fae0f304519dd8e0cfcf62e3e594 3c275368d3e30e775517495984cceec 7105bd044f464358beedb4c8fd29e2d1 6110d87def4fa88c154c6bbaeb7d331f 9a5cb4122d518111b339f790b1757e92 4ce0cbd82a8f86a71dffa0a43719d0b5 75b0a926c795a110dd965e6a8387505b f875ff7c72fdada820768660cf080d12 4739bfb9ab23e4b92a87c4cb5e925da5 bac09b6764c6c6b9f4144767ba2e06d7 f5af26e3cc266932ea88b65c86e82a10 21ca4d36a0f6fa69b937d98d58545fa c74bad51457fb0faa0ab1d82ef09f78f cdd6c99231cca3c65b187a2f89229cea ec9861c234daf6bc915f51b5f5e95ffa 28f3844a7a3d37399c0ca344f487323e cfd7e354a5ae982aa0ab1d82ef09f78f 527b2d1e964f056383be1aa5a5ab0c80 2943ee99465c7adf30bbd4cddd04c77b ae9e04d050f5cba1492d9da2668ec34c a95df9c4372e860c73eb02f1d995d891 cec8fab8ad62fe3840f3ac0af6b7e700 4e9a4060a7fb0dd230bbd4cddd04c77b b158eeea059f2c7484edd435e02f1ecb ec1c92efffb9ee78beedb4c8fd29e2d1 894e095c7036c8411933ffef19678834 8d0d7787f4babee7e66285d36ebb986 1834fac2f46a26f91933ffef19678834 e3cc0b06be2c972cab610b0c94236463 bfd32cdb923c8430e260ed121aebe3d6 b4cc6b735f911fefcfff181817262617 c667df83b0e77f96770db120e736ddf fadf4f0b608be6272648eaf710bc2c44 ea3bcd9e6c4205031964126395b17c2a aaaba1bbe037d3b1e406974af41e8842 613888be9e80b92fda684e203423d5f5 c0b74c61865b563067dc358060e3c47b 2e0a8f727d87045818e800f0d88f9019 bb41a57386b1594c218a519212ed7c98 99ebb9278165f04f72559100997b742e 80f986ae572fce791429f9a19502375a 3bc7c7450991737c36b0f2a1430e993a 3f843409e853828803734eb00d01e20 1908f2afe36335ebd97122acd7517380 c1c81b60f786873262379fe9a26f5cb9 f643a64a4e38723f73c478529c40c4e6 4dd2d2ada39e32d15f522d72d0dd08cc d151d9f45d8b14536cd661fb5fd95741 383c5e64f539b2852f852bdd38b1133b ea3ecd082151c2137ff6ace05b36a5 f5f7ce79ef61e0ff3f0ee3307f850b4c ca13cadaeff93c58ad0e9e0d146abe05 d40fb361cf8aa18767dc358060e3c47b fbdf9bffeb353474c3a767747b75e56 89b478643e53d3d6285c99063fc6fcf8 6ce30b0327db26f340b4c5428883e585 eb9b9b8d186a974a7afee304cce81d6f 222c56ff9cddbaf4139eb23f7c8036f aed5697ff59e3d3035478a6869a3602d c24b7a315dbf2f3178ab7c8b395efbfe 35cfc39065c4073f4b8710a3469971b1 cb87512d706828e1e95cd0dc8c2f0e83 1f7e4805b267e71f21da01c0bdc324b2 7c15998c0d653821ab610b0c94236463 d01a6b35a54c8f77dd986a55e273fa14 a364b8af9a8d28acdaf1a853214fa9f 711d3e719d7655adb8183a4a81361b94 98578539ae351bc3876b50fc31ccedf9 3c7cf00cd78adaef4b3c42e318f3affc 809af89dca17068ea0ab1d82ef09f78f ef4fa923a1c2a3215f25c76975ee64 81eea4f86f308c6a589aae130c1f06fb 6e0fed54fcae8a62edccc47bf0dcf5d3 c5087fce38b009ae30bbd4cddd04c77b f597ff7f743d99a3550660cda66234fd 9af7a071bbd432baa5526f91aecc0c37 edbff6864a97cd6aa1b5ceeca96f6fbc c50794596b14605421c4aa1c0e1daae3 9f4eb0d734a2b7a4ab610b0c94236463 caf7f51add1284ab7ae016d7bb06fd0d 13782b95eeefcedacf004563556ddb36 5bce0f5c92198217aace21c72a80029c b896a4afaa13fec7e90f16feb54700fa 7b3dfbd70333485d219a1300d9489f4e 89fe1ff1b8de298752e8ff799642884c ff58a52586bb1f692c95f6d76cb3094c 5bd924058c668abc269aba35b84eb82a a0d2754011acdcc9d8a0e410093d6619 8ce70dead5119191cc3492a06e9bd850 f695567555986b6a71f08386b3af436f c6575b4c39a341c698d5fc0473d00a1c d126210a20db32c23027f298c7ea0c6f 67e32538a35a5011a0ab1d82ef09f78f 575e42b02249f2b3b87a068961a20739 949c26cd898da9855c5e8df5dc8d3d85 b0e3b90a33ced56e2029d06c0cadaf74 3a52892dc6c06efeb2403dba7fd079eb eb31e5efeb810c5280d6227ff9b21190 9be565678aab11cba0ab1d82ef09f78f f2743fb608c502abfffc97a61124b1a9 4d2f7c689e77df6b6dc1766995c17a41 249de04d8d7e4061cb9cf5f7d536cddb c3023187d59aeb87a731e84e842dd6b1 39f6dc2839dc4e1bbab624e35355496d 333002057d45adfa7cc56a6af4771185 f0abcd11d8987f7fbeedb4c8fd29e2d1 f1324b15b7cc9cd48e689df3ea785530 2dedcb98bb6e9375aa2e219918fb41bc ab9bafe307e11e7a2b8a1a2aaa466160 3b51d76c7770b81a3c6c6fc37120868d f8c0c4f713f0c136e9048ab4301b0c63 4ebcc39496c64f0a50566f53e37b2171 7062f5b229674ab7b0b54dd2cf2a35d4 3712e31c61ea51a354b250a5bdfb0136 5e4351c4525fae6d6fa63795f94c4d8c 7b5b7bfa8580e913e2580b23e60e4674 88e06a85e2a0f99fa7e7cb173e141227 e460f8b0797b44b06a20dcde106482d4 a0b11917da240c98391e4d6c585a697a 20292fba71362950c59c53f7df509858 467e71e8e546721e1aa023603cb7e1bd e428b7d6634444a910bed4209a0dd8ed 50d8dde1973aa467427adc6587850b2e 6fb52c296531dc17beedb4c8fd29e2d1 ca4ce5ea2835b9d71e9c9b11de2def7 f61d6422de7447bc4c772d26a83f790c 1c8121e1ad6cd6fc7a480f3f1d55ed3f b658e507c84d6202610c2a68437007d6 9b86da62c360aa0d824080f516909671 a2781622b5941ff2a886fe6408aa7382 8cebe5dcfa2b907f47c638c0eee4a2b3 d481ee7e971849339db8ad97fd392b59 a5230f3ef20e6d460a7085510f65cd6 d9b418e6ec14dbf50efffb055ed6bd1 a2cf3d4375a5c6a65dea31ce253437e6 9c12fada31224bdf58c4e7e56d799d97 589f5927d37247564fad3c7b88e6060 96edd3d807d2b1c7d1869c3a235ed163 241ea467140a03a1e015e8084a32eed1 3cebd4314f773f8ccb9cf5f7d536cddb 169a72252808f9d12a7ec74a9a907cb3 f4e0c7b0e402ac86e5a953fde71681c 2f106667589a6cedc36874c8749f7812 a8473c68f6a6f9ad7a1efe7ddaf6952d 77e03976667383c3d810b14a81e12eca d477a17223129fec53227dcd0d547ba6 e18b448f7e5f6ecc1baf720a45fc5c38 56b7150b4fccf41355f46d55537192b6 97661c4a58929ff2d9886e45007f4f88 ed0be8928caab4bdab610b0c94236463 49ad167497a2af8c9672e39f89e4622e cf046edeff204b81cdf7280ff8af6720 1581d2682187764730bbd4cddd04c77b cfeb699abe1b76c9964afc371e247bd5 2eecafccfce0a14546407779dbd69b2d 297778bf1a3f8db5cea003eff0268278 ed73c41dcfe9170119cc3eaf35cd388f 4cd119aa7b11f3f54b3c42e318f3affc 657aad273d665f5dd9823f45c4411583 a7ab2b8bbe94bc89b41f4c6c5919541 91569ca6f0578ea9ca2ed12df13a916a 5b5532f71d63a7a772051d450c32f58a f7ced3de6f4c1ffb4e3935c6cee4b35 684ccc0f629ee45cab610b0c94236463 a422fe1fc47fd85d59a230640e61666e 7205a833bced185c41bad6f6f893aff7 747dd84010a0c34d78c3eead10f81a63 2aa624d7f91a5c16193d9e76bb15876 fa7a5f65c561d9d2fc43dee2a1d6272c 607f9e630d94edff9292bdf65b24b621 2700f6693447c32d66c64744a4252d3 21a807616afa7c6030bbd4cddd04c77b d5d1e750bb492dd5391e4d6c585a697a 30dd74f09af6b1c2fe5c8ffd0f5eba47 88b227c5fb3906ce47c638c0eee4a2b3 e58e958428584b2b79972b30518c97e2 1a153612bcdab3e23cc149415a408229 1abed35643d34f60afed86cbd9fd5335 fb1b4b6d51cbe29967d783b4714d4324 f98b9036a56fae4626da964cc0cf44a4 debd11754f993031eef3a45c2f31a227 77f6685f2df21522bc31aa2bac13542b 2ad85522947a9cf5f4ab13f4b49ac318 eb773e1b74c883a070d809fda3b93e7b 7d14ae7d0b7338bda0ab1d82ef09f78f 1b84ce3667a99f1d30bbd4cddd04c77b 2ab79a94145330a95ca21a5844017a0f c1660471a22c98a9c7cdfa94351d0f74 5d93e285b2006520ab610b0c94236463 87accfd64238d29845511d16be3037f3 56188419e8052c0b36b0f2a1430e993a 62ca9722d848d0d17f74248f969ff9e9 2ec254595840417424754d384796666 d1cf31acd02985bb50efffb055ed6bd1 20cc098043235921d0efcca115b32b84 83e669596e491dfe20070923ea969bd1 c6c412c771ab0ae015a34fa27bdf3d03 3a651c78081152e77bb4e437e41d3c3f c477235c02413bfc44d2ca62bee212a0 3c04f4e0d183976a7e7cb173e141227 c5283929da8665cdcb9cf5f7d536cddb 874d1890f62375ea30bbd4cddd04c77b 20ca7b1864d7badc75bff8d65bb29152 a42ad074c9b1bf2467dc358060e3c47b f02907c5c42e1e766f1e07a56c129dfc c7ff0afab4b7885a52160ba64fb535b2 fe2f2b120d84ed909b896cf832106977 672af8a6cb34e00678a875f897a47818 aecdd6e67c790959504af6e1321617aa 83fa3b7b8c9d388144f6e9c2368992d3 c728329a22124fa7e8dd400ae08fade4 be1a98a8e06c59311556e8f97439a098 3b0c62bde7b24de85ce578b5b4bfae3c 54efc0d108cce07ee166717db5dd896a bce2998e60345f86ab610b0c94236463 6ab7ebf9b94176456f1e07a56c129dfc dd7e82f0ccddf0cdea3769fcd5f96f4 5d9f67dc1f1518b6d5f8f84e75452c7 6d4128ab108730f1ab610b0c94236463 4e03170994b4347e6f1e07a56c129dfc 4b237530ff7c8c064b2ec20c30ace65f 16ecdb0dcbd419ce30bbd4cddd04c77b 15c833aeea88fb19f428c5b66db689e3 b48d04600e7cf2bebeedb4c8fd29e2d1 5cf6612712d8ad26c5c86021644af7b5 cf24f0128755080569080f7eaa8f3e1d ad63116007d98a6d19758238d4c7aff2 e4947c9bc17eed10e54cb890e8682c84 47e7fbbce59804cd30bbd4cddd04c77b f30419ee8ff3edeaae04ebd863e388a1 6c4c1465fe472cfd93ed8929b636c206 b7fa4e123bcf7457ab610b0c94236463 4afa7cb9a042b7e3c4f66791e25960f daa9e908b5aafc2fcce90f0d61ed7a70 41b492376a6774f9cdaf1a853214fa9f fc42d63af681a927e14dcb97ba059872 9e3f1901ea14aca753315facdf531a34 875f7a7c2d69b01a30bbd4cddd04c77b 40d0dd3fe786e120d75c27ddd792e41a 114377fc17eceaae3e12d7ebda60f8f ec81c49ee12e8a70fd06de9ba37d44bd 63d1427d86f62c45ecc46197d5349c6e 5334d237bafced4c3719086e0b4ab8be a04a7efb21f799f4c8bec3671aea0fa5 59f04ddbd896f4f5430644dfe647c381 ed9dc0937009dc031311158f08f2982a 7b92f6facc2a27bc84cc0348a73b80c3 89cc879f005dcf50f1f50f6a678fb494 1a6d43aa7b5c4e1d1c6a34a68ab9e1d4 d2f811bc37858425a63ceecddc308b25 1b5e501a28921c43d46cc1240811b39d 8ea7ca2c8b48eb68ab610b0c94236463 a4af8f822fa8d95456c08464b83f209e adf574f947f00bdd548b2639ebc3e759 7e1f5ec947e7587e391e4d6c585a697a 8807a8fdc7a08a0fb664d1885442ba70 ec68e1edbb7e9bc7e93cebb6ba9ca43e f7d17f8d80fd2eaaa62ee5d388bdaf2f 63b6ffe53e027e83aa49ce7283f547d9 59d780e98c0c3a6f41c78a933c3b0bad 29f110b8740bd8068c427edcde5d5e2b 23a4fc50f123d8801ec48bc3c478566d e38b1f4d210fb038c97f93e2910df644 eb6f0eab4203ca0e1c19e7863a1c200b f864677894410315ab610b0c94236463 d57bb12175463d188aeaff3bff7f4413 db64db160fd13a514e1a714ee619465a 1264d88ae599df3fbeedb4c8fd29e2d1 90cd1d5e2f33888ebe9fa30bb5c5d8b5 7327bdbb165b8d034761d0d07b9cb991 a39677e069564a7ea7e7cb173e141227 a5634b2fbad2b88d5d14030c75181478 92499724962a368d53743fbb4759270c a1593fbe3a78c7858795000a72749c36 59fe91d51febd1f3c83a073fb943e852 4beaa698e6a7721279a2553310841ae9 11084af510183635ee56c4ac0904ebb 4768cfe825063ef930c15a57aa97b3c6 d9ce0b512e0420f8be95ff480950e9ef 7d1fb46a27bd93252c4683dd00deec1 63b53646b3562677d395837145ded71 994f6d12ab22d187c03d8b4214ec06e9 596f93940a4d97866c752a9b08e87ad3 b7821e69687d767aab610b0c94236463 8e5c3b7366f2f017b4e3935c6cee4b35 1955e341a77661a749684afbca35f3c6 12df5c215f4364b7fe388cf6c4c3705d a4dfdf3529355cd934fbd63590727729 34121f5cc12135148c1cf3f7d7f0373 ddc91eea0d38268d616fb9ab42452112 c621493100ff715f80d6227ff9b21190 d0ef9d431a16e70de6c5cd45aa112726 cd106955d3bdf8e751c4deb11af7079e b4ef1de99422b08768661782af60b711 9a8852ff4b82a1585d624cfcd9a37a7 eed2efed8f2d5604a0ab1d82ef09f78f b08310a1d75702eda09ce9c1262c7237 8f841c9a11ad77a6794a9f593d938882 6365205d2324234fc8a1efeb4b91d393 982e83068fcf2f26a0b169584d4ab1c8 1f067718ea071a4ec804f0ac5b784b6b 4be0f809a66f1797ad9d8182e90fd7fb 5b546ef5de5d10f3ecc9201d3d846bc1 d198fccb12ad508a3c97cc6789da1c31 8ac2feef21274a23f45db6a75d78cb47 10733a711fe254965d7786e1df78254f 12567fb8261120cf63a97d76062d3220 fd1cb59eda441efc3a6294a7f35b35be f6474c0704d2198278696f3c9c5b8290 7b8c92d0202211d53d098fcb46b95c c172807c444475ccab610b0c94236463 dca821b9d2fed090f51f77a6d7299806 7dea64a734cc77e6fc5030c2f25772b dc68436ab1a576f6573d2c9ac4b23fdf 9c4dfafdbd7f9b76c955e5ed03ef3a2f b444c5e5488806439b9e80c00bcf83a0 61198aa59e0aa31764d8b0368afacc65 82e4990a3a9290f33ffd3a8003988fa3 13f2a907f3ac7dfc9b8e42d3eb7abddb 2d466533183daaf027cdc3d721fe0086 b515a107aa3a3fd0e3dff0d5ebb43915 aa3a0c759428a9eaa5199c5eb7fa3865 2583fa4932ddfe741ec48bc3c478566d 1a8fe5baa2d4b5f7ee84261b3d20656 d291243cfb51ea7dcb25d116843b43a4 f8e3ed6b09b50d1d7f890f73fae19325 801616c42a468c298fb2b3b07693a96e 5e84051a6a839c24b577ea930304326 8ee93ff23d882efef3eaa8afef8adb8d 400393a56fc243c442c39a4fb8d01418 6a5ff41fa5aaadf84c29eddba1f2e390 8c5f1bf61d4c1d55b65938a95e1f893d 6862bebc1f59a5caac7bed72580dc30f f39e46c8468ba7f07ba6f8f10959534c e2571e4eba2d9f5eab610b0c94236463 82e1c0b874b0a9e035cd53a06b1d2317 9afa121e3aec8bd7c387f328a37d8ece 7d0b868cce75a059a0ab1d82ef09f78f a1f130e921df44b037135011237cc916 b26f4075b45a3a473c75ff89cc8b70a1 5dd9ef055fe3582687ccf9baec60b534 ab10c2ec41e0e7f1391e4d6c585a697a 5a09bc1430a2918d1f191e8de8001d7d f6497e9f02f50c98c065481f0c2ebbca 3ed500a12dfa511ba6040757a0125a99 9d7a8d4c013bdc8321cf7471b191cb89 2c0ade2de5ed1ad66df14337f24e49f4 30c9865cfc4294a7ad16260d4d73b56 7a0b6685a30298fb8ae8d7de284e7d2 a2554ec7e2331a8fab610b0c94236463 d760cfad1855ef2d35f7fdc3c0cd22fe 509d9d137fd7465a85c5f690e9252fc5 8574daf4d23e75da042d36b1c1b84 f563e9cd92a0dbe5a07b1c1d0ca9cf45 167559b98bf6139712d9440c7a73ec3c 21cdc417e398378e40f3ac0af6b7e700 ed289e72b00480521fac473c90dd4a 2edf007c0f4542554fa8d6439169bda4 821e6d43a82eadfe8818864c19a17b87 6a35640c7f10aa71850622797c13f562 c05033de978da9dd5de04aad18bd94c3 7fda06ada2d897baadab4c26397edfab 70a2420bdd77d414820ad1ca4d3c95d5 99720647e210078beaf288f952624966 5a7039feb89ab32f5e6d4b8e7c0423c1 58475b1b20ece0c5eeb8d422649e5f2b 4b11be42b0c0482dd94faaee2b20e2bf f977ba3ec46bf1c064a940596f3d867b bb521fb4f1ec77a0ebf17edfda20712b a0445e4888d56666b9d7c2fc41e80228 d0220473a40678ad137619fe8083152c e2cc21f9d13d06e6a0ab1d82ef09f78f e22b23cbdaa1e259e8a94a8468340ce7 3b8d176f94c0617867dc358060e3c47b 7f6ddb13d3b8c07c1c19e7863a1c200b f3b8c91c5dd1cb6b8722573b29f0d6d8 86bf47a73d93b66ecd037ccdf14d7446 9472c006a5d35b9ab606ece4189242ff 1804dd6f5c827c1a4bf8d5f43e57b138 7a7590d19cf8274dab610b0c94236463 f5d9f518e284989cf930da774352b970 8ad88ee4442fd0fd8a6ba7ebad3985bb 94f83fc24106e39f782f27684f3b650c 7e6fea75f410181855f9913e822d5318 ce422cb06b1f372c561f802d2e81cd69 7988dedacce42552ab610b0c94236463 e0ea31b7fc2626ccab610b0c94236463 e71012d27b3b3eec67142c6ea337b7b8 963f0a74420659066c09be1a24173c83 5d30db5c8d27e120a653489f44e1bf89 fff492e352c8cb336240c88cd4684446 72e0f3f2f8f8fcf12f788f981151c5d5 5040f8f3e2293db448e116352760c52d df7761a3b4ac638c9eaceb124b71b7be 9a6ab25d91c92a5a35acfdef2ece21c0 73ace155e7a4b1989d24dba534412246 f5d87f88bd9b31ad2f0ebd444c10bd0c 14be1ed92182d2da722332c7d77935ea f5ad10e6a938aa80e85c7a030ebdf69a fed1a75cf5c1ce38dee1e85d063fe6b f726fcaa1d031391b2a0fa0a5d25776d 2acce0e402725f80ece694d60a812f12 de46aee11f397e1c5af597c14b093f6 b62d45745434ac46c4cfe384be4426c3 941c65a25cef70c184edd435e02f1ecb 1eab315da8b2588d285aa2b556211c86 a2baf45f001e118e2c79f7f31759bfa7 201c3e44a5967cd030bbd4cddd04c77b cbd1cd9b5423f890beedb4c8fd29e2d1 8ac4d93e65b9d58d9b937d98d58545fa 3c34a433ab1dd3e2f657e3152307ea2a 4302fa68485f0734776f723457d34a2e 16e874e6165e836b30bbd4cddd04c77b c472e242175ecc75dea0c7d7198f1b0c 4b2119939de4f6e892cc1f9d231c0f76 ba2f81e15029a37baf7caa8fd318856 ec356bd4c5cea755748e58db1ff83cee d187561a6b0cbd0acaed5ce7390f30b7 1de679dd26d8c69cae44c65a6d0f0732 1a35db5eb4f931a3eba0693b2c2a423b aad7eaccc93471d6ab610b0c94236463 acf4b272c86a011fa0ab1d82ef09f78f fe22668b577f0cbe88e99eda7bb1ee8e 2e3ff4aad6da120784a05e54516915de 3fb5033b5ddaaf365f7afad12924b3b5 8cc8485f249a37f595b25bd3accf45b5 9f321f05a7808719ab610b0c94236463 d4937d73a4602e66d9a65329a03d80e5 627248fa64c1db5fab610b0c94236463 efbf0d75648b7c7d5792b99b8245d225 3ba656a9bbc2a38ba22a3fbee2fd609e 33b9bc49338800e87dd2ad68f72eb830 6af9a593129b028eb67e68783d58425a e2d5de278cfff9cb55388518b8ef9c17 1a53d35ef172a6febbaf0ab08a397b2 e435c1e3430eb7b253fa79783efbc3bf e7b99aea5bbb980ad617d95dfd4d6158 2b1684e4cb37d9e8ab541fe336214393 8f1efc5edaf6d44a8e6d6e67bd4767b 51c6a7298408c3f19730cb37c9a5f63b 2ab09f4db5f5e842bf595b60a303303 5e0ef66271f36ba862feaf6b02ccee1c e36e90c1db6bf1d5470412e9b69c8933 43fcddd5232a6021a56e8b79ca4e2911 c5fc6c1e0d446d37acce1c6e70b58979 6efcaa530059319a720daf9b94e7a5a 56ea26c10c478555a31cc7b61ec6561 f27a1f3db59556cba0ab1d82ef09f78f 49eda1b86917d3d7d0a96520c31993ad b29e6b183014b61e49426bcf3088611e 229af4d0700b3fab29f2e5c9212b176c c418195771c7625945821c000807c3b1 14ae5631e7dfa10430bbd4cddd04c77b 89827ac677337629ab610b0c94236463 f88d344aa47deb52276813f95a6b7283 d9e3a8c4f093d66f3e474b0005d777b5 cf7c2cfb403f2819548cdb167cc8bdd a4047a8f57451762a0ab1d82ef09f78f 5ad5b050fdf84825ec7962e39e3d3af9 f5d1fc338e804d7fca7e81cd26bdd69 fe5e1df0653804d6ce4670b160b81e9 9c33336af33fd905776d8bc79b9caa2c 19bc9c781df1da46824080f516909671 d8be4b45afb21cf1616fb9ab42452112 ac965c2d5c68551be6c5cd45aa112726 720024ff80f13fd16fcd22503aabbe fc95d34ab1afb92b9118eee0b123125f 6688fbb6e3fb092eb1b6b0c5ddacb607 b69b2ff85d0ec661d8f9dd7647048a0c aabcb5d610e76ff19ca02c396af0c503 50d898f6d1c05cee2d99129afd32edf4 8b094873d775f6e21130871dbfe24c18 6dc6bb97c387b2f3af4e8812cf1b9e1 2f33abdfe147813e44949d7685cb63ea 3154c61c595bd600e56ddd87eb888f65 71fc8c7cdb48978282fa4d4f2c19b2ce e02fbeb78d8936fb586ef560a3203b3 367284cdf79742334305d9043f82a6a0 32ea6609eb659a2cec3367bccf60e518 cda35fec5923a8602250bf58700b4d8f 9046b2e610065fe5a5d95e73eecd308a 9d039675f4d51869f3edd695842c6d58 54b26954e478b1a34ea8d5f5f27d7ce3 712167f9036fbfd050e7fa8e7f4c04f7 a98482ce1ac411406b2cda27b9d80e15 e8870f3190f6b8d4bd1025bd755a15aa 29b2aaca87d19a3c5759f4335ff2e408 d8baf8507ff705dc2787b53b27e2d44e fb5e8a6361262c26acf7920879052e93 abeb8fa38979d2fb9d46068d27fb8249 689fce16d1f9099b9aebadb76803631 66a801881c4ef524848eff6ddf1058ec 7727cc0cb47705632dfc2f8d5d30193c 7d4ccf874d0f1060d59c95a5810fd5d7 4a27cb9384782ce33e95c55cb020b7e6 94966aa8a7a6f540f6807434c358ea12 2259e09ebd0ed2befebad4f49b26ec52 cab027dd0162c5b7f1426260885dd0ef ea96b8a866121d1abed1bd9593e318c 8c2ec4b15289d88cc5d1c45cadcaa3eb 1dc7f7d076afd0ccf11c3739edd52fa3 51874066ba946c58aaf15b62af6b513f 535911bcbab242877543d7dbfecfffbe e0940f2229e42007d98e761e6d91dfc8 ef02c88a34b3888a1b1a00a31bfed97b 102f0532f9f8bbcdcb503f63ed915ed2 5c63f336ce5ea7d621d1a69a8eeb6a01 b6ad7be371729438dcfcef693e7ec696 ca6c07357ba5125b8e2adb29857f8a1 5e3f91e841bf74d240cb0a485b0065bc a5d5fc6b0bb7881419fb4103277a6b93 bd7c71ca15b0d4e56c252f74b6220e29 3b0625a3d623a7decfbec6fc6446a041 89c095a52766ecb05d2ac47f638a4ea4 7eed749ec4a3e391289014a3a9ce92 e8aed77e92a8c4daac3edc5d86dabc91 14f3de4c23d535e92c528d33bca1ac2 f5cbbe04afdc4697562b835b63cfd09c 95af60aa8cb9be066a76e23e6f966dea 221812e480905c5464810cc21086da42 9f6388c27485b03adfd21203bf8b4b46 f2087cbd26a910355c16106acf3e4b14 68142013a4f5e7c2febad4f49b26ec52 a94ea7183f27073248c0c0980e363341 82f5867145f64346a9cf1782d21bd9ca 5fef79348f4bc7b8c710d14956729baa 71a7bcf52da934d0f008d8a3590fb522 394c63a5658ef759b515d1675be6b5d3 c1d44782ac45d6fe3671949e4f99cc76 7178d8a2f91a9e1c713656cb7b79f97c b14a14cc2f3c38c9e3def9c422df2282 c27a1c6a26642c907ecc778b34d42f32 a1d2dbfb4b3a6c113ff4affcd321d45 d382d9e34f365544278d386bfa54545 ac40c46401406b71d9c36c82d746b699 d5ca71b9b9ca6e5041b73991ca70550f 482a76d14781e55e25374da32e705c ee43ed656acaf774f4b6538438a0b930 48baef3ab18d2d43d2afe8d5254a0d04 c5a02d586ea431a1e76bc197b3a3ffc0 3e09b5c70cc4117d9969f8371ba19c2a a16d7c49c0899cad8e43a810a63361f0 105f53a6471f3ceb4a420e3c1b966720 ed1e06e886b5514fe8f49d7c9e73ab9 83f1ff21744e71ad2690c0a5b39562ad 538cda9b8cfefa3f4854e924c443f593 28fb9a81898f88c4ae8375def5e736d8 408c3db9b4ee6be2e9f3e9c758fef992 9200682ed0382e3f931e98da3a93e73e 9482c5f0a38a73c0fa16d3c3138134ae 4b399cdce8337c29285e0e27752e54a8 8d4fe49d942ec85ff4b6538438a0b930 798c315f86d8f02f931e98da3a93e73e 480ddc59636d6516659dda512294c744 6ca66a443e651c1423500a5b036df62e 4b5536d2e9c5b9b7febad4f49b26ec52 6cf6a546e2ecbffe815a7efb12912 de077e0bd6932baef12d7184a2ad3430 109a8d453ce93a6fc21b51dd4113da62 c71453f2c3fbd5fc56cc009699d2a2b8 45b23ac79688170893ba1eeaf62819a2 c5b83c681c085f2195493ccf8f26ab2c b82c6769c98e877d24d29f1dedd03a57 3f94c1aa9254356579b3e1be3524f72f 5430799502754b5691fcddfa9c1209c7 8654b644c766dd23d1dcc55e36186e4e 7f4a5479c612805bb04e388f56884ae1 3e51742cb382aa1f79b3e1be3524f72f 747f4ccdbbe2e4452099d3739c2967d6 51930b149cf6125373fa072a624ce947 fc93d1a1476e4f86309c518184dfbf58 5b375eacdbe49cfaaa539cd22945e538 8d7ac6078989980fad16260d4d73b56 5690d17b330f73adfeb8ceb93793cb5 713a4be770bb19b9586b2526565371c0 b11e0feb428f61edf008d8a3590fb522 b3a77356e56d7c9a2820d27b806f8454 481e00e4559705c616a2b5862518c93 9e2318099f77d3df3527ecfeb345775f c3e43144fd61c56f19fb4103277a6b93 3c5b03a212d8cd3951f776d3ed05550a c45e6ceae72c7a97be8908669c476d49 88c2cbe9552b1b0571870da176ba03be 94a62cfdb84e88ca9a3528690d225ee1 3c5281bf572e2b6f2b70eac6546e93fd 68a7bad2b06bc1a9d93768e7b9b1eabf acbc99e153b9d4d419fb4103277a6b93 b1c7003075067621682d288075fc0dc1 54e85b248576c4eb57cd80d4b17e7e11 60ef2830979fd08ec72d4ae978770752 382889dbc86b5dd919fb4103277a6b93 1dbb8fd083f96ad279b3e1be3524f72f acf57dbafe8966f577fb15a8d7923976 18b1461f48e0fe9aaf15b62af6b513f 4c7faca525777be32f7524c98ee0fc42 93040a14fad5588ed889130b88839a0c 65e7fd8d158658106a76e23e6f966dea 79eeee790ed5a5aac242632b2a8c3129 a6311f0c2108867aee18bc48b60b36b7 6281381ce38aa988de98d10ab5975b59 59ee80e3af7a4e3df4b6538438a0b930 52c72274af4c7e19910979f825490a99 c755eeaa4a588fcba9126dd5adc92c1e 1a3cf7fca32910c4107b7172b5e0318e 7b3b160dafe7e122d93768e7b9b1eabf 8bb3a7e1cb24fe6febad4f49b26ec52 3c72ddd0dca19bbedcfcef693e7ec696 ae8f31ba66709b8278cd7885232df677 2f98d5e721e84debaa8081a7009091db 14e5e4db3246dacff12d7184a2ad3430 a50fe14a700587304b7b1010fff3cd07 6ace903899706a5819fb4103277a6b93 10ed64b4c7eb6d9311ee7ca4f000feba 9eeea5f7b030ff6ac155f88004a92bc8 ee5f85db427865e63e5399147a5b4763 9b42cb91ccead6d42f6d10c5d1d56320 1fb2be490f45ec6e19fb4103277a6b93 504d908a55f3e0c764810cc21086da42 a18aa2d20d516333daf1f22b6daf05ed eb00a4e8b33d257cad16260d4d73b56 345c1bb95b12ff8c013a7bed5288654 109738784a0a6129a02c88fe01f2b9c1 34bbe284f7499df071a782a4379556c7 e64876f5590e6fb7c3bd24f986301745 4e9394f9f64859aef4ef86403cccc399 7671a315e8ab32f4664b3b9b23ddfcbc e777df6ffb40e3a1853d412328e7e7a6 79f63a1564928af071a782a4379556c7 e699d5904e00a6ab748c0b14b00bc019 24b208dd138d8af36210db75a4cd581b 5f0c33039269b7a9f0e84b9d9ad447e2 f2893a87ec37f8b3781cb4570305e329 4079aaabaa6451a2765ca89770f206ec eaea1cf98b61abd043383304411cc9ec 2ebe5dfb7bd9a50c6effbd64ad6b71b8 2d4005749db552232430716fc386281 e02925509615eb5a4eaf5bbf36d243d4 900afcc9f0f5fbfd858699aaad4acee4 a5e951c9d7a9a93f8cbb8bac2032149c 1df409cfefbb51658b9b51ae4415d5aa 8e07fff2ae8a542051ef8c8b1fdb41ce 21486e6d0bd896ad5cca18918d24f6cd 7bf5f689da285153583ff8a5fc7c1869 307bdd2a06137694a10ff7fd5e43a633 884f15cfc6a3eea3dcfcef693e7ec696 dacde6546ca2e07f66dc6ea1ac82d91f 4791914b3bcaf57efebad4f49b26ec52 991738fc61b81af030ddb6ead95f49cc cb860d60db8f3d18febad4f49b26ec52 175c0be26d0f2e916cb0bd372b0960ba 5c6748b094725d9af008d8a3590fb522 553c416f33c5e5e18b9b51ae4415d5aa e3b585b15506fa7113f96345312df593 5dff67091a2f7ef1ab988fe471b1bd06 97b7baeb8a172de42f56f09e5bc67bee 7f1bd688960e2c1b97f2016c3d6097c9 104c8e90ecf0e5351ed672982b7954af aaf6be1d92a8c61fdcfcef693e7ec696 e9038664b7d35e6b436e6787c76ef3f0 55547d2fae0e3dc21705bfd3afcd10e 56a57ef7c3385c9f2f38c0d2792fb5e cc6fbdc6f2aa5ea3d889130b88839a0c 5ee4cbe45bdc4cd571a782a4379556c7 2e3037a285fd8b5c1be2a853ec4f9e8 8129d4c51abc3356bababe11fcea8796 523ac3575244c7f3a130bbab7337a0cf c29137d144c96b17febad4f49b26ec52 4cd35d6ec155d39633207e4c3ac155a4 8eed35fd5b777acf58316b27df6c8e87 c348d279fd22730a9741b7ee128375de 3411daa955306811d93768e7b9b1eabf 9611888ee0db1ecaf7d4d3ced798ad90 70995336d06fc07ae9f3e9c758fef992 f5d6579b3a1f5a879d2be74cfb51ade1 7bc93a4cc26fab5c8c12b667670a35f2 90343e416528b576f41d9ea5f63b1b05 2e7cb2cbfbbb4d002ee19ebe356c2dcb bc1ff7fc750617d690f7bef12e52ac08 fd7a579772b195532de421c2ab5cfb52 b6b8ede77085c0a95bea7c29e873d16 745a2b060d0f692bf4b6538438a0b930 856e86709df98497dcfcef693e7ec696 6eac64eb398b9d7145d4f35fd8d64cf3 44360c91a7e91098d93768e7b9b1eabf 943d786e2df9251ec76aead7da70af41 1299579419252fa954b02959579aa6bb 5fe429691ecc5f0311e6fe968f9f8b0 ad17445446e4fd3adcfcef693e7ec696 2a80c95b4bbcb73d87ed2480ebb0f3d2 171a3677999c79b32c8109e73b98d509 d0008b042256fb5f7ab911835312d4f1 812dd06fc99f174e9f2349486c570dd4 6d5aaba9f6dafca977252fffd1947df5 3f2e9c14ab1d26a0ebead06af665220 1815c6431b06dfb4f008d8a3590fb522 668deaeb91295739664b3b9b23ddfcbc db2d4f781756e687d8864caa856253b 81e991df9ff8b970a2ab2154e681ce15 501f61f01aaa195adcfcef693e7ec696 6d0ef6312f8af87a53e946fb2184f0c4 56bb7376dfa9cb5c8cf069d506f8b5ac 7d358a01c9467815a9505c473725122e e7169243daef074dc82dc2efb3363de1 ff32ec299e6c37e767d783b4714d4324 fda71e511d095837acbf0573260a18d4 91df49ec00f2c5ce73f1ca2ca101a20d c7f57e76cc1ac45d1ee2805756841071 79df23303a3192c1cdf1dfd78f33901b 1ffcbc064f473b7de7c13848b2d8f5ec 14d6b4b09dfc54e9d679a95896f75103 6327de18a3a3423c947ec73b27c6abe0 628c4fe12881efe2bababe11fcea8796 401fe961ec7b0cb5dcfcef693e7ec696 4960515bed0e76c403c7d0cd70738a3 8d84471c4af977d917271868b642acd3 5ec5b95d9c21b05ea9af104529ef47c3 a7172fa4177661f4858699aaad4acee4 176e3b32d749ac94d79f2fc0b8d8ffad 94c0ab5650ea392ddcfcef693e7ec696 c9f85a671d551086d61f9b2773e1d72a ad461a7b5e8cc66efebad4f49b26ec52 b3fc5247186936f1dcfcef693e7ec696 47cb4740e2e0cb8d11bf24e88933ed8f 41b0491fdb14d41bd25ca1a27cf9bdec 35e821cabad939df664b3b9b23ddfcbc ebae52c84acf994e9e4da01b847d5cb2 bf17779bec6abccf161bc5243aab8ea4 88ba062b171b4797e30dbde92844e593 198ff59a42a147eb8ac5948d70801389 83c24aad3914e61a73376642dd664bfd 852826a94cce36ea9f1deb04fb8ae481 2f58b1ca8634a6b48b9b51ae4415d5aa 2fe5e4d8a871fb861b1a00a31bfed97b 80ad1f839582d183fbf6f493308acc40 6a3ee73d42228f8581654cb17c02fd 737cc2beda4a023619fb4103277a6b93 f74c321042dbc8e684d78f017ff73fd6 b9fc2f624533bb8119fb4103277a6b93 813d34995b5c4406b65b71636c46ae49 7d0c5e28089c2b7bd99e852ee772dfa4 53c11596c3fc36a8a5094cb6d104b35 6c0fe6541769a3f6ff4f2504a49d0458 b9c756b2ff5d66ddfebad4f49b26ec52 1adf96850963550f19fb4103277a6b93 6791c92944c99c029f1deb04fb8ae481 89251f322490e7047e38640a31d0bc3 75aaea3b26362e7a659dda512294c744 ea367e390741fc38dcfcef693e7ec696 7f1548ee7cdd456fc2b9c3cc12089fe 7e2c280b5839d502eee2d67fbfa67a7f 57afaabf994feb305512673aa47c7e3d 96b17bfa556f57e29d2be74cfb51ade1 8f48ccd17a15baf5ce01c07526cf2aa4 39806e081bf3fe564ee8db28f96ad26b c011010ac01b73c78e43a810a63361f0 93e81005c19a74b8664b3b9b23ddfcbc 58f8fd169c9578e62f81cb887dc35578 3253f2c59e6bd2a119fb4103277a6b93 a8130d38d538b6306f3d2b1b15fba494 ccb96ea5f047c97f278d386bfa54545 2fcc875b28c5557dcfcef693e7ec696 7eeceefed2b3aa2794f3bda96cf548cc c26dfd3453d81bf7788eb1f5e7ba6e7b abbc5e4950ff6ea8f4b6538438a0b930 4ce90fe70faf4c3e255bc16374754e69 ad139879f97c141e1ac9af6c714d1419 d06d27bc9ad1faabd7bf6fb68df7f786 72c957a020566f4bfca61b0bec17b8d3 5de0ca3516c01ffe71a782a4379556c7 a211f3080f4659131622a21d32ed9c9 ecf3d40b14300d3c0c26b04b6b8e17a 35a65ddfe8690ccfbc96558434dabb4 5c2c29fd07c365afe5c65540d3456093 3997cdee934a9b238eb3bc6c6d15f9bf 92016e48e44e8b8bbc16013e096d0c1f 8cd0334f04368168b8025ff83c807f47 a2561614d015f2fdfebad4f49b26ec52 b1ca280d9567270ade98d10ab5975b59 3b465822b34ed20ca05d3424fd8d541a 25f69a74efbff4d071a782a4379556c7 9705c2610980d0fdb2d0500bdfc28f70 12a2733fc5f6b31ef8574543281e850f f979c7a650d29ea819fb4103277a6b93 b82e068c2c18cd67b09f0ca9c143fdfd 54ba7e77a2bf5fe3158b7df020486ff2 ad92bfc65465091c48d90eef8384210 c14fe6a74a071b73664b3b9b23ddfcbc 2ec33e8b457ac0fa278d386bfa54545 5431993203dfcf797ec12e029bc725db dc47d49db6ac670635d498476a30ff0e b278b58e294a7d2bac242c3aebc81b2f 52989e315ee1d3839ccce4c6d5bb195f 15be511a2433482aa192483aa282f8e5 dbc5a4d1dc3a6e8271a782a4379556c7 a860e5edcaec268e615bcf72f8385966 c38ba6c06d2b813230c589758b4b5646 415c174ecdc612fb6f5c30e29039b12d 631028ddb76eed4dbb0085d0daabdaea c3135e3b21b42e132449009b96f8a6ed 747f70e41b927e13b73481345ae9d2cd 2bbd62449b56abee659dda512294c744 303ac20ea2febf9ec3bd24f986301745 d4a7a1dc0f1a51986f15d61c214769af 410ad32a9cd5377458c429c80cce21ba 3817a222e96acc4ca78510b72d2281ea 4d6b0bcf351183bef8c4b4cfc2702232 132bfde1fabe9ab771a782a4379556c7 f16f939baeb7722e664b3b9b23ddfcbc f7196ec7d732af5166decb1b3cdc5557 b1335d826d7d60726e066e11deddab75 b323d3002578f5f3f6cabe1df6f4c9d9 c5230678204a1bb8dcfcef693e7ec696 2a44569c8ab6ea22f222df538827afaa e1a8e9e2059f4792fbb8cbddab1c2002 700f59abde33ee3ec2d043ecbc42284c ce4e075487aa05ecdcfcef693e7ec696 aaf3aeda0f848344b87028a4b477349f 52257815b77da840f7628281ecb18112 1950a6b5594160d39453d57bf9ae92b2 1c3310f4c05ce1f6a192483aa282f8e5 fd7769d0eba554c53def89b32cef8e45 cb7ebc943b1b424988386fe1512ed26f 80af0f92ecf69f69f5ff054d67d5fe35 3ba61eb411ec52c41586e0414b03ff10 efc01209cfa158eadbbc9440457e303e 5f100571ffd90f8252b4875f731f71cd 7cd4844def36a9f5bc7589eefbdbc3c5 5d24567426a614ecfd726e98b98fb36f 5fe3476df92392e1397aad305ec14786 52037005fbff92d08fa35606145b47dc 798a07e42d76013582695d8aaeacccc5 86ad91ef08c53dd77189b31b3e8c8ef3 1bf9ee6578bfbcb0f4b6538438a0b930 78a81cbd2a5720d93a938fdd57fac3b4 bdefbb1f281434e39961e1085a81acc5 9f732b16a7faf3fbf4052eb4c07f564 1acf7b0939f3eea2eafdf94e5032b200 a9cc8112fb8c4ed5dfd21203bf8b4b46 49bf25ff4401946524c10ba1eb690638 6daed91ae491c9cbe22ea6d770699e4b cb31b6293506eb639a3528690d225ee1 2d90a1998eca8778dcfcef693e7ec696 83dcf79646ad3f0cf4b6538438a0b930 db0c430a51ac45c19d2be74cfb51ade1 1a5062241d7903076f88aa1b7f7cc6c6 4bf61d3643b7e6ba19342061b16c380c 2fdc21532b09d7e37f768772b7a990fa 390e0db80fe12ef65fa6da97b9eb4a2f 7c24e4f8778e224799a5e8f6c5baa224 c103c0f93c690f5067dc358060e3c47b f7b8a1d716dc1725aa7cb30470f3273c f54945d1d185b387659dda512294c744 10cc8c941fc8aeaa71a782a4379556c7 19678fdb9bc926505e4b35ff1ea95f37 2633f011b236a8979070b65ce7b4b532 746ceaf694d85eb5d5192f88466da1dc 1b78b8e14a21439afab04609f4609e83 868bab5194e93577858699aaad4acee4 731b983cb313634fd018082a1777a5f8 867b553b34a3399919fb4103277a6b93 270430ab9efb9d85c0f947750540fb22 59e1afdec89de9442b70eac6546e93fd e8ba9621aef9395a3019620286259e2c 5c11a1fa21e8671cbafa5bee623d5d ef9f3af9b8453613febad4f49b26ec52 d5f2968e4b7254ccf4104961857ca9c 38feb6b209579f6faadbf8208284c675 38e90183c838f443b43753a53e4593db 3b68fa3c60e1cfb7745a5e8b6205e3aa 95e2a1ebabfa741cead99961c8c0ca99 1d447e3b068b924ad91787f0eb159c8c 60c931dcc6d0982944bda2555d37e46 f585560965413925d706ecb3379aa341 5fbb7a5f01f646ca5830980abc1c717a 6fb0076db4a74b73cde18cb90697712d f28e030e715b9d3e318462aca9e62b6b cde67434193a2a6f19fb4103277a6b93 5191d64e9a1b9664bfdcc70dcc16baa1 2bb1bb0516d7cee747839bae1bc65257 4775e71d37374444febad4f49b26ec52 938e3529b774a91fcee558e7a5a02ad9 36a6d851dbe02410ad16260d4d73b56 159a2a760327ca5bababe11fcea8796 8af3fd230ea7ac6518101790733ed6b2 8d247c6f6aaf805a2530bfb25087f2b0 dade0594e68e2250be6c545952e7fa4a fff7f07d1c4042f8a946c24c4f9fb58e 33b081062b2195e71771ee930e861b13 524af53b7863f506e227c1bcfe5b1fc6 6152e14b042aa17546f41dc2aaef556b 6081fd59c46769fdf4b6538438a0b930 75f2bc98aecf198974984b9cd0997a52 ffe1c487f7b9909bfebad4f49b26ec52 1846b3533f41ae82f8c4b4cfc2702232 ccf36a20b7ef3bd128071d61462a212d 3037fac5bc67207e23fa92d98173c06f 90cd6a48cf2789a9b430d97a45d5824 6e23179a3559775a65eacc25f128a1c5 f4976e80b8533bcf85518f8659f21d56 25bc205f6de491f4ccde40b1205ec7ff abef0c609ad3e9c2edea4b985280bcc1 6bc941dbd290c7f21acdac000802e11c 153d0c95cd2981a46a76e23e6f966dea d4c330d27bbef3808f6610bf672cd686 b86e23bb0a3d337ef4b6538438a0b930 63fedc0334f5552dbec3a71604e140e3 690e073a4000c7ae540e292bd26f307a f52e52094d8240b2dcfcef693e7ec696 2a2d6560f14a01c6afac72146bbc9d59 69ec86dbd4df85e51ee2805756841071 1e3871159daf135370bc652a18e29c3d 1534dd45b3253cfd902c0a1a69e25bd9 1bd138c3e54a75d32f38c0d2792fb5e c1254fc0d8d0625b8738e7290b6f3237 2642d805c53e243d629f73b53bd7a234 e9c3a3aa2278608bec15b38012222fa8 7df9115b511668bdde98d10ab5975b59 75fb953aaa9924d1f28b9459ae3635d3 48af84a5600ad5bc19fb4103277a6b93 ee5f0411fcff59951105a3fc18779f13 5919dea71f3bcb071d54ab02e78bef2 845c77d01efe2f2e425fe98d8cc1c2c 4c809952877b2a0bde88c30a08fbb953 15b495c101881d96e2367b9e27f16a71 388d9e7b2b8a8f909492fbce0bd54e2e d8f851bbc98dccc23fa92d98173c06f 8ad9868947e7391113625562b56161f0 3441002a52b1cb2946b2a76c074a3f45 46957ba752c3554bd42b9650f19dd425 516928532093f765bababe11fcea8796 62eff79cf2e75bc2765ee729adbdf968 7f9d2da43d6aba67afb6676a5cd782b6 34d280e8968c180cdf63d1c7e43c783f 23ece3bf871619366ff454af1e8947f3 398dbb0a34ca527871a782a4379556c7 6b62c85b16e300557005dacb6907e37d bdb44c3f5215ca84b6d51da3ac2ed48 62ae9ded861138be9d2be74cfb51ade1 fc472163ea149f8e19fb4103277a6b93 5b51e63726f21bb6a75d03186a0409e2 41d280b7db61ebddfebad4f49b26ec52 4c4c719ac4b61d8f812c9aaa38f9a422 1c2e9a364b82f14fb9a0f5d18f1ce54c aa3eb180a4f6d8d42de421c2ab5cfb52 b09894688b176d426f3d2b1b15fba494 2ef899e67eecef65190a91fd9a6f7d55 dec1d2cf8a4563d36cb02543e4df83bf 2091efe147f9ba11e3069fe10dd75c3c a82387cf9d9d253aa06f94abffad1304 ccb8c52ff9e7a01819fb4103277a6b93 fe130356df1977499c2a886f3b75f1ff c2c36909e461e10adaaaeef365d8f6e5 f3f8fcf3713f89847e2388e35557b84a b420e0461893854bdf6cfab91d65bb91 3a69ef9c6512041768c981036afdae64 76338ed3326689b249524cfd5973a145 f10f579a973af061fc527605fed20d9c 3459eec8eb56fa312bac236fe109e385 5cbd726c3ffd8fc49b458816be7a3962 1011e1c9812b84d2a9ed7bb5b55809f8 9e6d6817c0a0a022fdb7f86985d6e5ad 6f3506c9c5202101c4e8952b27b5f370 2db1f557e247ded7e907b6d9dc1d71b7 83b8e64089968ae8fd3feb4581507302 7aaad1c5c2be8c24a9ed7bb5b55809f8 edaf24be15738ea2c5d1c45cadcaa3eb 30655ef8f2511b4ad8f2ca82d6e1c314 8963760f8bec0fee7f807d3c406ee adee49b8f5251efeaade78cbbf8fad3b 47f25d5b367326ceaaf15b62af6b513f 2d1d8a2f976387bd3145205f02ff9fc5 22c5cbe6271736bffebad4f49b26ec52 63aa14915f59ed8671a782a4379556c7 a624ebf0bf0451a8d93768e7b9b1eabf 30b506e5e1fc282afdfcfddf24fb29ec 443eca86041e57ab1e99b149cff6a230 811a7be3be14bd2b62103e4bff47b4cd 8f73278956fecb80327289c00b6dc9ca 7c2fb7a6dde6be96bd5a65d923c337a6 415a08a66b8527519f803a8da27dd9a9 be045fca16562f6764c85287e21825c4 7dd881a26eea656d193afeeca14e3baa 4f06092100d0164013d2510999d0f1d2 910db4c45df40b67d3e19c2bbe0ed38c 9d873d1e7403e2c825971c9167623d21 994e524d70043c3496e349c87c588bf2 3e42e3386f4aea9277cf3bb06f394ad 6e446bb5adf14b0b6121178eafd002fd 27295a6f585b7817febad4f49b26ec52 7c7434a9db4a407a2b151d8b52c53b90 913c0ff011ad0658dcfcef693e7ec696 1ddbe75f64683937f4b6538438a0b930 d41c8af82fe98a019fb4103277a6b93 69c536d9e450cb79436e6787c76ef3f0 8c67fd5a15e8d9defebad4f49b26ec52 3a069fc75bde2735aaa6ab0dcef7c556 d05ff7b47febe58a656db3f863b4b796 3558aeeb9698722acf19858fd1963d10 91ed62f2b3fd5919f12d7184a2ad3430 57f273bd63f5287199e8bf807e902261 ac9fae8af57729945eee45c00c4de9d3 6aaa78b81528f4846674ff79eed6185a f6cd420f08155054803d0f5bac2abe4c 384bf53e12744e2019fb4103277a6b93 401cd99ace3b92fadf6cfab91d65bb91 b893c20bfb5d718371a782a4379556c7 eb379b2b95e76502e258d1c3e7302e7b 983cd9caf65adf1ddf6cfab91d65bb91 45a09b1ce3111e4f22f4fabdf1ee0670 bda00a13a1dcbbee908afb10f96957b6 2aad9a8f3db3272b916f241993360686 1b6bd64fda74bdc4d6983f351200ac6a 2e86b383f43bcb1b66dc6ea1ac82d91f 45c5ee611c73b90a509330ce00eb0b20 6c4c3bfe275e66b1b75e606711562bfc b9886dd3c4a651f3664b3b9b23ddfcbc 8b07d458499d63f36d96c6cb347d6a90 424c77a1f39ac41620dd2dd4d7d7656c 2e4fbab46e264616d93768e7b9b1eabf 40ff8ae39ad13d014a873bbe35452b88 13e19274b358ec867aa3000697a75d55 9f62189d260cbad33c11c3dc5dc42217 c1d808c75cc5e7ab4da5bb83ec125010 667a88cc3ca1cef8f37af16b2893f1d4 aafc579804cc095cbababe11fcea8796 5d77e8f6ad3741a0c30ab36bf7b0552 3d01fd2f13ece278e27790b0ec8671f7 878414eb6e86494d9a8ef44e1d2c5b75 506e4e67efe1794c1dacbc3d67b5a11a a74cad1781afed87dcfcef693e7ec696 369c19c0971221f3664b3b9b23ddfcbc 1b01ef65920c342323bdffac38e6b250 a15f31e2302f6ae5d67a73ffd62ba73f dc6f030d9ee566a5dcfcef693e7ec696 2fa78f97515a4d5624760bcb862cdd1b 447f9f9dcd85f6242849dacb94997f4a 66e0abda60998bf61a96060575291b6a c3c467718eb9b2a313f96345312df593 bfaa1c23d2622422ad16260d4d73b56 4f5c111a89b3fd27aa29e9f0529e8ef7 4d3cc502d4444c848cbb8bac2032149c c0c836c630cdb4bb664b3b9b23ddfcbc 685865c8de58d7dad75b93b39461011 f2e6820ca69d9b7719fb4103277a6b93 d94de64641651a2079b3e1be3524f72f f3164e1781a296597f6f00dc967c386 1b4bc147baf68d4ff008d8a3590fb522 23d68e01b77089ae76ad4f5e7c7020eb 17f3a2945d6550cbf7628281ecb18112 f6b3638983b0effaf3bf08ec218707d adcb67b58024afb99910b7ec4c4e599b 84f5e52756fc84f86df14337f24e49f4 8ce538a671c6e684d93768e7b9b1eabf 1645b28322131b6258c407efcf93be6b abb8d6d056f48eccb8015e57f308c60 9bb816d6a3517a5ca74c2333655a11dd ec4675f62f6946118cbb8bac2032149c 966cef675324e416cd415550f639925 b905d2f688f56afff4b6538438a0b930 890940359fdfa036569c11df1aea8ca4 3243ddb2aa4d1659beb83c64f2162734 b3cadc82852f5f5381901288eaf14401 7486e6cc0f457c4c12a1d8ce70d3a8e 55221b101eec29dc656a19d1d18fdbac 346db24c1279e8d273fdbe4b39ff4036 ab7b0db92f96381f8cbb8bac2032149c ec7795f1efb90af9f37db3b69001ec04 e993ddaf6d03003071a782a4379556c7 75e3cbf4b1ef0df971a782a4379556c7 212f9ea1cd96196992f4c88fd91c6b1b d9c75799ff9ff74664b3b9b23ddfcbc a2824ff9eb173055f4b6538438a0b930 48600b28f63e0dd2de98d10ab5975b59 fe710962895c20914476c40fec27b24f 33c6e3b21a67b750e78d7b497732dce1 375aae9fcedc76438b9b51ae4415d5aa 585f8cdd992f541d23500a5b036df62e 3d4399c54a60ac26febad4f49b26ec52 c9f3ac109419150246ef4343e2399480 8862cddf90fddb3119fb4103277a6b93 760b1ea228d6c2f6e785b88cc9024b2a ddbcb5a22a0c3aab35de8f8daf95ff3e 3645a90e02d16f0584aa8fa8b66ba302 1826930f388f5398e0c5923879d79f21 efc9a32719fc71962c95e86abe3e6416 490b186d11cf5675a872860b02b1bf58 f01768b8b8ba025ee45ef4135c266a12 f3efcbd9745da90619fb4103277a6b93 6cd84ff61583805c85e2af9bf984f0b5 8ad09d90888f71dfcb9cf5f7d536cddb f60960ae4dc8e293c8ce22a41ea48e48 a1dabdb19c7e5bd1426cd1b7e837ebc6 e8689b8b1610bf2841bb8a7ba579a58 73d57c83a4ac0979d80195020ba66865 4f70d14dc276a9539a83764a2641fc5c 9bd1c242bd66d2fbb63c01786992bd2f 831985fb385a5b2a9ae2d75b4fc35b7 f5a673474566ed53a9360d44e90d853d bb027ed892722b1f3399de188dc5ee56 49c3ad60b7d5234dfbe06dd91adeaedb 7813f4e4c0a58118cbb8bac2032149c 41283ae87a29fbbe76bc197b3a3ffc0 9e94631e0dcb5c15890bbb282640d692 d578287c4a9452efa9af104529ef47c3 25eefc5a3c7b30e1f103d473de33521a c827c0d4ef212f2b30cb1fe6fdc7d605 a8fa391882414febad4f49b26ec52 7d22cd72bf2762b19a4b266ed4d507c9 fcd4d0e1777f4841dcfcef693e7ec696 204d9ecc196990ebe8479ad2eabcbab4 d46537f513283d6cdcfcef693e7ec696 2a64bd38a4e42f33dc43fde5155b3946 23aca164c7b2e2d4ad8af6714b643432 f5adf1351a56586719fb4103277a6b93 79d0985603f7ff3be6c5cd45aa112726 49f625856c796254d249abd69334079c e18d2ccfd7e0da86bc22c9f90939338 8e637b52c16d8874f09e0399552c33e5 9c4afb731e910d3723500a5b036df62e 69604fc24b7976d69ccce4c6d5bb195f f850a69b0d308fbc19fb4103277a6b93 7ad23def902ea4f37b7a2c2624e46d0a beebc267ea0c16a5c7f6a57f6f73d8a6 8e3303cae6cc104bad4f8ccb153c24e 5771d5a3084b3ca3a2d7b309863cb1b c12147db9b29ef9ee0480c954dcd56d1 fd42924378694d9c2554f2f6bda30622 97718e2651d22b3a74740f837351e7eb 9502eecc3a057115b129901f80d24b7b f6ef4614e853eea9de712e1694f0a344 d3a55d20bb9c93985a7746683ad193f0 8d05d40b15f933edc22013ebab50762 f917474a20558aa33bbab77a66bc3671 678f7fe1c4f977927e9fb8aa5670f37 164ec64e7a28c08b221ea40148177a97 4b6d73d06b7359f26cca17c12e67a536 4a579619524b60aeba18ade30e563d37 63e37e8a29ee34bab277610811e28cd 8cfe3ff92244310534506cc3910614fe 28912046d42946df7db48c721db3fba4 88b217db267f1ec61e616612e30565e8 99737ff619cae25d6effbd64ad6b71b8 f9beeefdebf70350f4b6538438a0b930 c177762c0445d57ab20aa91e9e90c311 5be1589df948b227c955e5ed03ef3a2f 3d7101bbd994e2f5296ea8292ef2edbc 4292e4bc1f783b399c409b26b1e9e946 f5aecb6607876495e03eb69820d1aaf2 d826ce80b06bec855e5dde99dbb2920 40a402e1d949364a104ceb84075e40d6 fe3351c94fbab8ce3002761e7a3ba3bd a7ef45d86ae5b496a97f238e46bc2221 e6d8569c0957e7453002761e7a3ba3bd 24b27de7ebb852ddb472f782e8890df8 4d393b562df7cfad9a16b095d67f7209 50c9d436169103249cd431573238602d bad7911965fdf1786487ede8a6f074c3 54317236f4b56413002761e7a3ba3bd 67d97102f9c54cc95512673aa47c7e3d 5354ecb0e3aa1da074a16879fb3ac81f 4bbf789edb243cafc955e5ed03ef3a2f 5b74412eba257e5182b796aa5845e185 2e5ac0552fa296c43bbab77a66bc3671 6bfb122ded9082de7ff6ace05b36a5 d58bdda16e6bba6f796740c80be6053 696beb1883be838cc955e5ed03ef3a2f ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04379243_train.lst ================================================ 7ec59be3e55081f788292be2b58381eb 69d4ba3043aee963dc2bc8a782be94b8 3398658268644c2539eff6a5994f7472 f18c9ab4ebdcdb8ac8595ea32135ffd9 370e911bb0313e0cdf76e252f60565c3 10e7056ac077a0f54a111702084d37d7 a9946cff00d5a43c3b0db8c24d855998 7595d2709fdae7f4cd6ba6431f9f9d71 8c65dd783d2afcf468cdbc8b02ff160a 6d59cd216e896670b7562ed1f28478bf 1d43a3a22ee451e62511fca00e0288b 4b21a06b433b563f450195dfcfefd1b9 89a7bd3d0af7be05104a4ca1203542b6 c017ca698294d3143d27d1af90f27023 1e6d470b0330afe7abccd5469c032787 60c942ccc194a8e88d4313dc14de486 1a96d308eef57195efaa61516f88b67 1f64fc95a612c646ecb720bdac052a97 cae4f0f8b87db72dbbdc99ec57ef9c40 45acacde58d7717aaa7cb30470f3273c 711de3c464c11233a82ebea018a340e4 ba993afc907987b33087f84b199fd297 c33d942c6f7d517d346ba1ca782be6d5 4bb8e7499f9c5466a341228b21d337a9 9c21b194e13b84bff51f77a6d7299806 4b4ae1bfcf9de312d1dcc55e36186e4e e6a1c65789846ca8c88ecf8c33c3edbe 9269d120ecefe48da2aa7d89ba9aea43 7b9a5531e98308c8c3bd24f986301745 a99a74777f6aacf2489e5619471f9f53 3016d678209377c1c3bd24f986301745 cca5144ed02e693f83ab30e82b39a93d fe38d140fa386ed4c434c6fce2e7773 a5af3ca6791da8292c48d6b905457dcf 9b042d709402eb968dd711af5650bdcf 8af6aa6372ade15d8457b637f6fe1690 f166eeb3434b9ea4d79a1acd1a8c2d4e 22cb00fd7f4d016429b55029703aed8d 2b36b46dbda291b5855931d119219022 7d6d7984fe8eeb3099e8bf807e902261 d14a4b797fec250b83768a4ac1607d73 4b2222cc86f2324f7383fb84b914b75f ed2d5ed8ad10f323593ebeeedbff73b 59366e331014e2248738e7290b6f3237 f7ada05f68013e2dbcedcb5f4c7257b9 2e096785b8d98d4430bbd4cddd04c77b f48e40d7f7b07b8ae0c7300d2b2cc1d d2cc7d1f7fff8488698b889b37529d3f 7421abad75caa60a299938728adfdc7a e3457599e244cb83ef9a8aedf51bb497 46e097e8c17a4098593ebeeedbff73b 50f93f2278c3cc066bdbc69440dbff90 8b54150f56e59a91de9149d4acef1da1 7cd2c11133d7470db9278b13f52df097 f6df49d754e3adfa29e4b5aa807bb4e7 6f1d3ad68c0440a38b424343280aeccb 8709ac2f3822955de650492e45fb14f 66f1182a5e4dcdf9ccce4c6d5bb195f e0aec1747c4d7c11f24f0645d0949356 664c6792448950dec19dc7c5f46bbf55 81094bd607e33c1e0c5923879d79f21 afda402f59a7737ad11ab08e7440 a871ec9aeea7cc5ccb5cb7e88a8b34ae 97894130bbbd202df4b6538438a0b930 1652817da2b9193bc3bd24f986301745 584d3ed9669b1fcfbb7ac4d22a68ec08 e809af47a0255110855931d119219022 96d3a59baa02d7a47d117016cd1926d1 734a664e9d0aaa1230bbd4cddd04c77b 5a6c1cc3731fedeb55f46d55537192b6 1096b4a30bd7717c4733824eae5cd9ae 827166feab020929811cdd52f3d07553 f94bd6bbed8fd60614038d588fd1342f ad060b3914729efe2175f7e45480df72 de500885a5cda50f99284d844aba7576 11103f4da22fe6604b3c42e318f3affc fd958ba5f3116085492d9da2668ec34c f742dcebb1d9ab0cf51f77a6d7299806 88ffa9b795f527b1969b9778c8fec586 80131db5f6be83b7d7bf6fb68df7f786 f58b9e92e45367326c3484ac7eef025f c627f3639caaf614a6589c01f678d8ea 1d19305840960acde220a4c1303a51c 6e29806cb341576ae9deec47d8412ee 4fdb53755e578678cd7f32327bdc729f 149b59e69d25ad09c3bd24f986301745 e65cbeed1eb687d514038d588fd1342f 3f4ee26a68f2e9386051d49e4b21b83c 8af2d1420ac255be490ad276cd2af3a4 9fd065502f87d1f4c2cd59b38b35eb54 86eea3415d5a61df490ad276cd2af3a4 4a944441380ba0a45990f2c81f286aec 3929a118c5252a768cbb8bac2032149c b04a4cb79890c846ab7f9d2da6fc61cf 19c0e93cdca6433fb8d33c22fd35264c 3ceb74b707f814a17bcd6a9a3aec51dd 5ef7fbec36f8854ef7b4b759a0c02e4a 234e44f27b5a2852500cffceffd2bd2b 594564c315e37c57925b56a4db8bb70e 3dee82c33d65b74a99e8bf807e902261 339092b2aeffea998629cea277916e93 32b63d54261678e266a713431ac35e37 e013ba1ff446bd56140a527375fd6757 a56fb908880a3693af8c4996d9577fba a9aac9089791465d30db3da8ce2a0a12 fb6cfd7064a88468a9ae1099ff133d95 73e9e162c2d4f90a6c4acae4ea0d5870 fd7380eb29fafff3742728b30848ed03 8ac67043fbc976138705931e60ead6a0 6d311facc6387a7fcd1233d74066ed8 f434ad9d54919c9029d8eecf3827c486 1eaad686e6b766597ff6ace05b36a5 5247e4e978399f1b486040c0d9e85846 c77ed43659f01a0cf51f77a6d7299806 6b1b63af6ccd71a1b129901f80d24b7b 852e28dd91e4fdb35c1975633309d43c 5d65f46bcc49eef08b378a8c4400c79b 8c878bedb8e052041944bfc1093ee4d3 206cc839c7796a82a09e5a1a20aee2ca 2cfd6534a6a57548d20545a75c46659d d15135247c2f52ce420e437840bac4fa ff26f7003826d1a2d810b14a81e12eca 33d18dbc04c4fc02e76bc197b3a3ffc0 9bf704d5e2474cba3a6b5b5b9b35aa8d e99a4c2fa99a0038a2aa7d89ba9aea43 b4c54426262f142fc16cddb2140115a e8b3da6a6d938b475966c5a46a5a6ec8 34bdbfbe94a760aba396ce8e67d44089 6d2c75d89b0a5f5d8cbb8bac2032149c 87f355b618f13233d5cb6d178687b980 cb6c20669c6d1dea593ebeeedbff73b f2797245a220fbf1850622797c13f562 604efea445d3f3ab6d322cb027df34ad 8965a7a0234bfcbf82f29b648e624c33 425544b66203da392ebeb1e6a8111f53 f70df4cd7109fedb4824068fb42a2b57 5cebb89b77fcf78084cb825ff0118ad1 437d7550e95cdf39c0ca344f487323e 6170a0a35febdd19129dc72c6879c0ee 472796909612bf1f1353dc45068d6f44 622d66d9e598b7788e0faa4ef4033cfd 7a32aac4ead10e0bf51fa0238791f5dc 52f2c6960d67445f896f73ae4af4fc8d 2fe5bbb0df6925d1f12d7184a2ad3430 dc291fbd5838138a833924252d812d1e f469759b2790b6cf6c1a170c83f9532f 55d2be43d71717e1f4b6538438a0b930 59ce1f3fbd81ab18f4b6538438a0b930 64e572ed8f8f23bb815b2b467e8e2eac 2312d2762c1bad27f84b0be7f50940eb 15339648435a8e6290ef7803f19df417 8cda30b88d9bfa27d810b14a81e12eca ec316148b4cdd446b6068c62e84866a1 34157148280e9342d810b14a81e12eca 506a09d327936cf8e2e6aa5366c8ffc3 553213ef2a7657fa9ccce4c6d5bb195f 3e915e96e22f15a1af9174ac65b8d24c 3ac426922252c21a855931d119219022 551bf4f010f155ea4718e6c48e1ed95d 614b46cfcbe04994d91158b2b7873a40 e83930a4a62413e1187ef2b10c31bd17 233c3eace6ea1267eaf288f952624966 8ebb14fe46f63d5a98cfd47a860803c5 726ffd1d94bf5c0558df8eeaf3dad1c c266a3883e001404721f5f36cb42501 37a73eab8cb0267f855931d119219022 bb28f4978ec66a9d5369e32fb818f337 fa259703a9f28b1c62d7d9f5324445af 8e7b48d1eba786cde8ee269f00f30d13 9c44b336e78684647523c0c037b61ec6 3ffeeae04bdd3b51c3bd24f986301745 6d00c1008f41a099eaf288f952624966 e758e1b760f185e2593ebeeedbff73b 25b6b28e3b70be1c5a6be9e325f087ce 91c380f2d26f1a9ff128012535a24244 114d59f2e865eee630bbd4cddd04c77b 2ce9bdf770b06e3745a4a35cfc2e42d2 1d9b72020d680630bbd4cddd04c77b 4949aa2bb737317225f1bb0febd3472 c36d04d3a10fba869e87d2bdcb41f548 85b930a031d9036481aaf17ac7662991 6e45d510dca43cf6490ad276cd2af3a4 ad746c9c7f7548be7608168119193cbf 676d6d79d32de9cec3bd24f986301745 88e9d1f8c3f988e62f21cf17406f1f25 c52a6a569770d1b39ccce4c6d5bb195f ca9bcd3ecad18d8fb4c161851ed2b4e4 3f4cb895d754dbd3ce47b13319293999 a09324ab0389029260885f79b3a5579a 42afa0dc60b32a6d7dcf230d8b7d162e f622d7d6892fe02937251258858a7a58 ef56ffb992754ef9efd9e6e4dec9682d f7c25526cd3740cb52e2d18963a75b4d 41264bc3d705a6c1cea003eff0268278 a4eb161a000b159e2ddaf02885ddf74b 3eef676eb5cb9db4e56bf1253ce74bd 80acb994a8dd6d636831079c2c481dd3 a069fa41fb01fd06ac88fc1a919bbb85 f090d4f5e82b3c25f63a1cc836eff7a 6d9d1411a046934418b5d5fe1f3ec412 581d698b6364116e83e95e8523a2fbf3 4faf91d6e511e153b20565fa9224214d 74f407ed9d20d799df0d738d0f301367 2d52675c865f669047bc3701b998a7d5 3237f2e39e0f2f38c3bd24f986301745 65dbf1f9230a2913855931d119219022 fa010af968a0e1635ba41eea807f5d3c b08dc9e0fd675e6664adc666ed4e2ec1 b69b6e09d5f5bc1f21ef666e979e4e80 17b2481d38b84b334c37b9ce3a3de242 1c7d7b6754dccba230bbd4cddd04c77b cea242a600c342fd33891f25755e1e1c 8222dcc1680112635cc877f4f71ba410 b7e3aef758749005c3bd24f986301745 96aff91d7898cb1358df8eeaf3dad1c 6b678921222e3375f9395f1ee40f845e 19354bd08463173480f6183c41836dab 3a36028507ffd1a6ddd15630382184f 6746eb452d8b84323087f84b199fd297 33e59bac5a2a5c5e8300cbd55c34dfc 80e1d8c228dced88ba6d62b5b05dcbc0 22add506f2a09c8dab93f6188b226527 8438555826c5a19079368d1198f406e7 323ed7752b2a1db03ddaef18f97f546 15c32aa0f0dcad130bbd4cddd04c77b d2222dbbaaae806cacd0ab81dc64966c 15bcc664de962b04e76bc197b3a3ffc0 2a44f4def2a20e7f4b3c42e318f3affc 940dc92bda153346eaf14273fa406ffc c8532b5928b242d29ccce4c6d5bb195f b7bab2a7986f34005268928fe2c1fae8 3fa4d59a29c3b506a5e91f4d594e20e6 10e279c69b5678d39a45b69dede1154b d2a331898525d0d1c955e5ed03ef3a2f b95e59bfc90c4a0a266a96e416bad065 35e1541babf368d83328d823e2d2a6d 318f4fca1278ea7cab0467582043bd43 18ea2f5371184926764a784715fb668 33b56fcb0b86e914c3bd24f986301745 b78d5b0748c83f3f855931d119219022 a133b092d24da436e7d9f0fed41b005f 5ca423c2f3d176f94c5c5c89015f1980 58b499ba308f9e82b4c161851ed2b4e4 ed36c49874dc325698fc83ea562f5c95 7216c7ef1edfed4e593ebeeedbff73b cf9ed2af8cb3085917b431cae0dd70ed 50f1ace689c05bed30bbd4cddd04c77b 4ae4635c7c69ea908d0eb3d070197e49 58c234e30f95394f61aa7729a1bc4626 88c9c7a40227e935487003545673a337 273b31cfb08c2f2aca9e6cd07e5806da 6fa6f986755409b77f4b44e9ef57971b faa5d5ba2a002922511e5b9dc733c75c d5de572c3f6517374b3c42e318f3affc ad6317f2a90d71f6f4b6538438a0b930 d073f58c96c17aca95786b1c8687acc 515460eb527d3439e76bc197b3a3ffc0 e0ab42e831e007cf9be2020f4ae1ea66 e3e1762fa7f935b3f6287cb48a47c45c a35771ed1c74b778101accd22c701b9 d03cfa4dfa08467f19620b61f6587b3e 5edf1990c995fcd7693e54627de491a9 680414bc3ea1e9a67ff6ace05b36a5 3de49fd2e80f8c95c97cfc3e8a6b1d16 8a91b91802db34ea409421506a05b6e1 ebcd23b7d8d9247292cf95a109e87d7d a80c06903eca9eef7b05ef4148fe3aff 34ea33172f39665022d09160e03f114b 81e223168807d7be74971c311d25a3b4 b00d6677641be37dbeedb4c8fd29e2d1 23fa6ee1004e6c6ef4b6538438a0b930 84f0b08cc2d6747b593ebeeedbff73b f7646a27fa757afe1829bffea9d18abb f41e9600bd8bcb92716a0dc6cbf69f91 836157300c030c9a246b9f2ca347e8e3 de24c1b05f0ee7dc58674871bd9b2e6a 78a93c794aa77beb47bc3701b998a7d5 d796405237a2721937251258858a7a58 b9c5de845a1f5ccf23f93d9b8d14f53c 268436b1c1750a1e14659d605ff53c6f d5a7ae84e93368c28b015826dff11d35 80a86204247b30fd21ef666e979e4e80 c7f673b7b956508cf51f77a6d7299806 c8fff605d821d607ff28aa687ec5e78a bf293b370275cac173eb02f1d995d891 a414a3468a40d91027a4a1658277b4d4 c35990badac37b256c09970ea0def16f 4d3a4749310a3d242bf2627b2d231d97 d056e7c8c972455b22a22d22d00874ec b11f985f0b3aa23379368d1198f406e7 b61dec9a8ce09e4b80360680c1602c7d a31867914b71ac40d776c08b6a3d0a38 bb9304218d9741489ccce4c6d5bb195f 692e96270191113358df8eeaf3dad1c 19140f9ff7eebc13470412e9b69c8933 f64617385056e0b1beedb4c8fd29e2d1 c736eb1545f8b7b4ed403132b02528bd 882d74e3afe42d0b651fbe0e01830a4a 65acf2f512016cdf553c860eacad5e53 15fd9085d9aaa0fa43ed4f51d7ae210f b41cc94ebd03eeb2593ebeeedbff73b 3bfc7947fb8abec5d925b06c8689bfe2 7602875276e42d1990eb1f8a00f61726 1e60953829fa7e0530bbd4cddd04c77b 855f3c5541cfeffeef5609fd2064c33d 1cc337d9f3f6d8f47f45370489ca3156 15180f731834feeb2f0a9a342c0178db 7ad475266c37d4d3588d78fa7ad8e5a3 a269c3b2b456e61af4e73c80c5eb704f 757deea50fa00eb4e5595fbfd7d35143 f0e18881d2d01e91286a9d56d8187adc 7807ff57a21a0ab8740c0058fed336e9 4eb3c0cffaf389fac3bd24f986301745 675ac6cac5a81bd3811cdd52f3d07553 bc2f853a8f2c42701b126712b4d6e5aa 7722e83d837b5bfcddafe9b591eb9ebc b62f2d11c2aae12cc54baced9903a02a 69fa3275d6aaf1dcc9ee6bf6bfac3917 2d5b8274376a7095955824885d6e7dc0 929cefd882de6f9b5048ab7650c7a7c 14e1d60337a533acea003eff0268278 24eb7a5dc2b20ab8729c5ef452d153c3 2add476bbc4144e57c9cc507bfc0f85b 6739b7952f7e53a7ee462e7a3aa014c7 795baddfac35711a30e44a4c4faa2773 8f059d82a5c37104587d0dbfbd9ca24c f17e630571a76d4f4b8710a3469971b1 35aced569e5e1d869d10bf389452ce96 58b58d56e5bb2faa16fafea97f025a07 14d0926471af661e3087f84b199fd297 516c46ceaf6619d07ff6ace05b36a5 cb4cd38679773e6aa1fdf150cebcb587 d28e03eaf042c33d714531f0291497fd 7e1d0214a916543b37b2bb75885cfc44 6eb9e1ec0365f5cce7e684d25d4dcaf0 fe57d6cfb3ba455fc35f1f8a8febbdc4 d1fe23dc2b62082121f2d1de8124ec62 e686855b4c95330db3a8888e78d004b3 695639f21a7995f592d5b25c536d8044 bbeb870f0ad9a17af84b0be7f50940eb 541ba3fe085905e19ccce4c6d5bb195f fed82f2ee0c82f97beedb4c8fd29e2d1 24dfa4c63b11373f5bb375b194991e4 fc8b1310927ce3e6d8d12f352b5e1839 ad26e8e474d42a4a79b3e1be3524f72f f8f36e7871d0e8382c026fed19c0d206 b48d04aae94702504b3c42e318f3affc 641f479a3b90e659282c910029b5cf54 dba86ecb3a5a4d234b3c42e318f3affc edfc8ca3568153d7e8ee6c6df61c5951 1e90d86b5649720047f453c4a13e89b9 a452252cd1112d346cacd811e7524a0d 3f9b11fdf6d5aa3d9c75eb4326997fae 5403184c2b01e0dae4061112aefd200c 3cad8d726389e5dca5e91f4d594e20e6 2c5d6e88359ccffc3396b0dbcf4d4bc7 f1323a66816293be29ae2bc03882456f 4f4ea0588e9444be30bbd4cddd04c77b 8f1934c5ca7772837d44dc16af152638 254bf8d40be1fcb025a517a55e2a2141 bea8659e45a1094f625ac64d4da8b7e4 a358b5f98f632adcd1fbf79741fcd6d6 c8ddf2c234adc19b6e848052f86fa0c c28f9a82cb7ddbb53651bb31f42d2f80 e5f797c0266733a49b8de25d88149da8 f8c37aece2b1c730928918e6ee92e0f2 6da3c94506cd3e114a163d2b227b320 3d929eab6abafbc5cf004563556ddb36 895c87ab1c2e404de7c7920f6a65a54d 1cf7bee4c0dad464c3bd24f986301745 f9d5c41dd092dd8e78c10c978f26802f 74b86828a5adb4c15b4baf82e4d24faf db3f9b48562440acbeedb4c8fd29e2d1 ec34ee731c9dd55758df8eeaf3dad1c 84d8b1ce802662984fa8d6439169bda4 b62798e1d1075115e870ecf4c364a4c9 9112b638a62b432e3521fe8ac6222005 2bc602c2b7d9a622ee05b1e9462446d8 10ca7bfe736d81b64b3c42e318f3affc 54c121f22e8fb768b129901f80d24b7b 3b112cbb833b57ce7774eacf69d476db 57de7158b2547dbaf2a235c3708accb7 3ca6199c8adacd4d30bbd4cddd04c77b d9addbc9e91eb0efb1b6b0c5ddacb607 8fe842d92037d55be6942c5426df6055 7ce1b7444c3ba89e74f1cdda9579594c 178703fe974f63e9c3bd24f986301745 2598bfc04772f90cc20778ca035801 696482ce58cced1044b0115560181a7a ab55372db393e4259ccce4c6d5bb195f 97bfeed6025f68de5fe8cd129a2c0fe0 77daa3ded63dc634d83e8d4109d37961 be0174f29dba41c19dd07b7af48c9a5 64ffb47735074fb128ea9c4c28e5ce40 ce803beb471c728a4f5f1d630285ffb 45c2a08625ade6e5e50eebdd2d05baeb 366902c0009575664f856154cf68897d 92c68ae13848ef32c3bd24f986301745 441bfde4486fb4cfc3bd24f986301745 2ca3dcbd06295835593ebeeedbff73b 575ac593154b95b6dae7645f889ddcf0 466e5bcb7038889d9d48ed08450a6532 927903e9992ce4877b619f30d1fed49 c153d0d6b4fcf74f54a61dbdbc1ac262 68680849282fb0be21ec2f83d790ab97 4e6db34a8ddef9abb9569033586af233 71e00a86a67df6e9c225da989036c576 1d53223952ac93dc3bd24f986301745 166ca6382eb80ee830bbd4cddd04c77b 6e13d5d26a0c53e13a66b6fe2c876ded ac747a86af391b9548f9d76a105d8448 cfe15cdc16a2e2054e2e1b2af0cc59a7 61527f3ea1741800c3bd24f986301745 866a07295aa3a8ea5804b7e86be64166 1fdc88f78be6ba4e14b86d5282eb8301 f80cce35d167ff9b855931d119219022 dee160f20e1195a4b2cf6e4d01862bc5 d3469cb008d98844902c0a1a69e25bd9 10e2e8385b5322144708f4c6142673f0 2f1a310ca0fb6b0177e131ed5f0fcc86 90cd6fd66e29d712486040c0d9e85846 15ec20de98359ec88de7bcb173109d60 57d7f4c5b427dae69dac46bde4c69ef2 3ab6e079e4af17401a53162afec5ca5e 9ba82ad65b1e90a1f51fa0238791f5dc 5bbfa33dfdab27e5821ac289e2458975 6fb986ed2a4db0c1bc7f8f77923d8ffa 855b1a33bfaf996ea1fdf150cebcb587 d1fba8006e7f72bd7228984b9aa31321 9c09df47d2aca46ed6f21f7a864a309e 6187d4be01231460a341228b21d337a9 ad7ae42e620d2ce7e074517a246f1e65 31af0afdf9d7bcf7855931d119219022 9ad91992184e2b3e283b00891f680579 539548613fa54b6725aae1be30d7ea21 4f8ea79100a324b77445d25f394949d0 f9ca04891f79cf2871124212e03fb7de 8d35df98a26e8317a193550461f84122 383fed2f8f81108c6fa63795f94c4d8c fd09a960ef86fecfc515407725a6e525 387b1c9a2f50ec314b3c42e318f3affc 48efd13f8115e3cb855931d119219022 5de144376ad2826329909e9b8d8324a 96ccbfacf833d023c3bd24f986301745 a70e1160739fa533f820611afeab68c6 a9cfaeaa85dcb7663ca57f5648ff1b0d 15676a89e39262ea852bb95bccedfda9 7dea0c96340d5b9455f46d55537192b6 de6f494dbebd91ede057b217c7790618 dc1645a2d2b61e5950794366030f78b 2933b92d193e31b46cff9b44fdf0517e 43906b48471bc76e7571d17c374fac42 b95072f2b12a3274d810b14a81e12eca 1ae9db7da9a6bd449453695c10a417d6 ca82beca43a3b9b59ccce4c6d5bb195f fdf1cbe0d8aeba868c1cf3f7d7f0373 139c9b504cd85237c5984c8ccbe1a38f 7953711de0134028ee18bc48b60b36b7 6c0ee01fb43f8f46c045ebb62fca20c6 c450bd1ef8e17865557ab4b593540354 e3f583837f5bb80a5526f91aecc0c37 faeebcbc4798714188b4ba3feb03ba8c 2f07c59d4099b5762241dba92389a637 aef9ca5d1b98b85186ac7f2dceaa530 fc1fff82a7c97884fc5e332306225be0 2d12d4984230e79a4b3c42e318f3affc 2e4715cfffeb76f6e074517a246f1e65 a1da0c1db8220563b6b0dd2a0b939a74 36821105af341539d810b14a81e12eca 319e08128a169440c3bd24f986301745 3834bf577a25eb2d1ce5b91ffe4491de 2555bc9595a45e9af36ea1eb6542fe7e 61aea77ab9adadfb3eeddbccbf885e99 19b849328f1a8e522ee60509601408f5 f46c84466664f3162f023f89cad43868 de1d6e1294552606a625499f7117f27c 66b43780a0e81cbf16a2b5862518c93 a65dd1088e44917b93edb2fe34609efb e7f44c111fc65019e76bc197b3a3ffc0 7d04f5a75055273af9aec59741c69cf7 ca2070bf7d1aa372cb922bcc33df0268 ad3e2d3cf9c03fb1c045ebb62fca20c6 2ec13bb2c3d06c0543dbb6421d614c0d 348b2880842cbbca4ca84d60642ec7e8 c7778ca8dabfc6809856fa70a578baeb 32c4e455cd92d2a3c3bd24f986301745 4822e02112a450f593ebeeedbff73b e603a4f0bc12522558df8eeaf3dad1c a392cd632ea01b6f53a71d150e481685 f99f09473fa068dfc834d9ecc7d5f465 87ff92c179ed5ed292f4c88fd91c6b1b d3030c8698bc2f874c4c693a60456ebf 4489bf9e90a6918630bbd4cddd04c77b 650dd98cb20580cb99860e9353bb52a1 b70eeabec7fd454581960a3202db094d 978a4869d7fafca74b3c42e318f3affc 53afa98f1de6af6d810b14a81e12eca 2d1fef407ec41165700ade95b2f08044 7f23cb04feb40ced8161eca940958ba 30d6d671a33b6c22e76bc197b3a3ffc0 4e3191c1f133fca0586c8517ad05e6f3 e1369c3a3daefef158df8eeaf3dad1c e5c44394471f29d874739c2c9ecfb3ee fbf5c95ec6febbeb07cbf788ba0557c 89875a037902c0664bd9e0690b0b191 357d9c5b669d6aa37ec818a4524845f 4cf6260ddc4e1ffc2ec2c1c65e9866d b61984e31dfb04c1d1d031a1b745cd85 ec0d4fc8d4c29e7a7ff6ace05b36a5 4643de4838d7048437251258858a7a58 c2b9613e2898f3381c7afcd6c011dc9e 150c9c514d3274b315e97d83801e911c 10f3c10837232428c3bd24f986301745 11520534ea9a889c7d36177f6cb74069 f46fe188be699e5c593ebeeedbff73b e367cc737c304024297936c81e7f6629 f0735e59fa7222f9fe8adc3c073336 9be8aa90001e8f6b492d9da2668ec34c 949e39403ab4fab37ade8e3ca8db8db3 e7abab128d0edb033396b0dbcf4d4bc7 38b0f5874f16c1264307817adcff8140 499ab88b7bd33cb92466f73de2a564d0 53ff581b91740efdfbf96e9694161951 b91d82b0ef56c395a8005eb66c8d94ac 598e49637250f85d58df8eeaf3dad1c 57754ca0ec4fce12990d726e600161b7 121a3040c28295829e4b5aa807bb4e7 5fc5ebe830d27064563796b09a95b12 c3884d2d31ac0ac9593ebeeedbff73b 9dfe5cbbb78cd26c9ccce4c6d5bb195f 9e84d2ed1fc4a0efc772d43f7a27a1e fe3a8b30aad625ceec56aed2da084563 d753e5da9b064152ef2438b4b778b7f8 707b9fa6a564ba0e425fe98d8cc1c2c 5ba5f9648b50ede83918f23e2305ede2 bfab799cd63b345e232dbd6edd2fe625 93d61cd5da999d774b3c42e318f3affc baf006da82e4007a2d79e73bf7425e50 a0f2dfdf0d8be7ae8a543abce4efe920 f7449ab20f45bcbab1b6b0c5ddacb607 d656a6250fe0058fd810b14a81e12eca 40b9f144ea6f35659928e3bfce70611d bae92d56010d241157aaa9693588d48c 33dcc9e237783c3c955824885d6e7dc0 64a7fae36a56705e3ae0df12be078c7c 83c5f5d8ab0733093fa313db82fc9cef 6c50ffea3a4ec86655f46d55537192b6 8b7175b6c74385ac87187471eb78d702 54598a1cc5f389ffbeb83c64f2162734 c0882eb8eb6fba2d8705931e60ead6a0 831c0e0316d51292df562efe672dd5 8d177d02c291deeca7f2f03d5c90e79 dfe0eb3f446059d0500cffceffd2bd2b d634c7577c8bc1f0492d9da2668ec34c 3f058be47b5d4cf353c1d159a8a8422 2783c8d705a1a146668ae11a7db5e82a 73d4df18ad195ba6492d9da2668ec34c 96db71d279b97c4ae02c30c9027468fb c3e5380fb498f749f79675bb6cb63c97 18634e783faca47d668ae11a7db5e82a cd27c39dc711626d7e9fb8aa5670f37 421657269cac10f7492d9da2668ec34c 426a9fb4da504a96db3e66b0a511465e 680a106cb0098e7fa71c812e027f94d9 ab0393b07d2965ef79675bb6cb63c97 32bbf7d09d3acd4c339797c21e8801b1 6848c467de649ac2af5e7c004818a73a ed554b9e04b7f7eee7be13c697329304 8fc6c8d02b4b0cab14038d588fd1342f 3eba5f6a09e87969b76e29c9c43bc7aa 4f64eee409e34b41aa8d36cc58ba1cf2 d956062bec339ab6c67bebb34dbddc1a 46165d8076918c62f51f77a6d7299806 c0401853da58a1b7beedb4c8fd29e2d1 6686819cbb40a3502aa2b411702b495c 52e0dbbb53159e0fbd8980415d183a3a af5fb0179304e7c48cbb8bac2032149c 5667350dffa82263968da786c4da00c 12b1fb7c765dfe8eb76e29c9c43bc7aa d78d509ada047f34e1a714ee619465a d7d732d0ad7537eb610c2a68437007d6 317a934556406ef84b3c42e318f3affc eae2c096070f0a57beedb4c8fd29e2d1 3cdf9215a9cf0ff5855931d119219022 20129f3c7b65b98b9856fa70a578baeb 217a31e6044506f41b17743c18fb63dc c5480855c540290ecb922bcc33df0268 b7aedc93c53ab7c1490ad276cd2af3a4 883f5e54f764056f6dd4165bd7fb497 53b0206102d236c99f8c3d2002c77ddb e7abcb9f3d5876962b70eac6546e93fd 5bcb0976657fe6df37b2bb75885cfc44 fe0a8440aef8f597a6656391f7752a4d 2b88cee2ab30101b9b11da89c22111dd ddc6ea7906f28cace8e2c411e1e93d03 cf52e17b21021ad9490ad276cd2af3a4 eff1bc2f644be748490ad276cd2af3a4 b796639ea7368f3bec11953b27b8a03a fd79c30bf108dced1b17743c18fb63dc 68f2795c385859e914038d588fd1342f 673dc4bc9271880fa320e34dad7c78bd 3695727c04b15887b983088451bda93b 815ceec9c8f5dd754b8710a3469971b1 14130d541c4a419df51f77a6d7299806 3581d1bdd22e782a855931d119219022 f260449e91824f96d810b14a81e12eca 96a2a4c8e6b988d5676612319c6a30c3 a379cb01e0a98298607974568e26586f 254cda2719087d58d810b14a81e12eca f511c1d4356a6a7ac0a61ad1cf92b694 a6ddbd0556f5de20c64b3fdd6a5588a9 df3f7ccdb375675fb145a08fb49c17fc bc9650bb551fc22e1f6014485d7eefc9 a1480d2276574cfee6c5cd45aa112726 58479ad882dcbbfd9d297e74104d3ac3 fe621b83750698a6855931d119219022 22ea80a1c8798eb22d19175e7d19b7cb bc4ba0bd86545f3fcc749dbc8c455b3f d9a0b526a354225dad1da5f59ea6f4e3 f6c1a97812bd6ebd952c86497c2cd532 3d08a0ed3ba94fca6652506d959dc71d fb91ba29b46a519f8f37c398c1a74a0f 7dceb027969fed5e2c0a7b8ff2381a5c 2bac94c17bb341d84ab0e621f58e2d20 77e24ba0c290ac3eff87aeb86717e73 61cb695902f7905e7afed106527393f6 6216ba4ee25256c9490ad276cd2af3a4 7fd8601b0b0a01c9beedb4c8fd29e2d1 e67046b9860feedeec7cbf3284585a40 c1d99397e37782c0a8699b6183baa203 cced836d07325938f51f77a6d7299806 98bc840471b4fd568e6da51641e48238 6f1594512b88901798fc1d0403f6ad0 4cac98acfd5c43e1f51f77a6d7299806 2810c2aafcdd9fc3f51f77a6d7299806 2024beb1477fb5d2278d386bfa54545 3297d1740b06d444855931d119219022 adfef21c37071016b4c161851ed2b4e4 dc4ba419b9035c4b917b96045c9b6dea 8106aef3eb88f9e4578defb131c3ea1d fc7d921df59e86e6beedb4c8fd29e2d1 37d500b1bf8b3a5beedb4c8fd29e2d1 e4e30282a0089a5bff06c5af4a0771d0 65e4bde475632e5bbeedb4c8fd29e2d1 6f85f70a77782307f4ab13f4b49ac318 c02d673e9b7658d52b70eac6546e93fd 3d5f5cf765767b0fe8e2c411e1e93d03 59dd1eef8072ad8de074517a246f1e65 54b3cb531febad83bc9f3fbfc126b5e4 81514408605063ccd7be956e59a3bd7a c733e81695923586754784b56fb4c23b 3c5048910fe8919ed810b14a81e12eca 6e6f8f0ea7008fee620851befcf2047a 132ffa7d607ffc53d810b14a81e12eca 6ba6309d74f4a131272505863dd1b8dc e692a96adb18ae3fce101336817a135f 5633513a1cd1adcd9e9d84e41b20ddea f4692dabc20f58e0f51f77a6d7299806 2cd0f589d64ea3ec36ac40071701c687 d1ef98cd329a71d1d8a323bf2c61bf7a 8eb85236a450db4c44e1d3da2eab581a 57c21a71a3518b6a1af550e7b4aa14c f714747e5abc01cc14038d588fd1342f a06c61dbd3a5f3a5b903ba10d2ec446 3b391b1f9337fb5490ad276cd2af3a4 4e48be33083b8c70d810b14a81e12eca 6818e317471cf5739a83764a2641fc5c a6b54c79a942cad5a6589c01f678d8ea e6cd72665faf3180f2cf6a9bef44d625 d1087cbbd15f509c20768660cf080d12 bf3b3076b1f43b8a855931d119219022 6b01be46542d507e674ce64e4bf77aec 95d3519b036c862d4e3155c362b85bd5 11f1101ba2e29206cc963bba1556032a 7a95843ecfa6e5b7c21dc5ac5592089e 8a07b5fc233b5ad2f51f77a6d7299806 a5cad9ba5e73ef239b11da89c22111dd 317d8dfc74e872832b70eac6546e93fd 2afcecd6a801171dbe25fbd47cafc694 76b32980bdb108df1b17743c18fb63dc c8e516785cbaa85259f8e31ca87c470e 9b91c3d35057b2f93eec26c23f5bc80b b15ff00cf3ec4dda14038d588fd1342f a80fd4790dfa2d226a4bc5d920331917 aeb5975090a272b89f2349486c570dd4 282b2cd82ba901479f8c3d2002c77ddb 97a137cc6688a07c90a9ce3e4b15521e 44f0353cdb820886be25fbd47cafc694 ecf3f077d30540fe5d5ac0a8c21f0bd4 15ceba504a820cdfb4c161851ed2b4e4 580373e581fa155d3ec45bd2bc895504 2fad51052bae2366377b9297f3055210 9e3514da2268557855931d119219022 5b0d2362c82416695b903ba10d2ec446 7eea0fef45efd698a22a3fbee2fd609e 9d18858529b76154aa7cb30470f3273c edcb2dc19b063f8ba8737fcf23389014 1c996c187f4354db7252c133a7e17d94 cc3f1a06508f2ebd1aed2875db0a8711 9f5ac902975f409e820018801b237b3d 6db77fbd32e0af3e3f9d6e0ade5188b0 3be738da92d36dd09db2b194203875cd 3d6b55fe2deb2aa3a1c746794f191dc8 9affa2569ec8968c60edf8bc2f5c8881 44e9b15e214b390b2b70eac6546e93fd 2e92e1ec1038ab0914513156cf2b8d0d e0bf1408425c886da159545213d74ea 481e479cb50f251a7cc7de242a4585fd 37dcf713a1842b93a8699b6183baa203 d94795f08cc91051a7bc6296cc70fa9f d29dedf88bac00a21c19e7863a1c200b 38ededbc1b3693cbb9aafffd8edadb6c fa7a8f6d4c33a4081f4e3943babe5979 4fad9f5ab1d22ea95445fd9f27a38098 b97a0bc7e2213913ae96150e4aa362f9 1dffc3840500e89ab8e1b99345a5afd4 b4a66058027312c7ac51268fdb437a9e 322897a771d4591f980d4e1477df0f00 f73fe719094a76ef62e5325f0ce7656f 1b73a0ff61df00c5a1cccbba517add5e 8f02a9ff58479e59ac51268fdb437a9e ae5b18b3515c84ee39683a06407f7f3 e5413a9305d52482ee1a5886e50e3f9a be509f0aab6ce96251d3c864cc68e22e 8a45e9dd681d40d4789ee5c8d247b09 7a0eab4d41f461e980fc8e4355cf787d 821f2cc776043008efe8aae804e55d6f d058b63b957076771d6ac856ecde9eb2 a6681ac778c7c314843f1df79528e538 5ea758a6391a2f814b7c5e48b51e5c7c 5ce75eec38f8437c8a64c4f643bb7cf6 23fdefbb27881722b0f92c9828c358 cfb97383aaabd98ead67befd78c3a0db b12ccf1813b424864a62dd9e5e4067d1 1fe806fc0004aae877845ad7d2ecfba dad3122c094cf582ab82b08bd2b110cf 1eb459fa4f1039ef8245b0d36e16cba8 d49d33a379000a8d4b2ec20c30ace65f f50603a59b5c2ac7650419cd627ce18b 4185ad2b10b278f83889b52430b1ab3c c9c29b00aa05386562daa5fd16a7828d 365bcd79e58fe001243d6e2cf3942343 3c9c9adaebd66ebc5fceaa39a8353bde 8616d1bc989f83ef2df099df387d2211 2145e510632056161afe34ec6aa383f 1bc212abfc3ba87ae5c3f1a4056686f7 fa09f5e809d1c8c983b3f8b7586237f4 1c2fb38795e6e3c858df8eeaf3dad1c 31678ef74b85de0b15b943c35c765be0 75bb849ce0a252e72c1a544eca74c954 15bab3d19de247cd9cd431573238602d 887ae0ad66669f1b302fb2a9e79d3e7d 41ffb4ec3d22e9dd9e7e7bd5f870f40d e9ebf354db8fc0fb4faac606fa48b508 b90ea1e6e5574e5814038d588fd1342f 6a436b27484166629f9a7ffc9bd1e3fe 5b0ca203bc4021a2cf9ca735ff10053c 2fe8de498d0f00f51f77a6d7299806 c92e4772e218f5cbef9e56a2aea1eb90 140f12d10c2b7fd5c77467482d6e756 462d928e94689592cb2a965e75be701c 85fd80db82120aa719fb4103277a6b93 4386633c2d2a1a2c5fceaa39a8353bde c4bfc29898e5a1b490ad276cd2af3a4 d35890b708c633546f31a2b0e5969628 8dd1ca36888301919fb4103277a6b93 e157bbb54d5a2ffdd6944324b21393b5 2f257e35ef61553b63c9ead28992f1 c958f04d72957fb855182f299fe41fdc 552692f06e4fb0c9ec5b06c6d7d7648 d2d5b8f99d977e353002761e7a3ba3bd 9c5571c45d44edebb6aa381e6d41cd4 469122d4947cf83ee6942c5426df6055 85f2fc137f3c7e57a19748ad08476c18 1686831b1e585dd9729c5ef452d153c3 40f1be4ede6113a2e03aea0698586c31 33486ab58b77ea46768449c155e32d73 1a521b256704b08fb6068c62e84866a1 5f3fd62e285aeaae4e2090b842effe89 efe2bb181502eac1f3c9c1464e55d580 d0b38b27495542461b02cde7e81f0fc3 9da02326599123989bb37ee549c6e937 57c935da692d6e4c27c29012942420f d3a1f88f644f36722f92c6319744ac70 327f5df925ff54121dc8654936e2968 1a2914169a3a1536a71646339441ab0c 9cd3cd9e93ac389e82db9fca4b68095 a3064f61346b7891ea0464486db6b687 36f53cf8a68d1ea73ca57f5648ff1b0d 9551ceb9c3d5013284c687cefb7c213a 3338d1a99d7387562a488bb287b71f6e 7fdb1575e7f15c199d9fad88e2f4c8ff 9dd91ad8d34c249970521b3539fadd3f 3a85ef469535f0542cc8fcd230a7f687 e0b333381b21780495e29b6e21e8c291 ac646aa05a0ae0e11b604216cb6e7d3d c2369a8875367b56fab6e40cce6926d7 a9e23932f14fe0cd323ff07d83f4248 35705c4e27888e5d27b31bdeb5f5c79 4967c4df72373464622e43c0e0591de0 28743475c1892193b0097f8288b985a5 52c379f93a8ae9de276f41435671c8b8 e4089e22c991e2dcfd277d65d018c82e 798fa47b8508c8b162a510b8f97c658e 7d7510e6bafe8d2aaab74c2fedafd 88676c2f87a5b54c4500047017815f5f e458913e25ca7053c1eb59469984d29b 462afff41381a622ffcc22765a7dddc5 c65061bae7f351e419fb4103277a6b93 1a23f3f25a8584cc49fc9876b157a42 938c5e8ec8703d5f7ff6ace05b36a5 6c9ab42a8e028b103fb0920a55a7e805 92fed8fdc8f881d2dfda46c9a34dab22 b8ad178c1d78980472dc9d42e683347 bfb2cfb2e454160d78cf5fa17988625c 3779ef1608ed12dae074517a246f1e65 548c2b0a10a3f8c798b664231032816 2e23b1aa756399ea1138d031cf239f4b 1ad008783272fee4c3bd24f986301745 592819b967c53ef0f1755b5047ed68f cbd789375190fd62f3d2cb60d3f3bab 5d00596375ec8bd89940e75c3dc3e7 ed45493414f9214687694c57464ff1e3 db49ebac740bdb91d016fde69633b7dc c15b0b5f7d835b5012660c1de94a79e 599cf052b675ac2c8457b637f6fe1690 4cd743a60cfa17d6b0a3f25f5d8cb0f8 b5529f6f5679d705c8b2ff62b26cb42 5f32ce6996fadc96b3f49378110b01ba 9e0284056aed2a097543d7dbfecfffbe 9ebaa0f7c3a7229be1fb37eefa671b59 1ba26b0ca7507edd7c8ffa57cf4ce53a 28f702b5c6ccffe7fcf9154182ccb5a4 72194d338303b1b155d7f0828042fbd 3d38d16334e796526f3d2b1b15fba494 4fad1101568fcd48fa7b9a6c80e4e324 19c5696d315c359dda90d20b69102dd bd27680b9f09262bbdb2cbbdf53d8900 1a417e4090ced738855931d119219022 9f56c17cafc1ba35bcf7c2310bd3f83 c45633a0a85fb4d0631c3671ad15929d 8a1f9d4a36baf4fdc563fcc2752ece39 d06b3f46fd5a901d4854921d37f7e048 10ff43e8fb49af1719fb4103277a6b93 532a4a4b8ce7b6feb9ac39a10cc48e08 3f682ce98ca01c85b3cf15c77de45986 c06a4b0f57cac2b020afdc30846c0661 83952bdf5c426c4a85cad391c250db01 a54de0e6573dabc0ac42b9d8db52fc14 41d18d4668939ced3a8e4d3441f2dd18 7368b47a95e0db8886cc6209ffc37d3a 1cce99367326fb45a7f4087375d26b7 13c680c1fd4d1ab4bdaed8eb424ecfdb 9f7a8670a87dbde9b50d0c6a0c254040 8c7a08d437dc8431369b4bd8c721a288 6e3a2f1de25bcde5ed6c51d5b9c713e3 5d10c947cde5f37f2e7ed79f4f48ff79 3ab1e5d4f889f8f1cb7b25164a43bff 3889c517afd62ac5dbe9c90af547c85d 9db8f8c94dbbfe751d742b64ea8bc701 ef4bc194041cb83759b7deb32c0c31a e603bf3c3d2d26f9579e0a60e99d2683 a5b1e3e2c602d464ded526a7be77b30e 4a3fe6b653bd51d03d5f95f9058dd0d4 e77fbb3e21ccacf1a03bb2c2325d6f92 e9fd9958920adc279943cffe175cad01 6b0fc2214ff06578eb3bc6c6d15f9bf 56fcca11e3d3a920c1702e8e8263bbd3 9bcd5f77b6eb92ec415434d4384bb66e 9cdb0315eda9e8cf9f2c21e46768be21 5d90c1e74acbae27475bcdf5ead5bfb9 ff9bb9597cac5ef17a50afc9c93f8a50 283e6da77ada4d65d42225b7548c8765 b63c8ddca680a2a3492d9da2668ec34c 8657197d00d103ad4ac2955bec7764a6 a0864018495ae55cdef39da7703174e8 ba52d8aed2dd75bba75f2876a99ed045 a5071459f9774ff43215fffb0cc2c59b a8c9827810c66962f8fd14d222168087 ceb0c123378d24bd9f4b4145f6688869 1cbd8a3d7208cd6b8990d2712ce4d993 5b621e5fe06ebfc7b71f7e05ca67f031 3d791e306d7ae620b3b8d66c43b5b940 c7872212279d59eb540291e94bc8ddc3 7269b683b73eb9a1aee34134dce9c534 d064b468c3cf683cedf48f9fa39262b bcc14b683930f8d33924adb2bfcfed72 4702c7f73c64fa81cc19d3672693a8a0 a5475eec7a98a02671a70be9f12ce8b0 a1c04a11d0e20691fa3982b18d6e7664 199676c0434f5e176bdcd672c2b17215 649eda5783cc47e7948cb8e1d9ee487 d1fab6f92fb0682763a371f6fe9862af c6fc2ce48ae9867d688ad7d3969cd02a 59a2490719d49a25aaf15b62af6b513f fb5d7176752898cc5fceaa39a8353bde 4ffb8579bf17a5a7df253edc1fde0322 bce02d42bfab37b2f4f06a8cc0f0315 53b1f1781eb6339f5f4be3ad507aab92 5b5f613742a2d960aec74bea859ea8a3 2147aa5c55a3913c240ea0cdca7b391a 8d3d9f1bdcb245b49eaa55bb236fb6e1 e7c350f18bab885bd0bcb58c58eddb59 b63ab8d3dd4eee098d95727c923f3722 69adc52c58477affe074517a246f1e65 b9328275771909fe920de219c00d1c3b 683ca17c9b0d6c83f15d71fccc06917a 9fc9605f6ed5762553cc33364504d5 27cd239b41129a13c19a59cdcb309b91 5b04e4677f1a45d3609211b089fcd35a c18781f9d9d6f34a79368d1198f406e7 2167f82caf4ed2309eea323f522c6486 d4063d86f6b2d27cd5b312abcf74b469 4d81894947d08922beedb4c8fd29e2d1 3c514c4f53e3f1ed4b3c42e318f3affc c75ad4217e58ef871833a34736708547 1c3317b33bfccab0824080f516909671 ce88f6aa0e43bf8811099baf02792d0b c4e7fef0548b8d87247b7570b0fbe63d 8b61fd451bb28c80c8bcf367bf7d8952 9d832f72888892e66d907bf61e189d9d f9ac7801460434b271140e10b6211a6a 7823530be7179f50e08668a8b378b020 6560de55043db06ab0783d9ebb200d10 24b997004163af21851a116903680096 6375351785793a96412608755666abef 42db26c80b9530b7c188d6c6d00e7440 a3ecb4d209807312492d9da2668ec34c 497175f56357e331b4b7c06325f7a2a5 7eef97cfb1b73681f1755b5047ed68f ca577373ec8bbddc7730743b6aaccb6f ce56b5a3ab23e12489aad4e9e4feaf9f 5ac1ba406888f05e855931d119219022 1c123801cd052c833bd248747cb27ae2 4020a2b829f148a18d8c7827464490b9 71d35a394d35f70619fb4103277a6b93 111df730a9d3f2a8eab46ab0515e8186 9b2ee4ca099fdcebb4c161851ed2b4e4 cb8ee43492cbdda3bf6f067b2fb335d 77e044ca2ebca1f4d148fd8215fc3114 8bdb57e97f726a8133a39277b6bd460a 86604589a588bfbd98cfd47a860803c5 9e99421220d92f1da8699b6183baa203 7122eeaaedc364fab5e360679943d9fe e49636394d4b0189523e5ffab409f73 469fba8f6fa06e6d2668a5ff3e8889a1 1c7ce8d5874553ccc3bd24f986301745 38e83df89967420b876b399a99a15c0f 15a95cddbc40994beefc4457af135dc1 ab08125b4f53c1779595137b79304890 54807aa2b0f646a448efbbb060f51a02 ef92a53a5aa6ce008f88435cd882fb0c 4d14547b54611e9bcf1ee9bc9708f08c 2823fa4b1076324dbe0367f0d905ee09 6351840a6f3b29d0a15e691028c09e34 6bbd16ddf2f8be61377b9297f3055210 d455b490f08607a57c6de7e52b00ebab 22e3a5a8d22b268593ac14f56e1bb33b 5141810a02a145ad55f46d55537192b6 23b7e640f09dcfabf1477cd05362531f 9d547553b8b68c062f3110a733450426 da9ae22db57775cf67cda8f7f78d0d19 e2a940682bf386d166e77edacd2d5e3a 910a506648c64970a8737fcf23389014 9f286ec40676d24e3dfc74c6ca03fa25 7683778558cc36163fb0920a55a7e805 b97cbaff986d5db4490ad276cd2af3a4 c14e9980452c9411aaa05ac4e55dbacc e7058b820e66c9249cd431573238602d 8ad1486390608fb936da5f8a6c22b2dd 8a505843a90a7486dc2bb3ee5ca7ba76 8a179c7244ed94f4f8369c172d21d852 8dcd27d37c9b8bbad0733ded25052299 b7eecafd15147c01fabd49ee8315e8b9 9be919e0f9243b9beaf288f952624966 c4071718e45630ee5510d59f3ab1ed64 185e4e4fe22d65842095a33119f8ea7 9b18c8de0d9d2882166ddaef2c2c61ae 41590fb9de5414f244b154f79bdb5bdb 66d7c4e6ba6c4d415963245f0923337f 654d6b82543a863c3bd24f986301745 d1e231e9fc0e9127ea6202eee73b76a8 96ede227209cde474042244fe2d8ace9 70f408c759664b953f99a25d2bc1902 1c1f65cac6bbd1e15dd7d7985e749c1 7807caccf26f7845e5cf802ea0702182 d19c946f825a9786db6175ef18ad3f80 841f48a81cf3f066ac00fd1150223027 f86c1da9ed243ff055f46d55537192b6 6b6ea2e841e2f00b60eb699207aa149d 9245ea14da5198b64b21175170c559e7 559582261b021b7e4f987dd564b75f17 e14f505926399396b5997278ed74fcb5 b7820dbf7820befb99860e9353bb52a1 9a294d3a661f96a3c98555c181f6055 8480f767da5d68ca9de7cc399bc9b2b3 a30eb4a16f30f29498648daf3d784f2f 72ffaa15fd437b33dfecba9aa42b51d3 14c9ffa70653cde3492d9da2668ec34c 9a0d79f4e766f18c7d10f85858b5d957 2dcbd662fa03dc88956c2c3ee7a48cc0 2fde3d8a04798c325b937c87a8810c08 5094e6f7e49f2006e6942c5426df6055 234ca609205d8d80a1e28099cf3c0efc ed392c6bd0a25ecf5a7a4ee31b873edb e88b21faa1d937f3695cf5feae151847 20ab56e8a819c7f06a9633583f89b17f e4487798c95013956a7d64731fd3b515 8d459a20748b23b8c0c6e803b020a614 631a942d7b87387019fb4103277a6b93 dae4f6f734088c4de3a031805ace4a99 cf63d0c639cf4d36da1aea1fe709296 a223fb0172d705fc3234880d6f34f7eb 4805127beacfba4a7e7e510dabdd3cc0 b1ba4d962206bad5dfda4f5adaef3a7f 7eb961d3f19080983ac416718757a350 cd4357aae286fb57c5f48f9175316bec 729673ab33a7c9cc4d3a0a56bdd58a7d 589d2e18f9b85e4715dd7d7985e749c1 21d160eff925f48055f46d55537192b6 9287845470d119bb940b945d5ba9958 1b7dd5d16aa6fdc1f716cef24b13c00 8147ebedafb763f21fd3f440755dada6 c5d499a443ef70906b882130fa92c175 87666a40c8a35641c7166d921771062 d10bf548de6c75a966130541a711692 39dcbf2d99d0e7e778104ea7bb00d557 e2efc1a73017a3d2e76bc197b3a3ffc0 da7daaa940ae6700286de2124bf64f07 c139948ad09b042991a3d45e8887248a 70a4cc63977d8eb018d385624fdfc6d0 33f9152bf617f22a16a2b5862518c93 5c0810caed3ca0f83bec56bff764ba78 4f31d399c2c778135fceaa39a8353bde d16b6d6daed62ead49936479d30607f4 6e1dc5da243fc523c5f48f9175316bec 1b70ae39748f9b97456cbf78e1e89022 9ec420c3155ef5af707cdefe012d0353 17624075a52c9b15cab01e89f60c9290 c4ee00c87688f3b0b161476a346db176 499be58242407271391e4d6c585a697a d8d504a5e90e5b48c3bd24f986301745 d4f8060cf95edeba6ac2b0edda2c907b 215dd9e926305bb7f8e7f2c38fe37243 c4d4d0cde7e39bbeaeeec543ce96f24e 13ec1052a32ca23bfd60059ad8523f1a 3d7f82a1bfc5e1ee9dfa717f86ba8028 1a9bb6a5cf448d75e6fd255f2d77a585 1f239239d1039d60ad8e5e47362bc281 6f5813533bb9001dd24546afc5de2582 bbdc08f4f00c484f310af74324aae27f cc05a1835e7edda1c02daa819b61338 a568d1602f94c814f8a51dbffe0021e4 5ac80d0ff2237fd8e2dba1fdf90cf48b 192ec952a75014d09eaa55bb236fb6e1 cce2b5399e5e46a45510d59f3ab1ed64 edb69ee3e3e66e9bc242632b2a8c3129 17bd2a95d2c691326fb8d4cf06fb5045 14b96e25f93105674ee71d2f70ae4021 7588da8ef1e427d1177f2a3a0c71fbcd 7f3e2154bbe217d4143e713a73e832c1 a41b3ec61751fdce6c28547eeaf2a8c9 1482036d8ce3b51ffc0035da39bd5e1 15490f254e6e226835cf289fa8ad7115 65f9103ab7a64e83cb7105765410e2d6 67e6cd9381c22b9045c6cb69e0968783 2ef075a7b9433b06b2b7d07d6c0cd464 5771840ae9ab5a334a3ececf7e04ebcc 3fb8797c780710e45213cec267286d18 daca80d92e046faaaf90989a4df930dd 73d02435d9e077a75e062e3835b2d911 5fc08f3f8c3aacb8456cbf78e1e89022 93f7c646dc5dcbebbf7421909bb3502 b2aee339ca0dfe94de1b0b03ca051f02 ee7e37046c26168dc2fd07f66cbad0f7 cea61ac56a07271a96cc2d2cb6bf6019 99a43717f3487aac63fba60e6c90121a 209b2271f9434cb3c242632b2a8c3129 4977e64ab070b003b778cbd50553af38 68b5f18b0790e9e128ffacc8063f0f75 b5a2a53b9b7e16e6b85cd7b6d43e8edd 63ebf8f4f1e63fb0bc85ae0034c4dd9b cb65b7ed48165ab09e9f71d2c7dacf45 e75138a7ea380470191dd4460a0b4ef0 4368d1fa80c34433f88bdcce05b1a623 6a3e7d05a7ceb4e1a3df3190f4f32918 7f7bc0b7e275d1079477196152a8f4a2 ccc9cc45699f95f21bec2e8246842c2a 7d3fc73ccd968863e40d907aaaf9adfd d6ed3a1e5d5eab8d97fe55e7ac43b9fd 9b365e622638616d58df8eeaf3dad1c eeaa44341a57c0cfb9531c981c83e1 32d06518fd07df9bcf004563556ddb36 a8da41b28b37833d14f6a05ceb8c1a6f d32ccda2f4614dca4b2ec20c30ace65f 95112920a9ab9c24f8555ec936cd4b63 c6e3f651d2acdb0a746f36c9587bfc04 6fd426f7cc1a2b00d5130a83cfbc8bfc 46cdb3dd8b6c460d473f10e6caaeca56 6c8d4952f67d47f56bf829b05be0ce22 8478187660d5443186915ea7a2083dcd 66bda56e82bf90a677ceee024ab73ab7 66a3fb3a480c2b9e7b22e9efea2f565 cdbe8e456a3e3202c55161a63fbd109a 56ef806397cc9c4a62e6af9325f07021 8c1775d71c36f89d6ca407465d3c74d7 6db3d1818431bf97e785ff1b79dea9cb 3585c614e9a6825fd42225b7548c8765 ed59a9478c7cdaa27d892bb924f972b4 795d4213e1dac276f9814818e8ac1c35 9e97c5ba09adfc481b17743c18fb63dc bf9df04aea08b0f0f51f77a6d7299806 1bd49921fac3e815c3bd24f986301745 98079c9fb39bc736f287ec53a469521 88e73c92d8d5195fb8b431083b6191e2 4cb4f4d4bb4771dd1d1d518ba4f78d6c 6712647c8e0c6af29b6e5e087210d348 61d9def9b2df3e40dc6f96c9bb9e3ae6 99224f3ab2705aa9985ef0bf52b97bf5 2c6beb9625fcb1a43c7fd9917aa4ff1e 7730689fb323f88555f46d55537192b6 50641bc54d5d41e2a85acc7b983a0d66 d3b7021f03ecd58d2585ba435c7d1fcc 1805ca3ac2779a443eec26c23f5bc80b ee6a58b9f4a5a129ba5342d638d0c267 3cbd3d2da993a389fb05cb5458b1da64 128011ffc7787d50f0920fefbe028677 9d57cb805345d761beedb4c8fd29e2d1 c6fc21c5f51f169f365368fe0de21d22 776732bc127417f28a7219d923f4718 1a05bd57d0ea709e7d3ba54b9bdaa55c 124c4b3afa6a3e56eaf288f952624966 ad243c4ca5f44fb828b75d6c308e3c12 cb48a015b203b3084acc8059dcf0a054 7a0ec4445356a79410643b0cbd7095e7 4c20048e9066d768b7490c34ba5d2779 46c3080551df8a62e8258fa1af480210 3863d248581965c0f42980cb0dac8238 452d4d4dd64dbd32d12d3a3073d6ef09 de205371514307babc2e0a60f47fe031 280949332aba8b8a6d8dfe83fd00685 a6e066da6311c2c7f4d017dd03935e6c e8300d560b8d60244cbf9a02e3342127 689c4f50ce0aae27908caac6d5f8ca97 c73070837a2f9efe1b45df3fb820c9cc 2cef3d2d545f4a22b305a938e0ed1b48 b3c5ef225f841cb59725f8348364f5a8 176e6b9b4340f25a7ff6ace05b36a5 951a9c85494b53993c2e50348f23d3d 17c5c22c9ab97788db67d56f11b1bed6 2199d0e64187366629d8eecf3827c486 a859f1f16a230a681a49add4e8d9a4bc 91fa004401e96d0797059057d5df0d8 c3134ae6fd6691d7db039d8689a74349 8eb9536af97f1aa05608802d2be44a9 7e833179b58ae9ec115e53c2ed23d57d 5b99ce5dc47c76af3e57e49d8269b367 2a0b5875dc999a7a29e047111bd79063 4e9852331e1d5d8dc3bd24f986301745 46dababb078a797011ea7f12f22c0e84 aa6a63745fd7ef284084fa5d51d65c65 a5815741cc777e643002761e7a3ba3bd 4c529b6171aabea2e8058cf23f6382c1 c8520226f277a6af77cb37b8e3bb5ba2 e8288b5f567569f19fb4103277a6b93 2362ec480b3e9baa4fd5721982c508ad 621ae6c715e1af8087694c57464ff1e3 2c094e4bfe5958267da1098dc15ca7a2 64adf1d226e4a0894f4d213d7c852596 b62908961c47a373b097f065a7be019c 8aa73d4e62b33e8787e41ecbc4197db 9f760e1d7ab97519eea323f522c6486 1c228bbb8c23ab9295ba6c11631d3b64 4fb0bfbe85fce25cf9a2c981b043f98a 615b800fb332525385c5f690e9252fc5 e92a4ff2b36cbf83490ad276cd2af3a4 b37b72a898169c971ff2429be93a82ac 2c6c50203f519351bf5f47124ed0461e 20647984dbeb990ea6c03a53cf0a14c9 9ea5a3905313b07e3d752b0785b76136 a7949f6ffcb23c178339e983761bc4a3 86c467981ec229909b21a1a3552b6ab7 ec59bd4b5288991e9bb952e15a37e248 68b18bb0c7eee83129e4b5aa807bb4e7 80f8961877a467b23002761e7a3ba3bd d26f2c85a4aafa72db6f3ca49e992ad8 d8bd55abd721dc0c99860e9353bb52a1 7a3326ec918a44846e3c8a33c4ddf2ef 6765d83445c2338555f46d55537192b6 bd516ff50ec6fcd498d5fc0473d00a1c 3fbeeb56c557e9d6aca1a38908852eab 8b5061128585edb49e9583a661702ed4 7b356bbece2dd658278d386bfa54545 d20562f6f18add5c7dcd20e7ddd78bc8 1cc70da57ce2e9e7309b03efb521ec1e 279b9a722b9b203b341625d524f6398d aa615f385b320782eb57f2e4f0583f2c a96f4daf990b3eda53a3e8b300a51f98 3604b060233bfd79bd08524bcb66a009 6a311b1416a53f87697ad7b0fe6813db 33e344d8250471396f6d5059be65ac2f b7e0c66b0c6641137141495dc4a593 8b7f2caf571342398b8e4fade0702996 4021d983b2359b2d4354f9eea413cf2c bc44413ddfc3f861c5f48f9175316bec d12b589d464fab1862ba5d2f24e5abbc e3287950481e9811cf48ae153052b71a c683f7280179260a898f72fb23e1ea6f a6c91690dc96de97f1c28c9b4267c8f3 6d67f92d6e11f29e5792b99b8245d225 bd28567361a3541d97fb366fa4051f4b 23506d31a9ba77201b54d8d0b255b88d 178eced0bff71d3653e946fb2184f0c4 5bfbd0f0fb965cca9df2c4ae01002f5c 6fa2751d57a4ee44490ad276cd2af3a4 ad0c4c25d7a4d4c296db593b49da23e5 3a7fb4cf118c30d36f3d2b1b15fba494 c11829ca8ee139283d2617f9171b5ccb e52f7c8abd860fb923fe3501bb9e7193 6d1416c57e8a875b214a15a5a42c49c0 6e8d22c6e069b71965b77a565916c7f 757ad2516284e2728d3e4a6c55f660b8 5a0c76bb4dd53d13a6c03a53cf0a14c9 4c15f432da3400ad2404817055fb55cc 27b9211229e1bf011f3980612faf041b 802287d31c1f5c5ba4ee05a5737b7178 2d1400cf45b94df051a0bc243f04669e 4cf6b0e3320f0740521fac473c90dd4a a63f58a27c22886a721de3dd14942a 35b696cb05089cdcc8dbe21f531a88d0 aba18a9a32753bb6390dcdc075aa60c5 e79e55e6e08245c8dd34b2617efa7e35 8381dcc6adaa7752b7d9d23574a480ae 980ef88f896e4ebbe6cbbd79676d8c68 cca695e66b222f6214038d588fd1342f c302d8053ed38c06b589fc18f8d1e43a 2fd71db402f3939164a62403221fd59f ba6a1d8d3f8e832d67668f34c2939f7d 1c20d8cce30ded086ee08f750473a436 4d54165ac08d47dc30bbd4cddd04c77b 7fd24508190c2e5351d3c864cc68e22e 162e665f12c4340f963aff3ec12fdcb 252d046ecff65ed1f9f3162e7c61521c 93d8e32a11a3502336b0f2a1430e993a 54dba548def577137f14c8d2897662a6 78a144a7c0f60dde744107c67e903f9a 5f2b41b50439518be679b7e0ecf5c9b0 2fe32a0c23de48b7a4462b13868efd3c a25f904dfbc0fb0331b9e762848db625 1ce2de1e1077d66c1d5fca03776c86 c27bb0cf69183cdf78ebd8af2a314e49 ad09eb0cb78bc62238279ad3a29524b2 78ecba6d2bdb55ba9174750cc2a009c3 41e443beb22248b46ba14bfd91a75020 d6dbb647d85df780615b3e12f53b391d 6962c6b32fdd0a6d6b872683e72852e1 bdcd0c8384971f2a684b7bc3f8a9aa55 388c9f343896272813126e7abd481c60 81a5a42f161688ef36d8dd30a594b2af dab44e951363e187ed44d599900d391d d5a78c5e48ade3e38fe22a5ce827e9fa 667b59df5e098355c82f50464edece2d bc36a2facb65a01263f50818822b2585 e27d9fece990d39a0f23466c3c25e2e 273b600198cba2f840363d9858e1b6c4 9d73e1a51a56683bb65b71636c46ae49 81f049a3410c8d295833b7f8c91b5b48 32d832455878ef581bf2b66b52bf6885 992899a16779bdc99f8c3d2002c77ddb 214374134d21f90354482522828e74ae 217430853f56075915dd7d7985e749c1 d83cfb75c24a8a89eb0ce5843fe6b264 464a6067af815ccd843ead12644a79bb dd4f28a0e0d3f93c614a26402360d21a 588b84631bead4d1c1fa182c22e95706 8db7935008158509b55b46d261fe0021 1f9923d1e65004d836e4b0ae0f52067b 34e70464c2a7c17d97b40b8029c75005 5db63af675507081118ddfdb81cc6068 fc3d26aebbd75ed01e112f5fb42394ff e13ea4661bd5e168e7fcbdad594ae05b 6b1a24847e5b666de3b5d4a92fbfd4bd 7ee81223e7a4785ea7866257ee5db61e 40f8588bf78172a129e4b5aa807bb4e7 55accdd4bb5337db5cb8c3b627244050 74db7acb40bca6eca707ebedc87d7580 c83697d186fc799d7bf6fb68df7f786 42c231c89dcc0f115213cec267286d18 c433bc2bac3eed219c0c9824ccd078be 1a614377adee252e0445fc6d980dd5c 2a796094f95904e9c6193dcce7cff00c d5a374e8465fb8c2858699aaad4acee4 91cf4849ad3f7ac2a81005b904311cb4 ec9d241cddcdb149f5a6ec2a96a47435 dddacb5f14641b49766aeccb5d872ce4 9d4b8c8d26c3be06d269116c7276660 187804891c09be04f1077877e3a9d430 5f188ef6d852a85c8d0180586cee2c13 f1fa3fac81269971820018801b237b3d 5d90d0c150935fe6a564497a1c91b4a c912a8edbaaf0fc72e6a7aad8523e7e6 1fb025077ea5546bf7af398806a30cc7 e97156fd53e88e27be2d01aee0780473 5ebc9d8f82e8bd9fd3533dfc6ae82761 41056728cbfd7aba9f8c3d2002c77ddb b2d64a218b373b0456d80c2792e1f42c c74f1c411bdf7f57d0efae8dc996b9e a48942e0190d14a5a8930422448288ea e6e92596fe6fa9c965124e7461e47506 bbb11b745f7c75fdb5b101ae4c3e9377 190645c1f458a934c862eec8232fff1e 2a0676c50108be8842d09291b1705b96 b360448cc4b230c672745a2d9975c702 2ec13926519716142b0659b9edd2a3d1 53fe29e7363eaa70ce898a7d76534f1f 77d20db9fe05302376e9713f57a5fcb6 a075004f2659de5a797e3338b16ee6ad 7c278d5d7fec83ba7d0628daab3fd779 a55454529b463a1eec56aed2da084563 ead13c29c385832eb4c2969e5244fb83 4cc695f3d582116fc655d08d986ea26 4df3ce9b02b4765b1a8db2c23945f1fa 62f75f68a559cd9c5edbe4a62f5ee3a4 e679dae35e8ccd9acd2220e987e57553 9a52ba3ccb97a11426392a5b643ed5e3 f52b167d756420c83e5f17778b45d37e 8be1ff29a5088b482822b5101b06e070 4abe61d5f1f800b6c8d74856214be3b8 5a00f82cae6d2566d249abd69334079c 3b0e4c443ff69840c3bd24f986301745 dad614e8c01b8acd618778e799bced5c 1e57738f60665b1a908caac6d5f8ca97 67fe5ba50738e325beedb4c8fd29e2d1 1acc3dae512b56b01f8b303c0da5108d 4fde6d734ef8490336d4accc80b34c1b 33c4c7c47b8874123c8f5d3bbb1a3215 2c1d79e1e1533bf1f51f77a6d7299806 c74ea23fce212291943df36e40894fd9 49e5f7af3e3c0ceb87e54aa3a663dbe ac9a28dab6b10451beedb4c8fd29e2d1 e50bed5236712874ed258f1e4fbd53d 8a63086a3c861151ce2bbb5a9dafce04 7a6cf20a719c16cde8258fa1af480210 a251543112f3a452fc5718d28351c534 d950e75bf7eba6ff35836c728d324152 775b3e38da839158ecab93c7630e9242 c193add7ee3b4fbd63aebe2e86fe0041 27a0e85f8fd0c7a819fb4103277a6b93 b98dd46e9c1101e2214a15a5a42c49c0 e897ac13dcc0adfe456cbf78e1e89022 569e2fce2f1ab3be617e9d9aa36a8137 564c9bc401397abc7d9b8c8596b4309a b08e0a90b1bd3f0879492e1986fdc4e 399797977a78c2c3542091189dc62b5 a0ccae355918b63714038d588fd1342f c3732b612ee72d7f1071105723d4cf63 fe84ae93e0eac1e45b903ba10d2ec446 17ba1ba8f935f2bbdb01c957364e77d0 3e0ae5d25ad60ea285d624cfcd9a37a7 6df5ad89a152dbd26e79c14dd16aa04b ee642ce4112cda8c229ab176c921b2b7 89cb658542b25e1f4671d97b0fd17f51 2fae93478f8bb6c423a62335a5f0e6d2 372d52845e1c620fef3b6dbf349349be 1033f41fd2decfa938da3ea2c9e0e4f a8713681fccb1d647ff6ace05b36a5 1a6aca00bbc88c7d30bbd4cddd04c77b 546f5dbed1636d097ee0de88f23eac1d 10657fcfce1d326b30bbd4cddd04c77b db8756b02359c6553f28718dab796f68 7eafe1321f7d566c9654713ddaad32c7 2bd915e46c4b08e3f2cd47be0243fcd2 c37912d7dc6504e3b7977f4fd4002c2b bdeb03b610923d868ee99ab78c7c9d6e c972e1b113c5972f577be0cbb9f51dc2 a546045291e8f61c8163a33a6bfa14ec 65ffcbd025d2151ba5901d93c937a07e 914293e9cb32a51c880e543f747aeae 61c279a6f178a43c5f48f9175316bec da2f2572b10c0ed8f1783a44a88d6274 b5eaf46797ada237738e43095496b061 c05f807d12761472dfe9cab879fd37e8 4d7035ed932406819223fc014b68160f aa219609a504b01047c527f581cb7384 8e5bc7946066f431ada975aaf86ac85d 8aa658fb92830e0e62a510b8f97c658e f5ee06263c91d7eadfe9cab879fd37e8 e15d98f37565adbe650ec61be62e0cd4 49a5c5f524eb73b8391e4d6c585a697a 6d54019f7543e4eaad16260d4d73b56 e20c8cc35a498acc2ba308912365bc23 d237260f66c00364dfe9cab879fd37e8 d3a72603f65b921b391e4d6c585a697a 30820b470df63087afeb21083ecb38eb 6d22194fe700af402b5fb024f65f6da 52e7aecf3ca3a0db391e4d6c585a697a 1e4a2ed85bc9608d99138ce6d9b8fa3a f1c17621d394670b48d1a35afd3934 809dd3a7fc2bbd2dec89626a4213fd07 474816f0203184f13ad51ab774fc9235 eb8bee4832b65d8655252a6eccfc24f4 99224e792b7a7f7bb98f36033d4304b1 89157839dd80262087e118e254d6659f 2b7fd6106236d935b516de42b9c9697a fe25a9fdbf70cc25f81ed792b3a38b04 65624fa127a2537df3c9c1464e55d580 26797a03b7940d43d9a7daf2d70e57bd 20bc1ce03f5996bf9ee02475d7f98585 2d96d4929d945740b1e23c7675c49239 bb00ad069df73df5d1f943907d4f35fc 31b4349e405e9157f927eef536ae57f1 9e2cb89de5564d7c1dc5f68d8d7e8ab0 b738d1a4caaf4dcb9cd431573238602d 95eb78897f03652eaaf42e97665fa72 9b923ffa07f51fab2032a1fc189d2617 bf6c171ab896774d2f95e2a1e9997b85 6797d37aae0e1d4339b483f6ce8789c dc3fba5ae5e86e62416e6e65da17ce54 f62766dc071eb88472f944a50941537 5ca0a56bcc0d469535836c728d324152 8c81742da70c5abba7574b4673f4d777 1c4192bcee62e018a4207c8c70da88f1 3429a5b0d0497316ce44dc01dba1e174 7e725fcf5f56b74bdfef331c9e51db71 3c3c0da7a2581f20490ad276cd2af3a4 438b2dcdbd25a93dea65c47b660136e7 14922c38b2cbfce6fa31c88352968918 6962e8f899bf60393d9c503e95bc363 78f387d6eee94759db6f3ca49e992ad8 ffa875f5e2242d62d13de1e342854aa 40eb3b0b1b43f8cdd0a96520c31993ad e42f2707bec24e028bfc6c6704f4dffd fc9f18e509b363fcac7bed72580dc30f 3bcf1f68540a478de2680d1a8f76531 cfa43d56d70e530160dc76a524f85955 fb50672ad3f7b196cae684aee7caa8d9 ba3120844f785a1430730ba8faffbad9 97610f0edc786956d5cc62720ec8273c 2d3cb79ce06eba3c7550d396f1a3a8e1 5807109a9db7124e894dec385705c4bd d3b715e7d98bfe98658d908a2254f194 18e73a715023714691829b477862aff6 a9ac09540c655b08d0bdd07d0170f389 2aeebc06bc97ac054287bb3d3a4847fb 91c3c63dddd49d3a5271513b292108db 8c68ea99b5de38d3a6d7a9f3c5f7bb41 b5feedcaea797add4830ebf7106a333e 5aa08289fc85d4d2ee51e40b76ccdf20 b77556086eea0ab181187d9890753294 3e760133301353a147cddb7c026e92eb 4d6a3cb51ac2144dd47d15ec8813fdaa a5029c18a50d0e4be7c7920f6a65a54d 84a354fd068a410d40719bb3f7e29ad5 743992f3e73c7e258ba8ff316aec8d3d db77ba0cf616e2908369c37b40e82efa 7494fb1b493b36db2b3f122bf827792d 26d22dde8b0bf6a345891653421dc140 ab1d67b6f09b35424ea2d70ab68cd1d2 dc49259a117af8f1d200faae04ce3f8 8b0e0e3fdf70192e484776fb236aef2e 251160ca48f91de7ad5067eac75a07f7 77b60e760e8186bfee18bc48b60b36b7 209e7d26bf9421cc9959d6de6fec7ffb 5a550763e7705e532ea98d69e91ba870 7c653a77d59fbfbd84d52b3f4a5fb1fb c25167c0af7517778cbb8bac2032149c 689ce3419913a1c5ad5067eac75a07f7 56cee7545143c9b67bcb070cc655f13a f992b2e0e44987698cb5d9909aeb1309 ed5f0875b3615861a6c03a53cf0a14c9 d7b56f61904aca6b7422d2e1b1d40882 980b85a3109e66562bbf333b6ea7b79f 7c29fac52d4a061140b4c5428883e585 34da9450728ca9fee0be4360cd00cfc 9b4acfe0ed67b32a63848853b5b7618f 1b739cf713702b2146f41dc2aaef556b f7f5cb907c50a8791f66341aa9abe5e0 c900e6f4dfefafbae06f10e4878a855d 4da91eb1adb9e960ad5067eac75a07f7 3491a4102095b1e87ff6ace05b36a5 5ef5685e19c5b253674ce64e4bf77aec 608ea98ce4a80a61aed393947b9cb125 765d6e5ebce3fe25aa11adad6b2a69c e2dac2205ed98fad5067eac75a07f7 b34afa23c47c80db7422d2e1b1d40882 641affca2294fe1879368d1198f406e7 5de212ea4d57b20b526934092c2c4777 b9dae236a2dc3476ffd5817f210f277d 19d202ccdbc617d8eed6cfa9fc6d794c 1c57228e08cdd81ea375e397f0227097 12ecd8ff5fee05c68cbb8bac2032149c 3d4a592876d60a3c0f9df0cafd74e5c 46bfac85035dc6f0382c5a0f87d73d23 b52f6dd58875030ead5067eac75a07f7 283e5cbc29b92fcc8cbb8bac2032149c 45dee2774ca0527c9f8c3d2002c77ddb eb097732d3f31469aa11adad6b2a69c b69722ee8e35829feb20d49510853b52 a91ee72daa437343d1f4e3beb8257c5a 934f8fd5d11af1e6e75232ab5942fa9 912c044ef5e129522c98a1adaac88b94 60fbc4c64d6032337af2ac6660aa6669 71115e3a391785be853acd6c98b3fb18 5e0b6969f252cee2b355cfc2bfa121d e7f1a77130bceb8d8ec45320afaa5d0a 1d3d621e02b8a6edc6fcb6f3205734 adb934d3f4ed9dce22cec5ca16c50ce c9da930b808c18d0923ef79fcb120ce8 d65624cccd27e85ce8f3ad90cf010c5a 5c1d815561a7725496c29359f424ce25 3b45bea7b1b2ab6a20f002682bf71108 ea5f31892496ab5457c6852b34adaf61 2555c9df5fa919692250bf58700b4d8f cdb13917ddd5fec6f712b42a5a217e5e 11f2882ca78cd85c9c75eb4326997fae 824e0f5fd086565a4eee3420590dc822 4058207a9467712966a503e0f1ab5917 608f7cd5e647e4a4e8258fa1af480210 4da850645da27913a82a6374374c9dbf 4ec8d6b5c59f656359357de4ba356705 b69df94b39931f196c8336429b11e233 34e260786b78eef475e2a70bd3d8ac6f 3e0fb214c130556aea3f94b6bb1b2ed6 9004a7d87a62e40111310cfb881ab9a6 fcbc0127388b446b7d6b442f66caef56 f4f000158796b9593002ed4dcf002f44 7207fb41b7f9a0669223fc014b68160f 34434ee1d6b154f8252b40995a250bde 913d774c845a0d7edc889d1ef9591d24 62d51d3d505aec1e5ca3dca3292dd1f 214e52abf34b4e18ab96a46a16fcc9c 39a0cbf3e4b34ca44499f83a01888ef1 54d17ad404678720d0a96520c31993ad f9d9ef770e04c5772b3242897b354191 64aa142f104b99379a535d0a5590e4c0 c15aaf668a80aad9ee5912a5f7e89744 6c95f72153478de8b162cef80a91798d 9477f34f16c650f7cac9ba4482ce0612 6da4b164828c371824507e0767ffba7 992c967b4b1535f5f5346848b67e4cad 679f9dd2f3d8c52e2de61958ac6aebbc 7f53246b6aa7fd551a44da2424b9c700 8024f88aa0136725804722305621f918 9a1312e39df01dc1d44683cb4ca416 cdc9ea006d761feb8c56c26d10173bf7 b11ab64f79e13e1b714473735ef35ab 7bbb0921945cb5fb45e2a4e5729b970d a9206327ea5b37d75fb62d44a047792d e696a670af11d5431234386b1304ec62 279351131d06222cbe9bca6d7b2e5b3 4c907aab76195556d728db1e986e0b74 2b6ce4f0d57ada2ce6a02cdde4c23286 12e1f83d5fb0af107d0cdce142e729b2 33a3aaf17cb7d0ea351aa299020a0e0c 3f9c84917d92506f3bfb18d76f33685f 429d850ac1621fc176dc93c8128c2c20 335bbef681cee5b46b3f6cce098c8918 836ddcae13c81d88a58a5ecb2008fd42 7980d0e22c197dfa5e7e52a559b573fd 99316252e1dfbde1d810b14a81e12eca 4a72468fa13c36cd2bcc0cde35567dc0 1b7cabb894adef68939793f922933b6b 6c46312d5a6b81a59e4965f0106e00d9 3aebb428c4f378174078a3e6d5ee40f4 d679b6e72d6c0ead391e4d6c585a697a 1c76a8a55699eb9694605bb30ae47fb2 e03cdcb83404b3c3951c1fffab4f5807 e0e00d2012c4306117fcdb9c02a9e950 c5143483b413b4ed6991c1a663897b1e e0f6e43ec7c44cf0f60d4dd27a88e505 6c413dd8728bc004d22730b0728b2fc9 83464126ed62ef54707cdefe012d0353 a757f06addc26f314b3c42e318f3affc e2cb95f03f5dedf9f198b94f669bca91 27d846b100a1be0535836c728d324152 e35d752ecf4e205ab40f0ac0fb9a650d e80016d5886fced69f8f9f2bcc40c84c ff404f70bb77a5a876e4a31295619fa6 7b22287c9a2ad418b9deee229eae6efa 25775a3ee25c6503dddd8ce1cda8c6d9 ae2a8d605b8c4090acc95948d4efa8e6 2c14b0b718a1f3765828f54ccfceb8a8 a15a936f2949d518a6fee8e2140acec9 5b3b19203b5da49c310af74324aae27f 40604fdd535fd2b2e393e26dcd2928e3 34c0ef1a944d5443e2f1733877da1c63 5239e7c9a83e99762b6168eeac2194de e339e8b8f1bd5eb9626d7e3d07da8352 9a60b3b87a457c73f522eecffc49e6a3 4068a0e8533230e4ed8cfda52671df0b 782a5262c3d349e3c3bd24f986301745 fece36426ea77b92a7bfc1660a1e18f0 24942a3b98d1bcb6a570c6c691c987a8 85d5a731ea4865c1e258f9dd9d42f6c9 bd3dddce162f59ead92dd8f41946f1b2 f6e14672ef1ca30130aad3a2f98e3b63 8ad152454e2f1663cd701e9c04d3cf7a b1850a02aafbca6aba18ade30e563d37 dc0e0beba650c0b78bc6f322a9608b07 7d6102f23f51764d2ed4a731510fb423 8891a73ddf73656be4ef113421a70a46 80f036ce585b1ef648ff063e62e02115 5649e478e7ef25c4490ad276cd2af3a4 c793946b036d1a9caa53a70b14c57bcb e74841627e110e98d9de0de5dc66ab1 6f4c33b5becd1f3920768660cf080d12 9c1ff252b47f13055764829adf9a789d e9871fd4c45b34148737eef0436997 855c6cc99578afda6a5ef4b501708f3 56c627c74e9c78c65ed9439580e8c076 5835aec0e4aacb278305420c03f867ef ecf9321f6fd98688f88f925b568f2dfa 8334a19ba0063c7faac58be63ab4013b df7b982169a2d36fa8d8da6771a88b8f ba6909f6263ff92f72b785f16db8dbf3 bd78847e636133c179c8c70bc853d3a7 2f3557438a95798fb76e29c9c43bc7aa 169deb7aa6472eef2d26358520dd8de1 731b2115d66fc850999b33727fe6db14 d67265ea100ceb32ce11183544874734 a5c68fc026173a5671e2498adb56e791 9ff56887e5f00cff412a0eaf6d0f1809 f74b9b8412dd152f6558f5c8c0d2d888 a927b0088531dec823500a5b036df62e 905628a74c7cec233a574a2e3bc99a1 f2ac49e7de8898d6782db34fbe677487 32ddda038bd1bc15c3bd24f986301745 d1525a08cc96beeec786af79f5203d8e ca77f1d8d0151975901e3cd572b4fe52 fd5c4da3a081cf115ec69be1b6d2571 b03bb928a8842c7ab748e35bbe935720 c2679e65b9d5e95de6fd255f2d77a585 edb7dfd7fe00c08e25c8be43ebcd1add 7d9073ffce209233865f763ab6e6778a e7655dfef36db9908c31ab4d97f0b44 6d9be8619f48e3dad096bf408b606360 dd363031a195991631b72d9d4e0e505a aa96fdfe679adefb203eb08a0c3b4355 b5168a95f760cbefa22728b9e8cfa4dd 69a3e5ea90d66d2efd72380f3800ba4b fccd86d2aa3c565334aff3344c00890c f9e126d15c5761b29af4053b8815b239 5a2f605200b4e4d5eb6d17f913d54c76 49e0fb5a2318e4c1b0a15036380e635e da8ec638b64227066d767b6d0313d349 a387e9c10bce09c85828f54ccfceb8a8 2368a815da89faf940b559ef47048b86 6dee2382e2c710fcdb266b832300e6da 53e06d7506fa12f93fc9a2b2d10317e7 5555cf0638339605f0fb3e3d2a0d34c9 32160b2dd0d1c8ab507243968c1db8f3 9aa0b98bdeafacede76bc197b3a3ffc0 61b80232d3aa0a409ccce4c6d5bb195f 68ae56275d366ed6cea003eff0268278 74246960cafebda4ded4c23d05709216 48045af90c7959e5738e43095496b061 c5838a6cff5a0163a91116f8fe859a4b 96ef5cd61c49b9ebdd50ab7b10e346f 8db8568a21645abb2964e7c9f80f3597 3f9200756c2e3aecd028c2e338a88f09 14e9f568cd3309dd75becd8a4c3f1866 d70bb0c4015f6e10df2b21995cbbbc4f a78bd5277a6c03cdd3726fd70b88cb7c 1fa966f9c1d9b994d2ae2f26e86f819c 2c08886cba42af25f1acf3f2c6f9e1eb 590128c134fd2fb9c1535160ddca1c61 50fb47768cfdada29f2349486c570dd4 ce4e54dbb99b5bce98a96123d0d6b0d8 edb32ed999f08ed4a12cedd896805aef d60a87c721416783ec7a87c695ada295 fe2aee5ff66e4fe8d5f95109c85d2816 9b02cf9719863b8e9e990e1185980a77 14d1d6227d6e111049afcf135d820991 f1c64d90ecf5212fac0d0a08bc077486 2060a7a8bc18a63b1cf96a5dc33e37f1 4b39fda4ce751bdaf51f77a6d7299806 a59b2884db9574cd1a72c98fc69f22ac e0f8fc5dc186a597a636371b2023a251 20bb1a34891588c1cce90f0d61ed7a70 68a6c680b48dbed292a0bc4ecc8b2ed9 a26046fbf2d7368cd6e1954365b10b52 462e8745e766ed9fd4d8765e3910f617 30f06495dec55016bde93a1daa41f517 ecdcc12d56c119c5a67f11eba80d4fdd 75e9e4fd6c512c92966130541a711692 2d0f4d977d61aecf89c33ded8af67808 99fede796e56b4b220eb25a3a058bd49 4b2a7beb13fbe74296610c8d5ae64f96 34df750af2640f576d616bfd695eec80 7d040b260fae0807a2d3cfe77a14b5f4 e3e1d9e88b396e6b8cae28243a4ae130 377d6044219ec8b3063f9bdb41a65e3 de1d044910991a072d184f71ff3205f5 37f1637edfc6ca5ef51f77a6d7299806 cfe4e4fb603b99c77843fb4efdc19510 70e603b83e06f7258de9f116e0231954 45122ce45ad6bbc0668ae11a7db5e82a 742524cb455a050f246c3d7aafc9b697 78420814bee5ad17f2cf6a9bef44d625 263e097a29c520c717b431cae0dd70ed a9747a8f0c31b46188793ca7bd0e6fb0 8502520f19688aaee12186cc8c5022c7 58160ac529c37aef1f0f01a76c5ff040 a6ffc5d46a146796ac4c0903ae810430 19d5525d3d65063bb664d1885442ba70 b87c155d6c95c768668ae11a7db5e82a 794395f3e5e2d4f617b431cae0dd70ed cc6283a5bcd5452360d9b527752ac99f 8374ea1c4c032ec8488ef35e8e3ee601 dc589e1223aaa5e65cf2470a6eb9a24d 8e66fc32d49732c4eff311703ed2e9b 188ce43d9c8caabc5213169cc9897a9d 3ebb9bfa2afb2f8c9db5a91069a42c6a 3e08106901d3c9157145387788e4fc89 4fb3b350f197a7e64e045e9030a39002 9dd80e356880c9deaf268f6180933aa3 54a0067eb07dad5ad1a59a9e9888beb8 812f86b9e1de03419c0ca344f487323e 9cf9313fcb038801815b2b467e8e2eac 9665f677dff2405ef51f77a6d7299806 8141866ff4665b814038d588fd1342f 13cdbfd56085fc3af51f77a6d7299806 b6afecd780203c81b9a51c308250e422 e857e87654e3807e201a7d6fe269f8b8 44d6debd1db8c2e57fb0dc5c3ba15465 6b5cfd0de413ce8841b160b9adc112fd 9d17b91f7f301cfc6655d494d4092078 99f9eac72f5b4df04d31637b346f5216 881756250fe9a7fa5fceaa39a8353bde dc0e4a9d3bb0397d5e994da5ba753c34 f2e1735aa2cba97222fbb0d1d627b825 3ffe22ce4ede7a187886a3eca4dfc4ab 4be9eedfb4071f919f9a4711823598a 660deb63defcf872e76bc197b3a3ffc0 3edc519c38938ee8d42b9650f19dd425 bf2a153556edcdc96325dd85752d9221 f7921f51bcf7e93b24a15e3e5e0014a0 a4dbf0f4fef1c36cf199233c9f2ce2ce 23b43da125fa4dbd755c957ccb0117e2 94ef4f9589a1577e123691872d565e10 9f5cd9e55f0b4c42ba128419b7cd4010 57362886500b303632a11457e23fe120 d623665165dc5af0f51f77a6d7299806 f27eba536ca8d428eb1f243bab39fb29 ff212e47775ea7fe6a3056c8cad72d81 fe4bcffc64838402684b7bc3f8a9aa55 c0ac5dea15f961c9e76bc197b3a3ffc0 64b2121e41762bd47954eb05bbab463f a713adfd7d82df5bebf5869836d37497 e501ac06884534b5d5f962f170e40e8e 8a64395b321a34161191025061735ea3 89b23586ad3af3d6252e0775cff1c394 9f3d4541c2754cc2a516ad65be981ae f878dcc6987a7a8a4719088c8e42c6ab 21a5b3d29075564e2314deb821327685 186e501aa015cd367f768772b7a990fa 53bc187c97cc02adda5d247a475c516d 15ebb1e7e6663cbfa242b893d7c243a e702f89ce87a0b6579368d1198f406e7 5668d49d776c954c5963245f0923337f d7dbf6005f2e8fccf6ef7bb1183682c 2a2d4bc0c2ad2e7e332e588d1e0957a7 2c7817c16702e57188e7efbf7ff736b7 246b26ca99193386668ae11a7db5e82a c76d9d9756b8bbf2a86b2405ab6de30d cc82b660e39ee47df287722009141c0e 9ffffefc4b5a04ec49ed2275c90a1298 af0206602e75c8bbdc6a693174c70feb be7a1bb508905459f51f77a6d7299806 f27b818a99bf195f76e9713f57a5fcb6 a34afa94c100e8e2a45e8d2f28a9ea98 4c5ac5335e50ba35b385698e6487d3bb fbdd516e90ad48902872e9c941f7c819 b6a24109a5076d4ba5a296b0eec81c96 f616f5c2068eebaf6aa35752fcfa44c0 80b2eb0e500bca46f3412e3273fc1682 2ffcf26e3cff97ee40b4c5428883e585 73a870e530c3a9993c77a85180cab6b6 372a6ff9847c899bfdb026c58bb97e2e fb7af067384d120b46ebf4f1147c3f0f d443a71b6cd1b4b0d0e90ab6c6492cb4 d108dd323ed295991b17743c18fb63dc 2cec40de07b468661aa47689117a61e1 208903274bfe69cdc5d1c45cadcaa3eb 5485834dbd8cd031c963bc72ef3a8742 f619501cf26b4d533b7f931c53ba66d8 e9d6ce5bdae4462aa187e6150daf1a0 33bcda05749d01bc4b3c42e318f3affc 1e31a474b6867a7dee32a260ef9debf1 b1384cf261fa99a03002761e7a3ba3bd 385e55a7d0e528d312fbf3eb7146682b bedbd91db5d280ccfebad4f49b26ec52 54bc0f4268150dfc616626762e4bb71d 760f49288c2691b5b4d1176ea5549480 7e27606e126c023d5dd94d7a8cf82d08 b3eb7f278d595307d2b12aa6a0f050b3 74f985d5bde29b01dec11b4972c4b3e6 db247fa7a6d2ae45aff7c08b060f5ed6 8aab7aa2fed02c6f3de1a463b8ceba0c 16dd49ad350321e678996b707ffa04f5 9e58589d9f3dc4f24b3c42e318f3affc 580e48297791fb394e684eb336479e2c 2a8a8ffd2ef41cef20768660cf080d12 a3d155f1ab4731a515dd7d7985e749c1 f9ed6c993f7d65e2e5f83d0df19ff934 50b8f401a5e2f2f431358207d42bcb21 6f576d151a46bdefd5cb6d178687b980 b60145d7ace5fb53aa7cb30470f3273c 2b8961b3c1deaab8cba466d56886cb4f 797ecd23342e744bbff15b656f256f05 7aefbd0f95e0e9653b09cd02500a89ae 785e93009913379a79f7c71429a96cf8 765786fb271e394a204812d6a020ec9b ddeb44a5621da142aa29e9f0529e8ef7 e34d1be103e9d88145a1bc3ecd3d162f 48ce2cbc14f391e7d7262b1b986920e7 c5b224f6fcdbd7e655f46d55537192b6 647692d3858790a1f1783a44a88d6274 452ee9c2477e471b1aed2875db0a8711 90f7b8cd8e41321c53315facdf531a34 b8ec9bd6096a14488de42fc1392c2139 4b8c1a30a11197a831777a3afe490d7 42bb37f87a9a758ad43fe0060c5249d9 b079b8fbb6199f0eef53a66b4f397367 2145b7d411f1cf91bc4e0550f830290 f6c5bf92d03a93e247839bae1bc65257 d1b4a4f43818c34e490ad276cd2af3a4 e9546947de34dde213a5873d239ac557 1161ca9bbd655ca17b431cae0dd70ed bd9257f538038fac2d9fe390e23fd20f df39a8c8b7ce47a25938488ff499d96a 31551fca6e4c5d8e80ab58c152cb7c44 f0b044c592e19f3d8dab161b48d8b921 86e6caacc1e4ddb5e762cf5917cef4ef d20e0f359f37f7f5648b060eabbed82f 200e41f83af78ee240add2170313bb0 7a22339a0b7dd26aee088de33038f12a 93c2221188b4948f79b2fbab4d71b78e fbf9b1f026a86d59eb5bc459c7142a3 d820b240ee17047fac51268fdb437a9e c93685c8343e995d760858b697ef756f ce1bfb999b211d423825a5bc524f67c9 f37310698d465cf8c8bd09537246ca3a d6c68f9d1844c3bfcb002c1e2b5fc68b 3adaf5ec2c9fa6fef7248d9dbed7a7b8 bc6aee7279114dff428a5246ba7de3fc 2c06e66c7a66878c3bd24f986301745 a3474b03dad787de8c5fe7d2e262dff3 f87ef5a5c13e7b29d810b14a81e12eca baaa6943a8adda4173705bc397297991 6f630e2080aa9f10e45ef4135c266a12 60365049ca80d98b77e620d253d331c8 46184eb6f03e8d2afebad4f49b26ec52 88e73431030e8494cc0436ebbd73343e 59f4f7f1f7cfd0f3831ae64559c8e0b3 2c72d9ccd9399fe8968731dfb1dc1f13 cc53e7b618721da04b0c98bb5e7fbdd9 b24d5f0395eb987e185574a5e2255bb6 8673b121b420cc0ca23949c21eddef76 6a9c7e9f19cd3583be92df29bb41e437 476e60bceae151e768f8796d69d0c486 eb66e5ca3eeddee87fc7604ac712879d c1fab1be028d2d1192d39b162a300de1 82130114fee63442f51f77a6d7299806 b2564957632c596c2ebeb1e6a8111f53 f7d727fce5ee3007984a3b60f45af7f 4f3e1e670753c96ac955e5ed03ef3a2f d1ecfd2ca0baa6ad47efcaa87d68903f 1bd555bd6f08c5f4f90f8519e58d5382 7aadbba28333e40a77e6105b101d7310 f7bdfe5af3b26d1b5f06dd739e88c77f d5f5388411866fcd6f349f21cf5447af 96fa9d34fcb17ff21fc43d5b32fa230f d821813cdad2ca93183128a5e9c4cbee 393d3977af188cd7798c257640d6867 81c8ec54ab47bb86b04cb542e2c50eb4 460bc82ba3a41a4f492489969eb2d929 3aadad80a0e8d21620768660cf080d12 9f9d8c3acc3d33e628c187222995b2b5 86fcaf63c9e6542c858699aaad4acee4 a3a701905091355e96aaf875e27b02c9 c82910190bf76ef216efc8582f9e6d60 e53057e1a9f6f135b97ad864945165a1 87a30f02d938047987b390f69ff83fb2 8281936e9123cbbcaf95ae40867329f 198551bcb90f2fd5ef40cf5f2b241770 8acbca7ddfd03dc85d009c98a5b96836 b6457c273fca48f8b5b7c35a8e7396f2 2a48b2cc3a5b7da6833b2489037ae4d9 43bc8b8b33811a2a54afac63dc6bafa8 bf45b5c2c9dd8fa9fa24672a35ae8bb bcd046749f03aaab714531f0291497fd 87d5a94d81a299401877c7666e1dab40 99f50ca8fe9b541792ed85b04a73eb29 673540ea8227449d1dbe3e8cd87b5167 49672809018ebc55224dbcbd6815e727 fbd83a2ac7a5dc52e915f7ff1872d16a 8e009300d7671a33b2a5818319136c5b fcc5717aca6a3be188bda5f1df0be8 5df14a5997ca80fee45ef4135c266a12 7436f91df61e7d5bc10555abb2efb430 ba8378a73db72f51febad4f49b26ec52 b088212c18a00fa0c3bd24f986301745 92a05eba553fd1247674a65b52217c22 b41f2b0ec15892e3153afb488ead2325 f27a46a8dce3b811707cdefe012d0353 dbf4aeb1d6c8b77a30bbd4cddd04c77b 9daf7804f32079f7b1973049b9d84541 adc763e089e2535fdd155b45c76af694 62d18b3f3c520ddb37251258858a7a58 50505520611014b07298f1711edd69a0 7c71421a06cee4eb85718c281d7fdf61 575a8eca414c69f67bcb070cc655f13a 4333e8cd288f47c4e0c9d6065dbbbe16 5370b493b077fdd39ccda3ab71692a66 b8fb0a7e5d59693780489003722bd0ee f36f3912a86717146b82340329d7ca26 322e8aaa889e25720768660cf080d12 482fad8b18008ff8c6540fe6bc16d6f 5510ca90cc08d0c4e825832d1f6b3273 7093cec0f1eba67e11f3f1bdf34ac930 f5d97731def4d875f51f77a6d7299806 b0ee655c0c84e70be03211c8d614b25a 61ae29ce7a0d71bc57f15fc9385a8a01 c850233cd5ebd8a49725e3ec23636256 52ed857e6f9965886b429fe8da4d4ec5 332ce2f8d9c3927dffb8fce670bd5738 462c1b0c6f14f168c3bd24f986301745 609f064ea48440645d8fcbc36a5e8c00 99f15c63712d9fbe84868d3618d73011 ac2f8d240e2fd36ce2acfd5544378c96 4bf64ea69b9e7c85cf004563556ddb36 32a7a2b6974a2e5ccd79ad97258166cb ebfe93f04bd040ced98bf80379cd1d6 4788fa0af36e94ea38c2e72e63f5bbba ae5631ecb6ed463f5ad83814029a1a10 3622046c1b2266a0fad46760e869d184 cb631d4a3bdfb02d2c58f3c20d9d1840 505a99351f70664238b87428c6845ef9 799a262e7eeacf2a593ebeeedbff73b f4b5313a0bc95a48da7c128b58fc7554 1408914f71c66166febad4f49b26ec52 fe4984dbd32e69eca4ba22b64b537bba 2bc58f346be3570ed739a99f2688300e 8cb6234ed889390df198b94f669bca91 adf9117f3cba509cb4e3935c6cee4b35 4f3b404cc30d2306b96ac7572d4197cf 2d7c48df632589a7ad5067eac75a07f7 fb1e39667d83506a41dea5e6084523ee 87fd23051b01997418885412f2b0a4f7 6c322cbf532f87337c577fdb71c158 74a73d264fb01b188ad2a89943bab6f3 bba7bc453203fbc6e39344961f657bcc a6543278e970aa7a396d452ec85b027e 1a8a796da899cb2c4d672fe014b9000e de96be0a27fe1610d40c07d3c15cc681 788af6bc08bbe51fd9a828fb989f49a0 1613e86311fd7601c103f0a69924253f adfec21e21737eeeb000f20a5153622c bce971ee4e980b77e3f7a74e12a274ef f7e7473775d8c3f3f51fa0238791f5dc 20d23be3b5180ea9e51ca3f3e83d9132 259775bd1af2954e30bbd4cddd04c77b 3af91fd634a5ba759c0ca344f487323e 2f9c9357bfb89ac1d38913e96bbf2a5d 1aed00532eb4311049ba300375be3b4 fd57354b70d416386086aaeef17e8c87 d92354e060c98854b0ffd7a60ee2298f 18d29165fc26330467903707764646db cd762ebd8c8ab61361a38c5058945a3a a78e8ad852e8d3e3cbb2a1d23fae41be a7f98e26ccb27f0b52225a4689f7f600 2df0d24befaef397549f05ce44760eca fefd88656d9d0d2d82e6c3a4e742651d 7ad4285694233688105ea47d266f5adb 853c3913ba95570ba2651abaf391628e 18a9c13c3999e9c186abe5555a3b447d 54dc32618be1ff18b3c0ea2ca7165b1c 6a5c816eca38f130c6536c7253813c8f 35b005d11a25b25581faebbdea6bd9be fc731e1489031acbe02c30c9027468fb ec16de40e8415006855931d119219022 efd67be7d7fff02d7b9a616d4541ada8 597b0d10535c25d538f21a3304cc4bdc 1f267da10062622092018116c595a95d b94ea1b7a715f5052b151d8b52c53b90 4f79ef44a08bc2ff4a60c1a189046dd1 2a88f66d5e09e502581fd77200548509 b6d644abd3a2a54c904f770b8a17d30a a04a45fc865cb61dbfb7d42898b82ecd f5fa9f592d891083996915f7802ec40 cfefed4429defd86febdb1f263373824 ac864eb8b8a084756ddf5c10cced4ccf a6f19d6f3a6b3cce35c6c07cec6934c5 442546c2af24d782d197f67767b32741 7cf3167e5a469fcb4c7384dbb75cab0d 56210576a4afb9cf88d13d4705fa91f b267c88cc2a3cdbf48d189f942cedc62 4a519fb8089dc7d248eaa510713cb074 ce2d3e0b58bb1244700ade95b2f08044 8a6e06fbf74e811667d24b304b35bdf4 5f8764573a6f8321c1a89c6b124f2475 87ca3e8e37367054dcabaa2ad147fa73 6d2783fa677cdfdc14e775cfdf4a76ca f8f22279842d9b8bfc6d85675a0e869f a63d31d92b6bee14febad4f49b26ec52 9f2dbddee73c639ecea003eff0268278 ec565aa9b442ac36ae6afb0c7fa710a4 28e1ba582708bb21b4c161851ed2b4e4 e86ddb9617b8c44758b3fd27263469a1 9f1d1d13f42bd2728490246570868c8d b7621e8afb9e7b18890992ddacc04113 6f934779da945914bccaad2aa3926367 b8425a23b0525ccf004563556ddb36 33ef80eb8ebf4207fe7e23d061690240 8483abf40b0b4a65d009c98a5b96836 62a0d0647476f5e5f8ece882ca124c40 839af4cf455c049347839bae1bc65257 db5f1c46d8af7d17db073a02eddafbe6 3f63afde3842a73affccbd0b169a39 a95176f3c7a102acdfb197c00c97d72b ae0ed75bbd4c5a74b7c9606efbb8bb3d 3b874fc5f84eff21492d9da2668ec34c ac2ee1eebd5f2e335c8a49a27f01fd12 31c278a2aa2a490241fe42b98fee4b0b 407276907088c8c9f51f77a6d7299806 ef62dad7755794a47558b47f7ba0b0c 3fa5372c0ff38e447135e387a71e9d31 b9695f4e1589c6bde12186cc8c5022c7 21691795da12fdc7bc95db5d49def9cc 335c2e4c3991768218ed1f44219ab7b1 fa0580ea9b8940dfef1b7984700142ff 23937a360c840bbd2b70eac6546e93fd e7b41a39388925c364f6d058992c3399 1480684381add1e7fff16555386d173d 3d8feac23ebc7b5dc6a19173dfae14a8 bc4a64f68f9cfb0733286e10d1a7be57 ce8fc9bf9c9fe3ce99e434a62f00f7de 82346c794fd098f77a1f550045b16384 53433c9845f6b53955034479f8a160c7 de4fb391ab81be927ff6ace05b36a5 94a53bc306d106708bc6f322a9608b07 ff127b5ab0e36faec3bec646284d5a6a f38a18709e55e4647ee217c21e683487 8aeb236e281bd5a4f51f77a6d7299806 e42e2c616f8c38619ccce4c6d5bb195f 1eece111c9bc0a126172e4028919692e e96108e514142d13b3cf15c77de45986 850564e1e8587f35617092ec6e36103f dba5223072bb092f76ff40a3c0e00e06 f7a0f1e7e03fba8c9628f611995a13ab 689cf8174210c2701933ffef19678834 c5178a8a0da618a25d78ff7fb413274d faa36ee5b5a296ff7e66b3e5c11f24d4 5767cd2fa0c64c92a0263d691f98a9af ed963e8e0589eaa5490ad276cd2af3a4 17b444c072a6a3ec76e9713f57a5fcb6 6449378cb78f081b2369c46027bce7af b254462a49aa73df51f77a6d7299806 b9a0e6854bfab1682db9fca4b68095 f9f9d2fda27c310b266b42a2f1bdd7cf 993ce4314e32140f38454b411e0edc29 8797234d59d03951bcc69f56814897a1 3e0f8c39a72f3c91200ad3f421b6c3d0 f3f6e3dc8c3b0eaf97b6421ec010dd0d e8afe4f07f221087620018391309f97 949143f5e3b772a7986b72a93898270f b48d333e39b8aa1c663191fd557d3a61 ce4fde399bd5f6f6784a45ea6efa1d77 238a974ab3fd46e0ba7b07dcdf3d00b4 7da19b39d092fc8e33b12e4baae47737 428279529d61b45260ddf36bc44130c3 9171bc27d62095bfe82a8550427833e4 6def73c13a40922d9274d508495753d2 c1180df0a7ad92afad5067eac75a07f7 e089dc57993ffcc72fd098ed2128156 f00992135ebf50a9339797c21e8801b1 e21392ebcec0e7cb1a3a884dfddd1bde 4b8e0b22664904c1c8b8dbae22c1c086 89478118c3618b353e615cf0ba033d62 ea093e60ddd1c7467afee304cce81d6f 758df6055459cdf6cf58a1b90d479c9 945565e4684886ea9db6feaa7eb1b013 cdf0a34dc3504e40643beaf431c0975a b14c4d5783a339609fd4171283f33ca8 6a53e24442be0a9598f91bb06151de8f e2a56bcdb18d820047ad57fbec8be0bc 9d547457c4404412635469b95109803c d51c7bcf851a368f90193fd5f5187893 3c4c8e7ebdb95c2089a886870891682e 5441f511736c03f9738e43095496b061 5562593c6448e4856402b8f491cd92c7 a75a5570ba1571447e1dc03b595bd36c cbef425aa02873c0f51f77a6d7299806 edf4152aa274a8ec78fe949fc1419876 adf250aa1c9e0f9567232766992241d 4264ba880cb763d37342f7d672371a5e d819fc4d86af592f7394c9d8807c7bdd 1a442af63ca5159d86478bfcc70b1bc5 3959856509e65a18a36258eabc2b9c e046b02e2d5c5187fe38a836aa59c483 5e14471dd0ac3e47765ee729adbdf968 3b082e34a78a3c23100d4716c7fbfbed 681ee7768f9fa9072c5d34a902e568f9 6eb19c354c19e759d5883ca9b41ac387 9d71f9424fc659e17a50afc9c93f8a50 44a525e7793e37c5d340e35bb5304768 4f38d59a7fc3010fd7483d79670cc91e 2bb137095c73ef6fe45ef4135c266a12 3bde1338423d06b4c4fc66bd9d1f7f00 4231174a23bac5d354d30af857cfae06 f6ec4343f78b94b42553cc33364504d5 b14cec4ece246fb75b937c87a8810c08 79e7911ce615b63078831722644c29c3 8acbc1b934489d6fefe244bf6a6a9769 e96bc1b7f02caf77eaf288f952624966 a145bba4e4409bcac905813b9803ef0d c36b95723ccd6f6da99d925f789b1cf1 12df0535bb43633abdd9b7a602ec35ec bb1ff02f14d1cdd19ccce4c6d5bb195f c9a3680859a722a0858699aaad4acee4 ea37d7670bf3294e60a3b49d78923dc3 8ad01793daeda43dbd71cb387c4297a8 a6c888f2d78e83075936c7265c890fef bf77a1c8a520eb6deb0fe7d6b5545a1a e52a290532a567aefa10901ed3f9da3 ae4507fa0f4c936a31055213877993a3 b69087245c6ce1c57fc1f91f1396c600 974cc395f9684d47c955e5ed03ef3a2f db32d69c5b2c77ba51b5726fdf67f095 5e68b3e485b9e033ab4d0308b2ec6512 8b62f4352dca92f657c81a572b80bc7 e9a38d17361a5f20af268f6180933aa3 89942c8f3c2796a71e54ac67f0143e13 6aae683be40c3a9610c2a68437007d6 d30873e4da202806d42b9650f19dd425 ba03fd0b4b54655df51f77a6d7299806 7e5b7032a9faef913c5e1addd9922bf2 4c55e5b0eb04f854297c137c93a4b9a5 1d90363feb72fada9cdecade71f5dca2 ced7d80d220dca01ce5b275ea2158e2 363c9169b12de77e1d4c681138512bef 15a6e8fae3343178b4c161851ed2b4e4 f28874ee319d1e2dd3bd10ac60e54bc9 1d98ebfb72120470283b00891f680579 2148ddc7d6228861e4dd86e9188294f 839334dd754c09e5b7ea82317702e856 b66ea953531a8d78f0c92c2dfba3cdce ab04df0d02dd6126c183308b9aafe2ca 610ccbf900e1bf4aeb34db531a289b8e c9675e9b6358165f66ccbd11a6ef0f68 5e83bcbf2cafd5663087f84b199fd297 f49c7d43808b1033f91663a74ccd2338 1692563658149377630047043c6a0c50 1cb5ed66917df7b3615b3e12f53b391d 1ba43964b343f6b6ddad726b9e01fa69 4a41fa511183aa138cbb8bac2032149c 88c833a60e220f2320ccbe1c34ca182d 68b2ed56ad8d4e1896b84415a3f1393b 57ee5654191b4265890992ddacc04113 77f54df25e2d1bf99a1735fdc80135be 72f0bf15522498993f10a8b8beb12d1 9140c6a8599f28fbf27a87e2aac4fd31 12936ff9bc1103944b3c42e318f3affc 12ecbeacae03825ef211221ba01b03bb d03256544371f1eafa6e1fd63f4a1c35 8d0390d8d66bf1cc30b07c64830a47f3 c6591f825c72dc6553a2cae48abaea7d 29def96b77d4cfe372f9a9353d57f9ef 83433f0c0a3801942eca57a2fad76f58 dfdef0c8739cdd0944b0115560181a7a 92e742c940c11e60812e3ecbeaae3980 9ffd670b6eb68ae8840e9c8d11bc8e80 285857e7d12f1b74a4d2a71d4ca57f99 636fb360173b08e788dcbe86402c7c15 8a47668d3584eef1e4317813b39d4fe f10473382b623504d79b19c7c4f0e293 caa172578943812ec50fe5c30bda6ca4 bc5fdc598162f85076c7054c38bb1311 4a47ff44cd2f024635cf289fa8ad7115 1aaaed47c3a77219f2b931201029bc76 294d38860c334c4954a61dbdbc1ac262 768e965bfe1f6141473f10e6caaeca56 d312c70dfc7017e9c55161a63fbd109a 75f2e71073707ffd9ed6e8a0d47c5a7a a034755df11115a1a71c812e027f94d9 7da66ff46ecb79e52225858d7500e21 32761afb4b1eaf31810493eb9cc85e00 165e579c965b215b43dbb6421d614c0d a7809c62e26301e08850ff5e612b6198 970e70ae46244887c35d3c5d3b1fcf7 265851637a59eb2f882f822c83877cbc 2b39330072a4d5c83825a5bc524f67c9 51205a57beb69476fa4763675e844f9c 78b4eb949311548236da5f8a6c22b2dd ddbbe3651f274503c7f9b652b66aa35c 8a385fd026d4efdc517376ab44a447e5 79eb4b57cbd73e117e2e50070ddfd27c 5fc0812f8673249aa6a7b6e78d8d5bcb b54d222311420195d9fad8aba2c312b7 aeb34b796044d26f2705f56670a32884 b12b2f12db92ed70c48d90eef8384210 13f7210d5d472518febad4f49b26ec52 fe167899fda76d1e88dcbe86402c7c15 4ff1ae700013a877ca6910e4922d61aa 82b5a7823990ff0f48964aae007fabd0 b40b97894f2c750bdbf8817a0e330a74 d430b0c4136e87327e72463702194870 23dffe55684018589030b5e29a228aff 4fb40a85a2989785d5abaf84513415a2 ca22c129ee2ad8a1f0ca692121a428c5 4cfe758f926fbdf2f51fa0238791f5dc 426fbc6c365147fb6430c2c15987e4cd 7cad0234edde1e90edd9ab1253e1a9c4 2764d2783f999fd0214a15a5a42c49c0 1d42f42755aa3a87b2644d7d4d7ea2c7 3031461b84576d7d6a69760cb58e50e8 cb71e1cf52531981593ebeeedbff73b b16567c16d0aca41532e8683617554c4 3b8af4931096a5b7310cd758d9b7cf 26432bcd60baec3182c17278756c0a5b 8cb5ae6c0998479a8cbb8bac2032149c eee08384e4f5c338a6ff78107fd2d715 a1d9f62e3bf2863278f39854b0025475 1f5ee5ebb9ba55f454d30af857cfae06 d9fb408a6fd11e6c22ce72a02bf771ea dd0521f27114171e492d9da2668ec34c 9b722071fde9069ccce4c6d5bb195f 6f92486fa7a1aea221ab9b8a0e862145 84d5c290aa1c5c3e28d0a21d73b2739d 3e4434c7714ebf307ac0fae7c37e01a7 a88b21425768bce39f6ec855d7c1f09c 1c679d8a4fc274f47523f50a56d94935 eb291380d399ddebafaac116abdd44e 722bd78d5f625018d27b31bdeb5f5c79 6d4e96c31d1b1f9d16aeb5e4ffcb8813 5788395c87b524db79157224cf10b26 3239a4e1c62099556ee5c30704fa2d08 e5ea9b41ff06d7ce2c396131c7cc7ef8 a69b27f76baf9f75d612e9885a7318aa ae2575fb16051c6b668ae11a7db5e82a 4380ce2f9c06f92744175b4dddf5be08 34208e6a1f53551366d6af16d45fa132 83786b4a5d955949a495869179e36802 14ed71cd9f154616bdfa5e0753fa3240 fe2c951f711bf1971a12d98ab62a7b8e 6be99fd273c3eb879d4c79351958f461 a14d6cda9c2ca5c0c955e5ed03ef3a2f 8be5c241cef6212fbd1f60c111786ed 57364a6bcfdd730f166ddaef2c2c61ae 1f748bcf0ee8eea7da9c49a653a829eb fca884f9aaea06cc9c1e87e8cf2e52d8 2e007165e4f48ee3cd4a89b0fee32930 ed59907918516bbb4c24aa998833ed98 34ca15546a48e34798d5fc0473d00a1c 417f1c15c20966a54f5039bed03ee12 5ec773b266374121e8058cf23f6382c1 981f5f50bd8821e8d935bb36a3b0560c fcf0e9c2aed826c7fdb2052f1980b788 17936c67b822fdbb6129e6c3b6c36a7e 6a4bbd1a2d533741849f98fb0b88a16a 47b6fc814d22a030db6175ef18ad3f80 268116c288b215c43dbb6421d614c0d c2e2206394f6de78a78a19ca5a5a5ca3 cf2ea610fbafece363944951133f1c85 ea60ea168f766580617092ec6e36103f 38ec61e847b8ec152864bfffd12f80b5 9c57462582737eb7d46cc1240811b39d d1b34fc25b5ed4e42fa77440dcb93214 70d8bfb20df2a08ce4730f03eef08800 33eff70928eefb54738e43095496b061 840ab934a623e29d4253be890e153964 aec823460d983866d23df9ad1134a651 cc4c36724d3c26c65ff61a3a2a0e2484 4b57450a988be6c1f51f77a6d7299806 e21fddb872844e02713f2e93cbeac35d 332c75b56c4a80f77ff6ace05b36a5 683fd587db784b87a71c812e027f94d9 a713c7f070c4fda022abf78951dd8624 fb0459ca3947e2fecf5d00de99803a2b dd197fdad7f339cbe8b31d97326b3fa0 876794a6a673dcfe502c728096f4ea53 441e0682fa5eea135c49e0733c4459d0 79ea27001d37617b4f7c5e1744a5e6f5 6e31a64910fa5fdc9db8ad97fd392b59 9ee885f08e0dd5273d154a49485f64f1 335858ca88e800c34897c77cbc788880 47758895632d44efba4e573e8ad2f887 6ae5a011c8724eb5c3bd24f986301745 67b25a96e4a0f49bc41d4e0e25295960 c86d75f3408c7ab5a6b3538efbf4faad 8a3fe76dcc0c54cb502ac2eb9128f9a 657bc03a22b4ee207638fc7b029fa96 b23030e1b7084fd9d38913e96bbf2a5d 50323d86b68db6fbc35131da26f8061a c49e9c8c1306d3a4f09a2b323d5dc94c 6d5a70271c0529071360172b4b6205b1 b16b0c22f89f43ca9b40e76e725878 da0def87fd8cd658da094b3bbad5f5e4 97e3768e85c686f9601bea3dca268229 30c88fa790ac14f750d31060ff1b5551 6278f1b6aa0c85effebad4f49b26ec52 10c0eecb17d1bac64b3c42e318f3affc 4369d61d4409bac0413500ea4648b88 6acf2b080e171859412dfc90452742c7 1ad0e2f815c6f242d197f67767b32741 31451828a0b452174705d3a68027b503 4c3ca87e50585617f9696ffb3e2cb66 4d45859eaf2627f5ba350d190cd1c00 d007026a83d6be854e48282b72e69035 2ae89daf7433f4d14b3c42e318f3affc 9d54c8a7ea484adea330b2d4b3aea8f9 ea45801f26b84935d0ebb3b81115ac90 ae62ecc28b56c7ad68e125404f814ba f195ff52401da593344db0d9ed96427e 9d1f337286e7a4d39aabd1d2b22d025 bd12dca2d655a093bda72093f9b5aa73 ba08fa516347f4e6f51f77a6d7299806 c1dcefb2613afebfebe4b9fb2707d260 d7da105cbde6ad8ad027f5769c5504b9 7c793900baa4ca16371fff21f277e702 e4f6069dee09b0df237af722b64576c2 bf81d46925ba8ef7ef6c510e24348d3b df63a11436240ec7fb906a2c84fd375f 61fe7cce3cc4b7f2f1783a44a88d6274 375652536313a1c2278f90ef85162deb 8504c3823e5485f8951c1fffab4f5807 3d83fa746851500cba85f67361bdb32 2ab14a50afa530d5253e170a96a633c1 dca260c356a236053f2fc07aab1b396c 7acabc265397e604593ebeeedbff73b 9d0c9d8e03fa4f281a67ed3cdf707521 6f6d4abfb84b9eb527c3aad6317cf3db dd9782826dda1284b3104e94482ea9ce c57c4616b4a9c14ca93412f1b60e6fba ebc897217df591d73542091189dc62b5 486b0764bb1fb92cc3bd24f986301745 2fb395d53b34b02fae5873f5a6ed699 91a56c9037ba4a63a393ceda265543cf 43842d53c1ecb4ef2e3a784001157d1e 7ff6c7f050eecd378c9b2896f4602557 b4855f52572ce2b0febad4f49b26ec52 236380670cdbf2c3a4a70f7cc08674ca 4b47e8b6ac084de116a2b5862518c93 46e88f122a869874d989c9f989a09ff c421fdd1b116030fb129901f80d24b7b bab86ce3e5bf3aac9715146e52a0621c 6722714a020f703451c4deb11af7079e 857ae7eeae1508e9b0957d845ac33749 e6ec89773cb0e3ab3880b925e059dd8 963bfaef4271c4e6955824885d6e7dc0 cd6f5c39cdf1b57a93bf4c26a8803fd4 be4db395f7b2f089391e4d6c585a697a bf29f1397cfcf056febad4f49b26ec52 de5de9cd2d952cc5278f90ef85162deb 8a1687e286cb0b6f9f2349486c570dd4 febbc5702f304c16f51fa0238791f5dc 8421fd68fddd2a033f40a91f25bb93a a0e6486608007bf4c955e5ed03ef3a2f 98dcbe480586e9a951d5d1004657a651 712a7d7ab58960829408655f72318aa1 ccb1c5fecc863084391e4d6c585a697a a9504a750945231f91bed99343331f7c dc868ad981c23d22f91663a74ccd2338 f0e98a20a4ad33b15578685df571d8b6 ff5a2e340869e9c45981503fc6dfccb2 8ec96360a8674db5b000f20a5153622c 35bce0bd439e04e63d039fd0dc042dcf 5eba36c416524db2f42a90fe4baf4591 9e6aba6596ffbf95a9bdc22a1e02e82 3532707a0addc62e13680f9c7026bd5b f624b401d623b74a87b2f182070d92e2 5af813d1c68d4e557307e0a6ee770fe0 c9cda6b019153ded8cbb8bac2032149c 8416d97c1e7b4ab323eb3ad3d378722a 9b0a6771ddd952a036b0f2a1430e993a 66e49590fed26b4b8a6a1538ac23319d 425e21671035806ff51fa0238791f5dc bdc159bdb0147e2d54f10b531fe5914c a767059df7040b5fbe127423452ccc7b 9e560ee4c7438578f51f77a6d7299806 f4f96a7c9b71fa9855b72fb3e8922a58 b95b9f2d28ab42e49bdca9b7303475c3 3a3f32deb30dc4e32ea98d69e91ba870 892127d87f684bd14b91ba28fa583347 dfafa039da1cf318a42557fe008dfc94 d08a421a6362b4bcb000f20a5153622c 1e37f6dad9bb5fdf2f05c3ceed4d6250 d9daa0e33f695897136d9cfd13835101 a3e030b5fd13158d7a2166c62eb7eb3 a42a58b3fae9ce5054f5039bed03ee12 f40c11ff508e477d55f46d55537192b6 214e9b1346a498c0f51f77a6d7299806 711d439d6638b4c33efa790205f68f8 4f2b4f1c35054480438d580e74643a65 ad9adf7c2c45842ae7354dcb6082ee59 210ad02f34db100c236f7a807f5aed3c cbb90091d43fabcbd5cb6d178687b980 d8b547a164d2f356ff24b36f1450b61c 7f2d4ff98dec893094210977e5394f26 c43d83c84e8d2614742728b30848ed03 9aca8b4392e603fcb1763573e754f7af 81ece5ee42a4f814d384177e3e0b693c 8d0563a9920592d10b3ff08c68acccf 12b7462856335e3d2404817055fb55cc cf010623152e31ad2366f6466c2cbc19 535b4f96f57a03b2bea4b6e7618432 a8840b65c6dacc627984fb9ec7e40829 4ea4834db898a3f58cbb8bac2032149c 1a1fb603583ce36fc3bd24f986301745 43aef0e663e734b75dcc7ddfa72357b1 33d620c4e8af291d5dcc7ddfa72357b1 e79b8e7272ea19ca2112c05ea370d321 f1b10865243d1ebd77cf3bb06f394ad 71e814e5c0f59c1ec45dce3c044e7ab3 a253b171a28f3ecdb781d9dcb8ecbccc 70c02e8ff7d19554e6fe3612af521500 de10ce891b1cd33635836c728d324152 4cd11ae56eba48684733824eae5cd9ae fb3c684afcafce085a3075d93a0a3a93 5db80b2854ccfb6ae2b372d25f6c9482 120ac04ddb930aa9b2029d92310f4aeb 1a1223b411a9cf92e7c7920f6a65a54d d20dbb223dc5e26e6e4d44229ea605db a86b48fbcd775bb16cff9b44fdf0517e 459304c1c27aa82aa14bb1d7e401bf06 392ed157b61814e2febad4f49b26ec52 519d1f0e03a9fbefaf794c3011d17461 db89cf8ec0ae8e10f42e033ed19d598b c5ea662fb31f56cb2a155afd9dbbb0a 5aefdd5252fb662df51fa0238791f5dc e6684a7ab98d2809856053d38b62525e b598794290077d8cfbbc7c456d85ce59 c8276ccc8fc631104a7dc8b5b1635d46 637bc87d013b1b09f51f77a6d7299806 d48b1d27c46b56f2bde1c279d540fc66 c7f4004cece37b4bc08256cf85537e 72fef5cb33aae9cf94d7e6d8577c8ff 39b851143b4f68ba21d25a6a55757584 81d84727a6da7ea7bb8dc0cd2a40a9a4 266ba504ee57b85c5298386582afecd3 86b942f68417df36cbde89e0c48a01bf 2e9be34fe47802b217ffa9a4ab48724c afbb16b9771a020d123691872d565e10 98b0b99d86a2342b2b23d7805f9b288c 8fc0e4d561b5f551dcc34b96ec9c53d3 7aeafb18b724738b9d57383d20e2e6b7 62b17d7d8fa7ad00f51fa0238791f5dc 956752510546d938788e70128ded264a bd974108a3455842668ae11a7db5e82a 5fa362fd2bd9e4b5febad4f49b26ec52 43f2e83d015469c71ba2f806cba87b47 b256041abd83a94862158b7ee658e910 d6b61af7935d36a6f0aeabfdcb4e1dd9 63aa4cdf9276e6bc19cdd91652400369 40ae20513a1ddcdcf6cabe1df6f4c9d9 fd7ed06e2ceb26d766c55b7c01b230bc 2b7b66623a00dd8b78838533e331d3cf 468955eaf3b3a4c6df8b5f0b7511efe5 6f7260eb15f4531348ca89b7a9405654 82d1c45956b00636b7b774bdb9e14e53 6cadd91f66569c584f60f15da4c665d0 3a8c86ee236ad156c6542d86974f9497 8bfdaf14a1b271954be714694b176f45 ea5e7b13d0eda809663191fd557d3a61 f81301719860a0e14626b1c05b10e40e ab463d43646bd5dcd27b31bdeb5f5c79 97af27d6dd13962fae9714d138f9ea9d f78e16c1dbc4dbd31349824369d952b3 c365c85ae03b768667fd127a03ee9f72 45e24015d08d65eb8d861be5b561accd 7041d4ec390b8b12234a98794d9f2b5d d939c9aff66ee720c47a35332c17cce2 3f80c1ddfce08d18525211e12d56c55f fd1573fb1fc4a99b4c161851ed2b4e4 34105c5e1e64f66b23eb3ad3d378722a c613e4469bfeda17cc4256bed53b2ee2 faa05897ccdaa0e4f51f77a6d7299806 8a2598fefd4a81e9c7b11e86284a2e ce1e09dec6387f715fcce4c360a80a36 f1a6dd0d5d9bccf3825a5bc524f67c9 5d7f7ef4f2f2e99f1e923e5a90fc6bf2 e490518bf6d40e138288267d39a90f5 e3da34a62e53689e82028a475156419 f7fea253245d97786c02d42bfa6c5667 a4b09d3dc36ce23bab4d0308b2ec6512 e48675e37096a6898527e24d5de49fe6 d0b6d6210a65f1e4e50369287c07141d 3e0b229e646595261a719e2a845bdada 3e32e9de344b723435c5f7d532a05db4 17a5f7fd90d2bf98b40f0ac0fb9a650d 12fa3eea2b02ab9e931178a47d29b194 6ae63bfca4db6e42937c609387f975a5 b390566645360e5d69fb38085fbc320c 3f48840eca0de14ee693975eda4e3db8 37bed46307d59fa5cc4dc0a78fc422fa b1d643bee9cc33d9668ae11a7db5e82a b0c37b379725feec97ed2c3bf3711e68 a084dbfaa217331894c13f8f78a6d62 f3db554c71dcae06a40d3d325dad76b5 9a01ec707c25dc606199d6fe090be061 60fdeb4561048f63f5823a6b2902a9e4 f4ce170a6abb80b081654cb17c02fd be461a1a083481c8488017d48a7f7eb4 ef5788dd59881f2dbeea80ff21252e37 7e871b4bbc5e3d175cfc8af3b7d60a4b 5c3932413e5433e0f51f77a6d7299806 b2eb5e56fb8342f81c25d54737ed5c8e 884a1ff382ca00d340d1d1b64916e0c7 bbb7ad20cbe09b9b2ae0028d477b835f 16fa03bfc61770652c5d34a902e568f9 50480d9733231475eaf288f952624966 22c2431d6be8a3a8d6983f351200ac6a 4ccb70092f002d124212ff51b27f0221 952da8ad85350267b9b072e1f62798f5 f82473746c17ef04f2baf097673c64e5 dd2238408ee5d84d8d1c97149a00bd19 9768599990ec4b54575fb26548334725 a42d138bdd78cfe640abe029c3c77771 30c669e02f875ae6668ae11a7db5e82a d16bb369a03f260cc48d90eef8384210 1810b6accc77d7893918f23e2305ede2 e9cbfadc69d199c6368aec320face349 877e3505ebab096848f551687b50fb00 b7c36f0afe9f16655b1ab0bf4891d200 a542ba8480b71843cea3bc3a9009695 bc7a99b74e3dd257c955e5ed03ef3a2f f7477e845dad9568b0aa15078ea6f391 f9a795649f679b578f3be993fec1ba7b e3820857258a0bd2800d7b7d07715065 74a626c1b31c14cbf8b8d4a282992be4 5276058cfc1e139326392a5b643ed5e3 d1296da8d3a45ac88aaae3d020f5ddf8 30ef2e867e365b735445e46058840642 3b7db1bbe9ca00204d851671c3f1cc65 8e8b8a01fc4abd88fc4a4d8514534de1 91d5f09b7126c4b9d158bbba9bf9a9e1 3437f0ce3933d664842f894f9ca76d59 dcdea1e749d4e20c63eb57c871ab1d8e 8519a614ac4b1c642b70eac6546e93fd c9ab6dcc7e4606adf00f0216ab99ff30 26ab5349a902d570d42b9650f19dd425 c43868d3e8ed646f4510596cb4be6a33 8df054f74a538e72c955e5ed03ef3a2f 375972fee9a2a6e28d2d730aebe7865d f995c1239510cf8b5d009c98a5b96836 66517b894b9ea3ffe22ea6d770699e4b 9b8e7652eac8daef33e6ceca7fd89911 8c2bb08ed6fcbcf3fdd3e2baf05d0f57 5214aab74399556959f8e31ca87c470e 615417f66fc542c6f51f77a6d7299806 57e3a5f82b410e24febad4f49b26ec52 63f568ee89ac03c6603557e69ac4ca11 2b9153514eb1c46bc6a830e27533d086 229b99c5f07fc657798b7aa9a1ef8938 87af702a9a5370aceea6a5a0ebf81e97 23486b58246302de979ace30a051374c c4202200cd2ff878489ea1c28ddd58f0 fd07e0a8265d1e15db11d29991a4fad8 5b06d5db4da42b96492d9da2668ec34c d7edd292f614e9dc58b7984178830447 74e9d9cd7b3d632a504721639e19f609 55c2262e68f311fea5526f91aecc0c37 e1d8f005e47f3a4ead01cc66cfa1fb80 d6064ca673a721ee44175b4dddf5be08 adc027df0d7ee0c9ccce4c6d5bb195f 6c4cb518c38c50c9939c47ac2990d9c1 572abcadc95a8ed14b3c42e318f3affc e05344d8bd3ef63c5b7bf37141f96eae 746f88894a7cadb6253bda70c38d078 e724ee5c326ecb9659db00799f9936b2 ef7ff0018b4041ad577f990873b69f82 343b2351e2605a075445e46058840642 4cef53c3310bc0561826247b46b2ae8 22e1bbacd4ae7812a23d33d54fbb4b2b 54f33905a3c8973a4b3c42e318f3affc 520b83f501329fa955f46d55537192b6 ffd45a17e325bfa91933ffef19678834 be9a0901f9ac115d71b883b95236fc2b a90014ce65aef22135836c728d324152 1bba8d173012111f5fceaa39a8353bde cf478aac2058cae0e589b08489d157d 9cd301c49dd65c68819b97ced0e92930 9199b088ede8a2c920768660cf080d12 7fc2174b2016f76abffa9cc541347f97 7b504e7d89d9e8d822a33e080d0e71c 7f1019432a168f451512cfcf562674ac 8885e21ea12d6fc2b41f1e9ce6f64e36 89bfd0ececc5a00b6e861001bc3826a 66298b3f4d2dc69db6572d78be2f91d8 d704a2ea75d8a2b3507969980fe06783 a375aa82c58fdeb67cf50d57d36c5a02 53e8fff5ddea1b47d44dc16af152638 4ed5863efaae348d8b773535ea8cba6d c29a4a7506b89be2af4d0d91ea903469 e7b9c7a47208cb067b14a4ce87ce734f e6b84acd543ebf20662cdc2f77e49a85 accdf18e9eea0dc31191025061735ea3 138a1ff3aa457b30497839e108373e6e 7e03f7b740e118abeae724160fcfe6b4 c826802d2a084845979f073230404b25 8e3a92a1f9155845d810b14a81e12eca 7f1749643345953cf51f77a6d7299806 131bca5d855f49d428e3317d62e4ff40 59dd0aee74ce6d1798b8c800ae001b66 6555b5004c742433e3785a46a5c831bd 70a17261539dd92fce1403db8f7dbbbb 5f66c21e40105601958cd9a7e5831839 757bd36fa1b0f3984b3c42e318f3affc 50e69dfb7802b094cfedb1d8b135cde9 7257fc99c253994c6fd6654fda9ac5f0 d6acd7d7c9e0deaacc963bba1556032a deb8b5c0baed637625f61c02205f9a5c 47315d244171ef7171a782a4379556c7 36fa3daee9a560f049ad73d13f0c98e0 78ccb410de7bfd821f8d8332ee17945a c966a18da154da2c467289cae69b100f 8befcc7798ae971bef5d2a19d1cee3f1 f0c5410293e85a695a96bae7b017a6d9 9bb7bbab61c5d4e947839bae1bc65257 8cc6cd529cbd74b5769cf9dd5d8f2768 1ef6c2b9d413fb7c681404257d94ad9 ab8f7cd2ba798e33b035d20a1a3ca345 ee077280e4f7c4a5ca554b08dbb3ef2 e0c570b6776eeccec715f352ef265874 455df1ea3058c48e33c1aef7ee7c6797 aa69a26be784dcd2cf004563556ddb36 661b8e9d5a93e2a4b4c161851ed2b4e4 7ad02b2b54c9456335ce7cf30c872281 d37560b9ea27af4efe354164024016d6 9792d6d50c07e27627992812a922e94a 39adf6058de74934ba18ade30e563d37 7147a78bce941b6e9784d1512b6b87bb f4f168b88686872f785f45147f3e474 953ffe955229423213d2510999d0f1d2 25136703ff8fe0a8a27b22aaa3daadd6 391fa4da294c70d0a4e97ce1d10a5ae6 a4b1d784abd7eba15b17dbcbc75d58df c0ec7cca02bd2225f1783a44a88d6274 f92b1c64b0306322de6ff974c28c2f8b 7bc45a32e5b7f14f7e1dc33a9d8d260a dc3a90ee32e36cad43dbb6421d614c0d 79ae3e5787e0a07542ff37a1b760099b 971939c687f63b9eca76c527f185435c 9c1b0058dfe027cbf519adc9991b5f11 f9bbfd8acdee30158a63c123f2a561a6 62fd8ef531c663bf6fe2eb61cd6e74e5 e44531f7204b6fb9fe43ff1e45af424d ae6594f65639a51845f0e5dddef26b1a 8bfb5dbd48e6bcd5aec454eed44c3c27 6fe854efba4d9ddcd4cfbd0aef5a371 302ba9e290485f9c310cd758d9b7cf 3e30deadc87180b6c3bd24f986301745 e6a188bbf8315d11f1783a44a88d6274 3af1f6a0d7a8584d719d8721fec72f0c 2144d79a6310f1e2934cee69ace78b94 a447c1fe6f458a02e76bc197b3a3ffc0 bce46214d9982829f51f77a6d7299806 e2022bd4d83dd6155a15b6547f08c8fe 8aac86cf8c72a375dcc7ddfa72357b1 6aa865b9e1e9384d40ed3786e46af8d a569cf5284a45a3f353c1d159a8a8422 79b1e6c1e72490c98ca0fe30c6caf3f4 dbe17b86d79a24f1ae96150e4aa362f9 5bfef1c85186b2d836b0f2a1430e993a d3f4d13ab71856953f5dcc11a7c57129 de551ddcab968586a90dd8e076a5a7f9 27ef271434e2ab43f07fee5fc5c45ee2 88e6afb8c56788899470764d5e97d4ad f7ff2f9bb62a9f5c96de5fa2ca080bfe f31398b4a1f8562f9297752c3edd590 8b319bad7b3ff1b2ea60ed8d67a889c e78e481200b9c01323720b60324690f9 f0617cdf9dd8ece3d838ae16242881dc a96eb4bdd69c103dd293c20958d173d3 adbd3814cdb655a7b11ae648ea92233 76635dc55e9783b6c8c2a1a2edf00686 d268aa3ecf296572c0806ee26b689c99 e751c765bfb096da43f06ece0b2b5196 3576a576c81f2966f2f40b9b3af5eeca 96dc43fe4cfe5668cdb6b5e54fc64b6a da9ff1881e8d59847d76632660780a8c e407b3cb5cbd7d4fe0f0631862fa9bfa 31f47d0373170683f6c84947abf8f003 20b5a668a57dcdb3402fc9e845187711 fc8768524737826190e7e9cd4c47f9dc e3cb6cc8df6f7390d1a63a2e2039ff73 3e34ca92c5067543fe9536dd9aed405f 68ef6fc62b9d7f161a8a283df3396be6 ec91cae6576b5149484539ed1814944e ca56e6241a3c762a391c070c9832629 ff1c8d1e157f3b74b0ceed2c36e897b8 313957e318bb7849febad4f49b26ec52 c074e43821469150d6084fb53091249 bfa77d6ff4e853a275b278bf2780ee51 64d243c58e649783002761e7a3ba3bd 39fb0260d1e669bed0037f03195bf42 f4d0e1be9884f45cd2fc64a9331b7788 4d22674c2acd9cc9f51f77a6d7299806 4502c9c63e7b0bda412dfc90452742c7 73dfee7c17dd0b2e469ceade478d6997 df9a0a4a35c0a1482a610b86c623da3d e6da3e780a427429791f2019e8710746 282d36d7ca9705f6ca421e9e01647b4a 8cd343b3adf5118d7fa29a3ea424473 2330e9debdedf9ff99284d844aba7576 20e5bb165c5e129ea5a11194083a61e7 a3db8fc07fefad03db984b8f0550fcd4 52997bb331942b64f84b0be7f50940eb 37299b12d2ac7fe13fcaef19d88744fb b696793f05faa0debc5c12f67106b799 e3d7cdd0224a4fedd810b14a81e12eca 4f9bfdae2b76536b3212177d8262e8ae ad38f4e8026d7858c3bd24f986301745 fafd354b0713882e4532856089dfcdf5 7813370035ee02eee0c5923879d79f21 e263fafc76ddb82b4cc80585c0d3d970 6b276165b6118e85ad312873b158ac49 224be4e98e6edc46cdc7385b337a3db1 785a68eefd1035f468661782af60b711 e7eb326a867912fe16b2b5432674ae6 ac6f632b60ec643650fa82c2f036109a c6116173a1cffecaec9ff818c66c8a16 89552ce12717e70d40ef1c8b63a628f9 a0aeb5a735e15171f15e29f2d0bc457 3fde8835e0f31a64d8cad143689f8b51 8b972b066bfdd7c44f016493aa9fd9 e9bbdfed8a39f4cbcb2a965e75be701c f73cc62cf8ca9d954c7384dbb75cab0d 45d5801abb4affea5b411468d0e36e1e c679e4eab49f91fcb4392c1299b1bbaf 7f284e0ae4c1430fc5beea20858a99d5 43deedd337b00bfcf84b0be7f50940eb 63e109fc1e40fda246b9f3b6ee20ff4b f4203c90d740596f70b396e6f5e48bfe f7ce798a5ea0850c4b3c42e318f3affc e7b76d66231ad077cf004563556ddb36 46cef01263d9b449405738a4d4d0fc7f 5ba34bb2440aa2b917b431cae0dd70ed 3b64bf8731a6a2a63c5e1addd9922bf2 98583f22ba708ddb4b3c42e318f3affc 904141878e75b065f48f3ef41449c816 5f4ce562f8ebfb00a9f598bc574004c2 d9467c88e3e26d3c4b3c42e318f3affc 7620cd93dbf32cce5213cec267286d18 ba6992957c2e6e6df67676f416157590 ade4f7281cc55e016fad58965decd164 ea7ca8c7d68c1f62660d2c57f39fb65d a0fa360b6e9b22196db2ac45db35c175 7ab4a9f2c8aa3636cce18f92a75d5ffa f0f1835eca48e3ae3241548166bb146 1c66f97bf8375052c13e020d985215e3 c393265168bcc56cf3ced7613d1c130b acde36e1b4c14b9aec2d07c46434bacd d236d890ebc96f9ddaeb6f944439aef2 230047ad76c117412cba66dc6aeabcd4 38ae45935dcc83fcc8c2a1a2edf00686 57d6c26b519918d770cd267ba4f2b2ee 7a2a0c5175ea17d88101accd22c701b9 18fef71ad80139a2af02521b7ec8a38e dd63ad97240a5744a022be8e8ae85897 cc8e9d46def8065c5fc367a00ce4b49d 5a9a9b14c1830de641cf86c757faf4f9 e8d55124a196c71f64a8099f44773f21 bed0b40333f195c52ea6ece84d077ef0 5353ec05576ed7c0aa7cb30470f3273c 777365e9179ef98cea4f74d1efed63c3 c8662ebf433759bd4bcc3951a8858950 3fc6396e6a1270bdbca69f936e89647 2c9f91ed0b0584e196a3517f50eeb9f4 15e651b8b7a0c880ac13edc49a7166b9 ffe02f7b3b421ee96cff9b44fdf0517e 564385b1081e9ab760eb699207aa149d 3bbaad82416c897d82d19a07de9030f1 7a0a47c08464a493d1433b6d2f686197 41e1dd0f69afd7b093e18ebd46d61795 b063b55df11f5df434b168be15357fd0 e290e905c015ea0cc58b5b892c704fe5 2437cb5665522ae3e329950ec40f6dd 9437fea69f0b44e8f97ef3b999ddb957 5e8f470250f92a0f597976c675750537 cb6a8ea7b323c023f046f610ef0e4e90 fbcdfe3edfc9a679ad5067eac75a07f7 a6fea71cb6bee0ccf529ce6ea3376441 b82e94209375e92a17b431cae0dd70ed c64b12e620977f0a87039a8d98cfc027 1dae9ed6781af75f6675521fa630312c a12a759155f4d0ed7eaa96064512efab 47ba08a0f617efc7a71c812e027f94d9 4a6d33949265bb6569eabdc5c4c6d724 146f90f6a4d8c7bd142fb08fcc642f29 ba44082e55ea58f431475fd256bf1b7a 8af24cacd38e9c0aba5342d638d0c267 bb7672d1a987dc303fb0851e9bc87551 1c6eb4cd121175f5d009c98a5b96836 565ad2f2a4caf3429d297e74104d3ac3 ab5faf4dc8b23517ded06cbcf08b2fff 1f95c9d8e65c117343dbb6421d614c0d 7f39803c32028449e76bc197b3a3ffc0 63669ae28cf69b767f51cfad32a5bc58 17d3e93e5f3bf2044671d97b0fd17f51 e09377eefe363b4f8101accd22c701b9 97b1b1f674df7fd08d413b6cca5747d1 e439549f5da57f5ea5676001632ead27 90908595d267ed89d970a88713e6172a 965abcd187b93da3f1783a44a88d6274 2da86dfedc2620b61001738bb075c8ce 98c67a49d64d7bed1cf96a5dc33e37f1 684dd5cc9c642f98f2dc935ce0a740fa aba115d7fd94b7cd4bd9e0690b0b191 56daddb695e25fac341afa383659322 7cb4211c4a8dc2cbad5067eac75a07f7 9323cd461b771e8ecb503f63ed915ed2 2cee786a3480113a2241dba92389a637 369b720841edc539611a3acf20a3c963 92bfb87451cca049febad4f49b26ec52 a334f2d3eeebaccab40f0ac0fb9a650d 6200bfa29b2912048b083202dd9c4b6b c8dc82f68335fdbe6b41b8bcd0404ec 3e504f94b63c77c34b3c42e318f3affc 1671665cd0e2ce05660aaee3010d2fe2 5c45f8d68b676f634b3c42e318f3affc 9431f50b757b81fb15e0f0bc4a421e4a bdd9dbe62272e25c48d90eef8384210 4987ccbc34697b446385bd4c1a835150 dd35a3f0ba7c5f2e73ea70c16ec9e2b7 569095c884b4361f77161ca74d215eee cc1a9fc08b4c481c382c5a0f87d73d23 50e269a6c3f3b558db19fa16d5cba023 d1d9e395bff3d3a7c8fc6229eb64e56a b3ca1f79cfb6b29cfc25405fbf8f85f4 5d21564e87d0a1f3ea4b8033405be154 d8c35b0ed66cfafa426c7177f78cd656 1b9605a88fdee0626bdcd672c2b17215 67584a2261e175ccfbed972ae4fd63af 39a71631941673b1c287a33ab134ac42 6661ae18418d7cb28965f16c5573871b c9e09052118e6fc112e2da326535f859 6a8df7fe3bed16f736ac40071701c687 a00017528f02804e85c2318bffd77ab 4e232b14eff92afb268cf362bf3a8d20 64e260594e3c3dceabe659e45c4a5b67 c9a9feb520968bc79ccce4c6d5bb195f adefdce69de361c58d8358620132e773 bc4167ab0fa22678e0fcc90cf126de96 7842ac8b7a053dbf61bf305cc5ea87da e8ed10a7666a10a1edc98d150672fbfd 5b349df34184e7fc2ad490d4d7fae486 32c78783100eac55b45b50ab552e35ba 9a3df6c365a3df3db000f20a5153622c 73157856beb04619eda877ebd51b3abd a6c192247329a32e6a19b0779ac03754 1bc326fc94e0cfc1cf5a37a70014c623 54addcbdd400808f54d30af857cfae06 80a2c69d8ca29bd136b0f2a1430e993a 16f603525c5ce57b23f7198a00163bb6 65bb2d37c52ce089e76bc197b3a3ffc0 3512806247a9e1ae4ffcc2bca1c09e9 fc1956b87d9cb195f5854716eabccda7 6913ad01e9b00c4ca6c03a53cf0a14c9 1fdb34aefd1d6eebb4f9aaea3b860d10 48ccce122177c96c3dc1643807625350 415e3d53c7a93ef88b90ca5a8d93018c 46e1e82d296cceb389a52d0b0203298 649da94b45bafa807f8769b595aa12b0 81b379e6871c97e45964cca694d01a7e f2c4fbc0c7c9b87d961b3f02493c4f73 ea98f80f4a663d7bdadcd309a90928c9 e6ddcae1c08b880811d3792a7f546aa8 72edff728d75b0b8f994e2a430ba61bf ab529bd91a158a53851911ab8e53bed 5e978c92d55f7852185574a5e2255bb6 bde0b499bb218666c6f42ae239fa6819 707e63122691f0cb490ad276cd2af3a4 2c6dcfd1c08950554b3c42e318f3affc 65f126afcc43ba69a4d89a7050f2b7cf e5567a82c577e8af83ab2e8865eef185 273f79cbdf5d793c6d5053bb66ea65ce ae4367ce28f1e5d96917161dc6c05572 649fb8e1ead691c6359e4b9c4f6dadd 9aff0e9f8722f063c0169cd3bf2650a0 db94dde04aad570d2f8bc0d6e7c6775 271db646af45e4e48312cb7420a2ad11 5c466b385c17f36dda6f252b9392c507 61397fb909774541e3c62e8199fc6b89 1844a4ed0ff7ed38c2474c54a2e772f2 6762370303178268d323d6bd8db8de5b 741b91f2187d54792d4fd2b0f2040d45 327fcae0643a70d916768ffb6be40591 ee6ab3dfcd7757bc6f2c5bf7cec019c1 627f4b1f48b6190b9341eeec703c4d4f a369da8e8e47d0f3f51f77a6d7299806 da0ee60c93c215a05b30881dc0ecdd7a 64f73518c32b8b7af49a23658fe5597c e750a8adb862c9f654f948e69de0f232 6bccd5c9b9c64af7812abbc2a4d00ee8 bd4662a53f8efdd955f46d55537192b6 f52e33287b89f0109bbfb8262cd69a18 f07cde4ef5e76ae6c4cd9efc031e94b 9d2c5a0dbfc811b3f9ae74fa595a8a63 bda99c11fd261f1ffc980c1b685e9930 586edb4eba5c3c7557ab4b593540354 5ac2020b6b8e2c5c8e5e60055b9b9f67 93d6b4ad8a164927febad4f49b26ec52 ff42855b8cd62a1060fdcc1483180fd1 7e215b6386f3fd4156d1d06c447a736 90d08564f19279ce714531f0291497fd ebd353db403531b4257d13bddbc14c41 97bda10740c4a74036b0f2a1430e993a a3d5d0122b01f7be62a280769c3934a3 6235d7bbd30566e4c955e5ed03ef3a2f e0caa2e794d98c814c9587cb3f654544 685b5890e66bd010dcba2d9cc78a3a32 352be15a6b1439c135836c728d324152 5689abd8ba685b3e72075e8b19ae0485 ea6b9474514df497febad4f49b26ec52 aea8be27a9e5dcec1158f00955d38a 25b9dbd6cab8f22c37a346dba83c013b 6086c6195df8e051cce17d79b4472d62 6560601e3e72b64296c50b25b74de6ab e7b0ff6ffeb24ac2cfde2e560cf498ca 9c0485519f34076a486150a9b7f2cf18 daa7a962994ff710d19f6764502e1046 98b3a7df1e233ac7ff10e98a19606836 6ac583c624b9b76b9d6741c36fd1cd2b 3e6e16cc5a4f26da30bbd4cddd04c77b 578f935f182c5cb3bc5c4c571faa8806 5b69a60d7b980b134671d97b0fd17f51 ab0d3af786b87262fa74bdb8d964a92e 79e3bca3008fbfcfe635ea97678c24b 5bbc7d606ddd5d17e492aefec5dc15c7 93078952823dddaa5e56625f6688e473 d6daf5eca30ca0965722577712723fd1 82236bf856dff003b8fe77caf901462 5e70abb053c31036e9de663abbea1800 8d0e190bf8d8021cea7b477e7b62986d da5d6d0da4ed0c1cea65c47b660136e7 3f14c153dc861c0990453a996fcb7627 e8d118117b86ab2e8884a069d9619eaf 4894b2193e36814dd42b9650f19dd425 de9b2870157cdba6f83df7938e45b43c f2d39c20369e9c524b1c88aaac3e0ad7 b19e399e93447dbdd2dd99b484971e89 b99ad68ca697301a88386fe1512ed26f 810c87b90f7dc301da9bd441f1db1dfb 28f3a48bdca643e22b151d8b52c53b90 d045064064381237e9ada1586a8c9364 34303ee69f402e0f2b931201029bc76 1f116a581f9e15e01b17743c18fb63dc 3f74e2274140ec70705165b0e6ec548 7bbd4240f837e20a6716685cf333d2c1 4442b044230ac5c043dbb6421d614c0d 89975eeeb0a1313e4b3c42e318f3affc 45b6c77fd17726713002761e7a3ba3bd e731318d8d28bd585913832d290e62af 864499eb14b077b4e5aa1f8c960ae63 4606eee54ad02693e06d804f36424ced a47fcd8bc5aa29dc998473a1ceac4e95 3f5497bf65ff9b91c48d90eef8384210 245a4070c930aaae71e2498adb56e791 a877ec39efb4c8cff37af16b2893f1d4 4f59b7e00a94352fb0bf045ee98272fc 8e3a98ea6d37d14c59a230640e61666e d3c31829b1295d0abf22a5ca4fa4678e e2a2fe3713803e9e04e2b29e7a72f7 f9f122b492c3f1273084c5a9cbef5cd 5c938860481a2d0f62ba00e4e73bbc2 41a4cfee883a91f2d9ec500769fff320 c4998912c5b40b8de1590f407a430d33 c2c4846106b3597ce76bc197b3a3ffc0 19c2fb727de9c13c51d3c864cc68e22e 7bfd75013a4d7aeb5ba41eea807f5d3c 151c68b48a1359c58566c6c3bc94c70c c5fc106c1c426fd1db63c1c69fa4f81f e3ade6122be60b39742cd3471ca7caf4 8069dde16a0f987664b3b9b23ddfcbc ed20a233783090839039bc4ea22a379b 8569c03c2a233f7b4b3c42e318f3affc f6f9626b892a529c2b642dfce4c7d8fc 4786e3a9fc33024dfeec1f13d2353f3 aeba3a81cac0687abf3f8e8aa5b07c2a 3073165c54b44f276e1bbb3913878400 f183fd6b062f642b5fceaa39a8353bde 81fc73cf3796dc2ce14c803a60e383 6fd88eb1bc87efd6f51fa0238791f5dc f361b2c70470eb71b71df3a52d67a993 4c977a08c3969494d5883ca9b41ac387 3279edef6a631940ea41b93204b74265 d013cc09fdad8ecca282c4787019214e d528d80f04f387fea570c6c691c987a8 d21ad1e0d76175e3486040c0d9e85846 5f3f97d6854426cfb41eedea248a6d25 59cd90e24a68f3f5f1783a44a88d6274 c8062ed073ce04058cbb8bac2032149c 766fce6fad5a071bc5beea20858a99d5 3a7d5468084399cd11ddc5a6b5ad5cd3 3b9b877ffac13289b6536581b321be90 4282180ccf703ca59ccce4c6d5bb195f e86e665af1e1cae8c2f0a1a44c64aad4 b514d9ac72abf291914858ee6a7fe3b8 3a990272ef4b83ca8d3e8783b997c75 884589066f028f237d3a650ebc940efd db0685c490a05ac7c5facc3cc8dc041e 63606249852d537ee958df2e8332e31c 7d518c96a145547073ee7d53b833ad02 fcc3a9a4e880b5f35966c5a46a5a6ec8 93a6eb93e11437e1bdfa5e0753fa3240 d35a2fb01107b6178727c7a6ed7a8927 e795845c4e472bfcac4834e2c94f2b9d 9ada332060a35a9ea8a8d4103b2a0b3f 38ef005583b3cfd955357c338ec9641 f2b641d16cd8a3ed33473d0d0e8c464e e2f60503a4fabc4aed20ed9a17aa05a4 e4571a5b7457d2dacea003eff0268278 dd2c3ff28a34556a47839bae1bc65257 ffb7b155cea1159a3a8e4d3441f2dd18 acd6ba50b3081e5cd3470f853139ec0c cf2351b8172fa011a6f925961cc8367b 32f8195c437b5aef51f77a6d7299806 7a42b366e7f1da98a5d446d7637cc06a 918e7e6a01c7645bcb8248441df6c2f5 96c2ac95683fa21d80a13a8344996270 f444ea9df9132a3616a2b5862518c93 59027dc9bd7a066ec031b2e122ae5028 e36dc839d70d3bb927445c0c7cf3becc da2a145da58d39c7aa5ceeb306445170 98bba4f6837ece036c18e23645ff9868 fa89bec3cccc137b10eb3ebb0bbddbb0 c07c9ca0cfbb531359c956f09c934d51 9e229ffbaf9b7395efb9eda839fc42fc 7e154e1cd9f231dab8afe053c66e5d4a 5261950cc1cc0d2a9ccce4c6d5bb195f 3ada04a73dd3fe98c520ac3fa0a4f674 11cf749cd0a65ca13339d8259ddfa7bb 4eaf30762a61db196cc318d65b897138 e8ce7c3e66e6aec08ee0a9ed0efc243f 459f1e82f058fbd0ca42ad68b92de4c8 d7f9651b64c82c799e7c6a73ef46f40c 47bfb0c5ef5c3c7ddb6175ef18ad3f80 b21a6839869018c6ab10c969b34d14c2 93f94ca2abb0e6aeda9c49a653a829eb 38aab2d4679f51a7d70e365688839034 bf06de9143b2e36190eb1f8a00f61726 10b246b375c15ab59fa24672a35ae8bb e35775e1f550d3d65339eb67f6086a2b 55a3fb19f099a06adc061043e7c712 4726a178bb7b40544b3c42e318f3affc f476ea8dabe53bb8efb94709f30ce0d2 281f296380a0e4a81db7abc68608fde1 2568994ff8112b6d65daa37b7e13aee8 cd82d526e58e3e7f4fb85ea6fd426098 cfeda84f71e95e6169ee3dc2896968a5 927bf59af25793ab76e29c9c43bc7aa ffb5e48fde2cca54518bdb78540c51ed bee1f4fa0730c6c5735aedaf68f44c57 d0c369ef812dc0cb1839c27e793b8c3c 83cf3765597a631e4ef113421a70a46 6b9b672041acc540e61062b89cc2de3b a886752590af36549e726e922f49b373 20cdd491a443bc30d9651cd1d591d64d 1fcc1a3a879b2a037d43e094da89ace b0264f893f25e10ec955e5ed03ef3a2f ff60e4b29c5cc38fceda3ac62a593e9c 351057418704d299f51fa0238791f5dc 478cc8d5c72f2823d2ad39bada7a0a c33f90746a3573878b39b912ed4a7b59 a56200b624a644f7df6cfab91d65bb91 2b1c1e0fad3cb3b8fad46760e869d184 11b110b37b1cbfd6bdfce662c3df88af 32760b2e81bd4deac67fbc2559fd3fde 8b0480b9d0bffa6e8d740231f5a3de96 817b41f37bc9f022812e3ecbeaae3980 5de75da0a8142dfb17b431cae0dd70ed 9c87f81ccf8a2559dd33a7e96aec2a56 e9e47d6b53c915f3e12186cc8c5022c7 3379b29c3a6221d79996b1334107828f 4de159bb2663fa4d58b22e372d13dd2e a4f302ce157687e0861ac00f334ea98c 4c8472bdc535102870553da2430bcd98 8ba76dfda765f72b7c363db824bff7dc 612117acf07984468e52a975e7251969 bc7d143f0c666d816f80e82f51b5db7 73f34f95a001731b855931d119219022 4a310db5ebe11142eaf288f952624966 26d174935d283cfd4ea7ef03cbe21992 4b1bb0475e67abe029426a0f57e4d15e e08d1cd0dc7dc73db9d7c2fc41e80228 645500232eb286aa8f6d69f1a6681149 45b9800c1bcdc13735836c728d324152 4175d6f2d66c2e1353c1d159a8a8422 cd44665771f7b7d2b2000d40d3899456 8c4d7014c59f619c2b1c5715bfc0f094 1ab0b879f52e7cbe958d575443776c9b c24bc140335164ba815b2b467e8e2eac 3565f5bce51b333e9b19181a19104021 33f24a72a875633297e755dddca14449 44c35996414c4d89f1f3662486c882e5 3a17eae5843c2c7660a62758a708c922 a8126dbed61e760433ea3991d83e660a 88dbdfd6e8cccf1ca9f547acc5e1dd79 87ebd707ca90700d8b424343280aeccb e047af849d703eb51933ffef19678834 1d393a06a5cf567d3892cfdb72a66fb4 1cd6a00b71f02b06430c2c15987e4cd aa97318224630a33f51f77a6d7299806 53bad3b72a7b6c1bd810b14a81e12eca b23405a8f15f3fdb44175b4dddf5be08 7c29c16650cc74bcd17bccae1d897a22 74239bc42f23639f3ea6912ae089646c 482123c5f097d29f278d386bfa54545 2447732fa2e0d8d870febc66c2c7f4f6 3cb345b1ef0f4d929a7e020ff2597416 d309951e04fd344c7b56d76bb19dcf39 307474fd0cab5c982fa77440dcb93214 6620b366c1532835789195d85b2f8718 aae0d0d70c13b8c781faebbdea6bd9be f7dc5f5fde343cc5c955e5ed03ef3a2f 677f0b4f9c5398caa3e1d5a29d2bb5b9 ed2d7f09d80ec3a259577d199a67fd7 ba212f7bfeb2faa75e05d85b12fbe60c e095933fc153f7371ffe260c5a3e6b53 439ea10da7a148bb2f210d96281fe860 d256323d2b756b9e76bc197b3a3ffc0 7a22c6cba42b73cbb5a356b3f810d217 977787b51140f4bba100d1443e9d6b3a 5a04d5055cb9e3c3e45ef4135c266a12 cd0581de9bae7c6c7d1aee311ce12c70 eabe7e2ee9547616214a15a5a42c49c0 3b4dede09e8125639d653bd9cc95fa15 7580dc6788ab60123fe64ec32ae84891 7aaed3e906eaf675a57b3bec78e5d1b3 94c98b1e67618bd234943af333340cd2 ad6fc60679879c234e08ba22112c59b1 78253ff57339985a28c0cecb7de2397a 34feac86a178437527eb00c151c6f711 cff664776c56345a6c71cc363c51a922 f22dc1d847c5b82f585f699d798e7ecf 993675648a0f1b1a9a87002a4eeaf610 53f5bd148ec293f92f44039661980ed 1fe2d919fb4685ea93271d2223fe04be 9da456630ad311b917fe334c5911fe13 e881a6fa6c3443ad5d28221e3b996124 250cd21169a42a2bfaf26c91ad27299b 8e5866a0c093f5a17eaeab1f0c9120b7 b6e4f287aad69f285aefe1fcbc7169cd 5f726d7fca7ec04131ec2883e34b06d0 ea6571f7ef98f562fca88347d0eb86ef 8c89f56df87eab907e5207b5eb59c49c 1eefaae6b1ab9615a22802c4e64a501c 6e29841d23d6a8a06cee93ad801259bf db8678030bede8ba88853ff6bbbb4a9d 392315d4bc7f11f0ca67acef5667509c 8934c3cc317957db4637188d1bc69cfd 14f18c8b697d79e099e8bf807e902261 ccd3c75b72708a90c955e5ed03ef3a2f 3b9e28ad033825b6d0ae74ce506ca590 e6b3255eb51908a53c99073e1068144 45b839c347e02c86b20aa91e9e90c311 e1b85df09d33ddea3e43be0b542efff8 a38f012987a2b29593df8c78d1d8e26d d1950f4d38df72f59d297e74104d3ac3 29ae41cd05f7bb1e377940ad91815d8c 6ed74f11887c521f25f6f84717a88f8f 44087c74e5ea66dede436dc05ae39dcf d58ea40d8a5c8c0c362f4098f2ea31b0 577155d24ebec9833ce2d31ef93d6e81 818258b7cc1925031b17743c18fb63dc 4cd0c4c75f124cc117b431cae0dd70ed a1a9c417180124f1a6c03a53cf0a14c9 7efc699b5fc94757f93239519b75aa98 8a8934756916a42855ce350c1c834503 bc48080ee5498d721fca2012865943e2 9954b8f6fc40f0ab1cf96a5dc33e37f1 ca13d22c81c74698d97cb887517a1526 625d465a8d9342867ff6ace05b36a5 9098e2c564337b01bde1c279d540fc66 e39bfe8848fbf76540a98a90bd0efcca c4388c59f863de596edd3f7982f0bf26 161b5260bcc6f8fc9befe610bb4b9f25 d15d37d902d2b8494ca386b8f1ce4c62 8840824c8e5cfafff2b7361116ad2337 f7ef48c7de69ae03cea3bc3a9009695 20812fc7f9dac9a51b3e6b75a323070 7d517ccbf0d2b16c50fa82c2f036109a b2582dd22be909767ff6ace05b36a5 5d45378d9d2e11ff497df23b9b74f339 faf951210266013cbe9d845bb7506ca4 343838f40056270a738e43095496b061 98356e87a3f5db06a0bde355e2e21370 e8632c8830944cfe422be95e44ce930 e1f77c5cfd7ea402738e43095496b061 e1e7caa05e80e973308c1120d480c5b8 f90bf59515aa8368e42c56c78fb88524 9b673972e8873bc403c57e7ce69f902 3fc5f57053b75b5a91cd5c82dce55c17 37ca38d0074d19978c9e244e3fbf98f0 f19fb80eae2ed668962a9d5e42f53a23 82a1545cc0b3227ede650492e45fb14f dfef8f26e9a8437782db9fca4b68095 fba0f822f16932aa10566a0096ed09d c68ee4070eb551c84e71b4762a7e566 7a5acf5f20f8cffbaf030eae870a2d14 a29ee68d1279e8ff98d5fc0473d00a1c c98eb7f9b2b99702f51f77a6d7299806 52c2b3f2ee5b3519febad4f49b26ec52 2a896f1d6925cc61dc89a28b5e6678e0 26a28d973e40648db40f0ac0fb9a650d 460a915796f36eaa55f86bb3ad320a33 12cecbf8685f52aaad762904f2c09cd0 c85ba9a3e1896eb254adaad15f0d584e 7fd9f6bc9a89d240800a0120f3e757a2 746f953a49a68cc2b76e29c9c43bc7aa 8d10d8d72f135011febad4f49b26ec52 339b9707363c16d895341c0dcefceb68 d26eacf8d87a522647839bae1bc65257 ef130b03885738918f7d9678498f2295 a79ed851896a40d8c10555abb2efb430 f7d4a0beda480047448174f83c9a5f1f 5b75e36e302eb2cee9b7ceaf400b2906 f9509165955416a79b4cf10910d2df7e a1cc1745e89098913a4642fe4c259750 778d75fb125165379d297e74104d3ac3 4b887a7bdcfbc4ca7e04e68609264bc1 8e33e392d91ecf1c668ae11a7db5e82a e4c8211dafa5b903febad4f49b26ec52 9e408f772321bb1920768660cf080d12 409a932e371e12d490ad276cd2af3a4 42fad469afab19939724db0ba5853d76 f7bb30d9c073c0be786dd1f2ad4d8c65 c5ded58bf0e362eaef9f898cda0ff409 70e3188676407076c3bd24f986301745 3ad4ddfda32220c388eed60433632c64 984ccfa5aa5c87334187eeeb0dea4986 83dfe7d2df18ab58fcd4910413c446d9 1eb732041cb7f2d649dd82184c01c565 6ab1ece006f03b9c955e5ed03ef3a2f 56f6e87023f0dcbceba48f396a34b9dc 3fedf94dd96ccf8db595eebc49c98d3 16001e59100b03c5fca0560918d50ea1 933937b12b4313dbe7c58a5ade21d962 11fcb3abf0a487b9c3bd24f986301745 9e5c21e11110fc9ec60dad40a0c0e85b 43b0de9be0df3ecf51f77a6d7299806 364b9c00797efba693ab1bc955ac34ff 81922145630fced4b49e18913f04bee3 d1807006e89f9e7c3087f84b199fd297 299ff1bf2618a4b584b039efed4b32d7 fdb61d6d639b1f51851f4ba6aaedaaa8 2f5f32ab1652320dba18ade30e563d37 f8050e698bff9fef8d1c65d617ea0b5e 40b55c0578228337f521e1d72c94993 91282b5e9c019a1944ee2f4962f1290 487bdb1274b8942ab8e1b99345a5afd4 31ecf1e704642491ce372179a495fcb 82a60a0aaec8d532150d30262f9b49dc d05c4f1b47e37e574b3c42e318f3affc 4454343a673c8b3483e0de42574c850a 3c1f16ccf38710e64b3c42e318f3affc 3e0b8992e00a327bcb2a965e75be701c 45320414e630ca38b96f0049223adf04 aa6cfcdad80f0ea961e8d86dc5569c02 33c8b21a29bef56645de94e1bc93a4f6 a6f69bef589c295d51ef8c8b1fdb41ce f37348b116d83408febad4f49b26ec52 1ef656b0524b755eca6c3f11f48d07ed 48a944dc8751ca7531370540942e6ad 2c671dc7902c140d3b52a6690de3e81d 5844a7d413c48b3eb9ea118461aa8a00 70d0937e1d38a9c2a45b742ddc5add59 adabe7da527cc52983572753b9298b2b daf4f3295db84cd39420b255bb5956f0 9fa0a6c2c9d102cf2bfb1b91e3f49afe 5fbfc884ac25001e29426a0f57e4d15e f9c98f76522d375d20bac10b01e55c85 98412ad8301f965210c709fd84118ff1 35f7655867f9223d82db9fca4b68095 10a4e263f8087c4b8cf2bc41970d572a 948f1bc3a1d574196086aaeef17e8c87 2a5618e34de3e26a20768660cf080d12 691b01b959200d20e44c4b5687d5d5c8 e7e0942dddd1e709cc963bba1556032a a3f060a21d7a29bfe5b095b06da9076 70bfb9d08e50970093fcbf4338a54def b20105f74c7a469647839bae1bc65257 2cdbe6c91dbe4fbabc7589eefbdbc3c5 d4a3c7e26b4a6eef30bbd4cddd04c77b db545f0422e72d3379368d1198f406e7 35f6b25bc7e016228cbb8bac2032149c 1ae856def06f8ee36bec1b6707900b50 4ff87c5a639b181b6c6add082247679 95483e7754185e03986b14b31452df23 28249c48cb603cb9668ae11a7db5e82a cc2a9dd5dd6fda66e02a8ce45e810a15 9b10ca8fefd82fad5c10b08ea69398c3 bccc9bc81809cc0d31a3de62b78a7245 5a7f0ba2b1845e7bd2a79e157dad9b1a 74d470850c9f9fbcc2b64c0adffbe398 c572c44eb47c2a15c43d2b61614d0d0 aa118e3ed06f00a85c886bf880a258e 35e5159ed908c99c8fc6229eb64e56a f1468b16ea560ae551d3c864cc68e22e 7cf228b6fe5c6c596c342cf382162bc7 b0b704778e9e06ee22dc61df4cdad42d 9e22ea3530631b5e95937f6e581cbd41 59b6e5cc2b4dab5ebcd25191f45283d0 a886d16c7fffeb874d6c356c3dcebb ac440171fe3edf2a5284eac239212f2d 711075229a3bb0fff51f77a6d7299806 5d6b4205111991c879170a5f8beda902 a00b79f779bbf4d7bdfce662c3df88af 3a1a6dcf1900fe42bdeec9c43546255e d9744ed1255664e7b0c90fa5479c8a6 11aeb1b72f433cac279f06792ea23384 97e6d79058bad189ca96b2737246fca 6ca761172d2c1ba3ce522e6dda26fb51 3820449f17744298847dc1a0820caba6 5883da6d43e3b9743087f84b199fd297 8768002c872788b8e513931a191fd77c 63790a73bd92ec04a55e6ad8c321a190 941e751844d8b0aa8b424343280aeccb 4116d19d60fc24f037a346dba83c013b 50b076e7917c1297cfb87ab5efe3dc31 bb84310d8f022346f2b931201029bc76 5525e36ebab96f98d989c9f989a09ff c87729314f0a7e2fe67d6af004465e0b 76595f5c7689a4559ccce4c6d5bb195f 4e5172cf359d577154ffd0de2b0db5e3 a767beea4085c58d301fa758e52a6264 cbc2d0b1d7a64ffd2ce1f2e292dc9c31 1b90a6d174038fca46ae6b1cc949e238 d9b264b94aa3aab652f6234a019827aa 1bf71e2f8abc7698b232f4221eaa5610 12c8ea55000707be8ea4cedb988ff461 696425932b878a839335a4bbd2281da5 725f69c0f29b712e8c6540fe6bc16d6f 2aca16abe2e5175281faebbdea6bd9be 1f8ff48858b1d78136c236fff3cd03ce 96cd9d2f9dc5e102a8529d50958b092 289f7178bfabe667550a2025ec9eef3d 127e202f77eee5725d02cdadf545c773 92aab082da6375cf5b9744d121bf802 7fa4f9f5b204af31e95cd0dc8c2f0e83 30573f43ecfd93f0684b7bc3f8a9aa55 421d60140736eb03d098fcb46b95c f7c7e05da64f6e4f2aa0f30a1572c50 a99b37edfd721010bc7eb7ec22211551 b47d8874381c5a03a561edf54b47b109 8b7f24a53beb18e8a69f5de385a4c191 2538c4fb2a271b06e74bf18c5b9ed60a 79f4f47f29267c4cc46152dd624f1d49 497d75f6a5b0c25077cf3bb06f394ad 7afdd54c53562cfe43008e14d7d4c137 440d371725f4f6bca570c6c691c987a8 56ffb40d5f85f46f1a72c98fc69f22ac 4f5719eaa2e58c9cedb0cb3987e137d0 e92bd321064e981e5208aab875b932bc 8bd48b85e15e23e162c098c9081f25f4 6a31302378d14412d42ec7e303174a87 5a3789ede7e60884e35c5921850b7bf 7aba44f7a5ca1fd9a35da04de92b0f11 fb9e9c0767a92d2e923b3c05c4c4fae 1f24b9a75606239466e24bbfdb446f55 8c8690ed4cd0a297e4bbc5bb7fd2afa 3a466eacf622b3a13a5badb049bb270 520fad3fdb9cba4f1f335cc23d448de8 638c86ffc1c9e00c5749f7a8e1644575 e6b61073fa46571df71e06115e9c3b3e 19708555411f795459a339f8ff4d3160 d38a9d0fd304f3eeb6e024121d412dd ff3f1004c4126b966d75aa5db61c1fe9 e40afb4171ccc460de03ab2a27ba7531 c72f97d0b25e030db0892e337a99f42d d1ea83fd1ee634963d5da2a72f595df5 29531549b0a6a0f5ed403132b02528bd cd2a53371cacfac49a3528690d225ee1 5245ab687729495b8c728dabc1255d a4473d9c69324b492c026fed19c0d206 6358336cbeedb9232d9fe390e23fd20f abd1518f823abd0ff51fa0238791f5dc 6718e0bfb822e591738e43095496b061 50d253ed67d73392140251e5a7586890 1875947951e8d536365c18a0ba9d127c d14752f7aa2f7ed5d684faddec3c0090 791987a0e943f009b5872b4cd3f92676 fbee497d2941270d79368d1198f406e7 c271d00152fb6363214a15a5a42c49c0 62d2038ffb8b9df253041c49040be3d5 26dc6dbcf6b36278ed4893d5d6c77f16 ebfc108a60197d8d55f46d55537192b6 af8636a4e4d6bfecfebad4f49b26ec52 7bbdfac048aefc9a5634c21965ee6bab da84e4621c255691490ad276cd2af3a4 6cdb79b485d9df2dc667146eae95e931 7be495e700afefe6cfedb1d8b135cde9 366a7129cdbaa0b8fb94cf898f4fa24c d5f55cf498a7562eb000f20a5153622c 64630e265ab5e1604b3c42e318f3affc a9dfd3433837da823fe4267232c5893a 6f019fe6ab60a3e37b11ae648ea92233 8b3bae4e65ee0f67caf7718498824d44 b23bf5b53e1e61768984d623cdd9496c 924ea50a921ac1e032fe69ab8bb2a7c3 be971a899c96649262158b7ee658e910 8d1a33ecdc93bafd727e9f790cd597 20ba57a048c518e5732649bffe80ba61 d3aeb75da27b505f1c9acd0bdfdc9f62 6b13e49c5c13050f5589b48ab7a00cdd 440b50a6bd10d00eb000f20a5153622c 37f8726074a5bbf42979546ca769ba4d 665a646e8413fb17fe537547af4fdabb c29fc3e0096d399e8d4b2547f739c887 889a50c35328c8ddfd91359c9f546b9a 27eea1054be1880a7eaeab1f0c9120b7 a479fea6394b100a98f849d6224d303b 664dd0e93a0f941a47fe752318e646fc f25cf833c2200fef239d0ce9a68d2afa b879ff9d30911558fe2d13a096d8b561 892e2630024144f94f29aafe46fcf418 ced7aa76ea532e0a68e125404f814ba 9eba16c76875225a2d69ef58c7c1b72c 92246f29bdcfe82cd323d6bd8db8de5b 681581df89b7d39975eb2bddebec5e6b 49f7fadfe67b54c478b3bb39df25d28 5c94122a5a3682bdb2d2900ee0ae7e0 5897116720fbf6b5d1308d82a3302eb3 738e5983a229c432db984b8f0550fcd4 155599b6ab61a872f51f77a6d7299806 dd46ae4a6d6cd1154b3c42e318f3affc f1695a9ec05b757ec7cb90e4399b486d 668da5fd442fa5ceb74af32735cc24bf 2a5cd32bacd3ce601ba08c4ff5d0476f 99e89417f985d077738e43095496b061 9f097427c4d2bb4af2c0658ad22a9a9b 57b68a9891773c89d27b31bdeb5f5c79 5b100f548ae5b162f51fa0238791f5dc a40281aa13c75ca2ec4a754398bdb370 3bd1fcc6ef50264112126d1916209079 c838d6a451994749310af74324aae27f f6e56ad2fe9e6c30253be0083bb3c718 2c0b0f0e9ac21f6ca1a2ce4cc65d552c 76665ee7994012f2bc74913d2fc4a0c b8003b8cd4263cb51573632af24b9a9 7ec1ec1db13eb349ff085529822a7226 a7d4b7751892502a9055f83d11955109 e2312615b21d7690c4f22423196a0dd2 4e76319c1489ee71f4a4c7b91852bb65 60c0cb7599fddb50d3d709dbfce9caca ec6de49b6fee801a4b3c42e318f3affc 33bf7aa0aa429a98bbfa993b02d27a30 49d441b49adde95b20768660cf080d12 d6ef0aa7b674c171fb4f26e87f6a6814 2c9756c06606c05bfa85bd040b2a2468 e5b4980736c034257de96030404c16e9 f9bac9ba3b878cf23a6e0d0a575f76a3 48c2e34854c9aab889b74a90878aa3cb f220f4b4c7b79d7ab54f2a7bd7b06a98 d8a73e0d8fae54c23002761e7a3ba3bd 43c9aa5ba91b803edcfcef693e7ec696 67ec09f7e7cd6f059f2349486c570dd4 29c4539ae1760a50c955e5ed03ef3a2f 4e8d9f4bebd6a97670553da2430bcd98 c3cd2a7f997a6a40f3017d945b17b4d6 fc7ec69f0402424de27790b0ec8671f7 22f298bfabc8982691a76c36d0ba1ac 8915112d9819c83633b2a5760b4dd1f 7fef7125c14e0fc3b3ec4062c13aac32 7e85deaa7bd114eedcad73f240f03a20 888faedfa6002b8cdd7e7281b421bca5 8fdb0cce840b2977d0edc2a586731adb a7887db4982215cc5afc372fcbe94f4a 9c5ed0a888a5807ca9b8d9d3b5cf54cc 450ca83285f0a0bff51f77a6d7299806 96122c5c0777cb85d3520bbaf4a08c12 54108a40e3e2f09b940268b86285118f 6ef3a3de6152b19be513a3136ebdf08f b878329d1c965d195f9efc5cadcb44d7 fdc04ac9fe8dd6db04cb542e2c50eb4 f1f3021c1469c8e5610c2a68437007d6 a68f06157d6ba8d4f51f77a6d7299806 62cb358e8c73add6b71af98eaf823ae8 fcc0737ae08a9cfb63eca8f941f00cca 86996ef1ba6aeacc64558a1c6a2a9f11 16b72d74bcac545fe3eedd8db265e106 e3c8c6e7bc421e52e4721974983917c4 884f8604518cdc98c3bd24f986301745 fa83ef67ce97491ac955e5ed03ef3a2f f116ba8983e6728eb1f243bab39fb29 a3f86421758cec25a092cc351404fb5d 63de5ec054b2d310dddd8ce1cda8c6d9 25aae534f3aadc9c9aa9d7f676c1fd7e 201e927f4979bed6febad4f49b26ec52 e81af191bb828526815b2b467e8e2eac b04e9713af0d7048ce87696fce7b6aee 6a72d6a26d28b02bd626c689702869b7 3b91620452041b664b3c42e318f3affc 616a8ac7d1667a062c1a544eca74c954 89e9fa41863867de72ee08e78374a212 7ccb70ddb69bf162298a458038c49d73 5807c27ba3c04612f51f77a6d7299806 1872afa831cc7f671b50574ebd76a45b 6b5f3b7fab02f9e358220b7cab409d3e 6a357f24085bf0fcae199f04f49518bf d62f718a14db87cdb40f0ac0fb9a650d c1a04d0c233263aaaa199671f55e5379 844199875fab83dd1b17743c18fb63dc c46bea30afbbf07fc1997d3da2532033 7e261e5b2b11cddc557e22af3c71c6c 679e46c5c67fadd5c3bd24f986301745 33cb211cda607e9b922752cea2acdd17 c2ad4e19213d839873baa2510487646b fa4d09b10928d8322685733c782593df ea4fbea57b0b7b677c0ffcaa63ee0500 f720b36f39f9dc0e5582a46a1071249 ddb20a7778038d87f51f77a6d7299806 2633bba6168a580c8997f7623978b6e4 3d7a9a28bd6b772a878cf98f645da333 3dafd09d21c9ca607d55378e40c7c3d9 2c3a4ab3efbf12d74ef530b007e93f59 c6304f008d2a44f81943903831aa7f4d 785c03a00ad37ffb8b424343280aeccb 5530f95795fce09ca71c812e027f94d9 f83f03cd8d6d787f73678cf8aa86fc01 98440aaa709af51192d5b25c536d8044 6631de96600690d158c88d30f502a452 97551108bbb5afc36199d6fe090be061 51f0461221d5a86370d2e38b8c410c62 bd14692fff933409856ce0c2a704bc40 5e84a7deca3e153ce1c2d3f86b7aa002 d95fe848b19c277a1fd3f440755dada6 104c5225ef0a288ff932326d9778e21b e12ce317c2d9fd0eb9fb1fee7d937756 28411ec68714ab87b9ea118461aa8a00 1a9036f081dd51683a9bf8c718fc345e f1b42fa8b6b48e927c34b035140384 8d29772f3fbffe408fb9278cf94ef5eb 1c2aa66d76302e1f696f6d06eaf4948d b4c66c291f2c46581c1b3b2ed8d13bf8 e14e867c0cfbf1f42cef66bb37b0cc33 2e71bc549eca25fdfebad4f49b26ec52 dd0377d3a40b57c360885f79b3a5579a a377ae927e09bbe976e9713f57a5fcb6 1a42167b30554eb8f5a6c82f073f291b 8e9954ebd739a4aa10234beea2422457 43ac9f2d108ebcd0c3bd24f986301745 7f29e2e6496ee99aeca1c556848f5db1 6f87ef47500b9d20768660cf080d12 dc956d4dc6982188febad4f49b26ec52 8219a48422582b01c345108a8f6e3cb 52cb81e736aa856cbea68008b6e5c5b7 614c37441ed33c338a3c75a1023723f3 a7197c1bd1bd1e47f9715dc5d7dc0802 31e3a6b2e0b40045cb2a965e75be701c 7573bc5999555ad635e2fdf95cd06839 2c730735f7f3e60f848ac41b30fbbc29 688bd4df748faa62820018801b237b3d d1a0b26d98ee4a877fa6d07b5977c143 fc7a8af42911dc77b4169e4cad9bb63a dfa86ce9f892793cf51f77a6d7299806 a0fd031270822841febad4f49b26ec52 bdc7c9339145602af51fa0238791f5dc bef379d51df02d5fdbcb30b4afc25496 86dec892a246e0c02cbf13da1d4abcc5 1fa211118fcf90d858df8eeaf3dad1c e2807c8c5f5653d4bd91edd7a65c1323 ab8644ffc94a2f2dc746cacb18b4d81a 9b56632bff0d00dbd626c689702869b7 2b0c16b26ebfb88f490ad276cd2af3a4 fa1dc9a58da9ddb6235820b1d1961ea7 72da00b4d8ab22bda571da3abf5b1931 23437993281f7e1fb06ed3dfa60b19a1 b052445a4de3c06a10c0c01485abc473 b9ac8f3615d8ba0bf51f77a6d7299806 e5261b63c63b226bf7e56c1f3346606a 71581e6511d7782282e6c3a4e742651d b4fe4d5be595c1158c1cf3f7d7f0373 b266c6e40c1e976ef3c6b7a01c418f2d 3c6ced93a3103cf34b28edba8d17a601 5b54a7ca6d758fa1e12186cc8c5022c7 5ad2333321746a8b3f222a37719e9945 12193ca7bef40d40a84aed1cd93567b2 2f8b594d23665a2de8058cf23f6382c1 5ca1a1574679afed68661782af60b711 6124096fd3488b7fbbc8ef3196ea5fd2 1599c3f78f521c0c3bd24f986301745 7e651b7d860842deb612ac3ee32028ed 82271bc614a76c28890992ddacc04113 dea755ad1156374f55f46d55537192b6 63c4c59906d69b0ffe15c1377dcce2f7 d43664b8f4df83341ee9d48493ad639 cc5ef32dc87e0f245dcc7ddfa72357b1 726164afa497b154b075b4c36d25279a 57a50a7bca63cd91e03b4418ed1a4f3 d77287719eb7bf0d66ef9dd2f3ef27d3 dd3de76ab27a6aee8141276dba5d99db 317c099a20806d10b5c1550bc8448972 ec8efc59f0e8c0fa97b2fb14fbcb9c20 5d9f9ee95a7e1623fe9d8ee1a924ac2e e8f5c6944e41c12840d79382490f0976 3c46109dc46f1714cb2a965e75be701c 9f78ea7856f21a4ac8e00bb0b2c9ef1f 10b5723ea035cb047464e25da6d2e90 b96a360ca5a86bcbc48d90eef8384210 30b3454ab0aedff9fc30525e763ef5eb ddcaa720a7b878a4beedb4c8fd29e2d1 15b0e9fbea6581354ea9b65fc2574d0a 651560f344dd987fda6f0c2ce3101382 4ba447371db8c37c74739c2c9ecfb3ee 9fecccf2e75e7c8e1099144def22d76 76de9805c6e208e6b2644d7d4d7ea2c7 7bf29d83522f630190ff2a7142510fc1 438f44f223f116e3c2a9901441a2941b 9e068a0ec94cb7dbf51f77a6d7299806 cf46448f9ef495c81d022067655f6c16 967d0f37416158b897a6420376995cd0 9207224582ee8aebf57b7c8ba41c730e 6bf058da5c3835b415ca6115a4467dd6 65e5036f67dbac4e1cb7b51444dabacd eda7058a8c6440b7abf529d72f4c9152 61ed0adc69dd8eafc3569a6df9a670f2 c479482694623359fdf2e93846e20960 827af0ff0d9eaad196a3517f50eeb9f4 37c76d4830a4968b719d8721fec72f0c 75ddfe6d71b14184134155606601dcb2 8f380fecd7c5b0e4cb95bbaeca3ed4f1 f82e5554f1c877a1e074517a246f1e65 f84b49a7d9e6f31ae0c8359faeb78bbe 7d3a5c7a3c319544bc4ac3caf16ef65 be81240ed3cb8e5a7d8864caa856253b 5db59a8ae13705bd7843fb4efdc19510 1cba04d4679da07ef51f77a6d7299806 592420fc90be625a8b83086412477462 7fdad5057b8da165fa9f3ec600076f26 682263e19fe7c52d492d9da2668ec34c 3bf8b96b10519a984afda4ff857119a2 2f5d2dfc1c8b75666c8f2acb6194d7e9 a52ca2940a24a916ebadcdfba7971b71 5c8668d215fd79079a037b4abf810691 edffc05155544431436e6787c76ef3f0 cdf9659a23c89e80a23949c21eddef76 93bb999fd7e586199fd83fd2ba5fe30c b1a156c751cb960f270371af13f7e37 87dc5ace74ed29fafe43ff1e45af424d 7d8ed7685620a16db2c48fbe46b01575 91b12d3af7bc52c5550384fc1c3c3d02 f4888967269031b295feea036c244c98 55589c71a2abfe97f09df371fae9d63d e20f1fff2b84f8ea71ba8e8bdf40d1ea c62dd18f43f11b858d2fa6ffb11d1cb3 43c1a78d9d8b3735f2b931201029bc76 2da6752496e0c37961c55d3f6d7eeb14 f12210d97248ee00e3db80a3cacc6e3 1b82432d7a959b8dfebad4f49b26ec52 e7dd71eaab0f209dad5067eac75a07f7 8a86e3045ac5fe7e1f335cc23d448de8 b9009a7b33df161ba022b82859ebabcb eca46f21f2893069c0a61ad1cf92b694 8db2878df7471c53e45ef4135c266a12 a3f3c3f288a750de83d38badc3559dbd 9b6395c94a80daefcea003eff0268278 b3477e3ea9fd1676f016aee3d784d83c f94b4fa5703a0d96983ba8b03ccecdb9 4cd7d883aec1db86890992ddacc04113 76206b183e39910a1c6b880f91673ae8 27008d8569ba4426f577ff4de1ac394c fc64a8a31f30ab8bb780b07b76df3b4a 2053961ba985591af51f77a6d7299806 6f53e944fcac6e49795407f097f1ca4 739a97e0e3c446c15255bb0d3c16575 a5e061fc25bff768623d10a210f40a3f 449491be7c2586bf261efd8e659b02a2 a516711827a396085528d560ddea455 a9a81543d5297d13dc20930e6fc85682 4c49252bedda66402c2d6a2f47ceb5ce 2b6fd7a94ad69b019ad1212263439f22 797c7f154643169bb07cbf788ba0557c d1f808613f6dd787a2c8f09e8ae34f27 c5195b46ac75dc8c20c6f761e8cbbf 9a3194d78a592039a95110eea24f99c6 3dc68207126e2e3dd038992c6975ea76 43daa5027409cbbd4b3c42e318f3affc 9f76504d9b551e548c37cfe791015e2f 83ce738c3cc05c54283b00891f680579 27ee20b7a7e2467980dbca6e7b64a4bc e7eec2839ea91f07df6cfab91d65bb91 573922f28958f34446bb945d4cb1ad55 d120d47f8c9bc5028640bc5712201c4a fa6952fbf7f52682aece045e8bdac80f 8821c22c61ed87e3a585c7706fdbbe10 d87841ba0db5931576a45e9a12af8158 869516eb98eb3c2fb54d798b09097adc 62a4f3c24bc69f593eff95e5c4b79279 24181beca16bb46bf9931f8a466b18bd 40fa6161e7f921f6738e43095496b061 5fed2b96d705323b8bec49a2a30e37ed 706dbdfc48b19b0f423f1f7d60608f89 fb7124d1ea2937f252219cd24638ae38 264a075e293394a843638dabe1eb5336 5b109b578e82cd4f40ebe9b2fa95ae8 b623ede2cc40ae1d377b9297f3055210 bc15e43c4af5a6d0f51f77a6d7299806 379ad91ceb20859b0a3f25f5d8cb0f8 d81df8f708d4360c5e05d85b12fbe60c 8df9eb57d6f6bf7f490ad276cd2af3a4 5000e001c72cebf44f60f15da4c665d0 606b2e47238b02178c37cfe791015e2f 80ef50d3e67bfa8783ca982ecb7c4900 68794d2e264ea2d75cf2470a6eb9a24d d3645a097a49042bbeab86a0a7f61a1 7135fed6de70df8d25fc264b1d80bb27 519ff6f082f8c41692f109aef7d7d6fa 9bae37b85e2c71ae62158b7ee658e910 e2f632abcd84c03ae7354dcb6082ee59 cda92b4188af3a17c03a563a9407c5ea 65ad913e23eec800cea003eff0268278 4a3839f687aad9122d98de61f824e5b2 f4b83b7fde9a4f0cdc3d55ecee5c17b3 bb3aa93ba6c9a38afcbe4e14ff0c4707 f7ddd0ae5b0107efdde6d22342684df5 7eabef19cb02a9e6aa29e9f0529e8ef7 d2ad73295752e323255c4b3adac8f815 625c161306cf958eb000f20a5153622c 7afb1812e86fac4f492d9da2668ec34c b3f05a35fcb82f678d3a66f462d312e5 98f00281db9a43aa6430c2c15987e4cd 2b567360f02ba48e4923701c409a8965 f74a63793db25c8911fc2b865c2a185b ae1cc74a1db83b0e6ab95c4e859970 a4e595d77097b224e2b372d25f6c9482 8730e3ce4daf7e264f265f0c85da0b1b 27805445a3c587c1db039d8689a74349 7d6ad371f7037a6679368d1198f406e7 6b2edba33e92b96998fc1d0403f6ad0 e58448ee821f56bc409de7db3ae4697a ffe4383cff6d000a3628187d1bb97b92 c5f14fe692e70a5f668ae11a7db5e82a 5c2ec61293c30ee7bdba4e1fee183355 f5de3fdb7c073f48dbbc9440457e303e 316a52439f11450355f46d55537192b6 cde43e92674a66f46f3f02fb4d0927eb d177f7632a4bb3405073c32a9cf4a6a9 343b9ae8ea03e45070f79ce36975718f 49c24587a96211191679687a9323c13 cba38f14dc16d5b5fbbc7c456d85ce59 a44249589b77b4674b3c42e318f3affc 161a209c418646444b3c42e318f3affc 60ebae123ae653e2a4385667567ce9e5 f9add10d9e9f13f413ee1dc69b2c2bdc 228561e28a40fa1dda49e29c548bb1eb fe5be6c8f1599697c3bd24f986301745 f1afa2f6205f5c552ecfa9be42d43d0 fc2ae302325d2c796820bd77cbfc18d6 9e3586331eca79e48a5e3400c9c8f4e3 ce998bbfe6fa0d22bd6c42a70e9434e7 41a464b6ea17ef5ce7321f25048c6142 8669bdebc11a4646618b7927ac6e11ea 688a2fcca4d94685a11f6bacf5c7662d 623c9a5812ff9ac920768660cf080d12 22c4449df36e20a025ca952293bf3fda ed30f840756baab042678d21fbad4632 bef84446fe50feccec7cbf3284585a40 75bde51fca930e35dcc7ddfa72357b1 994fac397c6246beba878f7904755875 2cf794ec5ac1f1e0f5a97170d660a78c 6606f65226a75c2e34fe19fa8681ba9e 963ead3bc27459b2f51f77a6d7299806 cebc20baf900f828147637a0471f2f73 66255a0a235927ea1b81a92ddeaca85c 26642892c5579f25998886098b83a99e 1a43bd2e53364313f51f77a6d7299806 29d2c8d1297d9f5c9fa24672a35ae8bb 5884f7c8367ea46c7c6c78d6efdd12ae e476ca4169c3d0ca490ad276cd2af3a4 912589813b9dbedaec85606b5c87ea7e dd468c350fc655eafebad4f49b26ec52 190ac74c619a233470412e9b69c8933 d11363fff4e2dc6589cc5332e945f058 a8dac23add615b33313f9af5275b7c70 97779400c9a7a15e3c7dffee9c6890af f77643cf323921d7c6542d86974f9497 9b7b33f2892e7bb9562c69acee9936b0 88140d7ce3a1f6c4664b3b9b23ddfcbc 2ad18975be0934bfa93e942a054d60b5 e935cf0b43767dc9c3bec646284d5a6a 86e6ef5ae3420e95963080fd7249126d 8d900764c04127df4b3c42e318f3affc 770f6ebf01b135e556938a56df3469d5 c8f29afd512b8595b000f20a5153622c 6c026a5f412f0b93002761e7a3ba3bd 8f4c9f7f38e15d03593ebeeedbff73b faedeae65bb5644040ef1c8b63a628f9 b0abbb1a540e4b3431540522caac8407 29b55c6cc05c37606e066e11deddab75 2df1f411c26e7d93ad64f84f9d54ddae 64fd4269b04f91ecc68c5db94fe444f4 cc6696abd1d76062f90f8519e58d5382 8ac4ba5328ac4f423a14972b15e80b93 74cca53996772272e91a460ae1e88b96 fcf216336b414bfd2ea86336b05b146a 4229653c43599d726ed8927720f5e445 905ac0420ec18c415aa4c6e8ff29695d ed6e26db873ded9573e85324169605dc 64c8873572f3eae175c80d0dd670fabd 1dce0f95df134fa6498e56bb9f3fbb8e 3eedf733e9318ee06bf0788e630e3deb c094e213b2199035ed90a8a4ccf0ca93 f46d7f7da9a056d7fff16555386d173d a1cb5947d7b09c2c7ca68e217a316e15 5a61158cfba0bb6a80360680c1602c7d 3273b3eb8dfbbd8e6942c5426df6055 8e28f1259c6572b86cdcd27a8d5231b7 fb4cfc22ce88e69625d15f7f2ce4065f ad5c26058efb026446b5ed2bbbe6c 9a066882ba79738fe3767a60a4ba1ba5 affb5a80f11b383e1c25d54737ed5c8e f708d5284928431355ce350c1c834503 5ec6da31cbe72c7f492d9da2668ec34c 3ea744a70049d4edbd069216df40b64d 17e171f6714e330d869e5ec10662e58e 9184aa5ef68a383918c27c564e9b3b91 a06be76ebccfceb91c8935ddaf3dd9f5 ed964779023b7af85f6276ff8d24e520 f6f3b8e08af617e44733824eae5cd9ae 7d5e1184ee0db5cebda5f96847fc5070 6a52c7461aa23233c2e50348f23d3d 2dc5edae3c234a5b5706d1c54190f27a bd9758dc06e3c2a01e4317813b39d4fe 6dad3b17869cb20fdf94ba6a907dbe8 527458cf1c581025d4b7f1dc8ac42b22 be5501adc4564d9edf30786b8faddb78 3c65571a506b6486db5ebc3f027decaf adc1d752f04c338bfbe07b96393f97f7 bacef6e42574bc25d43cd8b5619b5cb8 4cbfd25faaa706daea0e09825584e0d fe82d64b0268ba75febad4f49b26ec52 9d59a4bb0e08150148eaa510713cb074 b305fed48f77f5d3b40f0ac0fb9a650d dd6e80140b3462f4a1b2e810c76f942a 2da4d3085b438b4f35836c728d324152 1af43a3e8d164168e563c86a0b8645c8 91c2adae3b942b60d1f4836ba5ad2863 61128b7cb47e0e6bd6e704b04fd0cd56 b24092dde9ca927758aaf363794b1631 2854c3a6724724dbf5561b9d69a2eca7 fb4d877cc4f2c63b20768660cf080d12 5d5fe5537c5496f71f344185981b2096 eb98dcef687ca46970553da2430bcd98 82fe7fa7a6655955f51f77a6d7299806 6c10998b950dadd4cea003eff0268278 98108861d6d5235017b431cae0dd70ed 7e967a3c6d2a46c3e2d62d6f0e6f01ec 5437d8fcd8dcb47a4733824eae5cd9ae b3cf5b09372826af658d908a2254f194 1270e7980d2d69d293a790c6eb6d2ee5 ead93856b735ec90f0aeabfdcb4e1dd9 dcae4e8f41346522e1448c25c538991a 4bbedd35668b06514b3c42e318f3affc 21ce3306dc9589dec7cb90e4399b486d 2b1747c389f4d4f1ebadcdfba7971b71 25695002a51a61c38596fa5b590d746a ab7405d5b3ae15565e7087f2d9a278a9 3f31ad5e9cf3e51fa6255bf8e0b4ea3e c1371e87799885a7a329355bc8cbc0b5 10506aab1adfe9f4eb7b988bf4f0d1ef d5402d5be271438ef51fa0238791f5dc 9377b1b5c83bb05ce76bc197b3a3ffc0 a59ef94cc10c7a434e6953a92bb25210 50da3e6b87b52ccc99e8bf807e902261 af592a064d5a83989ccce4c6d5bb195f 794dc333392caee153041c49040be3d5 6146dea482c1e5eaf713a1a6bbd3da86 15bae7fe612add11bf899e941ea0fe55 fe9d363792ee708b35836c728d324152 3dd0f8b4dd8a688aba893aa9f42bc953 e8c92eb88e60460e9128f82277957970 6f8f9aa1ac705db9fcbe4e14ff0c4707 fcad199862c19cd97fb247f6727f93f3 9d9d1a2c33b32c2078aeec4d01b034df 29b57f226644c696e921ee447a9e7b42 7ab9eefef9fddaa416a2b5862518c93 4804f348d4028033134ee81f8ff0778d c842f85477f9bac0a7a7a90dc2dc5bd 832607835e99761c276b6f6d90ee3a83 3365fa395d93bfd8f181ff4e3cb0a33c af057970729b2cb255182f299fe41fdc 8b963c7f5f091b3c98100807afd99d94 7ef03c6cfa3621f8ae46e333ff78e5b2 13b744116e4f23c340914702d8ab1d37 30ddc80e5fd46bbef51fa0238791f5dc e222abacac76f2a5470d3ca356fc4190 7f531dece49aceeb4d1bf4af7e44abf 54215af9f13cbb0c62d6ddeaf5a29144 5aa3a0e7ef40f2d385c2318bffd77ab c47d1d0aae5de919f2bf00ef0d8c7aac 17f4b14ebbe37179ab2b7e9ed9191486 72458d4233742f29fa24672a35ae8bb 2e8500336964ddabcb51f8085cd316d0 3dd217a06e76292b372b6139ac78b39e 2c6741a965bc580072f9a9353d57f9ef a0a17ed0d2367f433c40408002fc3026 ab16eb9d6122a5fb41cf86c757faf4f9 e7c9af90b186c098490ad276cd2af3a4 7f7d80803ccc727137b816e68e48019c d3a5f7b56e3e6e1482e6c3a4e742651d 8bd8776f65913f17b3c03e06e3a5c3f8 f5526d438b53a244bda2eee2725ec127 3a0bb4b6c7245e0435836c728d324152 38bcc47be092398cbc2921df9ee1c4f4 a19e6780182c72cf9bf8bea04806ba15 287f1318fd5e282a185574a5e2255bb6 e2c7ca786fc4b050a8a813669d8b4f2 519c9687ede3906dccda8d28b44378b7 f4fecae627f0c8906a4e86536413f450 b7d6030b31b59895ba0b91d2ba672bfc d60166dbf522deccdc8726953f344666 c9857deb88989a67b5851007eadc6f74 3b3b35ab4412c3263edd525d249a1362 9bdb8268baafde1f44c642950fb4550a 6c8bea32e31192a5f1dc60fdf1e64165 d60054176a178d18febad4f49b26ec52 e88f6f4e0ed6d01effc6e457221b9271 bda51fed12335c5e999b33727fe6db14 ab76021d53504f38f51f77a6d7299806 9458b7fef8e84b819f2349486c570dd4 4019bfe9bd7605f7a52709499e423710 55aea0b2f76b3f7819592f8d1b2d193 e5eb64f97f6161ebf51f77a6d7299806 4381d6508786fbdbc694ced1c311421b e056700bca093e0c1cf96a5dc33e37f1 d5b21d6154c0795813dd6eafe1477be1 a91554caeaa6f9db399bb05f18e8188b 8497e2cce58a0ab46827eb366939da8b c40a88d13709eba91f30b807ae39b61d 41fb180e6e8b19a14ee40fa7f6af487c bf886e6f28740776f1783a44a88d6274 68247c737f565de8615b3e12f53b391d 91dfc3575149ff71342398ca9dc32672 701dd3ef213c653b39401293115e30c 2da415184cca0aeb2063f99c33f5c49e 8c3e8ef43fdacf68230ea05136ea3925 f4fb644d5c81e60e1a1485fc0329e88d 259125651db34085a4865f78beea84b7 376a1d212ab8971125f61c02205f9a5c 8d45802ef679d08a1a3b40747093a35e 1e4d84c0be21fadfe84db9643b62f161 2e61f5b4f26b890cf27383fc5a5a711c 6cb41b2a5e27533f436e6787c76ef3f0 fa0ee25a0c8109639f5f9b9f432d1ba0 1aba52edddfad70d1bf0233e4c77d163 b661b93b67d0ca908cc8e5a741a7e8bd f674a5a3c9c5c7c781faebbdea6bd9be 1455ee780321fd14c3bd24f986301745 c6442db6d5fc94a62744bf8869518694 97001433dad08b48e471c0726d35978f 15d58d8098de68aa48d189f942cedc62 9bac9418d56234bcbc5996932c1238cd 998d6e318306153c3d67fb6c1e0f28 7473f09709d14a2a8d1dabf86742ec3c 400369fdca7608a531292d1fc01277d8 992c576d8efa6d5870c3ad1df4ebf5ca da234c874b8beef22e1a5fb6897c8678 fbe97577070afd195c1975633309d43c 63ed1dfd7ccdb5be20768660cf080d12 c180b07c9b0f46b9f8c3d2002c77ddb a342324aeff75ec7983d269bb8e4ede9 a3f369c885720efc459b850e737e0048 642fa34b5b7c5e5414c0d1332b864458 b8cc89f8dbffe099a2da1afa391f92db ec1e1abd7c9f2eaf5dc565f18990abf4 d828c9f6c3e9f67367d177b869ee03bf 38fb3322efc35807486150a9b7f2cf18 1ab2ac2a0af6bf36798e7d16c343c306 a59f0a9956137c0735962325b2299f4c 6d31e827bea8e970f198b94f669bca91 ce8ec2504676cf874b3c42e318f3affc 55104b3d3c3f853992bd9b46d18a6c1b 601fea1fbb6d791589ccdb4a5b6b972a d5a3401380fdefa0f51f77a6d7299806 a7d1fb495c33316cfdbe2bf897d8a820 c31155f4beed339e855931d119219022 2e3e46e427b45207765ee729adbdf968 69689176b53be82df51f77a6d7299806 e791f274c6cc7ded36a36f8fd7d27134 e9a1325245afff7c405d9b5bb7b18be5 89580ac98637f985c3bd24f986301745 daaa70967da2bad4e80de6380bdd8c21 7249c3e41c4807c0f7e0e05bae6131 f797885ebb3b15fbf417851aee42d8cd 4c0e985f49767f90388021e2e5bfc1bf 80d80b73981eb265b30ae4347e74f709 f67d8afd7611fcdb45e0993de2a122d7 635005efb9077ca282c22b790c082c19 d8e3d77a83528e5cdc1206c3c8202eef 66378f0a068a111e57211f5bbbd90b35 761a4fba430377171f335cc23d448de8 8653180e64d70a47b3cf15c77de45986 6b43398bac2b6979438d8caa9ae106fa 1a10879bcfca0534f8bc1f8036e08e44 2ee72f0fa8848523f1d2a696b973c343 f7896eb08596dcd6f9883d2fd957d60f 7556cf66da8b4498e12186cc8c5022c7 a21d0b3b4ae4436e76bc197b3a3ffc0 8ccbd2949fd8809b82cdf8854f156846 a96c429fad0af4c6bd1cdc725a461877 962bea9f435909bf3c6e55b962f380e9 42f22cf6e29876a9c19a59cdcb309b91 ae632e7cfc0bd3a861687229b61f22f8 2d5f99d5c2f3463d477551ed4bff707c dce2d814513f5035bfe64eef3e5b93b8 de214239a28de6b9d00689b1b6482b4f 612caa5ea6c888c850cf3715818ccfe8 e534dbb5eacd708c18885412f2b0a4f7 f48a955a73fa0fe79aad7644557603ac ba99a0f31b2ba6e51f087e2218f8d26 b1333bac9640db456e5061f0592f234c eafa1680912b4ee3391e4d6c585a697a 66dfbdb8c35a6db779bd5cf8fc22cc7d 58fc0d5a44ebbf194f6edfbf4641cd2a aadf84936183c2d7414701ac79f88733 68bdc363716f181c61b4bfc684868124 48443cc15bbca01f20768660cf080d12 a860f37217b12b26bffdf578c739e217 77a683709892e56fc535a1d76df92ef3 44ee5a33ebe173c4d28a525d8260e58 f9573b0425b08a38f673eef39387003a aff5771db62fa63d2406c215cad9df09 f85a362c7607921a7aeca7115f6949c7 44295d4ec0d1e1ae4eb7315d59c5142c 58182c7837f0edc35da16758ae613576 f0cee441d88de6dafebad4f49b26ec52 ddae5f8a28d8d616e4bbcfa1dc6a2906 288aadc96e908b29cc156800563d212 4e855038d6060cbb47e81ce1f9a6ff7 9271bb0cab9365d44b3c42e318f3affc 6bb09b26c75b70b01c6ed23568095b6b b1b499e90f17a6332ebeb1e6a8111f53 d58af24ca497ba8c4b3c42e318f3affc 90b0880e3c85c133cf7ff48fd8d30a70 24187332192704e4519259b5fe9bdf5d 37ac02e6ef9c1ac2e21111e385a0661f 511cf6bce918c6738e0afce805a277dc 324f0d772a7b728c36350d50e191a45 b36ee7cbb41ad82c9b11da89c22111dd 5e96ddc94f51f99d2165c54dcecaacb4 bd430a701652963faf0ff870be225563 19eef9f0da098279c8bd09537246ca3a 305795f4aec83b53a51d50d3f9ced065 697e5edceaffe68e738e43095496b061 f5529ea819c6e97decdeb21614063c36 4ef4f289b6c23719588e951dcb8abdba fd7a4cdd680495c7dbe9c90af547c85d cf5a0589134088ba37e5c2aed7049b42 9df064dd2a0f58a1d0176f9a144100cd a9a618507a691298febad4f49b26ec52 4d5362a8446fbc8f8cbb8bac2032149c a93d61d10d489c8eb2c2cd006d206129 e1d7b48449559549303c85804d402599 5aa83cb8217619d9ed8de30c53213f6f 244b56d46b9eec86f51f77a6d7299806 5912cbf7bd756d3bf51f77a6d7299806 283844acddc9df141191025061735ea3 855e0dd7d801faf61886830ef08153db 4f7c024d01141f23f51f77a6d7299806 3185d26189034bfa48db03d58a820cad 2275823b40c3e669be2020f4ae1ea66 4572e2658d6e6cfe531eb43ec132817f 6ba59a9ea719aefcd323d6bd8db8de5b 4d43e9b908d77ddd2d19175e7d19b7cb 496b37559f4ac973b9fd3978c6bb311c f17661552a06bf85282d5d529f9dee5b 7c42d9809322b3993002761e7a3ba3bd 7f837553c70b2a63684b7bc3f8a9aa55 bc2a117e1c6b9d0da9f547acc5e1dd79 2486659a274a6400ff07dc9cc50c993b 3564c6480a95a60323fe3501bb9e7193 1a08afbeb4334efeefa472e59de52b43 d2a3193796284084e8775b281dde57f de90266b552fd26c2ebeb1e6a8111f53 5348f1ce4dac7dbd5dcc7ddfa72357b1 e97b4992a642a13c789195d85b2f8718 7f57fcbe1e7af1c1b000f20a5153622c feb92b34c698d396cbde89e0c48a01bf ac7280f9774cd16432bb5d496e1304f7 9649ef758d3334c74500047017815f5f 7c77974a20ec2629d8f27b2e727c3511 5ec15b09dedf4dfe961b3f02493c4f73 bfa2808f136b8f7f3c8fd4a2aec82d26 df5ac7a785ab39fbb5677466d30ffffb bc5d39edb7a6efd77b9bc6a8e1b90da7 5e4a74e0bfb5bd2835836c728d324152 2367a0e01767df36dc40b058754deaf8 7cc444f165a22b80cb2a965e75be701c 8a98eb9c64d878dd419786e9c37fabbe 25640329444772c6c2e20ec62321c272 f89a468c302c89d9534fa06200d07790 668fc6063bd05447e4bf96d5b836adbc af09abc2c30ac934b3c42e318f3affc 75e59e4626875167b2f7093e7efce142 b286f1a5450d3958c5da39cd0403824 763737ea91a58b0360eda59359536e76 c6d1d2f8261885abb2c2cd006d206129 ef4e5099cb7c543830bbd4cddd04c77b 14e00e9bc6ea1b7230bbd4cddd04c77b 31f1b54fb7c9e5a3cfb87ab5efe3dc31 b292c70f70377635192ae4e26f16c930 a0e7dc01e9bb5de1858699aaad4acee4 735afb29934346513d41bddf307a46a8 7bbd69e2b6e1bb49f7075cbf4d009544 f85e243539823dd56fa63795f94c4d8c e58c53d29aaee1fc8101accd22c701b9 2fced9721464b4d9c955e5ed03ef3a2f f10936939b1c9277d6134c153bee8ea0 832bcb192b80378fdb039d8689a74349 f3775c07e5ba9515d6944324b21393b5 6965b32c6732f5c0668ae11a7db5e82a 807c73aa0a556bd496a3517f50eeb9f4 120f8e2ef276fc6b9a45b69dede1154b b7bb5f021d40ae59f7b4b759a0c02e4a 8a42ddd769a999a9e6942c5426df6055 573e85e0e02dec63c5a208307819a3a1 2d1d1b66d6e268d8c67c3af5181fac2d 3822433e287ad25799e8bf807e902261 133f18648797d149e27790b0ec8671f7 eda01b811087e2f17002d0c486c20865 b7bd6522f540436c23500a5b036df62e 73ea0e595fe794dced787bd949919203 9130392b20b977813c41e9c62d62dbcd 7772fe52eeb64fe8318694f1cc6fb1f8 b491449d06aa40cc82e6c3a4e742651d d1b97ecf63191e19c19a59cdcb309b91 29367fd1bfe6b23827775562146ecea9 8bf421d191e4908bb8fa4cb65e077db1 e24979696e6b8e7060edf8bc2f5c8881 869bf2bfa51062c47b8ec2c9a49686dd 8ff873162e6237fe571b2dc3839da461 299b3728b46d7a4de343d70bc2971644 889f05b7771f6b9fe76bc197b3a3ffc0 a7c9de3c0808584ef827070eae09df 5d2d0250111a44d49ca96b2737246fca d77f7643e6e34ac91933ffef19678834 2c08b5408a7ee4da98cfd47a860803c5 b7f733e648c850abdd91f8f6f381b291 c4a43d8473ddd9b4554be8f12e385710 7a1d2827369011344d3fed2e930520c cf97b60fbf85b0656f236f75bfa0f434 e65cd563d3a74dd4c0a61ad1cf92b694 f0a7dba4e3c7c1e4ffa178ce1c2c6b13 fc8e92ecfc4a39a47149dc6ae5708157 954ae626fe09e5ccd5cb6d178687b980 32d64e4638eb6e371594fba9df8f37fb 6d6123585f79a8a54fa2fb9adc6e6779 14ba2a965791a003b37e6e0c89177ef9 a26897b681a3841aa81634d14a6ca786 95301825e69b3b2db04cb542e2c50eb4 1307c27c3f1d1f7a895e947287fb0c95 58611e7338c17f2bde909714df3390c0 ed50f2409be0ad022b6168eeac2194de 10c25bdfea5eccfd153555abe935e806 e448e3e40395d4d679414e04132a8bef ebece7c581e3a42c32ba69f5f654ada 94a458e0932f189f755454a26c190c21 8627071fef9f1ccfc79fd92a0bf07e20 1faef163785bbc427b11ae648ea92233 8cf448cafd11acee84d4c0ff7581c569 ef72310b39244eca6aa35752fcfa44c0 539d207a10c615fe76bc197b3a3ffc0 fd861b13a3fb637e463650bb8b4560e7 8ebe791395cadf8dcdc074d7b3f1e7e1 4cb84e424122cfa7b9148a949a91556 c582922f61a11b1ae76bc197b3a3ffc0 b14270faa0beb387f36ea1eb6542fe7e 445402730a420ee63190a57d5547dcac 5a9e3e5bcfe506cb323ead02771c3ad6 ee5dda5cfc8349caad5067eac75a07f7 197f31b2a8fb2e1aba5342d638d0c267 4eb395cd5dfe658318a93a45bf780820 49c0aaeed2f926e3f2cf6a9bef44d625 359ffca14508cbcc86c701087a194026 f88dca28140a1685490ad276cd2af3a4 d6728931be54e6924b3c42e318f3affc 40a7ed7ce8ba70fa4ddda47ee90d6a21 edf1d95e72479c4bbe13ce34aa7c0c1c 356e173817daabb0f44dc88afcdcd380 8d143c8169ed42ada6fee8e2140acec9 1f67cbeebf4f65b22b71faa8701e3f78 bfd91773d0b2a32fd39e33fed94f56ef ae099c7bf362b3e5c3bd24f986301745 e055a8a5d8ca0b9869df3aa2bce421f5 82e47329faf11e5c7235016c2c2c8150 f46f68598988b922eede8c01bbe6592b 1e4bf6ab2b2be368614fa2de2dbe583a 90494fe31b3db5f927eacc88b2b78746 825c5f7bad217f49d96790493cac7283 d1611599e3dad7292f4c88fd91c6b1b 9928c36919730b927c077130cb57dad 752d13c1011bbe94f68132aeb243f95b 4c5bc4f3d5a37c6dca9d5f70cc5f6d22 ef3ae300317c571b490ad276cd2af3a4 68f72d87a2f94e0c8f58b2a82381f0a1 f44c91626e4900a5a26aea0642029fc b723429f1ff9df7dd604f93937ce2d3f 212756a9f7bff5892f6b08a7db6d1426 45d1e19ee0b79df377e131ed5f0fcc86 df4593480b94850bbf6d78b1e39e2718 e6a89aaa226b116a60885f79b3a5579a b595da70965fff189427e63287029752 c0d8f876e068f17adebc282c830998c6 c8b3d39ca53c0cfa4b3c42e318f3affc d4491f4fc4d37391f8333d818f5f80e1 f48d32cd065088b6a6551b53c4ec69b3 6ed257cfcd73fc6830bbd4cddd04c77b de2f120b21e228c2e6c5cd45aa112726 711b4eeae1c12b77cdd18be3aeb2d66e 11cdaf2939502622815a10e5a35009c9 290dc618c8ac785cb000f20a5153622c c0546f05e8a4542f1cf1ba58f558540c 763fe8469c9d204931a818ce55e517b8 31a85a1a9bb22c3bf1e23636310b7e7a e07c83841b933e74c5facc3cc8dc041e 6e18de4fa33bc9bcc0639593f50066f a9d27bcf51153e4567de2aaf749e5256 19e80d699bcbd3168821642e9a54505 bc644d8f492e3c25febad4f49b26ec52 97b3dfb3af4487b2b7d2794d2db4b0e7 2d38fa0a1b4f94981faebbdea6bd9be 5b2c4198bb1be0373704a45f4027ebcb a10406dec2b6e9a2df81d783214232f2 62bb78bfca7f4bba6113140c4b8aa3a 1f05e080ea6e8b64ffcd08faf4fccd0f 5f64c977d89c2417e2059182b9d400ca ec98b08c2093d435f51f77a6d7299806 bf9674274a0581bb11632b225817c709 e3aa92f57f96a50c4ac1ecd2766586e1 3cf25cdc0cc8b384c652d01955093125 8b077b3be444a1338aa76d17cc411fb3 a6947349fdaf27ee9cba29f8b9fba633 14b250fe1e9d53beb97452240e92ab9f e8bf7ba06998867d653227f952929af5 9825c19c22c97af2aff4f3612743fea a70771fd3bf24d65c16bd6fd1b8c7eae 8d9b10974c5e3b35a82a6374374c9dbf fe2e9385283b62922de0bc4fc4d02dd6 9634e0b7d04586865fca6ef890703085 1b43b4892ab3a4612e85eab6bca44d5c 51c7851a252ed0ff8211891ea560a7f0 6af7f1e6035abb9570c2e04669f9304e 796fed2b90efc756dad3b08da15912d 2a5f29019fea4513dc0970d34db41136 8b4ccdf057b895f888a682c7326c32d1 6be2058f02beb0569699d7bc7fedec1c c363667046c562c7d9c568a52c35ec71 51b4537837adf046fec95a1eac04b338 7a8653592db2dea36518d4b6acd71be6 9081c28e6a90fab1698da6fabf8a99e2 d9512362b43efd8f91fee7773e951339 728ec88a2fe37abd4a2f90e76b7328d2 7988c8f23dc634678de5f815e8387cfc 411811d0fac7dea18705931e60ead6a0 f158c5c293106fb17af2ac6660aa6669 72010b2aabc328ba2d1beed6f591ab11 c20a339e2983a462406281a1e760ea19 dc611d5add49200d868cace2a58d7210 78c577ff52f4d79ae0a0b410fb7d15f4 6986716a76d8a2952ca3f5e9a38d33a0 cf5e67d5e6d7cf03f26f8ea67fbd8269 ba2ed19060724207508ab97c29985b12 10cd74fb0af8021fbf7cf6012a0af9fc 8d2aac03aac051bedd3adf3090c701f7 274e9bcb57548a02dab956ed03b0f26c 7b89037bf1695628eb03e749ccd7a541 62be982d61ccf61d92e675672199574 5b0e8fdc7208b8d3cafef66236db7ef0 e4b2faf6b123b90286603115d2739530 5b62582a39681d809699d7bc7fedec1c e72421299768187426a61458b682cfd6 276e35b78c24f8b2127787d2c89d5a93 eeabc27816119ff429ae5ea47a8f21e0 97deac79537426ac9255fc5df0de0bff 649bcbf07f29fcae355d9ff291618ea6 6c160b3f23bdb1af1832c6620d562eb1 53afd3dc40b699cf124123a40f9164a5 9c32d9398c04a66bddaf28b23330377 9b17a95b794b3dc341a298cc53deb86e a1379276f75d137ac5ddf9f6c8e4b3a9 7f52ac1cf8e52a58be46d062a5971723 b34982af1d6e18736b4393ff6e4e0f88 161e0ae498eb2b9be3ea982be8e701e5 bf15d331be699886a005442d4981d053 2abe61af67cbd99aaa1d46a2befc5e09 3250cee2b00f2bfc9141594c44ac35a8 a05d8e55e329df41ca2ed12df13a916a 89aa38d569b025b2dd70fcdaf3665b80 8143949bf6d5e294ff2c800153491d59 ce82dbe1906e605d9b678eaf6920cd86 d48ceb6fe098d078f0cfa7d27eaf1bef 8cecee14e55bf1f4c255a5f53b753fe4 c876b151a22b59a24702663c3b3faf8f 94aef6e5634907b16ed6e9e08c602c83 739a2551d3826d5ad25ca1a27cf9bdec 20bf71868949fba4b445ec1f6a39e0b8 25fc395dc873bb478a252571106d569a 3222d3e3c90f4a3238b3634f169dcc74 356fbc66c305dae355f46d55537192b6 7e1c4bdfbf19aa22d3cf0d40743efc0b 5b2fcf551345b64bf3412e3273fc1682 672cf4b2e0deff1e693e54627de491a9 eca9efad6364021cf42a90fe4baf4591 fc3d08b88b00d95212610a4585592f3 29c6a184dfee3050820018801b237b3d aa8f7d94b5aa9cc1f9ef5ec0bb70f1c 9d5941cd2ae236db2a63bbf40292a37e 9417a62558b74cb8fda92aec8c5adcfe 7ee773e031400d09b4fc0a2b20c3cddd f835366205ba8afd9b678eaf6920cd86 c516c27390cd9890f3a67cbaf0fde1bd eb984a4ef0dba0eb445e85eb534460b0 f96c029d342f72d6ae59128002f89f91 c9a3ea912a35c3e1601bea3dca268229 293f2e28d5570bfeaff8240d22dfd73 2dfdedc4e2d10ccbce9509a520498ebc 6f86cce2bf8fa88821da01c0bdc324b2 90f2e686389b56b3bf262660cda9995d 4ba0563454fc10f365f5f793afed824e 96de9fda13fa986d9cd431573238602d 75234e713a2baed84d5f12fa5114b4e 3b6b823039a912023002761e7a3ba3bd 6a3c9ea7e4cc8fabb20aa91e9e90c311 d582887570d2c1c2d7e17ccda34f6b0c aca97b802b08e220ee36f204dec02883 85bbafe7db85e0d44c4373a4939914cc 6f835f3532151c25c2a21be00e77ae82 7a1e70d3b087970a23fe3501bb9e7193 89142ab0273740f221bdbc0445d9f748 587143666166faf155fe0f12b5bf32dd 5d819ba4e21208ac2b5fb024f65f6da 3134eb0e0dae6dd7b26d198318b74e09 f66d010471970cf0391e4d6c585a697a fa29ae17ed1482ed8aaae3d020f5ddf8 f5b682cabede450d1191025061735ea3 4d85392c3233b2b8d3299846d5c00f08 9da75bbb92f594f19cd431573238602d fac2aedc7b6ab4b93002761e7a3ba3bd 72f501d4168713b9445e85eb534460b0 24d1d32aa33c38716a97150bb2a72733 6ff63214c89d65d7b87028a4b477349f db00e248dce5fe409cd431573238602d 51fd921d3703b86381289b3cbd650b9d 9e5973d8a4ac051f6e71174964d90e49 e0eb9f5421ef2c4584904c716bc3b619 a7ab34edcd45d7573da27ece6ae88fff 20edff7e1500fc4ed45f502ecff9e44f 5929d3983eeb8d5cbf96d22e92924ea2 2f32966fc64688969a08db804545b684 3f9462d720929e73873bf2cf33e10943 65b353144d52d75e98d5fc0473d00a1c dc0db74cd78a3805f5600f911d112095 d6f122e1570e4180d6686dc2df08cca5 52329d991c54c5104febf42664c91820 e537c592fdd7f7b7c3bd24f986301745 22a67cefe94bd5eedb402a46aa8f1779 24bf4d4382c6bbf0d99562b7e15abcc1 ffc2c7813c80d8fd323d6bd8db8de5b 6d9d5501c0a3d8f1615fc479d27ea86c b85174a2ea03f4189cd431573238602d e0aee89fa986647257256b1738023f7b ab7b56ba63f481af9cd431573238602d 7356817f2b175b80f7088fd42bf47c7a b9bbe91d581fbedac8ba7a179c3a36e0 2475fc0196ea39aea81329004b7398d4 1d3aa66972004e861f5bdd219902caa1 938ea1c89e7a62a9d6d49cce41472b6e 794f6c8575cb9828b44aa1973fabbd64 1ee0509358dc8bcae19134c8fbb91f2 1bdb9df06d749be1a7146643e6b355e4 872e9d0bc078b4c8b9a1f0848a4940cc 726c677962874743002761e7a3ba3bd 58884a3e77d874efc3bd24f986301745 f298b3663ae591a2276bf4bce35c96fc 14c35137c3612fd0d409d3400adf2d96 7a7188e439a39ffd9a2cc6d7b7b4954e a2dbd26e8a382509738e43095496b061 38310f3d796ac0b56bdcd672c2b17215 b5bc21c92dc997cb7209833c7512d6a2 8770701a1d5cddb9def21b8ee4b159e4 b8ffc016a4e080a6d2e5fdcf2bc010e2 891c1cd45e849766b07cbf788ba0557c e69dd1a9bbeb62523002761e7a3ba3bd 96e9571393290511be52c3c71dbf7749 7c08d40119ea39923fe3501bb9e7193 8551281fe6e37db43002761e7a3ba3bd 6dd08b216592dec6a6797fa823fd42d2 ba73c0ea2797bded8adb98ef1d9443ba 1248597ca22fa1e71332a40d0134407 b1d834cd686cb8b8477f06cc543186ab 98fe480bea8f8f0486abe5555a3b447d f247cb60019ea321dffe3352803d6df5 5e8452a2014eadd5ea8049eca11c54ef 9eb1ec4c70696799851f4ba6aaedaaa8 4f7497a449c2e4a56b9e47850f23a791 a3d05dc39ca639bc662cdc2f77e49a85 f772e5b89475fd2e4719088c8e42c6ab 8d1d04d72b7a240d4c61a7cce317bfb7 ccad4d1ffac1b5e978ebd8af2a314e49 fa1e6b0591047eaeef78a907ef09669e 472fe5ae8d386452bcd6195ec0f1e297 889654f30ea7b4c3ce84b253beeae59 780799646ab0a19b589fc18f8d1e43a 89054836cd41bfb9820018801b237b3d 3b334febd0aa9ba7b20aa91e9e90c311 a44a0a014b0c1d60609fb05dbd8681bd 94df93e1c5f96c1891bed99343331f7c 49374090de654a54fcd4910413c446d9 bcb349231b83952a3da27ece6ae88fff 818723195f30327b445e85eb534460b0 21a65be5dfed538fa3461a37f23a9515 6349f0d123ad1ca62ee5d388bdaf2f 73bfba756e6e8511c3bd24f986301745 727b33a75f10861423fe3501bb9e7193 e01e72e173dd2cec8c76ec1f86d432b3 45da524a32676350b5817dafa1567392 20b72612211287d43002761e7a3ba3bd 30a525c7bd5ee80192b396ed960b67ad cae89eddba3c4fa1b20aa91e9e90c311 5aa1db3eb76c53aeb660da28fa2f03da bfe05e0cf137791d1029f6318b92e21b 7d4c3e8b3304d8f823fe3501bb9e7193 bf3b9638b7be27bb4c26a0d2e78f0aae c676bf562cb559e5ea820b41f77ab7c8 7c7c705c9f3b0ced3002761e7a3ba3bd f86ad1699aa2da6dc955e5ed03ef3a2f c4b5ed6c9ae1ec5e8c54ec820a9ed1cd 857d1ef816b8409fb20aa91e9e90c311 2a34205ffef345d13002761e7a3ba3bd 94672a37947da258f70bf5700b78659f 65cbf486ccc5afc53002761e7a3ba3bd 804a9b89e0279aff1ed1d681aa8388f6 52ec1d25f2d6aac661d4e2b4b8b99e7b e2dbb55cd453fc2ead852a56afc15951 2baa1d2adfec9a58445e85eb534460b0 6f530fe373def431a6fd617b2ff5d2d 975b724129620c9af4b6538438a0b930 ef575c402b734f8d810b14a81e12eca df1b280b7763abde3002761e7a3ba3bd c416034b70b1d339838b39398d1628f8 26a97ad8dd79eb1ad0c63a304a95442d 5d8ea325e7182fd84b757d0f16894ea9 f26d68c69a06b95ac440f8a1412258d1 db969c98e24511cc98cfd47a860803c5 d7de6b2deca39eb0b20aa91e9e90c311 5e52ffe27434ff446875e2781cdd26 16961ddf69b6e91ea8ff4f6e9563bff6 b699dcd9de34b5023002761e7a3ba3bd 8e6254609ffacf233e5f17778b45d37e 1c38f1631efaf9fbaccd05bb6a369505 1c97870c90ff3a4f23fe3501bb9e7193 4d4eedf718daacf945714140d50db61 77e4ad83f78eb8c3fc8b5999cff24f2c 758649ba384b28856dc24db120ad1ab9 2a0eff86efdf60a89a682a6d0e92c30 541087bc5ff0e0bb349c13532142fc61 c7cd5977b531acd76b41b8bcd0404ec 6b8e579c5178d3e117b431cae0dd70ed cda580f16378e12c3002761e7a3ba3bd 8eba29bc85c8c830b4c161851ed2b4e4 b57f0907adb6a60b391e4d6c585a697a ada2aa7ccc81977d4ba437934dd25596 b5548e1e944a31c077ceee024ab73ab7 242b7dde571b99bd3002761e7a3ba3bd 3f411154853b403921db4632488a2ae9 a2730a66ac07818cd3299846d5c00f08 dc9a7d116351f2cca16af3198c99de08 3a3c922623ddb42e5d81820421265171 dbf2123ee206a81b8b00eeaf68a1358 4dba531ab70199ec3002761e7a3ba3bd af3ad492135860eed8fe1b8aaa4afeb2 d903be5d4ceb3fd56eceb9b47ba95c e440f87f88335680b20aa91e9e90c311 61d5c19a08b3f4a9b3dfbaddaa1a935c f9a9c8e70b6a2b31b20aa91e9e90c311 ec07a28c3d57d3275c6a44a505804654 61c9711cf5308ff98d4b556335cc5d64 f0275c22904d275222dab9b5e1c1282d 326342c53d6b26bb423d2dbc3b38c389 91530c95f442dd71793b6229a2639a1c 6f58b8c1d826a301a97bcacc05204e5c 5700152736510e2b45c44a42b411ced8 24019c15c4707356bf96d22e92924ea2 616894d973384f358be590460e3754d8 6d67f5a9d2daec3467ca2ad6571afff 31b972951e7a8ed323fe3501bb9e7193 c9221b4eef51600ad9deb3f829cc2475 1ac080a115a94477c9fc9da372dd139a 2b51c3e9b524ddf560b5fd678a94e9cd 996096692592afa91a0e159a720dabf7 f472e9e63984b443f155d75bbf62b80 240ddf8b63318ef534506cc3910614fe 28ff86c01e0faad758df8eeaf3dad1c db3d26a5f2a99aec433eec73a2fff97a 6183e3d4c73872cdc955e5ed03ef3a2f 378a4f0524756b0ab20aa91e9e90c311 862cf2d35bd106c55230ba3c88b645e3 385f8323f5051b85f2c48e2288633251 a2f9a8c649bb70d35c08aa223a05362d 77fd14f1a7f2d27ec3bd24f986301745 2517066dc728ebb955dbece39a4b7905 6292216ef69f6edb11c5cce13f76151 968714b674baa3152cf0938654a53e55 6ec12aacb68a918a311268c007111527 f0990151fa433f1498cfd47a860803c5 cafca523ae3653502454f22008de5a3e 95b7d8f0fe70e768827291701dfaa1ff 3f036c403ab34bdac3bd24f986301745 c578d2fa302f0b935e7f9846384b5857 73fc0f27cd57942ea2edf7a1fa4be45a ae5ac5b2b027fcf9118ddfdb81cc6068 690c3f8a4e7d384f1270a3c39ec25c61 10d9b52541550c909cd431573238602d 4df369ee72ea8b2c3da27ece6ae88fff 6ae77e7aa510e044c955e5ed03ef3a2f 6ab612b7a5d4def82454f22008de5a3e ee16bda18e585ce3445e85eb534460b0 d9faa371af8e7f443fa7114f9b06aaa5 e77d26aa88ec531cc17e7f250c5222bd 62f7c1abde6bd25e601bea3dca268229 7e2c9dca60e09009df1d847ee0a8f3d3 a6a7ea033ff20abac133e11c42c6f6f4 7a415346ab7eb481f8d77b3fd14416e3 e300cdc549ff426723fe3501bb9e7193 37ef68300b944adac5a1529d102e7db9 e3fff8b83cf999467ff6ace05b36a5 242b7a0fa9e9c439b20aa91e9e90c311 f4d21f925b703fb7e46b767696592d01 af71e4dcd477656f9cd431573238602d ddc16ae1263d506c955e5ed03ef3a2f 31c090b23f52bb61208c8c852ee795bc 9d02362926dcb3f6951c1fffab4f5807 bb201d4811ab271ecf5469d07a8db811 9fe655d18bce7ede23fe3501bb9e7193 74ade89963828a37d94ed55f750426f be5349431760322c7b7b1bcdebeec13d 451e66939d40c5be61bfbba8a5defb02 bc8e050a6c0e49afea5682a3b818969a 2777463657ece1a3299457639cc3cfe3 819676c81556d0d09ed5db740d23ca46 fa5d7f9c54f5bb2010b97bd228fca721 4da9a56cce188c838aaae3d020f5ddf8 3b2855b73aac8d04d6686dc2df08cca5 e19080d150b1932ab20aa91e9e90c311 fbf9ef8784c0cb8485c1a9fb01e08349 65cceb90a30f7b15bf6d866879baaa7f b0910467658fa43f7fde87eb01f5851 7d0eea8581ece273820018801b237b3d 92cbad40c55de5843002761e7a3ba3bd 60fe09a5de2a484f45613f5c2df1029a 8b612b06a3d668eb67dc575d3328bcb2 a406ef7c367e9c043ce425098c6116e5 e7ed7eeb46e18296fdb9ebad3cf3755b 351c0bb85c887df27ff6ace05b36a5 a257171096faa6252ea98d69e91ba870 392093300321b9e1eca22c501ad0a77a 5ebf57428b18f78a1ee6305032661052 15f0878e6bd57e6c417da6e71c86659f 951d129ced4e7d13cd4e8a27ff8b78cf 8cc8e16280748c3823fe3501bb9e7193 efa1b72ece626ac6e3989b96851850ed c356393b27c3fbca34ee3fb22432c207 22ee7f1fdddddaccd78a975872fcaff 5b5fe86aa8e93f91c3bd24f986301745 d6d29b0c347f2ce23002761e7a3ba3bd 3fff3e35a4b68352820018801b237b3d f41198b81216f36ff155d75bbf62b80 50f52f9ce377596fc955e5ed03ef3a2f b8411c6434b79e59d6686dc2df08cca5 97d1c4b5a82891e33002761e7a3ba3bd b825cc91b6257e73002761e7a3ba3bd fb6d011741ccdb374a00834418a35d1d 83120585ebf07ee93002761e7a3ba3bd 78c4b505894342269299936b751bd77b 1d93291de09fa5c876e9713f57a5fcb6 dcab9aad5876cecd597ff152ef65c9c3 42c35105a94ae6e68ec80f11cb8c2f41 e5140547647bee72490ad276cd2af3a4 1c40ccb81c862cbf595d2b7814efa054 b8261a2db6b6525f490ad276cd2af3a4 d47189d9686125553caaa84ea4cea094 b2b4829e281f1ca09a87002a4eeaf610 832ea764f0d3ffad9923defa57043b67 276d614d42ecfd1490ad276cd2af3a4 6b6c03883c704389c3bd24f986301745 d14bcc93169f80d9b2d5d82056287083 322b055809086143c7860707e3deb3e1 1bba52fa91ad1f9d7ff6ace05b36a5 5f62b83cebad8dd1473f10e6caaeca56 306f10749606ec9355f46d55537192b6 338c59dd95a2e93362e5325f0ce7656f d5e003575739a8ce1bb088904f7cb154 3c886639d67798f671a70be9f12ce8b0 aa122afea2dcf725db039d8689a74349 2391f652acdb73dbe958df2e8332e31c 25244dda23e8f58d788f926f4d51e733 18635aca8099ec5a3eec26c23f5bc80b 20765ccd89f9d915d200faae04ce3f8 2b06a917abc1150b554ad4a156f6b68 da7310bedd8595879daeea1362fbd792 e17121f04e884edde480eba094ece03b 3942f02501161134c3bd24f986301745 3d54679cfdfe8d72e1aff9039d025 4fa9bcd45574827d4f0331b81f3e1ef b28f6acc151cc20e19fb4103277a6b93 8b2c3c73b624c3faf4b35f4029eb1ecf 435da96586eb1325cc719373d4fe991c 5dbdb35766fd2d4c9f4b4145f6688869 aee3dc454d9b5af0dccf03d91dc58d38 afd9337f23ea759b54cd2a0ea6cb618b a8fd0c73fb6214cad56c79d3df7792df 1509a8710d2fce3c4785a5d3b6c47521 73eba3054b62c14b76c7054c38bb1311 57f64087490954d2c015b1a51bdead97 d5d7324c2233d6edf51f77a6d7299806 b399584ed464f6f5d2bdf2c065ab29bf 18b58b179b73dc958c9e244e3fbf98f0 c65ab1fc77cfeb37f7c07d2e56f26a5a 8839cf79a5338a568ce66f12ba927a2b bdd12e21daf8664689940e75c3dc3e7 813d7c5131f6369cb898f6ca189a940f b4ee137cd86d7e3a6afaa22adc38077c 45b4df78e3cec0d99860e9353bb52a1 19b46cdd0a44286823eb3ad3d378722a 3b7fcc7c030ecd496062e86c1d0c60f8 d37205936d372513ff868cd4e441fef3 43ca66b4cebe3aab41c3fecef2f1308d b606da9c4be6e6106cbce046ef0f1d8f e18c2cce4bbab2e45b7bf37141f96eae 5fdde770581fa1fcbae326b60581fb7d e99f7a450afce3b62553cc33364504d5 71ec472682954cee353c1d159a8a8422 a1d7eacfc3e946cbed4671e7b5b34212 6bb78393aaff36b8f42467d8c501ee9 b4e22060a8aa48c9b1b2ecd73d1717a3 7f0aaa160a9f024e492d9da2668ec34c 21e8c818e9d517f919fb4103277a6b93 44a3f66a0a40f21119fb4103277a6b93 898936a8b8e448ad1d70b774ac91773 4fc00c3e48cdee77883679e873099585 6d78f55d24f1c4e714038d588fd1342f c35f0f50664264d5e6a1cd9763fc2f3f 47a9339b6a731a1019fb4103277a6b93 63df9bf9884c5b485e7087f2d9a278a9 2a901fa05ae444eff4b6538438a0b930 562288b15bd065d4b29ac64be50e118a a003e49331f19341b0449d422c1e5657 920842b21a3c471b597976c675750537 dd86b0fcacb9990914038d588fd1342f ea5f45fc61e1e26bf994e2a430ba61bf b4ca27e38b327aa0240c1f0f1e25335 79650ee83a0aabc8e1dbce34224f2394 7534b0ffb603e3c571a70be9f12ce8b0 3db6ff15d7ee52482db431502a680805 867e978b82c313693002761e7a3ba3bd 9d41c5e8ac8ca4e6827b73eb36515554 5be46c0c35d3cff2297936c81e7f6629 517a4c16b7c5960bac2b62da1791c2b6 b4015b8800115683b3f10885d03d0fb6 d1a80144a7efe02e585ed17f54616d23 1901183525f0063d2822b5101b06e070 32eceb8ea5b43926de4d0883c61d7e14 de0267e2e1753bfe684b7bc3f8a9aa55 8a37a87d367ec0fa276b6f6d90ee3a83 2e20f537a7b64de177981b941eb4f5d1 cd94233033b1d958ef2438b4b778b7f8 3f4e117f6172555bd7691f54dfc57244 2bb9537b798dfda490ad276cd2af3a4 6e08e7ef76b1c27027f02aaa836b59f6 d7792a9c16aaf16d98e0d1738edd4f19 a017b980b5bc255c19fb4103277a6b93 8e424220b8f053c81ee2805756841071 8a545c071537d55014038d588fd1342f a0a123a2c7e0429c1b17743c18fb63dc 5067a85ef67c2e45ed403132b02528bd 1f0df5b240c73a5078dd615a59de5f05 1a2abbc9712e2fffc3bd24f986301745 485516a2c88eb0b8b516c05d046e8e45 47e24c3995150688d810b14a81e12eca 277e13392e16006557183d3afb0a522 99686d07d8ced954490ad276cd2af3a4 44e4ff8c96e5864742d23b95defe1ce5 cbf56579ffce57d84cbbac005f3700ba 4a0db050c8703a8d6e3c8a33c4ddf2ef 23ce23d83f097dfe30e9c0571435b6e3 d4bf9872856d6fc2b300c4ca2f51c01b 5472624a2a130443e70021280aa1db1b 119819c15bec2e1e299457639cc3cfe3 bac7bae00f0553bac88c75598a661012 783af15c06117bb29dd45a4e759f1d9c 7edb9183dade5413ae685ca100c909e8 549bfb6738e5c5a019fb4103277a6b93 5f274ad7c2989f5119fb4103277a6b93 be8a750947549c7555f9913e822d5318 e59fa20a6988b93e29e4b5aa807bb4e7 175a624623ad6fb037b2bb75885cfc44 97cb53b5e54a2abedf6cfab91d65bb91 69a96a236eb59dbb4594f83fd12bcf18 a1efc57eedf9a2e93c8311d2f6bcff87 a3dd0302fd716e8624d89cbad731b903 734271cab27abd133d0f9f8a61342808 8d608e1a1a1f34adf4b6538438a0b930 e87136a7996cc5c82d6b4fb79c7b302b 9d63f4971a332c55f7628281ecb18112 6f317ae1892ec6e22f63d70fe82e78de 4126746447b424197fcb8ee54b1a951 4c804ebc195b99d3f0b45b4b4c7e33b7 59c8b38f75ae93bf785953e8e787ef2a 34ba7b78ffcf0b46d30ffa15d9c1eeb4 b160e3f80850d23755f46d55537192b6 92d806ba93c283f73379bf463ad73282 a530dd6e10797f3dfa5f1c647c19b0d7 a5d6b025b4c7239df1c7a32d97b27a4f df7f8b7ea0e2c4ee55f46d55537192b6 dcc24b55654a9e6bb65b71636c46ae49 95c2e462b2c3e5e529d8eecf3827c486 44ebc446b2cb44b0c12f5058c05b3979 79a3bd60b48584b11ea954af295a6a98 e104beba32cf40bee369d8ecc5b0e866 9831a5ae9045c6f39155acfad44fdd03 40e4f56f34f98a779ebe79011e3a0eae af4bb12decb39ab082f29b648e624c33 87385a994745e92cbc052c28a9e28ccd 545c6c30ead2d411e6c5cd45aa112726 5d38978fa7591a3465a50d0cd9008f5 2b8ffe339a50f0a5f51f77a6d7299806 114d3d770d9203fbec82976a49dc 7e15b41158aa0bf73542594e05cedc89 783f84e17b53447de76bc197b3a3ffc0 460bd446c3f1cd5711beb49b60c734f 871530f9e0ad4e2be6b70bffe12b936c 6558819685f96577c0f947750540fb22 7a2f94d95992b5716521d4b69744cc6d d0a4d46fd42a0c3df6cfab91d65bb91 8ae2ae3b341fe20bf80985a99195eb8 59d4c154eea079c5492d9da2668ec34c 4d43a00b356701d914f14c67f445762b 8b835170d8123a1dcf004563556ddb36 98feac40e78b92bda1fe796dee2910f3 e8599df1d0465e3811f3906fc1b00350 51a2b4db530f383339797c21e8801b1 2aecf3003735e8b34cbbac005f3700ba 843713faa2ee00cba5d9ad16964840ab 179841c6d26cada5d75fa3d7e144089a 7f5a875b5a2811b07d2313b9cd9e2952 2dc57230d14506eacd6ce29440b718cf 29ec54b06d35acb2027cee422df2aa3 224820b020c1b6136b0f2a1430e993a 9c71de3e26788e20d810b14a81e12eca 1deaeff17e093d1c8029e7f07c5ed73a 3838d78a4b4a76282027cee422df2aa3 22c470174c40a0c33dc1643807625350 e566fd9bbc3d51d377b9297f3055210 521e51c43fe3def573ae93d3b4dd6712 c7e03bba4ab333cfb20716e5484f7807 927dbeedb2d864d635dda488a4bbb1e1 242055fadd675e626bf0788e630e3deb 6f3e12831cfefc20a1d8e55816ec2b5a 5c4557a826e80297490ad276cd2af3a4 c37632eafbf41b9c1fb41007d56c0ca1 7937479e527b07dd19fb4103277a6b93 bdf99b327d1079fb35836c728d324152 e36a5e4069db8198bbbe32d7a5038eaf 312a5be8c4449afa456cbf78e1e89022 33e4866b6db3f49e6fe3612af521500 12a5cc49c75b93af5b4aea6c98f52b6e 6e9e8100ffa2a7fb3b1bee6df796f998 97e4bfc6f8d2e2fb986b72a93898270f e28af7dd5593fe6f820018801b237b3d 6feac0a35c8f8626e73947fdf756a329 5f31ed4efc21b67711a59b122fb65ee9 8cabaa720e1fe52723eb3ad3d378722a df38d8c2f3b36ff76e4b69f8ed4dc344 3c1c6695e665ab474b8710a3469971b1 4b9ccbb4884f12376a5e440d54e375dc 589e7c32a63816b1d4a147733422d301 8c0999396ba60e758738e7290b6f3237 4f06f4d04d239448bfa17a32b3866b83 38888628843f7b38f8b8d4a282992be4 1db2c973f2a3b154659277e23bf9b970 5de8e8b5034ded6b707cdefe012d0353 4fe7555a7457c763db352b8394e172c8 6491dfcf1c9782154932af0c4e356b6a ea87ec56cc2fe88fb20577fd2a0fb434 a9dcc147e83c2a0619fb4103277a6b93 e1c190513b084f4c4804b5831b58a04d 611e834a83c63f50a8840b31c6de34ce 39dba8b2e416449a19fb4103277a6b93 9c162d575505f102ad16260d4d73b56 2b4cee8331e825806bd0aad3d992cb54 94fa2ca1212536d84a8050bb0dd3c541 8215382c95d5dc0a5c6a44a505804654 8fae5133d952b2ddcfd3cc1d09bc8fc6 e75ddddd62dac8a119fb4103277a6b93 39f0da2d45ad3b6deb82e56bb4ec31e1 30cd6bee25352baed5857f15f877a4e5 43f1b98f950af6d04f3443b22038d340 2a963bc9ad704e5f525b133235812833 83a8d95b2dcdd3a854cd2a0ea6cb618b 192812aa4ad73d2fe6c5cd45aa112726 2c118800181f296a855931d119219022 bc33b97457ce7a0a569537f38fcb7202 569b338df880d560a71c812e027f94d9 9d7e5e8279ed8a30f2fc41ded2e6c02d b5fe80b6cbb9f5d1a6c03a53cf0a14c9 d3624229f0310175658d908a2254f194 b9aeea4fbc8db8f3a08ae93bc9509b4e d416139067bf7db337b2bb75885cfc44 4d484d20a59a18d3fa6df2d54fa43ce cf37563a68edc94bd71ce74ab5e9c1b5 8af35280574ac141bf7ea2059cd7e422 5362db12d934a50719fb4103277a6b93 252fa50674207d749eb332cd2d2a300 5ed584534db04e128ddc9f1b5f92baac 314f35827359105d6faea4ea390b4428 17e773bf0007544ce76bc197b3a3ffc0 8d01e61b216324d0f9814818e8ac1c35 92ee07567c94fd6d9a53d72e083de39 c6dbc7938060818cf51f77a6d7299806 3f756d8d35b51ad629e4b5aa807bb4e7 3a8b062c50c0a5b7977a08097a2f2d7 f078a5940280c0a22c6c98851414a9d8 316863fc4ed4dcf7251178be84deb2e da09745bd5be34b9aaff8bf395bfe94 afab57dbd3c7ef0e98d5fc0473d00a1c c2fe8c88c2b42564415434d4384bb66e e90b641f8f1489d44b5e2e6b95708893 a33b6291afb1f8b066b38b193b506338 9ad79b67c56ead5dc862eec8232fff1e 7f6a5ee3a0fb9ff19fb4103277a6b93 8e358c6f92a0624219fb4103277a6b93 c68407d2f752ae71ab2bcc3443271151 5c1f92f1c0bd459386a48a74e08b1cc6 e97546c24cad95ee9eea323f522c6486 268a739200930797c862eec8232fff1e 7153026411fbb33cae685ca100c909e8 39f202c92b0afd0429d8eecf3827c486 958c5eac527deb6e89a6f9d60821eb9 413ceae95ebcb6b5707cdefe012d0353 2afb64e4868b6dcb8775a2d8ffff3881 9ff98fa1fd750053cf853995b84c068d 2b4d9c4722bfc075ebeb8f91be624923 1b48826b38c2dc0630d4c74109f9e072 d7576f0e6f9acba7d261e17fa0c462a7 60b2e4ccf3ec715ec3abfe135b5412af 4fc0bc3fb6438dffab1d1edf764243e3 5420d2a9cdd0d511e76bc197b3a3ffc0 34fba2f856e97796b0a6e87d5d5521b6 75e24952ed996c1072dc9d42e683347 6a2c94b2c34c6134490ad276cd2af3a4 d5d8632e5a2a286bea46bea76c64cc3d ad0082e4bc0b5ecd2058afcc28d23393 16802a946bd714e819fb4103277a6b93 cc8217e65e253ffcf51f77a6d7299806 40ad41340725a2477251178be84deb2e 6b9c15484369406919152a83d1ba40ea 785f073399d19cf5b000f20a5153622c 64298fc3b7cb8171eaf288f952624966 6b8b6d09fcd05c1819fb4103277a6b93 e77bdb7d3e12d6231eb51344489c49f3 1c1c9e7676dd618e6652506d959dc71d 1bab21890e560d54d5cb6d178687b980 25dedf655982acf6490ad276cd2af3a4 f03a86b27bd0a6b3d86234e915108e6a aa03428d48a820697a138f06ba3ebae3 bb794c54a628a3db6ff454af1e8947f3 d0578233f05855fcf58998c8c192d0a9 99a3484c310cd1211e8fb9cbb32d2cb3 d2b7b34e176262513521fe8ac6222005 edfd25e28cc7b003869c91937070800b cd0dccabc5966b40d42ec7e303174a87 4d56ccf8487a0a64fbd58bd1e0b7491d 670c2d3d20dded2bc5a208307819a3a1 27a463aebb289175f51f77a6d7299806 9dcda566c3265d2784868d3618d73011 47ebb5ac05b46c18488e54fc0c1b4fef d21405eeeebe4085d42ec7e303174a87 d5c3aa73e043303b7ff6ace05b36a5 10b0d655bf4938eae1ab19b3beff6716 1f34ff8c2ecab3b0a4ee05a5737b7178 b0d7e13b20b190afaf1a814fb0f45a9 639d99161524c7dd54e6ead821103617 dde92f6460b1d7b2b4cb6dc412eb15ce ad50c756edb20111e76bc197b3a3ffc0 d1494e0665f06507b79de6fdd84b2221 77147f716a20028635469b95109803c 23fc3f07efc7ae4d19fb4103277a6b93 91f6f0813eaf4e52707cdefe012d0353 977457a28e32ddbec242632b2a8c3129 aa2b82f576f3df62f51f77a6d7299806 1e6143253f8f984735d95c26c81752cf 3edf1ef61a9802e6492d9da2668ec34c 5dfb4f36101a933ae1f4ca4f393a5a35 3fcea883442d7e5bc0f947750540fb22 bc38dd123d9d50ad8b17d6d1965c2fb6 be025ee89a077c31a9bdc22a1e02e82 b86657d541c2e26a4197bf8bf6f07b46 330b4c2ab42bc715f1783a44a88d6274 88ebe411acb90592e8952e902d0fccc8 ece1e39b8c5f851b9eea323f522c6486 74ca743e2ba959f56623a58a6d7bc060 c734ed1d590bba80df6cfab91d65bb91 385521a6e023307644fad574b043beb8 48cc2f299fb1692288c3056e77bac805 7f14110c96ee2cf6afa167a727ddfb67 941c99dcbf881c6939070a7367ed1554 ea7dcf537a18150cd3dad974dc098fa1 28de11ca3a3bfc00acbc34d1ed23b6a a186ef9f36fb95c3bd24f986301745 704f75e32974f0f9d5316414c56bc1a8 1893e7831f8852a2f51fa0238791f5dc 389aab2eb6debceea5a5170d48a648c 28001cb70c38f19cf32b6091d9628440 d4054b29b329a700490ad276cd2af3a4 1f036102a311fdc174813b7165294e91 2820444f78ca0d82399f8b5570a02c59 3629fe311f6a83eaac8336231c53cd1 dc13119307bb03338aaae3d020f5ddf8 4a5fa41eb0fff4496316c951e41c61a5 7093c8218c88118b3c5f24f851caaab7 d91c5659ba4770b3650590f03418c5e4 3253af88a5568d6e5e0e77e9cf965949 b72bd5538da87c0da54b9afa882a89ed 5e1ca9adfe8c6af61f8d8332ee17945a e70d9645a26a4e941832ad614f693f66 6fd5741bbf559e0ff51f77a6d7299806 9c62e14436f27b6c457ba044c28858b1 6ab805062d5d945d53e946fb2184f0c4 18c25f8049fac943bb7ac4d22a68ec08 760d38c2740eddfb8b38796afe7ee552 126b0452fa8b16bbf7ba6397f9858441 d799cc222f34fc0879bb09dc5605a57 7653898ee4d8173827edb0fd78caee34 47aa3e340eb5be093fccb8cf9f00542f 4bf6707d8cc11c0fc631e7eec6a153bb 2d22f3f0723011548aaae3d020f5ddf8 d9ed9f1577b22330aeba6a38e5ba02f1 54f4d28ee9986b329a1a0970b4896ca3 a072caf10178224ad038992c6975ea76 8662bfcaec06798ac46037df6c915494 ca7bcac6b92b5a7d377b9297f3055210 c57e4f64b18e9b9aa320e34dad7c78bd 7607b1762ab9c79719fb4103277a6b93 725fbbe72a41e6feafc1aae4dd82ec1f 22daa2fdacd34e086c701087a194026 7efa6d2ff959183c3002761e7a3ba3bd d69a4fe99afe6e0097a5b791ac4ae3c8 394e24e46063786ef7632814cbc80bf2 4b1ca7263ad178f8bed8cac5da4f54bb b602636c7967016f7305052ff007b248 a87c9d907feba5e944187aa25305d7b7 3e4cba53909d9bc8455060ebe53aefc2 b3e92f795bfea504492d9da2668ec34c 218f7d1742293b9b2f56d03f2a22adfb b67fc33298d026033e0a119fd0be5d3f 5a38d21dd30f52e972463ee0ec4cc614 98d93b260a69366c490ad276cd2af3a4 195a2ed4931241d3c3bd24f986301745 b659c2162c4ff214684b7bc3f8a9aa55 57a27a7ce775e13197ff8153b678d004 bbddae0c95f3b7b636b0f2a1430e993a 3d3e1b8e6f1cd412492d9da2668ec34c 296cfdd6b347a8e219fb4103277a6b93 dc5b7cbcf45e557f310af74324aae27f 8c7bff49acf7fbc54850c7706670a44c 6bdc37f729eef70d18706cd9c51d6358 eb8a34ab2eb9a26fe93eff560d16430 3bf20deddacf5cc64b8710a3469971b1 e653570cc6bcf8783f9f131076f84791 bff0d461cd0fe835b67d6c1fd03fd403 729ff2cedd68a1ad489b0e2838fd952f 104ebf7f96c77fb46a0faccc2a4015d8 7918d848b37db85ee1495fb833264cc9 b977915b93e87cbdd724c69102d5ef2 6c6f63434cc1f447f51f77a6d7299806 599dfdedd707f7c8ef38727c2b4dc2e6 38b5da2eb70009d6c045ebb62fca20c6 ccf3a20e438ecb09384512f195951058 c7623649c8f34cab23afb61f25e1136e 399b6e11c037f7fb5a11acddfe168a04 16febbf5498604acfb666b203f8cdb86 956776ee66e095df2822b5101b06e070 8ee19157170f16dec12312ed5983ff64 a90e18bb9bdadf6a6d8b4dad28688a76 5151ae4f84a800a189035c25f0dfeb63 a355108bb5272ff256d80c2792e1f42c 95656a46c15d75592d1c552a8c88e58c a9dfcb1e1ac5ae67468b43c22b6f785e 96cc60da5c390047c242632b2a8c3129 c26913f8e139a80baa2b654345545ea ead000700697a012310af74324aae27f c5e37e895124731176e9713f57a5fcb6 1f47bcef63468cd9b90b306cee0c8c91 43ba3898894751d4a2be11b607ccaafd 7462ac6e44457697d017709a3cfbb660 7a8399fc51d83969a8b1d0fdee586dc9 af8d3848b96bbd0d18821e110fa8400d 54db32cdda20128ffff16555386d173d 90992c45f7b2ee7d71a48b5339c6e0da 2e30c286710fd73d492d9da2668ec34c 497bd3f966eba2d76402b8f491cd92c7 ef873c6f267860cd43ac09133d4c1d60 2575d3108a55adfaba0351028b825931 d4b3c13ec756196f94b77d9f59f49ab0 884eb62c72c1ee75e6fe3612af521500 7d96b0823233ebe7b49b261a212e60b5 154fd969a077a39772dc9d42e683347 621ebcbaafeb91a78616812464c86290 f0c1fe7cfedf97e9b91b871e750ca615 91aa75800ef385e9f51fa0238791f5dc 2e0a396cc21ed4e3781e3b226aea8d4 d08ea9c1e5b9c2687bcae7a654cc37 ccec9e173fb41a3323eb3ad3d378722a a7941c2ffe089884fff16555386d173d 45722fed3a3035fc59f8e31ca87c470e 16532364b5876d3881a172d69c52a28a a62114bf11affdb1139408582c8ed98 211d17b0424b10c539d3717288022c20 77986a9d5546899819fb4103277a6b93 6373c7a17a41666219fb4103277a6b93 1797eec0a23dcb1dff29be004a6f7c0a a296a3504163b053e6fe3612af521500 5c6cad6a12d7cff3bb6e988dd2500ba5 e296f2e967aad03a55f46d55537192b6 7f1edef2e2fe5aee33ed950c745c5ef8 798598965a343fc9b0957d845ac33749 40addb4af618318dad5067eac75a07f7 36047e4ed31420904738a251b334366e a01e8ade2a92a0eb35836c728d324152 11c16f6a5fbedf4213c3458a0fe5598 77b57f3eebab844707cdefe012d0353 efe6257c1073e003c862eec8232fff1e c527f1e7ae2c7b8a4f7482420c2e91df 7311255cee3e412771a782a4379556c7 e731ffc67b03d0555f46d55537192b6 592296965078028282db9fca4b68095 174928ae6f9aaf3cb1b6b0c5ddacb607 26ebcfb2ebd8345f14b86d5282eb8301 c9e9466f782d1b4f7fdd70657322b4ac d1cc46478cde981b9a980acf1a5058aa 47a381f4ed3d30614187eeeb0dea4986 91dbfe4dac593d3e35836c728d324152 8d44182e9916d617938da3ea2c9e0e4f 7b356141695f75e271a782a4379556c7 658138c87c9184f279368d1198f406e7 142060f848466cad97ef9a13efb5e3f7 758f982c1aa6f5edd6eefa796d2f261c 8bcba9172db65219ad5067eac75a07f7 575beb82bd20f61fad5067eac75a07f7 2bbafd62a8c5a2d1520ac90ee81efb48 599200313a698b6cad5067eac75a07f7 2fd962562b9f0370339797c21e8801b1 3ea2fc7c32abc9f758df8eeaf3dad1c 6dbfbee18b2e149c71a782a4379556c7 6e029f7d5901aa2e2e4e89f168578552 e9faaa484cb11948cc89f898f3cf6588 180c5218bb39d31f5510d59f3ab1ed64 86745eb914ded54c4ddda47ee90d6a21 48ff9804a1ae69f4ad5067eac75a07f7 16570d98a47c9907bd1aeba6ff85928a 33e18d453f4a8c90ab610b0c94236463 1c9048855223f744fb85ea6fd426098 3c079f540fafa7e13b3db95ce254f64d 7543553927036b0352b7768d51b257d9 cad4cd1fc0c0952e71a782a4379556c7 58595b39bcad6b2fad5067eac75a07f7 a0796a2532fcb95fb1b6b0c5ddacb607 4517f2aee2482e904da62592caaeb495 17fd058dc352b9d11191025061735ea3 c9ad9501c31fae5c71a782a4379556c7 78625405f6c44bdccd67f05ece4a06eb 40afcc31186c0b452d19175e7d19b7cb b909b35804e9751daece045e8bdac80f a5f3c1314c027654f12d7184a2ad3430 a82406382a5d563099e8bf807e902261 94ffc8179ae6bf8ddcfd6ca2b952d624 b5a3017da6739ea0c46152dd624f1d49 70500798fb5d593be76bc197b3a3ffc0 d2beb9795e88d3dadcfd6ca2b952d624 3c991b31710144c5923e4a84d4dce694 d0891a7d205203a9beedb4c8fd29e2d1 e0b849b1545d35dab04cb542e2c50eb4 2fa04d6a788be63f32db3066d0100ee4 5783c7479b89f76b0783d9ebb200d10 6c0bc03812d3209fcffd61677456447e 42fc350dd15b5ee07bcb070cc655f13a 893d3871e46b18f79b11da89c22111dd 57dbdc49bd549a508d1542df8403619f 40fab70cda2e2dc7beedb4c8fd29e2d1 4d9a737a9ffa6277589aae130c1f06fb edb5fe83efeaf086fb0eb7e753c06942 391005d8f1291cb71bb088904f7cb154 bc6646a52843dd63474659fc572ff56b 60052d2cbcb9f8e725c578fb351f3549 627b977736bac8b0a1f97bf2d7a10a96 98bab29db492767bc3bd24f986301745 ca43d45909245ceb4ca2c1f43556033c 8010b1ce4e4b1a472a82acb89c31cb53 e7c8486921138d5c7ff6ace05b36a5 8e3bfa092e83c28d55f46d55537192b6 978936fc521780702c5b6d66521f20aa e285d68fe197f968492d9da2668ec34c 91d47945645a1039eaf14273fa406ffc af90af72a4808ea767c8e42cd3ac65ef 8fbcd8920abcdcc519fb4103277a6b93 8cd6a33e6ba794419cd431573238602d c8bab1768e4af6ad5e89486951545417 64e65f881d846d9235836c728d324152 24929a5fbdc7682d7fbc060fd555478 ea21cba1d83526f6deab8d9bfbc24756 cd224ca2a8aa04b11362d127df6d94eb c3b49ab37876c7f219fb4103277a6b93 cdb0bd21fd5d075bbd1f60c111786ed 84611112c9300d6b19fb4103277a6b93 e57509d06a49646c490ad276cd2af3a4 93fcd3809bc2b9e955f46d55537192b6 d330377051e6180319fb4103277a6b93 6d705b609f98e559173b9f28a2caa84d 1ce87c214e0be0e87dd6aeb162858c12 5237a2e80c68f90abf7421909bb3502 d70877569d163235aece045e8bdac80f eef44075cd1781f1b0a6e87d5d5521b6 6777718e193b45c4f2b931201029bc76 a44b3e23fa01c205c3bd24f986301745 ed6dcbd0d670784537a0eda928b574d2 27a90972dfe64be5c3bd24f986301745 a98d6ce7eca8cf272d7d7823aa90da0f 38b341526f21cc9f6e1c16d8c5e127 2f7a2d27e58224e689035c25f0dfeb63 54af9e8e80a0030c42c28aee4f9d8a89 1c431bd426e880e24719088c8e42c6ab e4f9062ec3d2c6247d7b76078f434820 8ed0ac779ec4bbc9beedb4c8fd29e2d1 7303502cf80ac41481f172e682de585c 6110ca3d6213d128c96f5ad2252495c6 9ae98c4b9fc07bc1beedb4c8fd29e2d1 c12ab3b5a8d40626c6027d1f057f82f5 e9383126d043156fc1302d82d108316 954f39bdb27c54cbeedb4c8fd29e2d1 339f5b3610ea836682f29b648e624c33 71a26c00d3a4bf834397d3416be8cfe5 4707256a1f8fb862a8bcbe9721909844 67c246e981ece9aa9f0f464e9e8e09b4 45970e6048cadb39691e5fa75e122ce e157aa6411d02cb16f1e631ee7d027b9 9a70b1d07f3027719fb4103277a6b93 5d2c769d1afa6e3742f75bc7df727ae 97e2ca564decce0b575f9747ff6fb5e8 ecf301eedfbb508dbeedb4c8fd29e2d1 1d53304accfb6fb3c3bd24f986301745 788c9d078cc971bf91a6d2f5a0fae0 253b7cf1ca03674bf4b6538438a0b930 2e25c45a4456df3f36270e8efbeb40ec 7634b09c8ce172ba71a782a4379556c7 17d336aa38bb77fab1b6b0c5ddacb607 42756ba88f851b6e3c8d0fdfb1cc2535 b7a0dda52974fa642250bf58700b4d8f 6a56d0f447d477e12de0bc4fc4d02dd6 4d3bdfe96a1d334d3c329e0c5f819d20 a9d890e4b6b426dd358ffaf8d4d252a 4e46ec6d0826e4525228d12f1858463 9ce40bd942c332644ee9d52ff0ec4dcc a86969194537bd5a3a602af85160c9b5 14624a2cc43aac50e3a031805ace4a99 a8ff038540e5ef35daa3ef8c2a95fdb6 e2121844a25d93b2c3bd24f986301745 6b58fd8948d4d34851581925776a606b 915855afcc5f8918ab27cc93fdc68c94 133d7c9a1f79b01ad0176f9a144100cd 166cb38606acc1834265eb8d6103818 6a61c9e8ade75fbbc3bd24f986301745 3a1f1de9d4693576938da3ea2c9e0e4f d722d42dd739e2a35e0bc0e32d71e297 5b31b07efaee09fde63a9e8397b31118 b320afa9ad7573401bb64c55dcda87d4 c35a4a82cac49ecc55f46d55537192b6 b1cb375e7f3fe171c242632b2a8c3129 6dc0048e4326feaaa6c03a53cf0a14c9 c2f870eebd0ac7494719088c8e42c6ab b73a89c916a0237e90faae3c2240cd5a eed2fa156d662c79b26e384cea2f274e 3dab0646af0e6945beedb4c8fd29e2d1 12a73c63681d65587a0f32fa630f6a0e c0eda75ff5b23100a6536c847a708e24 2bf3e370da5d2f73ed403132b02528bd d3fd6d332e6e8bccd5382f3f8f33a9f4 ea45019340b754c155f46d55537192b6 1c111a837580fda6c3bd24f986301745 2ca0370bb8ba5ad0e46a4046edfd3265 5f1ccf0974b862c6f0d0eca70b77de34 c0b4b99b37cfed365143f38859a6efa4 6e77d23b324ddbd65661fcc99c72bf48 6f87c833355679ef36b0f2a1430e993a 591a2b1a6c44e5ae535089b1cfcbf17 1d332d00746e2dc0f8fe975c2cbdb85c 4bff004a90877ea319fb4103277a6b93 eb62d577d4de8bcbdda7f1d27cdf247c 1f8205bc25d4d5f21771ee930e861b13 f0305c34a57664ba32388c13cc4a0ba3 6eddf598e4199497d684faddec3c0090 13c8f06bf87c074f9b75b6346baf0c12 dd543a069376134aba5342d638d0c267 82f1ed2a66bf8b49f08a713d0c983d8d 565225390d303601c0f947750540fb22 d5978095ef90e63375dc74e2f2f50364 eece94f60e91c3d819fb4103277a6b93 c93aa39b76980ff655f46d55537192b6 2a4f92a70be4e2159c0b027ae5b223d6 8f3642beb6eb088d37251258858a7a58 580cac53a1f9a799446ad0d387c02a3 8f9f4ac0dd2734d77ff6ace05b36a5 70f90f5959de7752c0f947750540fb22 6c763c259b83b9bcbeedb4c8fd29e2d1 227308a94bc7b231e5490ac94fb8e485 56597cf3ace4916743ac09133d4c1d60 4fe5fa039fceaa1823eb3ad3d378722a ba68b45f1cc9038abeedb4c8fd29e2d1 e1f9b43eda445dc8c862eec8232fff1e a13c36acbc45184de76bc197b3a3ffc0 bfa36cca677c512357f3bb43ed044708 e4f206e9aee482a15510d59f3ab1ed64 291e43df05fba9b53d36088e1ac945e3 561cd495a38e22dfddbe8a6b8178038f d485cc87ba99e2caffc6e457221b9271 32f116e50ba1dcde7ff6ace05b36a5 b0b0df035ab58b92822a33e080d0e71c ad14b4bde4a656dd53b1634376cbfb93 e15a28c0743ded35673b9aac59c306c4 21fe96bc7ca206cf4ce89debb609dbc8 2e13d82c2dd5d0714251f7ff551cfb5e 4b687008902de4543e3a599e79b43485 9052a28510a4240d49d36f5b69384ad6 7d0e1c7c5ef289bf94d582a4a37a8dbb 2b40fbee96b93a5eae25f6fe802a8997 4b3d009920bd7ff51f5bdd219902caa1 525d48d65079b2003f222a37719e9945 88670667d9fcd992eadc9f074ecd1df1 d6f8a3bdcd20146929e4b5aa807bb4e7 7f808e545bb01ab7ac91966b4f1152b0 34b7b563f09f3e937848af3cb674ead1 25c0559c051e57cc7fe20aad99c84084 9f75d067359e6db4f9f8d2db335100b 8fd9d529453e8d56c09af5354c5cbf4e 36770c30c74a32e16dbc8927361b2733 11cd9cbf28d3918f1b17743c18fb63dc 630de8111b5299f5f51f77a6d7299806 38ad5333308ec5b5f4b6538438a0b930 c53b11ceba592177564c88c75bda3a02 7a0280b9d2fbc2244cbbac005f3700ba 11e12804b2712d08bee8ec52a122c491 1952d19986c5f122fcf7c0d4b65182c4 8d5dafee7c2e89aa4cbf9a02e3342127 82109c884a0e195714038d588fd1342f 1b1f24767e5555d8c3bd24f986301745 48054442012cf1989eea323f522c6486 306cab12f4dc8a47f51f77a6d7299806 186f6c911a4255bc1b17743c18fb63dc 92dccb2a3e6445d5c790d7efcdfb5239 9e55b1135ddf93211c8d18742f91c015 525b2042bd4547fd7ef440dbce8c5be5 9a762e9ca86ce96da5e3e028709e0474 4c51b04b1b32ddcc4ef96d1bb8be503c 70f9acbbc2881b7657629428a2666327 1315d61d095210c05510d59f3ab1ed64 d5c3542c080d61462c45f75322191dd7 b8efc08bc8eab52a330a170e9ceed373 712d2c844d61aa9cefead98a255f706f 87504deae620d0dbf4b6538438a0b930 a9fcd41e05a12a0d7e1dc03b595bd36c b130260b9f5d05bb5510d59f3ab1ed64 6c081d6351e07db937251258858a7a58 87c752e8280cfa2316a2500eff5eef3a 2b68cd4ffe443506abb564bb0657e0d6 79d5aff74dbfa0c2307557ffe40d48d7 1fd1d459e79ad6c1c3bd24f986301745 b2cee79b97104212aab142a21aede3bf d07b44f271ded6a9c211251dafe812c1 b789ef3e2e28aa0c3b08200028f31a6a 8ffcdc51a930bc408964093366ba01ab caee24359d445f4fac509329c62279e6 8f0a115dc4c1c183f16363d52e74cddf 39b90508935f0118dde86ae42c792b26 5533c35223061f231ff2429be93a82ac 1a5febd8d65b97e4f4b6538438a0b930 9b3433ca11cd09bae7c7920f6a65a54d 414f3eb4c4de757cdc97baf002c8189d 8c3c81a802ecdc45609fb05dbd8681bd 81148566eef063bf6b1cb83d86c19bfc c7feff682976809482db9fca4b68095 bd2949103a92dd56d3dad974dc098fa1 d6410c33772aa719dcafa176d8811639 6d3828602ec4b79232a1f4cd459cdfdd 841082ec0a936a16a4bec68446bb57f4 594ca5d155b0bdc2c3bd24f986301745 3281ed5a4af3494f67990f5b8451542b b35bba0caa2faa642eaa34003788a9a2 63a2d10d7c77424ad214ef3f65f73d74 6bb2a335613e8e2ce26ba91c6bf4ff82 26e020b7c9be193782db9fca4b68095 602526e4a9de3f2c822a33e080d0e71c 76c01c98aba64318fafec1d6d9ed06d b59753a2c0751e7f37251258858a7a58 416af739e6ae8b2ca9e3e4940ed610e4 136f3b0a4893cadf4f1b88c70d074e4a 567ca6e5eebb09f87d0efae8dc996b9e 121ae3ce921a1e43ef40aa033482abea aec39c7f691c2ad15a824ea0c4d9b625 3de638f1ace536c41b17743c18fb63dc 177c1102dd46badce958df2e8332e31c 8a12ba383cbda72b91829b477862aff6 e4a9b9db82ff871a1b17743c18fb63dc f09cdde03794151a17be1b91fdcd9df 20e65777d2ce327035ae67400a94a6fe 18c8f6ded2f14010746cec00e236149d af53fe05e692a7ea2e09703471e30fff d1457e572ef95ddbd2096b2fa6f98cc7 9a2529a1b49282cd6eeb02236344250 bbe30ffa9234cb3af268f6180933aa3 43b3d26626b7ac54b35c92fbf601983 c7fb18d9ee7dc33318a6353ea60f11b6 dd8693cd2fbb5a0c7d0efae8dc996b9e d60a5ae4802e7338951c1fffab4f5807 2ba4638aa672a0c419fb4103277a6b93 b6758a9b899d540919fb4103277a6b93 dace4e7f0ec285abcaa22a10624245b6 10f1b51f2207766ff11c3739edd52fa3 c27e9191723f352d91829b477862aff6 9a314f79b18ba7914187eeeb0dea4986 57f881c06c1080ac91829b477862aff6 5b4a3107afc425be60ddc468fe733ed1 e705fde0d14090d05f2733e561547b29 d5402158d5fb9fa8c283ca2c9df7372d 6a754d9c379ff246fbb20af1c3b4b0e9 788a2ae90158f42af4b6538438a0b930 5325e56ec7dcfdfb83130614d8020b3 5b1000b7bc6e0d3b7e67c36deaaa271e 603e2237e14611f9d4091fbf7990ddf0 4a11c4ed20638d74c3bd24f986301745 5a3e5f0fff5a7220b4ca2ef8c032d07d 8f27f3da43406402bd5d9cd72de2e1b3 138c29cb642dcd6352620f29156438e2 2692e57df4705d4d10faac7a8c2754de 904ad336345205dce76bc197b3a3ffc0 3439020f6fd015c02d51eba7952634c5 e8dedc79c201f076973f95b50a1641d3 2b3b491b70535af2f7f596f1d05d059 50bf2749c1963d319d84faf1493a1f98 4de6d195f07edbe5cd18e512cbf0ebf8 cb374c698a5339f3d6fab6a6a552905a d36f8b6fbc03cb3630aec64313e58bdc c1ba1f5fa5781abe276333179717351a df2d80be5033d200e2af4d98190aea8 860995856455e258fc0004571aec2fa2 60c580efa09c28a91ceb062da003617b 45363f30a1e16c215963245f0923337f 456601c88eae2449f51fa0238791f5dc 4afbcdeba648df2e19fb4103277a6b93 d1e9a83ee99b48a49856fa70a578baeb 8345588ba41cd2a87e4bbc5bb7fd2afa e004afd245bd06337e2a6b10ca75153d 4f35874fc0301d015cd4f7d5b0608a 4ef54a72580df356d5617443b3fe2227 a131dabb9fddd3c97a845b3267216856 38cc604066d18d1cae685ca100c909e8 3af5b1ef3e742dedf4b6538438a0b930 28e64eefcada205fddf120185fc0b2a0 85db937f27544f5f9f23b3819daf3902 35dc5a90392dbc1563f26b71f9dca732 212476fd8bf012b1e3ecbdfbb6709c74 c7b8f5ba396c07331eb51344489c49f3 44302defc423e34a8afd316e82119b42 99ff33b261920e8a55f9913e822d5318 a16a6d438d57667bd3299846d5c00f08 19d04a424a82894e641aac62064f7645 ad62637a77b172af3542091189dc62b5 41c538c37e2ade9047f446d318aa6c9e a5f1b90f85d875f13afadfff198a630 2a3297e263d9931b814465edb1048711 38d5b6ad3077e8b1caa22a10624245b6 e94dcd39a8e438851b17743c18fb63dc 34309cdc141101e42027cee422df2aa3 71d50d287357e7e719fb4103277a6b93 a3a4cda9949c347ddb039d8689a74349 d45385e0a60f71e1427fcd6e404d0cf5 37f684f64af84541609fb05dbd8681bd 81808dc89c4461bd9a3d6682397a3947 4fb805fd299207e7848af3cb674ead1 316021f1937b32c8e3e78c911e081c08 146a019a7269fabc45656b6a28cfe2cf 5026668bb2bcedebccfcde790fc2f661 ac4761dada79926919bebd2312571a3 dbb5de72508efbbbcad4c3cef7575bef cde57c6c75d1453a372bb05ca908b13 c503356361873b89730cb37c9a5f63b f0b827eed9f044bdcdcd8e1ae308f03a 873d8928f314d95045613f5c2df1029a 4dc3e9e293450817d3dad974dc098fa1 aa6b5cad531b9ef982db9fca4b68095 3b384a4919d180a666ef9dd2f3ef27d3 44bc2b9ceba25f8555f46d55537192b6 16bb609914396bd0fa7b9a6c80e4e324 ccf0059e0697982ecaa22a10624245b6 ecbb5a30557f659b2c528d33bca1ac2 c6cc25ee47d08674842c47c8032438a1 52837fa3e281763aed88854fc3e3ce05 39f30c279e085ae41683a1f2bb7ab319 1d8536c4e1b1b8eec5ae767f471fad27 2ff9f572b715e86b1cfb6a573ef73942 4c8992b5868f945c8164355cfcd0b549 ee00ed62953f4bd280afdc8bd41edec3 be00704e7366ec2ceb1488c2b7631b3e ba34c92a41a9ac9f20d3c05c08e26f ad75eb223ce16ec5b6dbeff8ebe9459 bd75fa23435df54b8430b7446f9e1252 77c74742e9504005a7d0cc9b15400f65 c87012fece9848de87f79701ecbb26ac aeb33188a1d1f0aaeb1b6e7f54488efd 95a7581a491d3706996336ab975e6575 b99bad700049d8f7cbe3d3c1931d32af 4132539ff314f0654d1fe7f29df13cf6 919b2b8877c90f6885718c281d7fdf61 72659c0df8a3d5f77ee217c21e683487 f01ca36bab1a7a1d9e9583a661702ed4 d9994cf6d5d444379dbfd5cfd194350d e630732939f6188957f5e6dcbb0b7930 14786ae920496ca7197c43c7dc584772 1c70e72ac0eb77816349f6b5431fb3d1 a18c4bd95d90f37091829b477862aff6 25bff1399600790bc3bd24f986301745 ae1a7b7c3ec72178b848d7d3af8eb610 d0346744d67b08b099e8bf807e902261 aad4591952dd151189485cd87f37f89f c21637acf98dd08649bab4be538c970f 1b6ea0e8c6785638ad8d9da81848733 1f2fe0bf66eba0b03968da786c4da00c 3b72f2c31c5aac6ab3421b3649fb16c1 3ee0a3bc5e7af23d1bb088904f7cb154 3e645e9f5703d14e51d3c864cc68e22e 3cb17903afe49e6962e682c9809bff14 459a13812561557e26217a9a857cd404 4180532fda31d19b37251258858a7a58 af65bb882c818f9861dcc050524e1d17 ce96139ae5a4dbfa55f46d55537192b6 155a08c8e150e7008c4f202fffc87396 70e58cec417d5e1ec283ca2c9df7372d 758ab4ddc8fde77cb2b755acb296d925 6afba6bbc7ca32bd339797c21e8801b1 54b4555dacd9fc16e1eb1991fb37eb9b e1b3412d67d2c18c59f8e31ca87c470e a6cadf8f6d6e5d26f12d7184a2ad3430 10f0753ae756fe489c0c9824ccd078be 63cde6b5e85cae2bf4b6538438a0b930 9b77e481163e91214038d588fd1342f 224766e5a022785af51fa0238791f5dc 6f052c8606dd3ac3de03ab2a27ba7531 56eeebd64c7821dd641aac62064f7645 eddd80bdb6f6c8b48bfc6c6704f4dffd c06f1cb96170e548b2c2cd006d206129 4b4b745af2c816c28ffa76d198ce7f6c b074b6460f46170660edf8bc2f5c8881 3a800ccb5e7de7811705bfd3afcd10e db20d1cc56356476a58a1de596e6d773 e801542eb03f6e3b96d5fa1ee6ada8d1 79d992df7306436da1ed581c544d9fd9 35ae6545bdefd0ae7ee217c21e683487 1ceaa8bd231d922cc3bd24f986301745 84c52a5ac0f8d1d060ddc468fe733ed1 88789f9c90fd644550c5faea6c3af4f8 b1835f603e1477f61b50574ebd76a45b 2519505d0cee2edff08984f51debc075 3f198d5bb97b930c87e847ff3a8836f1 94be8cf5e1538257f51fa0238791f5dc 49ce1344c3c8a652f9883d2fd957d60f b17bfa9db55c2d2e4702663c3b3faf8f c44792206360e4e4be1b0e1de3e987b3 b10228c0b83a6d436b8cc29ba15869e8 565c8256aa446f152685733c782593df bcceb065b8c433b99a87002a4eeaf610 4de9fa90bcbd6beec3bd24f986301745 1e588358e4681e1ac3bd24f986301745 97f5d86912ce0f872caaf8842dbb8ac2 ec8a05151bdfd44779368d1198f406e7 cf24aa524055dd5ceebb0db1929cfe93 1e3dc37e2cc335441326da246d3ca9c5 ce1c3321de30433b16ec4c6284dcbcbe 56e46d8bbb70b17491829b477862aff6 62e723ad4ee0ba9d65579260f47a2d77 224ccf4c3cfd4cc1b9a0f5d18f1ce54c ba444152722b67444b8710a3469971b1 d8fa26d89a3ec264ee1dfc331dd3e94 713c28954944221f618af5c2f6d28c1e cf3270a5af169626efa153ac02df4ca3 b588c0169924f8e32d6a698a89d341f2 c8ba87c9581f9122f51f77a6d7299806 75a824a5acd71051bb29ecbc4d013bd1 599f4550ef24f59d19fb4103277a6b93 8a09f540491889f519fb4103277a6b93 1f2c84d387bd1af9609fb05dbd8681bd 7364fd26628b7f6a3e0881f7de9a6e52 eff2f84104e78435d6f4cef762589739 a06fa6a604ddc974ccd77b10347fd7d3 cc445d016f3a487d84cc5b3c1e5e75d5 a333abca08fceb434eec4d2d414b38e0 9e42bbdbfe36680391e4d6c585a697a 37726dbb4357739bded526a7be77b30e 82a9838fc655d7f62e6da3d97725a350 2927b65bc7b9561bf51f77a6d7299806 ddb760d364ee3c5aa7257db74b7b377 1241ec2dc5e59b0ec3bd24f986301745 dccb87aacbcb40a4f1783a44a88d6274 8c9782f2dcd99d5255f46d55537192b6 5d82e3924ace17d814038d588fd1342f 3fdd61db58e5856c91c74eb018d3bfd5 c2a33328b7df204e1754bd6e58ab2748 6ebd63203c1ba404f51f77a6d7299806 98416e9f15b3f80fe76bc197b3a3ffc0 995b7cc4da9f0371eadc9f074ecd1df1 65f27b374b83dff560ddc468fe733ed1 83a2a5dfe03a2be1b2b755acb296d925 eb54a7a886da95f69223fc014b68160f 3822df9afd06c2d875a82b88fe6e733f e588e603f5d0e366490ad276cd2af3a4 651706776926937314b86d5282eb8301 21227197948fd2857c2f94a943a8669b b1bf0b775e6fc085391e4d6c585a697a dcee2fa2aa02fa7c4a05fa063da00291 913c38e7faa82c984a62fa5dd236505b 5b685a0318bcf5ff4ced24553b268ec 5bccf52849ce93b5f4d0ace72e0fac85 48afc56a733cf916660094e03bb531dd 224ec626233b7a0c14038d588fd1342f e563bbcb07d70dcc3321831d2245cf06 a4e5a85d21a6b36ba60a29091f2ab01f 937fba1b3389783684b7bc3f8a9aa55 1377448893b499a5a8e4e5c9426fb9cb 65164df6ae3dd848a1d7c136d0e341 cb214fef007a2a46bed1bd9593e318c 1fe846f8b74b5fc66b510e987fd42f59 99d329e5aee0fd21c8c7b57a94dbb2e 9614faa3e0472656b988865f09908beb 9c17ba009a1f68a5f31d4c4da1121d06 45bd3bed8ef1315ed42ec7e303174a87 308a43b7ad3f8c2bdf8a6816927a07f4 72ac0fd17bbe76375af983a27c524ad0 189f519f6cb7b8c516fdce62f5c06e29 28365bca55784894e99f3a1de720cdd 5e0340e08510cfc52f84cb7932f866fd 307bc4f0db5cb0452f0ebd444c10bd0c 5407f938370ffd34390dcdc075aa60c5 50fdd5311091e5d742d09291b1705b96 92973023278f568a4594f83fd12bcf18 415d7746f792eb1de0445fc6d980dd5c 86a7bbaceee66eb36b63d78a2e71a26 3339d615f108948876e9713f57a5fcb6 1674e0a5bde2dd67f12d7184a2ad3430 e64f3681d7c76bb743638dabe1eb5336 34ec5656afb6860af3c9c1464e55d580 b68a370aadfe0b4d4f3443b22038d340 29de23533f0a9c31b79de6fdd84b2221 d3a8019633567d71b20716e5484f7807 2cafcc8c772d4860c2d043ecbc42284c a8d59c4b6577b9eb37a0eda928b574d2 719c8fe47dc6d3d9b6b5a7b8c31557c e98dcd0334fa639fef9f898cda0ff409 5aef22f5441b495d19fb4103277a6b93 a54eeb7ca4dfe0bea71c812e027f94d9 647678ff9809303260eb699207aa149d 89e73205e8d18a8c99e8bf807e902261 7c07ffc0147bef7df3c9c1464e55d580 4c18b279e078ebb91a8781c24b79ae57 471f9b50c57b07056abfacdc918044f4 11a1bb35960f02d83dc1643807625350 51149acaab6049d05938488ff499d96a 9c510bfa2304c78480cd53d4e54e1fe dc5a136f23bd3f31c710d14956729baa b00de96484b0275a5cca18918d24f6cd ece7f04700c5767a4cbf9a02e3342127 2e8a4184f4067657f2cf6a9bef44d625 184c944daf00dc9919fb4103277a6b93 b814241f84521f797ea323bc74055b8 392b7f2c8b72ba54d05b3855d81c2ed0 5fbbdc1e83a45d258d1c65d617ea0b5e 5c5f434f9ea8bf777bcb070cc655f13a 53bc49f45214d8d6ea73a64ae4344bc3 dcf246280361e20d1bf2b66b52bf6885 56e00d6764a7205fa9fe1734a6086750 61b6b273190637e5788a7b7b4713dbc6 5dca7ed62a72a5fe81a172d69c52a28a 53b815fbd98e6ed237be8761f2d10359 710f2f56520b0bdd9b11da89c22111dd 67d11f49bb73a66535836c728d324152 6acba1cf4d21321a9ac279f421086f50 2b2d827267baf5e75510d59f3ab1ed64 84c9082a8cbd03e5e76bc197b3a3ffc0 d673e7a605249edf7c1af3afc3f87aef c71fa66202239b58d6de1645a30c4052 ae3f65ef020c8170cd80f9971acfba 4aab0e569f1dc3bc8d7e9f13fd8f661d cf10ac71297ae632f44880b8ee951142 df03ded86df8fbd2ebd284456950c944 1311cade594e030fe497c7dfb96f4c60 62bba707a00a2fd0c271edf49b97f472 24c854eb3f4bdba21b17743c18fb63dc db9458fd1459982347b1b3e368e511da 197393cdb4c836a713c18ca5acf69765 9feefc5eb43adb4fb7db0056a767efc7 4c2103f096818e16ca368f1abf470106 98791e9d594a7bcd41f7bb21ee1aab57 72f98e4a45f971ffaa0fb4126a41efc4 1f0c62f30be6f19aa6fc75a75fb8d65e 58a9e0e6fc43ccc5db32b682f6360550 6b4800452f4655e7d34b068b4d9c2c60 36f771a41910dd89fb713eaada66481d 5d46bcc77b2815fca71c812e027f94d9 187f32df6f393d18490ad276cd2af3a4 103ad97126bc54f4fc5e9e325e1bd5b8 7dd4c0baac6c76703002761e7a3ba3bd 76f4352b12cebc55685756818b5a05e 1ee2b2bc538245a85de04aad18bd94c3 7eac5c3e4a8e4e086e5b9257c4084ca2 7b5544ecc31bc609a8e4e5c9426fb9cb 6bf4bc4a845bf639ce65ba7fab42a621 9fc50a184e6d86a9b3fdb1a7c9a60207 c359be2db828da29cfcb2cdfd88e07cb 826b18241c9c2fa83eeddbccbf885e99 4e15b52579903323f51f77a6d7299806 bca062605b3f79b9a75c3b311265cd31 3b57aa434803b0ec189c2d5c093a2652 1bc8eb160194017cde26427f80dbcfad 41adf7a8d492a41ff12d7184a2ad3430 46a07944ca646df01ff8bce0e3352d0c afea61dd761b70a3fc0035da39bd5e1 901eb5d8bab4bbe48fe31aea3727611 b0d7c6d51712d1fbe76bc197b3a3ffc0 14bbf802bf00121267d783b4714d4324 972ff7998554988ae6c5cd45aa112726 b1a5b2caa2b7dc95f51f77a6d7299806 df74203c0a1585f9a29294366c3334b2 1adc25c3c29e98c454683b99ac4500e8 7822d47b9ce66e5591a1a434bc319a99 35803ad1072c4221e8b2b8dc0c816caf a53650752c2d73ce83eca490ad2084 5e0e607f01cdf9ed93f709c6d6d99cb9 105b9a03ddfaf5c5e7828dbf1991f6a4 675c225ef7bf4b4b3db912a90d289dfc a49d69c86f512f5d28783a5eb7743d5f 8b8de5b5ce7fc61def9f898cda0ff409 d5deca423faade89bb814dc1a3fcda86 9ce692996699529b8430b7446f9e1252 bbae4abbff206a2a14038d588fd1342f 4506f150e4f43633fab6e40cce6926d7 4acb95a2fc33c3dd19fb4103277a6b93 3b569be398a7e56eb4d174e5c61f344 68c52fa67028fceb47637d2621d965b1 396a32fab409303c811237b87ea8b154 6e16dc2baf237aeb5b87cb2d9a815c73 f073fc78c930ca06f777b6b1bae343f6 114a39da3b4bf118d42ec7e303174a87 b18fcb1483fc0f4c8ea6bd444282b41b d22e15286d0d99ec52d2de7b04447df3 10e5ffa28c252aceea46bea76c64cc3d 4a9ded4f31e089129cd1fe76686a65 5554b586330150ab6d5ac6b606b81bbd 611354b629b71f72d5b708f09789d978 6afec996cdd847031638d1ffbbaa0c53 7f5c20bafb143b92492d9da2668ec34c 905edb931ab4be1e27356ce25a15eb6d c7358b3aed4160cb21bc3cf138f79e bcac0b4a07a61efed498ea2919be2102 453e290f4425e0604671fddd657dec0a 1b2dc847e12c32d4a430f20b4b0a337c 3f21494d8a34df8481a172d69c52a28a 304ff1fce32b5bdfadccd0ac21fd007a 1855a4b70958b3354b8710a3469971b1 d4de4deff5410e2be499c77acfcee9f4 587f53986db55d45738e43095496b061 d14dfaade3e105306ebc5c7b8e36e351 edc14df2b7e3bed1b15370175a9d2c81 b0890c9a4332f7a07e28af1b4b42317e 2bc37c326782ecfb9bbc8ad5ece3c1b 5826f35dcc58f9206025dd3b37729bd3 6137e19255f71a0a26700e14156d231c 5fcf8f8ae6c226b03002761e7a3ba3bd 3b36f062f56e320674b9a1885f058618 52c0950979a8572ad42ec7e303174a87 4b82103c9ee9ae4f98e0d1738edd4f19 8647063ec039c4eff51f77a6d7299806 3bcd7dc964487b1ae6c5cd45aa112726 33e0b076b1dfd411654495ddff111d98 90a1748069ca92df9667b9ba9d06c778 b9943f2962f4ac9840ef1c8b63a628f9 cd4e8748514e028642d23b95defe1ce5 6176df18ef54e0a3f12d7184a2ad3430 a18a9e2ea68eeacd36b0f2a1430e993a dd0c4018a8b310edafaeb6535dda1ed b9089b8cf70c95e1f4b6538438a0b930 df2244d33847f7cc4802d94e40825ea 18cea57b061a65e5a346e6ee1c343985 5ba371858d595d4ef645e44148cef56 b7ff6501981195caf771fa2e8f483ca5 9330bd524773fa17915e97a8e8ae6c48 5d4eec616095ed87dbe6f297e0ec0d5e 9859cddbb637f5c8d3bb9bbe8087feb7 43a7d89c62a2fa86a5aee46eeae32d13 8efb3d9ec93520a797046e48d8f1e936 54ec14c2afc2b7e37c5d07ba5fee5aad bdf30e94446293c645de94e1bc93a4f6 1ea28bffca73c3d44b8710a3469971b1 1be0ad8c6375f5d47edd45e036b3c8b1 3da823da4b6acf395b903ba10d2ec446 168e317409670cf2a0006518e6ab8b1 af5e2282958114c3f12d7184a2ad3430 2eb880249672bc2386b647696ec80093 7625201ed0ef311eb65b71636c46ae49 decd9ab8c2714f2e7235016c2c2c8150 c15f3a4903ca16b98c0a2d703f217201 c9b834aeda78274029edbf57bdd3b0af 58f6e2538ba750008223f9660fdfaf1 7191fe8893bb6a89b5b7c35a8e7396f2 c20a5f8cfa29824b310af74324aae27f bcbc5e30e12a58f07ea323bc74055b8 dd276ac55465f51e1457f3eb061a2fca e4dc0ff7a1f3151814f68a949b9a6baf 62c6addae5defe8bc62ff677c806df30 dff9b5c37bedc55e9f011a37a96f51f 7713f8a266cfcb1ee31752932c101137 dff5b7cb4f72def6641f7a370ac2809e 537e9f07962478412de1f397a20604d2 7f9c12456dea1c2531c7871fa99a9d36 c0e8eca9811baaf1237b12b19575e7ae b3371ffc36150f817bb281f66a49b55 629d09ce8c10a4f866603970dfcc17a6 a24cc636d32bea058c833bc3a0fba1ca e5567158ce772a43fcf7d910cd22d7c2 9d1485d7d82df9aef4ab13f4b49ac318 b84b06178cb49ee171d0a1a8ffd305f4 687c7be604090bf89cd431573238602d 64dedff769355d281bce08795c661fc1 5b0185f3a758e481618970cea28848f6 7affe342bb9be16d5936c7265c890fef 2b00c0cd6353e2fc52ed0af58ae88731 a5c6be40bd9332e873d4ab618ffba803 e469e53c260a5ca47d2695833906aa3a 9f035e68630d704b46fb9c38320df24e 41eda879e1b7eee2dec2e3fb3c73544 54401b6df397d9464719088c8e42c6ab 9109c50681f033d83b233a16f6b369c3 a8c7402b6bb693219786ace2aaa77b00 ed0b1bd723063c8ee1be359afa82825 4eae659d4bc093465f675b8d0bab4126 72a7c2a8221afcd27e6cebe5e9a662c6 24732a80e4b1a44282db9fca4b68095 d97819998f885d54fb977fd7ef10cdde 718df0ef71586a6ecccd93cbd8dfdb84 7df8028783ecc6ba6d5fdff4a5ada0ca d31b0d2a41051f2c7b79156a61ad4c01 9cce8b636c333950eb98f4ac131ee005 28fb3bc8ab9f518035836c728d324152 45f04dd3dfbc4926d42ec7e303174a87 30afd447dd7201d652c0eaae5c15cab1 a80b1f16f5dfae242aed93548190eee8 7170910538470c80738e43095496b061 d083fd20f6f953fd4187eeeb0dea4986 3842d805856309df777b6246417c94ff afa90f39238804b35778775dfd5ca46a c0470c413b0a260979368d1198f406e7 1f7ae7a902f453b39dd0cb4dfd5b80bc 4639656b53d21ab1278d386bfa54545 72bd77bd74cce09cbc6a236746230424 24f753c88ee4376f19fb4103277a6b93 382b49301bbd3d707d6dfba3e792b660 c8cd7f01dd79bff03b92b6b9488ceadd 2a6010074025d1d85dc3653f8341633a 7dca56442a9756a2e38cad80f0be5c63 6f13be4d995e55b25ed28ed911e69310 1c814f977bcda5b79a87002a4eeaf610 9a4303e83aaeae9cb2ee6b27e0eef6ad 4220d2a91737c68019fb4103277a6b93 506ad995cecb082f54e1b6f41fdd78a f06857189fae823f35836c728d324152 9b32bae53b91a01f278d386bfa54545 5d59c0f64642450911794406b17d66b 325d922d3092f7bfc3bd24f986301745 bee3ff1926f3068cf09df371fae9d63d 5b719bcb32b8f291f16681d085170878 6adda4f50154d662492d9da2668ec34c 2b34724248743a36a71c812e027f94d9 c11167eda66f60f219fb4103277a6b93 28db458b524dc934f2c9082debcece6 89fa346209ccdd0f16626db88aecf64 9cc8c5869737e8e3f51fa0238791f5dc b23b29f4b08cb2e7b65b71636c46ae49 5a5d896489318c0279c251b4a7838829 4e784e440912c48819fb4103277a6b93 69e670c5a40a40ec9095fe1213108032 36a14a47b91d7c42f51f77a6d7299806 6aae2a0daba548f082ec48ff3a4fe07c 3804253f3eacff56a55e6ad8c321a190 6f39877ac66ff1b55936c7265c890fef 7050eed75c60753cf0eaa338269104ae e97089561bcb8e85833c6c72c4b62a4d 41101b30e8a82faaa640b0223e089df8 25bca46cd4b9c517d1bd956578bfe63e afa91ef326c0309768966ba896bb15dd a0379565daf4b6e6579cea75b38cb7ce d37fd2ce56b3340eaccac37ae24b8e2 52bc4d1cdb3789407ff6ace05b36a5 492de0f32fc58c83297936c81e7f6629 33ceeac71f2031577cc56a6af4771185 a7e343ab31f1e113beedb4c8fd29e2d1 9160a9dc1c840e79c607634b4693f04f ea9e7db452d2df55d42ec7e303174a87 c715a29db7d888dd23f9e4320fcb3664 83b28dc11de6b2625c8a41baad250b1b eeb23be65d6c76123199fadac163f8c6 d9c11381adf0cf48f1783a44a88d6274 72bf6e88fc05d48c2ebeb1e6a8111f53 d40ba4b29c5ae69dae14646a8c8ddd34 bcb51814564c9308b27067c40cfa2f80 c97fe8ab1bb4e195af983a27c524ad0 92dcd20f1b208af9f51f77a6d7299806 1a9ea91307d15d91f51f77a6d7299806 d43d8df70f357bcb83776366d314ddd7 e8502118aeed3381d5b708f09789d978 ca484b4b04e546938c9e244e3fbf98f0 31f09d77217fc9e0e76bc197b3a3ffc0 3f1b826134c88f5fa0a2f1a46df5a003 6e81c795bb5f2fdaadb72b90b2eeacbb 3f10bef75e979d83b32d32632cd702eb d4acb5110512f5c38369c37b40e82efa 3ac69f9e2517f836a341228b21d337a9 59ef41df3ae8a4026c2e61baa2a8130 622e30a7ccf34ed5b64a7c8189aa3893 724fa46215e03f4c52d9fc61873164a1 a2405bb8642d5bcecce90f0d61ed7a70 718679874bec63183c9bc0d98cd0376e acf0ad26f9feff411191025061735ea3 2cd211982e3293a7492d9da2668ec34c 5924fe80dc26ae812b0c00d36a59e875 e8d505c5e89f313dd42ec7e303174a87 38c395f4655e0e70fabe21cb4fa2fa68 4548b28199a044ab19fb4103277a6b93 6949e65a18ca505298d5fc0473d00a1c 38bbdd91e895c0f92c0404a105e586 24bfb2f2e403e025d5b708f09789d978 b3d7407f79c36ee7367336fdf5bd5f57 6c844e3f4a99bc3ae8375def5e736d8 e3fc414b6b9b52ac50d71b436e21a7da b2867d5067f44e0d6b1cb83d86c19bfc 812a19a717fb5bf34510596cb4be6a33 6afd8ac8c1a2e31cd42ec7e303174a87 ef29c3dcc28f4e314785a5d3b6c47521 a797546d87b4a03bf4b6538438a0b930 19c9beb4e4a5ea352c79b4f0fac9a79d 4dbea9b679493c3c31ec4caf9b70d4ed e94b1ab02a3264c89eaa55bb236fb6e1 56ad1b4f94a1d84ae340086172f20153 7960127aa69c0447492d9da2668ec34c 8d9e1624c85dc88621bdbc0445d9f748 71a782bd942c4b0147d5777b892afbf7 33c9515dc8f887bc664b3b9b23ddfcbc 20cba21d7122fec4784a45ea6efa1d77 9ee005b0d0cf88a0e7e684d25d4dcaf0 2563d1fd68ae9d77ac803318d4b3b4b2 8f7d16c0303d8cf4593ebeeedbff73b ec379ae9e5d850459f2349486c570dd4 3f5daa8fe93b68fa87e2d08958d6900c 10139657dfa9afe0c3bd24f986301745 15d8de2e2c672a445af983a27c524ad0 da90bb35949fb45ac3bd24f986301745 133686fa1a2136092c280c3b5abf8255 7fc3bc8542f4c17ce4511d9a59e40339 1ab95754a8af2257ad75d368738e0b47 d1c6ed48a115eed0659dda512294c744 d9628700a086ca293c85bd0482f3094 ac343084fcd0677bf78817f740055424 1b4e6f9dd22a8c628ef9d976af675b86 33005098444c222b2b70eac6546e93fd e7adfbfabcafa394278f90ef85162deb 193aa6ce8777814b90e2ed261620fef5 5a2c14bbfcd9ca4d68f8796d69d0c486 f1858f78989891172027cee422df2aa3 726a974620efd98c377b9297f3055210 df166b0407fef7ae4b3c42e318f3affc 697779230551768eedf21eadb26f2ac0 10fbf670bb017ec94ebb593f0d0b4581 a7536a73ce066981c6641602bad03c73 3fc1002b5a538aee50c9fe3e733d8740 cd5f235344ff4c10d5b24cafb84903c7 b8fbc4e32270751830bbd4cddd04c77b 87c49d4ca6b740d5275d003e423c59ba 731b5127b72cbbd9b9a17f7cc0030785 bc3c03577d04c17a8dc9009357301fae e97106cc8bd3ef5730bbd4cddd04c77b 290df469e3338a67c3bd24f986301745 fe4c20766801dc98bc2e5d5fd57660fe b1cad66b13e1a1e7714531f0291497fd c927a92a2ce0be7030bbd4cddd04c77b 817f1c820e82cd498962005ce0e986db c92ea3f511378ab1e21111e385a0661f 96dd123d4b16ce2afc62a892407efc0c 2d018cff733a8e176870e413ec7729b0 8700e5f711dd180bef207763b5f4c54e e41da371550711697062f2d72cde5c95 ffc75a8bdb88c751b7fbcb21c074906c 640da7c995f9fcdeab571431db8834c7 9dfcd3488a7109745b5b328c62af5142 8aaca7e2c1b0ec549eea323f522c6486 f023a5489450b924520ad20925ff9d2d eed0984ed7a72e99cd1c64069cf52e3 a41865cc8dfffcc137ad4a99518dba6d 5365dead8b3f7d4166ccbd11a6ef0f68 63ca298a0bc7dac4d1f4a577576ffb5d ba48c686c1070c63f37af16b2893f1d4 5d30966509f58394237c47118f6132c8 c277ca4a9195df2ffebad4f49b26ec52 4ce62e31dff3ac18ffc6e457221b9271 3a6a01d03f28cf83664b3b9b23ddfcbc f7574c55aa4d5c80cba9caf4d254cef0 2f8395ded89cf84f40b4c5428883e585 6c56052772cdc2b66289707fcc0ca1d 34b36de23e2e64852e3db45253b87bcb 1615fc31b6daa088c3bd24f986301745 acc0b552910e603955f46d55537192b6 5a945b9e86d60a4aa75d03186a0409e2 6ea2512df0b4f49244175b4dddf5be08 42018e077cb76cd3948fd22ef0eabdf1 a4d27a18402f6f4511c3daed4b8d9da2 5fc81c6ef8ae997a6ba09c1bcc052706 ad41461d3fa9b483f6bf408264db131b 7ae9c3f17c5f9c569284ac9fef3539eb 284831cd2c3c4641668ae11a7db5e82a 932079d89ba2e7ead16260d4d73b56 4e08d2efcf14b7adee170fb6995748d0 1a80520ab14439ef79b3e1be3524f72f 2908340693e3dbbd8608f23147a4e121 a5abb8bcc70e8099ff39d54f280fc5d8 10e6398274554867fdf2e93846e20960 70562998ddeecf5ff5816ac43b9e4b2b 691caf9e558fa4dec7f671ba289ebd83 e7373d97df1216af869f35aa46529daf af2feda1ed22097d6200682ef9a0dc75 74444148ff8d13d0febad4f49b26ec52 5918b05f59251e8c24507ea38c2d7c6c 21d141b130a76e0e497b98603e1cd1f 21ce94947b07b5d1f91663a74ccd2338 2d8fd94c6aeb5be2beafccdad931a74a 90889a0cf4285ff4f46e6e4e575a5bf 1c00da8a9bd6f7403b846408f8d3469d f22cffb7f3ca2ea1d719cc16de395dac 42496cee03df8154ac2b62da1791c2b6 dbc98a58a2425925febad4f49b26ec52 366645cdaab60c793e5eb583c9d92b57 bbf0968957f58e78f00f21861968ae14 d7cde91c536c6502d7a1dc9bb68fc381 51cef4b98624473e193a311b8faf4ace 119a538325398df617b2b37d6988a89b a53e528827345c7b593ebeeedbff73b 57399be7d3352241b8812f80908a0273 f2fee52b9098c13fdcfa6f33a3c5eb83 5b6bba613d5dccdb21b55dcb76ec1538 adf35ea69635bade7b9c6deef486a7d8 24a95d1ffe9b8853468a0257ee459475 d45cb36eb4c38786b9a7614f2da8d7ae 44d70581b7c1468e1771ee930e861b13 29207ae4e01c415894fc399eb2c2f348 50bc6269b12da0e5f88cd736e1bad067 47c51069048eedfea9646a2bf24db0c5 aa96704dbd5e852cd9fad8aba2c312b7 a72b18ca7d4aec7e67cfebe3c2e9790f 6b521eb69b5af97dcddece8d514fc823 75b3ffb0c09ce8b5febad4f49b26ec52 14d8555f9a21f341edf3b24dfcb75e6c 175b6c97de52974a8f27e336794e60cf 9f3d0cb709260aa09ccce4c6d5bb195f 376c99ec94d34cf4e76bc197b3a3ffc0 abb1710ecb79812d93f55c796c857bef 9c49b5339e9f3cfa5c6b6ad017b2e512 40343df799bfbc12c506ad4a52a913c4 f408befab026f5001e5e1a907376dffc 87ab01946ad4a2f6e56bc109beb9eb57 2da006ded7b80b61febad4f49b26ec52 eef0387bc4e72a1efebad4f49b26ec52 50882181ce7f2bc1739680f4e31f35e0 d1ef95530469a1de1fc4857cc94b6562 9b7352c3a8d69c2a1185ac82ed4da80d 485b69363fa53a5ec35131da26f8061a ab8735a26c5c9ea4f8574543281e850f 33857c2548cc653ba53276bbe109327a 4315e96a1dbf9337cacf13745dbfd112 fd8cffbc99f7388e4f2b9e837678be87 669a8114b9a602c2febad4f49b26ec52 fe5f543fd0c6b34edbbc9440457e303e 67057f4425cf8fa5f46b0a91833c80a4 206a239d64ad2b31664b3b9b23ddfcbc 1460b1e3fb02755e67db1ddda25e199f 94f9034f0a3e85d3ee881d4feac7f213 1600f311c31ad47fa4bec68446bb57f4 7d95cbca44393d12ca39a5500b69b164 6c6aaa451538a8ed6ec2cd9a23ae5af9 bf9d12b9a6a79eed342501391dc44531 ab5dbe7338e842e36f7826c82fdc3f35 dbb28a435349c9c76b1cb83d86c19bfc bd10eeed8d8190ccb041f249f731e3da 4f0fd96b50c261ed48fda83c10428379 114520b78a1726cf86de8d6734d81fc9 faabf2f29b99589991752ed21892d778 5b4997ae8d1e46fd16a2b5862518c93 22b4c1176e8433134ea79bdd828d5828 1c90216659d7b97fec5d8105ca6b7dcc cd01fd75885d9f606ce1f91756352daf a4cd409ceb0aa148d93cf5f5bfd78ab4 d458bc90f183605119fb4103277a6b93 ca9bbb0ecdcde978178548484b14e6f6 2c6d9b85e2be02d9d76ce82841b0eded 58a0638f8bf4f0fb79414e04132a8bef fd7f26ea3a1d1cfab092f06f28d82d71 4fa88f9362f216481b99c25df49800ad dcca76b81c747e76a65e19246f8119cb 135f9b1fb72e16d0dcf4cc877ea9b3ab 21925c161a6aa5bf6d65f86bdc92afdc e921675e5dddf58b30477f27f55db318 1cce1fd7a0184a48cbb8bac2032149c 659e7b7166d8b9972f84a7804aae667f 92b044e982b28fb02075b603cae7ba22 feda1b3bf39743d8f16ec553491baad7 f8e8b0059395805d9bd3e6056359bce9 40cb833fe986db191ce7600faa926b91 156ebd353a36f36ac3bd24f986301745 aa8bc1794eb3437977de2663bcb4d12c c809bf0ed02eef7016a2b5862518c93 ba311a09f08ea7899c39abaf208a73e5 803fd62336eca9d58797727ac1d88278 57e4a4a4806c38e33702d3e624608075 d76d897ff334065a82130856eb48454e e2ccba151d9fee85a71c812e027f94d9 4e934cf95db4cd3bce58f346b4d8abe 505dca88c2a9f7bba75d03186a0409e2 610709315a0f542552b3505ff8f3d685 96ef0920cb6be395e44bad6fc9badfe7 5f8baa8b2f5c37f3124c962aae03701 df767f2df999315b74ffc2f06690002e 1370db5c4f0b84026aa35752fcfa44c0 516f73ee8b530042593ebeeedbff73b e8ac113e9db33ac8cfdf2d08e1ba2a48 f76bddb92341f2a8a8a7283d9841addf 8f7cbae92fc1c6f9327289c00b6dc9ca 34c00f5a77147ac6b041f249f731e3da 71752a166bbbb06592bf3ce6b900c3ae 50b6c4c7681aa3fcbaf2e78ed413860a 2425d3befad0440febad4f49b26ec52 fe0e7198411fc340c057222d6d091c56 dc61d1287fff3ebdd2afe8d5254a0d04 15090e10ae2d06306e25f3efedf6785f aa0d0d753ed85d62389bb6b6a6e983d9 d8ef132f3ae98f688231f48f0f8de6d4 b59743992b870052255fc74f0e7640d5 d51dfe604d380ba9bf01c8d1f07a5c67 8e3524b6312f60738ac5263758737a81 15cb1696b45ef647dcad484e89744ca 328e8b5e3419c66c493f7199d76f57a f3cbca2c7a6b2821f4b6538438a0b930 2bc3439a36c0518b4b3c42e318f3affc e5437217b4f28c976c45c685905d0ecb 6a4a9790706a558c2f84a7804aae667f db09ccbc677e2afc9f60147421585c0d 60014b37baab2a2fdcc3461f14d611f ff2b5b315173f3244fb315ce917a9ec2 85a20e4f7fc9256eba9cbc5d66bac4b8 bc351c5cb264d29e278d386bfa54545 199d183157f213e0da7c128b58fc7554 813599653f44dcbf245495d3641f83a4 cda2b04eb27a6b429ccce4c6d5bb195f a8e015f1de2c48c5f51f77a6d7299806 11c192ef34f5dea0a1bc88a716ad63b2 f577193ba408f5eba71c812e027f94d9 dab06bbea57f6051d0b93fa304cfa755 95bb0549666284168d2b632e2708f79b cfa823ee81496f5912b57997414c1d71 3372c6b94fc719b9a75d03186a0409e2 d5e79960180078237062f2d72cde5c95 6dffe86c24e3870cbeedb4c8fd29e2d1 10db06b0d15bd4ee72f847ab4bec38ed be9467a2641fb58330bbb59b54a585de a1be21c9a71d133dc5beea20858a99d5 6402177ad47a8a9514d771bf63ae2f60 fb097cffc3cdd8512027cee422df2aa3 511a939f29ca6763f169404e5c013db bfb8531870be8be971a782a4379556c7 c46135263f88cf68bfca5f90d2eb0e0 17ceee4f264733871dfa540c3e10c55d 72c8fb162c90a716dc6d75c6559b82a2 d6c875f6b3fa82fd9aa3aca17bb25c50 5a720d961df190d459a6208793b9dfca 6ef4f1f0b3f8aad48cbb8bac2032149c 91b962b6de5efaad79679c2bd6c2f2c2 6a613281bac861a49dbf2f762a644724 16ee1b2d9a12abead99c7626c95596 da330cf1b5a8f1ad26f51cb1aef0ea9c 51d386439cb748c54f2b9e837678be87 14c66bb1292a764f7e7c9f487eee4fdb e41e3b1d11fdf7cef9c9f9697d1ec60 d1e01c36346b4b839abebb636ba42f4 9bb646155fe7afd84e55f99914fbe961 fdd8dae63e8781414a803c33df86f3bd 772b0908f5aa09c687d3d93a515ee29f e94ed46ede91eafa50f1b9873bba60ae 2ef5b582482d7d52cb71061323057eb9 34787e9a9a0c1ff4905477d2a8504646 19c8ff25264b77666716685cf333d2c1 e98f06e93bcc237afebad4f49b26ec52 b31bf17ab00837ce30bbb59b54a585de c15e74a91f0b59d533f68dc899e13f 7c59421abd239c358b069fa6e7378ac2 4f7f8af38b1a13f67c1b348241918030 dc3167808a79ebe24a1806c17996a001 f21154a95d49ca29e6c5cd45aa112726 41d9b3064aca3c74e7d71bdc5700ff8b 351d39fa6f9b659f2377f2addb49ed93 764c1145134d658275e36e88b6617f01 90446c710f3495f4e90047543e308ba1 93277f95f365b958ffd5817f210f277d b5daa2d15dad58d24fa2457d6e4d0c91 43e2a0220f1fbb9cc1bb249ae60b3bdc bc23348d2f16d4237155483601ac0c56 da9676ff70b2e78a0a7b8ecc42036d5 155af42283f8ccb9b3664229461d7332 4c4675bc602b2a95febad4f49b26ec52 c0ef2c3ec04860e5b0e0dee6075b101d 2698d4b8ff59120179b3e1be3524f72f 933096cbd0f7ef0aa73562d75299fcd8 9eac41860580d9ea8a75ef32ea6ce62 132f7a4ddfe7f230fd6ec91a99a73de9 47008a5646d3d84d85969b141e43f51 98ec86d721b235374d18c1ce5fca6777 dddd611b4262ede6e3b9db784be35882 fad834ac9ebf8d5595b7b91db37ae400 b1a1d78a2736dc2755f46d55537192b6 cd413f0540b54bc1fcf003a332eb3241 f11b09dd3782f084f78bdf37d618e97e 81fd25d9d26de497c34335c1a2a9193f cbf3470a35aff67e483fd274b1c29225 11ac24d90fbc20bc5d714c9d7df1c4ed 2873620cf8be87ec798432661977bc1 6777c68f2b62b581b3f89af909332a40 91763ac2faf129e9b35bd41c666704ac a0ee8f7c4c2907b4e45ef4135c266a12 2a7130734389335c5c5a7639ceca3973 f910c50ed20073928be66dc0939fd23 7e51fe2b0e56f2e771b7a1511b87f5b c490945c032f5ca0fc0035da39bd5e1 6159304c015c2d54bd7b3ab3cb320beb 580a053d716c2d5aa09e5a1a20aee2ca 4b455e9b8dc1380dbd508cb7996d6164 37c932b30ce507c6510e28eb1584c355 461e2b86470326ed70e89b1ce671b01f e49b95f478df00bedbbc9440457e303e 4ceba450382724f7861fea89ab9e083a 6e849ffbc0c14739b31b6dfccf08260e e5aba07854af35d89e6a137715910e1f c26d26e409d01e8420d2507f5cf72c4c 9228f548332eacc51287e03b5b76fc86 6b5f5a51340e371ea753e2e06c37201 2087680eed2edc0a20bf3b65a70accd3 d2578e2ab0be1ea3332e588d1e0957a7 d63496bc51de5d77e3837ef7356e7613 d386586a2fef0389393a1ce5402b0d23 3836e0568d0ab079ffc6e457221b9271 bd594555e192d5797d3a650ebc940efd 782cef41b14a2009a71c812e027f94d9 2889aae96f0b236e27790b0ec8671f7 b22bf7aa80627ee61ded04ad3995fc44 ecfb5ad31b6e40b72b70eac6546e93fd 74b8222078ba776c661673811de66400 a9e371d1c714f222716641f54c7a54f1 cb242dc225308003de21d22522bdaf a24af284041888bd5f05ba8053abf6cf 6c06faf4538bdc00b9e8bdc9c4a49aa2 b0d1fc9676e551849e25afd4f06934a3 d27130df514414d1d8c46a3a266762d7 1557647df4c4d298f6e8f2cf4a97051f fb158adc15a6b5aa75a82b88fe6e733f f09ef9a34df9b34d9420b255bb5956f0 bbc685f481cee10f668ae11a7db5e82a 10b6147009cbc17ec25cfdac7cd67ea3 90631514bc5dd234c798432661977bc1 91981bcdf94b60cf3e5af54d0ed82d00 63c93cb827f004c9c738b9c67433b6a8 d1b44c2dc663cca6b8baed360b6cc5ee 6f1985e1c09aa1be7dd7d23ce6ceed2e c67b454761d7c84eb2a155afd9dbbb0a be06e77602ee4d089c0ca344f487323e f9ca8f7549af695a5aad165050e534c 2c6d08c15a19891079dea5ba5d13aa5e 51cfb783895a8af9febad4f49b26ec52 9913e76fbe2c438f4bb836860bc1cca3 f1bfec97b7e9f7b776a402eb60ff1f9d f94e4eb78fa79d9d41578d1a851771d6 194fd39afab11888b84c578d4c100fe6 3931ce39e77a25a9dfefa992cb59ea0 27f9965a337bf46d85924458b86f34 d599b1176343728c6705ae120c2282cf 3aa65a29330bb87f980f165bc2b4c765 dbf47e19a5f352e0f1b010366bb60ce8 5d1333eea1b2a9bf85857023d32c345a c85fffa8b368d05663191fd557d3a61 67eaa2b16399f3e88809fffd0cefbf72 3456178d3ff37ae1e76bc197b3a3ffc0 2ef28aca6afaff1d88863f114bcd9f80 8ca1fd346eb62580ffc6e457221b9271 58cbc849279b38e0c16f7010a3b8fdee 41c027788c1388bbc48d90eef8384210 336c81a0546a4ebaa71c812e027f94d9 575b467b6ebb2f234eaa3180e8182d9e 5d3d9689b1447e01febad4f49b26ec52 75e206fbfaa7a973eff7102cbb9312c2 d732f1d1e8a8510ff68e7a883fa7f8e4 7b023a0954a15f6b37b9035bdec8f884 80ad425b12c2c008738e7290b6f3237 ec3f93916a91e386c29f1e5c35eaaf93 4561b621e5b7c1ae8cb5d9909aeb1309 2d27e4d0f8cc2c9cf577ff4de1ac394c 2bc4caa1941fed746500462ee46bc39 e053e9199d9d7f2d276b6f6d90ee3a83 eecec73da85e87ccf008d8a3590fb522 cfd0fa8a6d9ee06e6456cc507eb8f5c1 eee6cf14a56af26ad71f17d6e8238d04 8d2e17e38a624565fb70a55ca9d14169 4c1048076c0a8a09c785f06f424b9d06 4003c20ffb525c7ee3def9c422df2282 db96923291ea465d593ebeeedbff73b 3736ae6b32d288fad832a3fe59576848 a95828fa4607295674c8eb7e4d6198a5 855e3ed8e5f233cd2b722fc42ccb4c6a f3d5911a52b16bf78bf1cb9ea68ce0cb a2418ff066f38084ead6784d11c8f5b5 58bfcc581879c121b20808ae6de0ac93 5808fa88b17592217caed426d97afe76 fa719ece51c607383f3fb2f375c18a84 1cbd4d2be9cf0e3e84ef3d675a0511c0 4cabc64d91668d76890992ddacc04113 1be435a3027d58824461bb4901a4cb6a 3c899eb5c23784f9febad4f49b26ec52 75024d18227e53b565f968dab29b0192 c0de139953efa6ea2b151d8b52c53b90 3ce4b963a4869248febad4f49b26ec52 86951b133a4c6e9bd989b7b3fc68c580 190028e65867076ee12186cc8c5022c7 4a9a73e93f19ece06652506d959dc71d 634fece55dc20d232a978d3a5b04bbfd 2356544fa047516126f51cb1aef0ea9c 7b50357760759ad58a70042c3e4356d2 db6561b883e56b9072c6d81e4b9f21e4 f41ead4917ec05a149524cfd5973a145 e7bf775ba6774a2e278d386bfa54545 2a88b6cbfe4b9a3ce2dee6f9fbe318ea 8383a9cf1380405dd9006da2b93c0a4 db665d85f1d9b1ea5c6a44a505804654 e7580c72525b4bb1cc786970133d7717 6e96a8c237b549b6e3f7a74e12a274ef d93d1957e7a38a6619fb4103277a6b93 1d06d1bc8f10c45ab1732c7d45a02ba0 bfcff8d45de2f950f751d8c0e5773abb e10181e68d41be9a75f27865805fd94a ed30d775da40ee9ebd907eb5031fe9ca 1c9aa0fdd563da04c397356311cbeea4 1db1bfaa8eca186e9295484d295fcc9 743d8382aa44117e593ebeeedbff73b 3802e59d5a3970d5ee6f3ff2305dcb14 a088285efee5f0dbbc6a6acad56465f2 1b33172342f58feb76963e5e6f4f642a 85e359daf7e56d6a94ec70278e148371 234a106ec36821d8c9f016d57db96408 48c61eb9c9453db75828f54ccfceb8a8 dd528cd176c8d99686de8d6734d81fc9 d6e677600a93bc118ac5263758737a81 a70f937b5c1a26e68962005ce0e986db 5275e0ee91ab4e755d009c98a5b96836 7689de934d5af6505e8431ceb98e6b3b 3842243b1f246b3dc4e62ff7caeb0b29 5317439efc03a22de27790b0ec8671f7 63b5d8f4fcb29b12d0125a4a81c5d058 1d8278324bf01d50c45662a6a951b979 f580dcfbb898139df6cfab91d65bb91 22a19599946e4db6c3bd24f986301745 b45217934564854288e0556a2aaca7c7 2e990f9b5c2bb3098eb91f418e60b82e 4903be367953db8c579961b8f4afc151 61a898c20ddb028dfebad4f49b26ec52 41b548aa6f4146fb1962281db2f162a0 f026d1e8b71bd18e97f16d67bfc59c23 731561e2626163e8a4dc6822aaa2cf2f 8fed49d9a02124903002761e7a3ba3bd d497f192ea400165da22561748cba914 5e5f15626f1f230bff7e95552a1d6a0e add1279c481f88a1955e0ab55bea4388 3092a18a275497f54b3c42e318f3affc e6cd3e7a25cfb1c3593ebeeedbff73b 1c8d1cb23d037f2a9e4965f0106e00d9 12dfe5b5c7acf776beedb4c8fd29e2d1 aa79a19ba1fb3cd1febad4f49b26ec52 5c593d79b5f9c918b398a1cfd1079875 1b0dadf0e60a563b3671949e4f99cc76 84a0b93cb41ee6e129cb4c9f87f87751 30e12322c7e23ac358db0ef36af1d3c5 76814dd29a8fdd76e400ee8c5c49a7eb e53f5f3d4b20df8176331cff7db8f268 bf899a2e47420008ef1759e0b43f0fd3 2e2a612aaeafebd5ea23ec7dabaae1fa 6726c2d72f835554781ba0fdb47276df 649cea3b17ffb31bfebad4f49b26ec52 bfcd5d38663fd5338738e7290b6f3237 98482492d4cd11698a40b9ddd9e5eea5 9976f7053b1b7bf2318694f1cc6fb1f8 1cc5bcbad2fdc660d942e529754fbd45 7a488c92c601f83c821340ef6a9a830d 8abb8d75987c92144417a5312cf9d851 cc1666f0fa7a1672e5a8eba5f6050bab d2f884d5637c979214c06184923f6962 21136301f27dc9bf84633b41c8a09fa0 1469f244a1968345e2d95336601deece 517683d0866085dd2beec56b24479ed1 68fb0825ec07a521febad4f49b26ec52 21b8b1e51237f4aee76bc197b3a3ffc0 126347c2c4404eba96a3517f50eeb9f4 f907cd8cfb723ee6d6eba0d14df5347e 496de03106abdf4ba766a367d5e2d6fc 5e3ad0f79dc0c429bc8967b0321bd9d2 f7e0e36f618039dff39d7554d3e63ae4 875758df9f03fab669a10a3a70c69e8f 3950da9e4a5083d7b4fa97f642d1a681 7dee34ea0b8cefe8668ae11a7db5e82a 895d688a910d8ba0bd647f71fcfdcbe2 ea89750a67ae2335b9315f9098d51eae 4c39c5bcd53c1b593d08add0058f34c7 21c58ff6f87b750cb9a0f5d18f1ce54c 9d5ffd7cc6f9084abd790f9b668aa24f 8f29431ef2b28d27bfb1fc5d146cf068 de2d98c18293a15219fb4103277a6b93 25c9cd32e5ec1e7cdf54d2cac06dae5f fe0ac2e334ad4d844fb315ce917a9ec2 5b97f44d872864c21f7d7307c1f45af8 c76b1d97bda153f51226a0a31e4f771f c8575754df874644dbbc9440457e303e 525148edf1f9aa72bc7f58784fda27b5 bfe852b57d198bd2e83f416cc5d1e30 d157a0598ef5c33416e09341cb9bfb7 287d78d72d12b03c3bd24f986301745 b3b8817a8b781fce2e4761573669341a 2bafe9aa12aa1d3bfebad4f49b26ec52 733722cae46eb715febad4f49b26ec52 ce7a0aaab23c9317a71c812e027f94d9 127d935d17cb36c8b0a3f25f5d8cb0f8 91e7dd99a4c945f9dd03ec353c1af474 9c390832c0d1569b664b3b9b23ddfcbc 2e632844af2fd0892ad0b8f780281bcb 23e1e8b7ea54079cd5217e3e48d1c0d9 2a295b1bbb386e2f3ffa3a50996ad39e 5b5095b6d5612d298877c667ba5c2021 400a2dd6c371a2d446de2420e311135b 3fa4ca95ea2c3d4649a734174fea032e eba66ca2e46521ecb16ea05e48de73ee 6581edd8565321685512673aa47c7e3d 77a115a1ad9d7e687634fef39c2ce2c7 5fc39e0ecc8e50f0902a571380e15334 cc182c3aa204614540f68c5e459bb389 6dedce56f7f60da423f7198a00163bb6 30335a7b507390407689cc8768f5250 c45fe6d9f2c516997062f2d72cde5c95 30e0f3d959b16c64473f10e6caaeca56 57fd351d970d60fd60a25ec0f32e89e3 da76df9a506534fa5eee45c00c4de9d3 e29252434d37520ff008d8a3590fb522 49dfb00ce7ed1602b05fbbe21a0097ea 35e033efcf79391ef581ec61f9db71f 2325ec6e77f29578d9b00ae2f30c0a5c 8ed32fc808a31eb5ecd447b0bcf9cfb5 268a263f41b82227f10f2cd5149de8c9 d89d8aff18d0f4fa6262f7bca314d953 6c27a2a85e8d512ce6c5cd45aa112726 cca7e05c69a5d8e0a3056fa1e8da3997 3344c70694e1bacdc5bd1ef3bc48a26 ba6e6f8263e961c243f6b77085610df6 f2ba8040ab2d2745febad4f49b26ec52 343bf23c280a14cc4ee8db28f96ad26b 476e7d25434b67e75f490d1795e78588 1a15e651e26622b0e5c7ea227b17d897 bdb5a2a25223d1b645613f5c2df1029a c306205a10978fd695a4c885dffe439d a0745770bc3d12477b11ae648ea92233 e834ef941f7bc9c9e7df9f1005942e3d 3d6e337c521f73f3fe222bdfe4498489 aca4c523f999de86febad4f49b26ec52 6a8f125c174c07a57b11ae648ea92233 f9aab5dd0162b688e9a1a03c1d065394 3c5148ac155d020763ed57e35c972b4b 95bfb466d603b6baa45e8d2f28a9ea98 b4b5eedfa5c159e0d4e369d956a06b76 d80a4629ab6badc16469e58b3534356e 28447e9816bfedd268a2b8e2b27b7d8a b112088ed4afade413b554f4133f4b49 50ea883b804766c458a565d8b69ccaf ba8b2d50ab955e94beedb4c8fd29e2d1 20b8c6959784f2da83b763ebf4ad2b38 ec5469035d19434f9ba80f08c401fbed 4a4f58b882325236f6e8f2cf4a97051f ce6e4aa17c710b3cd6d67789347621 61fafe333f8c79c78716341f2dff4249 262f3ee836b6b023c5beea20858a99d5 bab2fefad03208b0935d906e24c18439 fd6a530388f275c926700e14156d231c cfb7e0b0f44819c5e2f409c9efab99cd 53f6531e2fc2d31ab2c2cd006d206129 e6cb8965b985b8a07eec403e4de3e723 21009983c23be33dde39a695c03bae3a fad62f2339aefa8f9d86e5f05f1da2b7 631251b7c08bad443e890a18a7c6a6e8 d3a5d161ca44660d4671d97b0fd17f51 6361a90210b69a9590a2e9c21353bf7d 1164897f678f3bd627e98d0f3d735480 7bebd474258ec29e3c594bb716fb0dca 6240ad3b8776b5e88e4f659f0755a47a ff49113c1bda893155c5c4533d35b323 9823679747e563b4d42b9650f19dd425 bfa94cc8557253982efa4e574711a177 6c2e919b70c335f240ef1c8b63a628f9 2e5d2487b7e1b708e4f659f0755a47a 92d64294a4c9af5cf8609c6280e52413 8cb18fd9c7a54ceb715f13aeb6bde9cb c245772cbf233578164e1349afbd1b70 c0b7cf5017ba0f21504c7f76533ac19b bbc0faf338bd07c3cffd61677456447e 1799a85dc6eaaf48d25222e04574632c 201833c55354f1a2d1d1bb832a2f0352 50336797d9a86e9625d9442054ff1a51 2d11e38388d212634cafc8d32c041834 f34a17d1b45ccc541763ab8766fa2282 cc3cdaa52b4b96fa55f46d55537192b6 614f1c6f5e0d2372ef5f18853edea926 7853c9da0f57af87e649091ae21aee74 8c10cd9e5b4d589299ef6b0e70be718 93f3d802ab5132d162079c4c0e1b031 3f1579c1713ae72e2d07d128adae16ff 1f59698c02bd1662dbbc9440457e303e fc9910fa6262cd4e1125c64abbb51ddf 6d5211390473c3bc3bd24f986301745 99d03f162477263b22996d48badb33c9 37e1a5d6689a83d3b03169de4ffd172b 55b586076edb416ea169b9ecd9e046dc fb32e9a7a8c2dfad74eb542502c2205f 424f30af1472fec6668ae11a7db5e82a c712261a32a0efca4b3c42e318f3affc a31e317e57540f3ffebad4f49b26ec52 19dc20a7065fba0501a7e3ae8c65473 589599503c7b88129a87002a4eeaf610 11aee78983b57cb34138477d68528833 c0a143c5fd0048bbcd01aef15a146d7a 3068bb896d8a43c040e6664f04cec8b2 3b5195c53046e4bd6e9ad486918e1764 6122a22d4275acc796fcae44a3024b7b a96600d919eff11c3f92fc6b6f6f5bda 380f9d534e139af5dde0caad53ba7e0c 8b0f94dde4b772d41ca25a4447d3477e 69c74567d77a88fe5af397cf24be6deb 1c259cf6c1206aadb6f6d1d58b7b1311 c547a17e35360322fd6501c4dd41b22d 73ce68f6021be015122dab9909481e14 4475dea2d05c1ee4fd9792d1e260da32 30b176f8b5e7e04ceed0bb714b97ca82 e811612c42cf5c5ae0cc7e7449604bbc 161da97088255c645ff9646ea22eac1 d70bd276cd9f66f0a909821b8b014ef2 f41ff2d573ac836dad3a17b61c0ca09a b5d5db47b33a9186ffac3d5f2301b75e 5f4c30f80956bbd25fc5e56a56e86bdf fa1317f3a80bd8b1278d386bfa54545 1417875756d55264ab94214c753c8efe 1f326aac412e727b62ca3aa650ba65f5 9ef38dea16d4d335a71c812e027f94d9 db302d0ac596b4e059db00799f9936b2 9c8c8bfbf77716f36b4fe272da0db543 d6577674aee8f8cbe986c6d94503b284 5b67be496c11533c66289707fcc0ca1d 68c76bd1d8ddd433dcfcef693e7ec696 5be5ddf3780d2cbf71a782a4379556c7 a814fbd363007fcfd93cf5f5bfd78ab4 66b56ba61af420e654a2b6b20aeaf693 a4990b3c86c680c3a71c812e027f94d9 431340a089f0b3f5f320b5d9bf24e8e9 cddbf3a55a623e423002761e7a3ba3bd cc5b638d81529dde3c2e50348f23d3d d9b82ebcd756397c371fff21f277e702 d97e2a50640387adf90c06a14471bc6 9203f560599ca558c16f7010a3b8fdee 177f4749d22ccddbf4ae8c93f4db5e6 ecdebac7ddf6ef0011c50f6f633c5e38 114a55b4647938cee3dff0d5ebb43915 a11b3450e77331367948cb8e1d9ee487 3083f8a34c6a2087a538396439009b89 c4621b03630247f816baadb9e8e34df7 5640f565daac3dd3772b104757a4809 e608701de43f3edcc0f947750540fb22 fb4d71ac2bbefa2297936c81e7f6629 26adf340ea5d552d3c5e1addd9922bf2 4b1744fbbe73dfb39ccce4c6d5bb195f 9d80e026c9935fa9ea4fe6fd890fcb78 14146d1e359f998b19b278d00a891f19 18cc2e8b4034da8fb20aa91e9e90c311 1d825a5cd1884610b08fe058d24e7e61 e7045bfa00de20a39a0d3e7e907e5b53 86a955d448e4dc0c3ba9e53316119012 42191edf2eddbd733def89b32cef8e45 df297071493f894e79b3e1be3524f72f 69c655d9411692a319fb4103277a6b93 aa41c42a9a79070de4a490bdf2c3ee62 db75ed97a5c5234e8f7d9678498f2295 20cd5280f106b36fff90854b4e00880b a84f09300e4b1c1ac624b11e153a6d87 15616cf6115c302264e63375fc652d6 fb3816ce98c668157e22078abbbc121d 64155ca51be435614c9ef68654bd2fe9 f80427c47d2fc4169ccce4c6d5bb195f 1bd801dd5da88655d989c9f989a09ff 2afbff3cd25cdd426392a5b643ed5e3 e03d534f3ce3c77d19fb4103277a6b93 9ae7f60bc9e20008533841f5cdbf3b2 a48e4c2930d39f289d297e74104d3ac3 ffe2bf44f5d9760b9a8ef44e1d2c5b75 fed87d16ece9ac0ad42ec7e303174a87 5cb93ef515036277253e170a96a633c1 7084db2193bc9ee43d113b8340bd5029 87b15b50b03054360cbb0bb881f838f e67447e5ab4b63246d871377f0c1e8cb b20204ca63c530fae3f7a74e12a274ef d37b0328d4b5a9454d9e7559651bb818 f741f1bb6a7ef8ff7916bf6f8da94ee5 92cae8ac60b09e3c6cfd6748e1399a49 16aca29aae2d252cb8372f06f79c32ca 18c7c6eed722b9761f8d2643b5438b70 b1c80d73aa4114811011cbc4b5232a4a d7c40ca08579ba4e664b3b9b23ddfcbc 184f3a06dc5eaa52881e214542763909 bd39b7924b0f69359d0d74633db4834d b4e356d1702c4ca2febad4f49b26ec52 392963c87d26a617d5d95a669ff2219 3eea280aa5da733e95166372d7ac113b 7dc6c6f96b77b7d3febad4f49b26ec52 e75f2a369eca1346b157bfb9ccdf274b f28a91c02b1f32c7126e8f891cf24099 f856245a7a9485deeb2d738c3fe5867f 4bb4904b8f4c7f8b0e5927ab4191382 1345a6b69c9e7330427e34fb2aadd7a4 bae99f3e4af5bd5ad9b53420a5458c53 3125b833a365799ac79619984c97c1ff 11cf833ad0f8ddc1a6f925961cc8367b ac1f8fe1e544b87fc798432661977bc1 f1c3fdbbba8e36bf62a510b8f97c658e 4b95230707396e18916c024499b21ce6 f9d405eae2dd08fd12439bb9f264f4d9 449c32cd053b97ac623f20df7a811122 49230cfa054929bc718a34fa24049f1e 11a559d19457ea3950cf3715818ccfe8 e7c6731436bc2301bf94502f7765c22 c8aaf90c4e66e235b9c440034ab48a1e f252711946bff75aa5234533e6540c01 11ff78cc42de92ca597976c675750537 30e642f1d7b0d8818430b7446f9e1252 7c7e0d1157c727371c7fe5be55ca5cfd e6cb56c84042891b201e82f29479384c f65decafeb2b8518dcfcef693e7ec696 2f4d4e41a5ea61df8cb5d9909aeb1309 39f03b3ec91103af33367a1c9ac6c143 57213d6dd723e767cbde89e0c48a01bf fc31999571a8bf64ad5d470346bc4d15 e0194110e31c999aa91c75874136f43d 26fa34f25c673a7f4f41773fb12c1cbd e026b4997f7d037c39d3717288022c20 180dd8913e894dbf5c6a44a505804654 db454c99849016f8febad4f49b26ec52 3b9f12fa1f257b9d85fcc38efca7d59c 79b7bd0c910e833ba5dde908aa701435 f97cf997df0945fa1e09e4a1b10c649e 67a9dcc974fc402552d23bb2388b1b0d 1e2565b2c28e69d3deb25e31ec3122be 9826f7752703d7bd58cf2448c6d2934c 54a22269051c9674cfdf2d08e1ba2a48 fc9116a6ee32b9b79223fc014b68160f c5faa34d589240b859d0a47cd36512 da3e68c20b832c47a3b06ba374e12b77 1f7143556f4d75522d1adc013ed654e9 ac35b0d3d4b33477e76bc197b3a3ffc0 cd2ad198854d47c6e5e7067ae780b222 1aebb6c07b8d53737062f2d72cde5c95 e2869255db01d51df577ff4de1ac394c 78e1ea4568b0a1f5e7608f43dfbc9312 29b70ee8da440240de98d10ab5975b59 ed00de0ec65a54c823ed665630afd1ce 4fe648810cf1b4b5f4ae8c93f4db5e6 9c9554e0883818c9febad4f49b26ec52 1cb2fe52097b5304217ffa735084910f e0be4621b0ea9893593ebeeedbff73b 2c8cb823e48531fa9d1db1d6d9537bce 1d6e0462e30692d8492d9da2668ec34c ed8dd7ac0d865ac686f1a0f58f951001 1949b4cd6b88fa0713a5873d239ac557 1e5db720b375205315bb540f42facfa9 83ca8d37a6f44dff1652fb73e93ef5e7 15985d08df01b47bf0bb193323cf7c6b 445528514535ca621d5ccc40b510e4bd 6bea2e040e199020e0c5923879d79f21 a4d907884de88227febad4f49b26ec52 c0df578cee43eb8526f51cb1aef0ea9c e1581daad0ddbbe4465d230735fb8831 cc42f5cd765780d5dbbc9440457e303e b6ee1aa4e11df2bf8f5708c6c7585cb aafa8e4293eca14d6bb54533c16c8fa 1e202e618d6375052945e400e1430726 eb34935c60281450d42b9650f19dd425 26305aa1754510f79b3e1be3524f72f e21f715035a4471ae7fda7f082299746 4e5fc1f56057d5f439b1b7041443703a 5153292b91b93dc772ee08e78374a212 a275f4b42b430eaf320f10afdfbaa18 ac9f82fd26fba6aac45e8c8bb42d23a 8991703fa2ac67e7310cd758d9b7cf 4d959d3b7b3721d448ee6d5fb14cf83d ca6071926d0d910372ee08e78374a212 a4bea095f35a74d0e6c5cd45aa112726 6ec67ee0e57282c01e6058fbce2703bb 32a6ef11cd29c6333002761e7a3ba3bd 8f940fbfffb9b3cfebad4f49b26ec52 ed66ef9698fef541b945039752747042 6a94aa414d11c624552edbe2a62e882b 656b7353e4580f8fa93e942a054d60b5 b31a613e7f289c8bf5f6997e99549136 7c3507fc4eeb9854febad4f49b26ec52 c3959f18e44ed46b40f4518b250404ee 7bdfc4bd3fde9066b0028474d8c979d1 72f46e20632f469c9cf718a4c796aece c1c52930adc815564810cc21086da42 5463f71800fcf2e5e89951e6ee90b3d8 8f7ffcbcc7e8e5a4263a16a1017ab2fb b1dcc70ae478e417664b3b9b23ddfcbc f70b502758db5927be2f6e4bb98bc38c 681c53daf7810b9f92d5b25c536d8044 81271aca364735e4e6c5cd45aa112726 d6874aa362830375ef8af3aeeb9bcffa 15647d8895f78f6096a3517f50eeb9f4 e920d6df55f51b9d3abfc4d0a5688916 87935bfb0ff57aa4668ae11a7db5e82a 8f8f98df7a9caa18febad4f49b26ec52 5c7dde9febf82c72e4d8d44a2bc9dd4d 6f03a6f024145fc9febad4f49b26ec52 20714210c5319a68b16d12ee250aa07 233efac14ec7189e809222e4341a7d65 60f273bb4993eac8d4c42dd307b636f8 6b457dbbd8d875afd3520bbaf4a08c12 f294a34bf1c9ebb7f12d7184a2ad3430 e55dde3c1153ae5d7eb43b1b22d3185e fc66d797cc6b4bb672a7060b4557c0e ea559127f7f21405372d8d157558385e 11bf776fe946cb7af897d07ebee05db5 3763dc87aed9fd73be6b1cdaab15028 24672a92667a51885878d4300758f637 a37bc9fad75b6def3087f84b199fd297 11fc4731e38789e0210283402c81dbf4 d4a1fb16866d22287db09046a5e7a0a 899f815eaad62b56d8cad143689f8b51 1cb0232d2ec82f9ead135ea7bc8aeff3 2e666b458f1641f248cb96c78f6ddc11 e39d56046b309a64229048a9abc3ab6 15dfec695110505227c1f8d037f650 2181ecc9b382a7a873fdbe4b39ff4036 4391d4d7984a245be0182fa3e963fc11 631c8be7f3559e4e5691f959a7121ab2 e0229fb0e8d85e1fbfd790572919a77f 3c1b4a85f3a287fe47d51fb55a1c2980 4b548d4f399066e1c2f0a1a44c64aad4 f69b664bb78a4c2f7537eb150af3dadf da9d681e20d2c123604b3895514420b1 decb34ff7d69d024e6c5cd45aa112726 1d4e22bc8ed400fc368162d385acdaa9 67ac830369ffe09b664b3b9b23ddfcbc 40ee6a47e485cb4d41873672d11706f4 e72ff1a58d752d5867279908dcfb86fc 7478ed7307756ccba10ff7fd5e43a633 cdee5ccae3613c507e1dc03b595bd36c 3eb80174aa72a62910126c0551113ce5 2892423e515ee379530176ce07cad21b ba49e13288189be6fcb704ced9323624 93d4c1821a6eccea462118aaf3f93639 f64138f5515e5031f785f45147f3e474 3c12d6e9cef0adaede2627e1e10e2802 7a702fc01ec83c36b93dc42f7dcef6a f73d62321bd0a5b7d42ec7e303174a87 b4bc3e5192dc476f609fb05dbd8681bd 48dd6b701f9909da6a8a13d57e4d05f0 156d606fa86ba19c4eb174a255d0ec5e 610f10d57a44e0d1ba18ade30e563d37 28710bbf732bd651c955e5ed03ef3a2f cb7114df1c8ad743af04c22d77ac98f 62b7145b5920a67aba18ade30e563d37 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04401088_test.lst ================================================ 45301b15dce2724e483a0f6665d9ffe0 c4b66fac952d4ef7d9039fb3a1715e96 eaf85cce060622c88de42b14089e0e7c acda976ba347a3e58ba35fc6cd3da287 f48acd0450cf96cde6b9b562e2cde99e 8e9c97d54060d1282085d549612807d7 7ba45cacce4b4c09c7a217851f86faa1 b984d7e958fe9eb961179e7ef17bf7b5 e006061cc51617b9498dffe5de12eacd 2a38116473099355498dffe5de12eacd 3bd6626a05b4f79bcf17364e7927abd 96f4e3797b8e66042b8a15395c060463 295d6f0caa702a1a2f58405e4baaa2ed ab2cdd82bc69255f1fc489fbdec3fa1 9b91faa0835a0287db45a112fe2d5592 5891622298f30916f31b75c4a94a8879 b801c4ebbc1149b34961b0d325e91640 d56bca3888d3a595e93f5e23021ef900 fca7558e383a8200a1a64f95774cf79d e3291bf83de108ad98b4ae7d0ad0f9 9c5952804e0b2ba3e1fb8c5792a5768b 67743ab1b28ab5cab3fcf86503541b68 c960421b8c637137fb4952f06d5e75bd 57aa54c9db88e364502122ac3599bb74 800ef55c1401c26ef5d4e1af18c85258 743b747a119307e8e3785a46a5c831bd 79f11cd09522565fecb1ea9fbacd5278 57daa58dd0715c58beafa80aadbc3232 2ef0e93ce68dfa74bd1f358005ee8ea2 b575152bd96a4dc4adf82b2748b1cb62 80d73417fa12508d7d6b888b4eb1ac9f b490aed1d7d9a42ec4e2c9b051d6a014 ab5fc5879ace7418bdec90548bc24588 6f725c21e92ae3e8dfac5fb05629bdfd b7741503cf1fe40378bfad8b5ed8c4ef dafeda191170938ad33f96248c28a3a9 87b696d3942f6845fe75c83a5776ab77 e11ff7bea65e8545c3f912172873d52f 2fe4f1ea84cf924ea4d4dcdfc6fd3059 4f2b1a13f06a85961138452c33de4a3d ba9f7bd05d6f028fc1a1659eb4f57afc f1f794c3b6ed8951d07b37cd4d789f4d 8b291d445d412c09cc018c0e073a98f6 10b3b46298af96d40e7407386eaee0f 68082af238b7973aa4d4dcdfc6fd3059 1f4e56064de606093e746e5f1700ce1a 96700b47eb9bf33889a1b8cd5b44ae5e ab47334a425e1650bbef66962a25aa5f c771a9b2dc439adac38a7eff5af707a2 e85bac837e951f3780ed245d94a6a268 f928f74ed34e46c4b5ce02cb8ffbdc86 d62ebc23fe1a7e6a985b19765176f4ab 19bb5e75692793fd45df661aef5d0a33 57056c8f465dd1aec03bc4569d70377c 6693fcd81ce5a4e6f5d789e33b735c9e 73ab63e7ac7a404b545fb5ece69fbf4e b4c1d8191707ead52e10692b3b33e38 6c53f579c7a8da15c7ef7dadd1baff8 60193289e8d9689b62f6b877265e2679 e97033321b1930ed4391592096b033ae 424d356bbbdb38daab0fba1d15eaeacf fef0bba982a4ad5296913ea8ca1ac015 7cf110165b54e7511d3a21e67b7da85e d0c5bdc45a59669a39a4971adc53c51d 3f95b3ecbe55c83e9c3a7294039d408 74314be9ad38b02171eade9e9bdd0f45 162341ffb94a3884e4ba5fe92f32019a c4dcbb047d219cfeb4018979c856c916 12f2156b99444e955d73afbd7c310e93 1a0fab14a11b39d1a5295d0078b5d60 b307961888415ab88ec5d235d7e81cc6 649c8024460077cce8f3b203d0634c16 a53b3ac989d9e6f35f8a15a7cb97bf7a a4c32dbcb71076d5825732a29ddd146e 43d96f5a6a619c06bc663b874223ed74 8f3250e029d561341b92a1339af2f7ce fc07770a57d7a87022d3f170937c6a0b 98eab6b7dee0d64519907bbfddac6b6 2d3208fa267160862c611effe1bec8cf a04e8cce46e70fc48f2c50408e4e65f6 dacb3f6f6b0cc7a52b1abd641c06dcad 2e6c1cc7d262bc36c1d28dd38097a536 83dedc1afeb57e199edca1fee171b669 4458a5056f633fa13abacfd1353cca42 692ed312d9ba1663577cfcf36d9b3392 294d1fa4193f54528db944c07f28e3d8 bdb87a4218cc7ecd23bb4223d09fa6a0 d61ddb57397143e38d03482ac0270137 9f6acb21f86a88d93ff936510fe2e02f 709a0c498dfa2b32db9f110046803f4f 9e2169e8e8186a3a27bac6c74974cca2 2caa10c91355efe6ae2545602370c249 85a94f368a791343985b19765176f4ab 63e84b82309bae535b6795b7faa3170f 257ef557fee9c083324b3288c1587efe fa98d507d82d325c80202e5aaf48e957 74dd744f5c5b9d132fb56cff2a0f826 23cf8469ffbd93ff8faab772f03eba4b f022d7789de219e1fb7ad0eb0a148aa8 93d617cb7bf7558671fd17a89eb6aa70 7a458ea841e4e67a11ee7ca4f000feba 6d7a0e701b4417504161e123a102b12b 678ed514423f067fba55419d0f0e294 58ece48e59781da1fd0a2086d631b6a0 c1c23c7a80e4bf388c34a8518a7b6811 9e98174951026624164c8c77555f8e1f ab621af8d265667a396287d16057dbdd ba669a9b03186ee8108c9111b239151 158f605ffbe6b036436916a86a90ed7 4f2919438ca46d8de8d8ad3bdef6aca2 c3ded7599240c96f8bbff91b1135bb3c 3035c3d7d7eef1fc952c851f81463faa e679783f54c36220b99a2cc4ddf0d3f9 8b174c67bfa00f03df269b2c62a1bd4a 9878b77e157e4b0dffc2eedcd24a87fb de271ee7c512d31551c2056c93a582cf dc2c4f42a5715d0a6d1ffe1a45470ad7 c8550b3e45672f5d891ef59b77a7541b 832d6075c8fafe4de862e3cac45aa769 cc6c216e25469966bf14f57b214697e5 18bab729642c42631308c95c9c0fcafc 36ff3418849b9b8635d9dd2d03e6c396 5ae839d512364bd4da0f54fde38627c3 13dfb842c1944c64de3b109acc7ed8a 69e334b26683a81935bbff93749c520 49db0f97d215a109a2db3e68315c7819 e96198cfb23a8b9d1d7ccb77d69f693e 520bdc1f312a9c92e44148b82b01a424 590017c9eabc3a1cfe8474bfd438f6d8 68918effca4b9becf3434ae1311a0329 856d33d16a97605bc9164fb9f03dc1ac 98c63a8e5485b0a12737a4ff69ca3cd7 7176e9baddd8a2ea33ac431572f43a21 75d6dd4112038b8359aa4ad538fd90de bc27ec84fdfa912437ab6ee77f8c5e9e 74a65213a90e1f2d850a112e6048afc4 ef34d9789a83659c9f8f9b52e89f6554 eed72e5bc3dc4e85150c05906b260c9e 7483bc04eec05077b6d41c42f7ade8c8 479e2ed536698d478f257ecba9a6ef8 e0355773a18fc61224d795aabf4bd88 9c2e939e173fb6e88af54f33b2f21f70 198557f515ecfe73f3c5246a46375579 e3ad9c85b958737ef7c1509e74f67ac7 f75cac5b112f14002c32dcd0becbedb7 2c8699277b2717be66289707fcc0ca1d 20bcd48918a843946e74af071fa12682 541cc8b3ccf4c799502122ac3599bb74 dcc94b8d84b5093df47a365062723f15 678ec09bbde5f116716c29316ac4d0a0 39b91aa425472c3676fb191f3b44695a 738e377ef785ee92d3429357dd0adcaa db059495c20c0e2e514ce6dee24d82db 89d70d3e0c97baaa859b0bef8825325f b7dd49e4f54f736afd5d38d2ca555422 4cbd57cc8e6aef9f2ed91d160fd4ae97 36290375c3ff67b9fa391a6b067626b4 15bc36a3ce59163bce8584f8b28da0ba 4133d764b4ce5323a44bdc236120a21e 99fa43c391f71ffd592461222e5fed0 e2784eee13f340f2195cb740f5da17ea 62a6de09ff956e997b239f1b8ec0d46d 42ce5fc532b667bf9f8c6ee75b301991 235cca962513b7a7629cefcc54d102ca 170f4eab739637f2a101047bb63a1772 f2245c0ff356a85dda10b9c82531bbc2 142e9e68380daef34eb88be3370bffe7 cbe652c317a4366b4298c9fe028be1cd e8c4ef4c74c631e83628c1e9941a8ab9 f46531484dea3574a803a040655859ad eb6fd5cae6ee26c8a2651abaf391628e ab2e514557ecb359224096f37ce8c08c 10a1aa2255ede06589b4abee87a908b9 7f55d778584ee63d2271b84575f49c3b de48276b397bfbbe8fc27711a3d87327 7a1eba075f17d7b0a456028305c31de3 1049bf1611874c9cf0c2cf8583536651 fbd120d2c01484d56c95c6d882af3c0 5050d6be55dbb7cbbf82a0d508a096d3 f9bc179b45d2e5ffc55273be8e22f2c 67b3696286a96a8c171bc7a10f38839b a6fa27ebfdcfb0e165f198d5d73e9283 75dce3b2e5152c01ead1b13838d77bb3 52541b667e4dee9b1c1be4d7e88f11d5 4f71662203c45d66cb2c0b430ff869c 2682cb34e7db8735bdc7fd7cf135ade2 5681c4fec43043c1a9f85d9079e13c55 5f03b8d583798f7fac18d1d66482053f 58d40261b05f9a148abea0092096036 e7ef78ddc23ab4edbad0eedd46c6260f a262dd4b61d374c8b91c0e89daffb776 6adb3426ac55ba827efa8dff0d683ef7 f5eb39c7d2e7452ee7ef9fff09638f8e 2b829a38051e6f8d1f6dfedaba98d5f9 be7a560b2a6996558c646f076042ffd9 fcd923f9bcf1e859e2a1e51fbada37b3 597b3a321198f0a029b6ce1cfa22349d eb1fa4d2a399d4c38334e57fff4eb77b 467ab7ee9487525b13e4f8e4c4578272 30e53b35873e59da73ea3d752b4ac8ec 652a6fd052491909ab19ce2dec0d1925 5b7901974a37066aee44e0ef4ed60fd e8508eef82fb9163a1288f74f9304471 fecfbab790d979a25d560b84ad8d9e87 3ef3e3008fd2696ca1033de17902ec9b 57245f4db78fc2be7aa291768a04b26f a2b921dea6df33765282621e4b0cea7 91240b6e6ca6136dd25ac584f0a4b696 5ff8806e12ef72e0650185da4813c6fe fa21f65c051ea2577500d68c500fdb4b 7c134eee62290ae7fd130953acb6f543 c13cfcc92e41e5a924fb403e4bf9a6b1 a801c5a24131f1842ed91d160fd4ae97 e71c51adfe4d4f00341e76467b172f31 719a564d600f1ab38162d5a2262f4a8 34d8c06ade78bee87e273378b31b6ba6 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04401088_train.lst ================================================ 611afaaa1671ac8cc56f78d9daf213b 9f3ad4e5f16f40b3d0f9f958bc79097c 21a7e90867b64433316979ee2b237f2b 74e5759913a2ac208b0d3d4e51815944 b8555009f82af5da8c3645155d02fccc 73339a7ed1e72d89aef10502d58d4967 fb1e1826c233104a4e09ebaf49b0cb2f 6039379abd69be2f5383626fb6f0dbda 474b04796bf1ec91962bfd5bcfc9bf86 abf5c8d2cbcd97d81a0d6bd0d03a1fc9 202fd2497d2e85f0dd6c14adedcbd4c3 16549bfa3cd0f53d2110cfd44d2335d 38881e9944ea86dca374e5b9b6427c16 6909da0ff58823615a82137b384b94e 7f643ee632aa0a3f51ad7743381c8a7d b7ebfa514d14036e2da685d55be1eb 1b1969121f2d099b27192dc5dc6ab252 cb21dc07d0ca602b151d8b52c53b90 f18dbf3cbc7d3822de764ca2f457c756 b207b3f3617db6cb85089a13cc567dbd c9a50d65e19a4aa3e2da685d55be1eb 4f3c487c54ca29f2439292e4b8fd557e 5413423e80c9f264abe7f17e61fac246 27ef3bc1f4a05157bcff4302eb453f85 816aef1e285ab957b1c67c24f425bd0e d6120b12aca39e73cdbe8a30cf95821 e1b7a28e8f8ddf15a4ecfe858e518c15 f73493b7c8a78000b594bbf2c494ab81 2216e78a43c5d587b8e1b99345a5afd4 fe9d97823a25e56d95e43220ee0eb824 b18f0d53dd3db1999410a04d09c14d1a fb050aca4d5f2573cf1d3d11d6121bb4 a434289b281e629b81139543c959a70a 6e183cdeba6b83b3805062aaa3bb7665 ff8676e76a0fd471fc115be4ff5cfb9e ac6f6437f9e63981b6d41c42f7ade8c8 3bc6f902628b3f7f85f6153ed2033a1c ac1e771d6392e912f594ca916b37180c d7ed913a3888696d289b03e5721252f3 8cac6df50c515c498be6bc9d57b6a438 74aab120cfb4d88257de0221db0b9d32 5101c0131cdf76d03f9d84f9a87a44e4 db89fa13b1c3c53afff0e9d5e9e3da5b a6b2c1427dec317525bf2427892579c7 5b111b3a3e94b5907e1c85c5c15da7fb e458abdbff34fefe255591a17641445 e30f2d19e9f44f6ab0cb879d4613195c b35c2da756f8df5aa0eb5a85db887292 1847d3782970e60679510444cc61f839 77f5498dd2277aacfd71ce99fb45ba0c aa833540c3f2d77e2915acf4d1de24fe 73b87e2025cfdb6daf19fa8e8218bf64 f3aac8f54f5f2a2f983ec12a2b33f18b 308cce8808b076bff49084215d845d01 9644fb6a1520af7fa90f3ad3635b46d5 ccfac9fefb0326003f548cb8701b2293 1b43d9193794748e31811399a4ff3aa0 1b41282fb44f9bb28f6823689e03ea4 8d55c1677626cc48214d974150b798e9 ef2472e661320b03e324fbf60278e45a 901a0180abe1011b3c629b56d283e7b8 4bef48f1c1b4a40fbdeec9c43546255e 70fe91a7bc072c39cf81faac56233ce6 fa9b007a326be6975c8fa950032e0987 d2f3eb92a31649647c17b7a9bb17a24 8da5c29d14a1003d23247d005da93d43 1f93dbc9622d83de7a9f0bb7b1eb35a4 cf7973f49aa611346be7f66e5722d994 43b59b01866f23e6f8d380ef6d10e2a7 54bb14aad2406a124ce28f0f1b509eda 9dc0c2ca8de18e28b4c18e3209e12990 2c32c1b5d13074431c1943a82a09125f 81f527c62191bcd465c46de8aef92580 1d9169471bf9223423e378ba27e11ea6 18dc34a116734b43bfd324d8acaeb3f2 ff8ba237ee9164c8ff86292618094648 5a37ad3759b4d93df843a7d4732b1d6 abcda75b9f826fce8dd7bd77b545a577 cfdd44745ba101bc714ce1441b585593 1b1aaa9a95ae964746becd46a4907f38 113303df7880cd71226bc3b9ce9ff2a1 a9d358ce2d54d95e54c7ab6aa5674ccc 922380f231a342cf388f6c7a9d3e1552 6ff995a8e9faa6e83e43be0b542efff8 ee7d2d986f2c989ac66dc18b3cf1700 85841bf9d27c85a26062f54263899d21 8270c952b147d263b9746cb9e2b9d08 89019c955310bc56eeb3fafe1bc8c07d 5c8d554075a904bfa7ca3fec59d82214 da24f27173874672ed7485a1aa598365 a82fbd031a79f88eb6d41c42f7ade8c8 2a6d70bc7ac6db391d4136675e1527dd e48a2eff0b0d0a39a0eb5a85db887292 692e5fc16bc6ebd23737433332467411 a4d81a74a416b88948637414dbe9de8d 98eb601db13d2a99611f4167fca99b42 3c0801c11fc7e4c5f31b75c4a94a8879 1ac1e6fc09611ff049c647f92ae11714 3a3fb2919b1bd92658c2dcb60645f75c 1cd8004a1e0dd825c33f370fa5b41cf7 722acb5e8ccd39391e5d846d206adf3d d9ce2d0be1f3952aa36bec4fa7cd58c9 5e6ee0c5d155d2298b13932a0c28e98b efed528241cd773fa2c7c5886f4bbc93 ef2b505068cf120efe48f52a0ccc160d 2eae0713342e1103397d790c3d0a8fb5 39359aaddcc4b761b0a79e28606cb167 bf15900bf5afb946b35f223cefd97829 96b1d230e88cba16f71555c6480aef72 9dcc24af7e0df254525b3f0594400a46 b7ab1b6f7dc5026dea8f4709e6949c8 6167bf752533508dfd6e968ab91bff17 6bd7f7a17a7bbd2d68acf22a03600648 7772938405ac56c1b6d41c42f7ade8c8 f5f1fbeca9af99c98efee9b82d757c0b fc1675526d043e81a2811061ff7e0824 d944c42ad08401651e5d846d206adf3d c202335fd3dccf9d45e2a4e5729b970d 4991cd37af08577070346e4935b9a42b bcc1760ef463671c825b62bd6c28eac be66886215eafadd56b70d2dbf032aa1 d41b332b9e6efddaa0eb5a85db887292 6a073661711d8b9f1a5b805dbbf26206 fcdbba7127ad58a84155fcb773414092 f7cb2d921f246c00cc8eea03ea8843cc 8b11b38e035143ddb007a3ad40c5add6 e840fab2f764532ce4bb3cae511f21f0 8f049b65309d8390f5304dc8cfbb76e1 8a56e999d75c4d6e8d1dabf86742ec3c 25eff75e43287223f1cb19f636b1c2bd c3e18e5d0f7a8709e41b17b375798648 1292caa1282ad8cffc3c4ad908ac06f4 76a4a3e8370bdc24bd2d4107e8dc02b8 d9d06d2772ecc526c0dc3ed657ab97f0 e13a5d5b3f7581cbecf207e73a787c06 53cd656555da181db6d41c42f7ade8c8 457b4310870bcf047f4e0c14aca1a926 c864337d009c823290a9c3b0b32f8569 19208607cafce17dcb85f279c97d4c5c 9e302a3f21a992c0bb579d1d8d989550 bf0f0ba650108d03cf144715a1bb5595 9efabcf2ff8a4be9a59562d67b11f3d f7fcc773249429a2761eb63018291094 953a952a18e389e4eb386a4e845c05f5 38afc0467599bd6bfa13d53e5e4a7d2a 452b924abd2ece2d58932236a22029d3 71121add7e94b024fb88c3d40924fb73 4116965029bd24393423610e52061098 556b1ebe82977992c51777c7f8bdea09 7f41f4b186fdf84c7ecaf377af2046d6 c87bd717c3640f0f741e88434245c899 bf2a5f434972f11a690a03770c5de186 320d0f9256ab9cc3a046bbac53886364 d299bcdfee69c57d419fdfebc874eb8f 312c430f8b1a3fc80249ed612e14df4 bf7daa3ade10ee75bad093be69512dcd 58c6118bd15ca3b48dd025faf4cea27d f8d97bebf67cad12a0eb5a85db887292 bef91c1804ec226e5b1c02ea3a290822 2acc3bd87282a7e31da45817bd55c1e 5e87bca3231cbdf15b5f05be350ae67e 9fac50c7b7c72dc694f8f49303e93f14 ec39e26f8c0829b3413ef77469a0f9cf ab8243a880170c00cca1221aa4c4f70a f760cdb0f8cbc6fa3c28e819722231b4 d72b00ba0cbe10a1157f4a560c24391b 5286f018c374d3ec3f7fe3cbfc3d51a7 610a9f79a2f2faacc43c9f60fcc79b4c af983238a3e47692f90d7ee51bc3530a 84cff93cb8ed08e55acbb5d30672759 424ccff9ceea33451c81652b127a0ec9 bcbf0ce42d2b0f91abae9246594d3f7d 44ce10ddb982c8ff72152988eac576ab 3ed359e502a24e5a79510444cc61f839 d932fb5d06d5e4f8da8c8a88ff86c5a7 9c26b9b0584920f1539baeab407f4a02 5fe99904fa4b22d4ff1911c2640f2e42 383a304edf67f757769dec5ec0157054 420138dffb14f929f0b45b4b4c7e33b7 7dd788cca7df768495b1245be456cdf5 3036e6b2a898fc85e85776440ad91264 a1e51e185a9f24354b8478bdb97333d3 112cdf6f3466e35fa36266c295c27a25 313e9b124e421a4efa9922db9b6aab31 92ec69548761efc61f74e5d5bf005208 500fbdefb58e261af2cdad303f49c9f9 e06b902efc1576c62fd4061aba358325 271421566061988a93d9d97ff82834ba 3bdd569911660da81229c79e4cce736a d2636f3af00fb3e2538f655e65b0b57 1101db09207b39c244f01fc4278d10c1 c43c9123ed893de5a0eb5a85db887292 17072ff9ec47bfadc3fd2392bc923b2f 878135eab6ae9aa181471a5ba59fd0fa 89f17a3563941ba9f2fdbae39bae1eff 1f565ab552dc89727e51366b0cf7747 2a48a703451da580555dee99eadeb47b 6609f05bbe9c49172cf708d3028fb325 25e03c305f41c5dd226bc3b9ce9ff2a1 6f63df7ca322514f41ced50d3a574698 59a168f51f8d7dd9e59685727bdd9ae9 df2299185baf20a17b1546f309a98bd9 31e8327ffa4ba6a87790cd6f6e8952aa b1085da37756ddd1d3f1ccf368ff60f9 2df0bc8b46ad3cb858932236a22029d3 a698b67778c02fcb5a0a15c8380e928f ef57d8665eb5ef7cdb965514105122a4 f77811bd35b9215dfd06b6d6f44d62dc bbbca195cd6b85f1562c8e1ac545ef78 d37afdca0c48251044b992023e0d3ef0 7bd9b1b1297013ed65f78a217bb320fd 27085a2456319497f1cb19f636b1c2bd e8e9617b4f7247fa3578fcb734a22822 2163366f7c3a7a0e6c63b8b48495261a 35d370a1531826adbe5693b333a3dd92 3dc95447a57f8d06c1e615a94e798da1 e513675ffb2da709a060e584e7409aab 29f27d4472a17e723fd445ae159c2cb2 1bb65c38e6b563d919bade123d9b1a21 144d8038c1688e37ab3dd76bf33b0f5e 5deb3e8911dbef1adce6ba04fb42df 68189c0fdca1a8744db121a0d72356af 52494d36a6d136f6b34ae4286be3d813 ae7098f0bc20cc6b2a87aa332da7bee6 436d7a114f72dc03d4713685ae50fa13 234d1646b21fd765ee45e1eced971f52 34e36249166b8c6bc3f912172873d52f 16685299c37055c2be40226527c9872 b73398902d1c267b5eed8c8b1cd54386 49081a0c0cd4ad32166f3c6af52a7c59 eb58b011745519194fde46457697d80 97e214d6b93e012f6337fbfda5096043 c7e4a425cebaa04bf9c8feac0b33491e cb9e8cd0a29cbb26b6d41c42f7ade8c8 54539e30a59cce413864ee650d9e9c5c 2cbfb354e5dd731dfd6c7e3f0d9c56c1 267a2d6fbf29c04cbc17518d87dd1f7a e691c8f0fd7d64d7ab0b172d4dea80cd 52d1db0a460723949582767760266e88 f66d8ca1f6b259de2a9eb0f146e94477 baafe1add38af23a5f0b5b54dbc4f35c 5bb9020da1d3bdc260a9d7568d474ade 774bec08bd534dd28a1687774f473322 76781e8b967f98b5a0eb5a85db887292 d5fd6679ddfc8ddc59f56ab706e2f74c 3ff176780a009cd93b61739f3c4d4342 fabcaa4858df16e35817e30de1dabac4 609321c1351a955c1e1f8455cdf1c0bb fe553cf733e29a349426aa93c5c54668 3d1d0255e2163917f4ad1770263e7f39 df90c50a892611ca8536be73396b323e 78b4f3aa956b52139531a714ad5bf7d5 ab9c56981431ec70f7b18034d9df056d 40dbb04ab8f780d6cc571cd3cf8f17a1 ffd186dcf855e13e26479a182158bae5 5828a8259ba570bbd24e3068806a8c67 8e3e1213e47661506457f8736d1c9e5d a3c1c9fc390b1bbbb099170e6f5a4af9 5e5c0391952208e81213f8f7891e7fa0 b7049148a4ffa22fdfe197f9f37aa72d d4a038b20b1250d7241d076ab53023c1 ceb47998c0ffa704f1cb19f636b1c2bd d51e5d7eae216c9ef1cb19f636b1c2bd 4b96f974453ef59ea2c7c5886f4bbc93 8e00be7402a612e17d6b888b4eb1ac9f 6d85b3dfd681eba530400184d5d3220b e1a4ea72b1f98e92d265c94f4d41d924 db96e9b2c96c273de7d92dda5756fcfd 4a81237a7fc743763992b1138bb05b3c 8a26be623e40850a203d19a168d29f04 e0b1cb72aba261731fa8e666182e8619 fe34b663c44baf622ad536a59974757f 521fa79c95f4d3e26d9f55fbf45cc0c 8ede5d8c00e10a2ff35554ebed2bf2 d740b0679a9996ae56acd5d5597a72c4 e3c02395e83fefaa42dbe6bfe3cdb29d 3c244a5e76cec2cf6f108f2b64e6593a 2fe9e8fd2a7c512ad1f278e1513f3b7 27f7ab052f3fce42b35f223cefd97829 bd7b84ae3b88bd5cd2dd279a9538db3c 8ea128f9035474394cb30fc798a4d976 64b6ddb847da082d761eb63018291094 3ef278f78ddb1db52a39b1d7ef8834b0 3d5c17c3e60a168bdaab9d410eb59af2 983b045d30322f96b102e855af58e521 86fc58a0c40316f2562c8e1ac545ef78 c3e0378cf861099ae3f7a74e12a274ef c410d13694b8ca1d15e144fc878b7afa 7d93b8dae79d5bbe7015d3b6f402d5a4 52a81d42c352a903a0eb5a85db887292 9c1286570bbc6fc78f257ecba9a6ef8 b02d8e0fb3ec903b4a952171144f2812 aef45c975ed647778768dbb598f40c93 bf259988d2e8728c391790b8b8084f0a 6e6d7c2ffadc2fad2fffec7af390883 cea8f15682797fe6eb386a4e845c05f5 88c64c14d4b6ae5aa7636d58d56f8570 453c590f0a1b37c1e0c2427da07ca8c6 2274e1f494d6d2c3226bc3b9ce9ff2a1 7afdaca858bb0a964a28575f3344964 a7056690a5bf34d24ffbcf8cf904ca12 6a0c0c55f355cc23a0eb5a85db887292 1edc7aa574624ca0200a0406803801e9 959975a60ae104c48780444eaa02106b e33124aa016bd1f19c1db271ad9472a7 c7407877d3325f7f391258277c122351 22fc328d136756361e5d846d206adf3d 6682bf5d835701abe1a8044199c77d84 57657c2b0d983a1658975870bb96a55c e6f4ceda4907fcc13c47272ccf8f316c cd1739ec8797049072f1ebe52d9b9daa 35dc3f0f2f5fe8d667a434dda72a2c24 81ad8af206d6b21b89b367279b017ccc a86eec9735db06a8226bc3b9ce9ff2a1 ecbb1c53e881c2b25f4e4793ed432bc1 d7b2a9546b6f68bfd0659574aaccef0b 2b48b14e226b131af3b2c084b195b056 69e45e401c1d05b767d8789d3a6519d0 d79b59ea51a9d80c483afc91de6851e4 388415634e1056942ab70120fece57c0 8ec3b148b8c608a0562c671ec5000f23 ee7ef8b40cc2c90d6b7170bfc4da1f8 2c6d9512b4013504ff0682cfb57a62dd da390e1a895506db28792f2ae4de363e 5dcb666efc36d9a68480fb9b9f30e540 9a94067c6ae50d59227a8035cf3430d9 5814df537b8f1bcde95cd0dc8c2f0e83 a4910da0271b6f213a7e932df8806f9e 33db5943a8942fdfd998bbb6a9d203d8 b1feb3020d9380ba4fb324159a14f34e 2d26f853e710b3e894088ff49a6baac4 c6ad139da5e0799c712cb59213324f9d c71acd79ec4cf1cdd11ec2c68afc26e4 8b4d28e4df5ac6e8656557acf97c5e2a d3dcafb368c1defaa2c7c5886f4bbc93 ad66da8440023d8a1e929774f9727b5e 5148da752bcd11884ce243cdbc967ce2 912d81dbf33f20956aedbd2a02b96953 b77f57d319fd864fda5309001d158b32 1a9707b3e9d8345048891ddb73756acf 35f584cf8fd22794e4b68d3b17c43658 9a4812cc600c67a6bc4fefdf821af065 c28ca490e5e7d104b1508bbfb8b56edb 5f4937b6e428e4ee122db064a7596ea 585f02091286a7a82b7045644a6897b2 f0b3e6f5bd34ca3cf0c6f578f0594c3 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04530566_test.lst ================================================ b497c390de93b4dcba21fe79619ae253 c991fc4636615e64ed01ae0c90548352 5a0ca7a6df97542e69c3c818538357ad 2fb7d918e4a738fd97556ba76bc2663 23be001cceb4c31af6f70779d83413f3 28be32d7361adce59e5ca238b1551011 ac93c084dc99fa8a1613e32ab05e546d e3f81331fa00c5f893375feb9c1d5577 8c3148ee031b15446e0dbba30ac27e8 728fa87ee84c5c2d2fc7e4ac493eaaf8 d4fcf6486fd18a4982266a2b21a2294 a8976b06101853deb4d272023dce0149 1d075cc087e9c9e3e3d3b281e2d34942 2a301f7070178c028cd011e47ff1df1 b5290cd73084cec0283f6ecb26ba2c4c 67b312f1ecd5e4a9810b5070d24f8934 4b54d54c1e9cd6cbff5cc490d863ff3d 498bc74044946e85484d83b7c37bccdd 2552d0de59d21f1bfbc6fe0b6b7dde54 4f8e847d3453f2f17301f2b895d332ac 8d7c4ca5e08a8a3a6d4334e260ec617d 924eeaf6f203fb636be14c19eeda8326 eb1d9a98d4024b2e89d2f742ca991829 e7bd994999e1d6d87ad17faf524063ac cb79681fc1caae04a63e14ddd32fec78 cc97fdf906ef08afc5646791c1cc7f13 25159673c007368b8b44023403d275d4 3c52a65c90a604f36d41dce38b96c472 738eee54143b5406615bb39b45716cb5 587793fcbae6a6fbf5abe4b4be4c3d4b 834dead664b43efb1ca19e5e5c1d5766 70b7ef0d69c7013473965669ebe40616 2a569537a0f6abd34b5acb1c7aa990eb 6e52344e2aa435d37e264261353b57e1 6a9764e3e4127744be2fa29f46d19511 feaf5c41e664348220dfe072b77502f8 c929e6d77b548b27e6f3ce318264cd13 3838f398264452a47c97d792b03a31cc 614aaafb767bfe62dcf47132cab9d51b eb90fdddcb1f25fca60ce6f0a0028c13 8d8113b30710a6bb68d1fcae6985bcc8 d5f0a8785afc39120dfe072b77502f8 fc15175b34b5e47ec57b4b6e80796be3 1b19bc5a09198bc85fa2a5df3ce5bc40 927c8ab9d2603aec2d4fe9f5177af0 4a7375e11a8ac1ae565f244baeeca983 2c7a846828d3584f2e332a83fed6fe76 327be46d4b15ba2aa79c0870e481d9eb c9d1159874c934f16f1b09a7281511b8 e3c5033a9367bfa5a6dc0341d8503142 b032f7baa738f10ef1ec74085c31730d 325d6d879e306fec3547bc1786bc3b6 d2f5b582c65ee9567f79d93424b708f0 1dce61f6dd85dc469811751e3fab8939 6c99359667a1b49d657a96a9bceb8713 a7444ff7be7aad024c8ad92cfce1307c 60c58f42072396986d4334e260ec617d 54b6788d413eb45bf6b4f9d652536b82 37aeaa30913d6ac73e7331a68f273ff6 8fb16643e061a3bd82b5804533e545b1 10212c1a94915e146fc883a34ed13b89 5ab18f317c0a5d21576932faf8645222 9380065fd20eec791a7be2887bc37d1 ac736a87ca813c6d701c68e1045b606 1a2f00c6886f14354d85fb76de815344 a85ef79371cb1edb52fd6b83c5929135 8851329ba7c3394d41556f795d265590 47c53f9cfdd4addfe054bb56e3407f7b 79803d0a02bbdc93ff790997f2048517 ca529b32d5bccdfe7d66e5fb8a76ea1f 9a0c149f5c47207f22252c899eb7861f c29e6490308ad33320d713ce6286f99c 721a41c68f8d1e1af898a4b2192a12e e00d3546401b6759710b5d09f274df d65fc1dbe7fe802a5761a0b53ed37cec 635bed8b6b180fa3e65273dbd0c0f949 2d136ffca92d9c4e3639e751e7f78cf0 5f1956ad3dd52a69d3a2c7c88c74aa63 2080308141b05e9e584c6557cf979aa5 c23960425c8cb654c6cb0dfa2f14f9d4 d1f0353c7fa985c91915777d56cf77e0 27bee532a7cbe5dbc4bd6e2ad0dc6de6 e765446c37351a26850e00840470903a 41d1856d2e24a738b4624ce09086ad45 29c5c9924a3e1e2367585a906cb87a62 f17262f7443b98de38d037116a032a18 5aac718c51fc73ca00223dcc18ecf69 3283111173c12947622984b5941cfb8 d9e771ae62f0bebd28642b2f4910862d 2c68972ae4868355a6a720afea6887c 6824763a090a0b2fd942f20c59bd7ad0 a51410ca51a40c2529412f6cb23454eb 1d2aa0bcc9ade276a70cfb3232f40c6 72a9394882b8151bef94bcb012573cf2 1175df3d5cedc3365c00e52236fed2eb 24beb61e46bf6b1970d557f49392fb1 fcb92e30085a580d9c6645849b3b7d65 61eaa4afe332ba113547ed4d05d19f04 189668ffa80d37877622984b5941cfb8 72a68c898941cb3541556f795d265590 24000ec6bcb6ab9182b5804533e545b1 607b88a99de743eda0fefbd3658c7966 fa2b5f163549ca457ba04de7d6d93ce8 68d32bb51ab2050efe999a207e6e230e cd4240b8246555df54102e7ecaeb1c5 34c099dc4cbcb0ee7c304709a8c6cd35 7103677dbfe63b1ff85fa5c7c88c6c9f b2f200bd0861e1daeb78d3e0a9401d4b 6f36c486675210cdd566d7f46e9a16d3 587cc1fc65ac4991ff920fdb73e92549 2f004ec4a719d231e513e51a78e5ea1b 9122c94c6aa76d9e652b5e55e45d0bc1 1fb07d5bf3421a46e2b83b21c9537e1b 283dc6c755398547657a96a9bceb8713 aa695b15cb58096f36aafa2ff65e6955 46fefa9e95b353f4b1bb46d2556ba67d 6419254bff42d878e820a92cdd43b76d 68babb87d66a981dd187e410b169ccd0 ad2c82cd40584b43fc4c78b4701b2fab 58a768c309c01b2cd6dc46f6baef3245 a32082d31b6b9a0566dd4c46ee29f5d0 693566461a33af90d7f8e93419dcfd5f e1e3c053f4b4f1405e45696ec6d1a105 d5c7613bf466d33e94daa4565dd30535 f02b990da656df8dba71d80f7b736179 8676b1989d68f3e970c565b5a7d76650 a755dbab93afbb3a1a05bdebf75f301d 8d95b6ddd06a8a80f57109a0257e61dd 5c313324778eb79ad976d6ec0305833a 20c2bcd71abffc2a93add66353cae8ec a431fbb7e58ef0c46c03c11657c96c60 3c835bfc9201041a34f2450730697f14 4ecbd1471e916cd6c1ae34bcb12af75b 86fafe5bf7013d18248c5646daf6718 a0372d1c35e531e7130b54be1fe602e 6e1781a84b5dbda6fb3e64e796c0391a 77d2d34922964c7b57c58fd0f9b1d74 e5524ebe2d9f1e8c47caa6b5f3c46e10 bad5505a49b50dc8b89145155e320b60 f03f7c963928073227ac692756be9e24 83ecbc5daab43647ff790997f2048517 6c687a500aff678ad83f267e8f0b536 3e7923c788b0b9a67297c18bca670e89 eb05e72eb8f94a24816427daa1887efe 6911bfee295138ccae6afdd0fd1549e c359eef375afa3b6dd42314e00caace4 90d83e1dde32426407e66c6e74f5ce3 20d1090d07a49fe927ac692756be9e24 a3109a4b09953b5e2b141dc6bd7c4bce 41032fa8e4f632a5447ea5854b3cf405 ec685f1f4bd71a191bf585548743bf8 a36f6174628ee5807789fc10abcbc749 6371cc04f48161ec43b0018b6edb5e48 6d71354936e0e1e8c362d63d34a4d0a c715bbc7a1586afe64ab9e610db7c692 7a6634eb949d72719e6f7dedb7e5f584 6313352481b445a8ecbbed03ea2b4cdc 25f20d56a125b4028d8e8d98cb30b332 848164edcd9aa41594daa4565dd30535 93285afc55afb00f6bad0887a204b994 84b75e53176c9f1fe1e2f026632da15 ba05637e557909b19527abfa7ff95c0f 52fb0261b905147d2fe023c7dc3e5231 183054ec6b2665a38b2b48d71cfe16ab 5c695e7aa51d16ee557500503415b4e6 2362039302d80f99f2c9de96bdb467eb 27e9a27b6e3b49c227ac692756be9e24 acc820666df876cb33af5a5d96363fe1 508e6fc3b47590556be64995e9ed73eb d1e59a48852965fb036cb639ea80765 7edbaebf7d4fa994eca93934e5f39869 dd4b3fc340bddb7f70adfca72a15271b 5b88544e42981ce0a71aa3ce894d7bf7 ac8a42622eed9830ae433bf4d273c8e2 b89d4bfad9c9b64d476a01ad767951be 9262aa413df7b369d735fa1ab17311ec 70744087c22ee199a51aab4cdab636bb e0d1f833e8dc5c604947b319a9e09fd 307a956fb5eaf7a629d81e9641dd535d ca129502c7b2b8186d54dce3f3e9f18b 9696dd7f30247c5c573080510ce7a6bb dde0cd836238f7946cde899c8674e2a8 73fd73a8bda002eae8d6be23f236225a 77cf1b9003d904df96bb95f1b1976a40 aeb021c1e1838706b44ca19ee8c5531e 2114fe40b577ced9c7640fef6931a907 1d176576e4ded157a313c221866393fc e3e2bf1879ec9298c711893477336d39 abdd2218a607a19819194900293f58f0 6c2c2ce0215d3f979b3523fcb9cc5680 d45f39e14c365801892294bafc22e040 9f468767b1fd9285eb2c303a0e0d287b 409ff4fbba1ba94adab1bb7802748e9e ea34a8282ae86edcd3fb60637c014c9e b7d831d7b1dcad77a8596b6b008107ab 2067c22906b79faff877f04737ced5b5 b03e831a78f2f16a5b04bf7f324b7e5e 1f20ff37655c5dd61aa01ae491663d9 6847480bd905f05b544654c1c7449887 f81ae8a4452ad290aa9bbcb26e1c5ea7 f269ef3a1c758432e8d6be23f236225a ff77dc4561e1a8a531d119333f70ecc8 72d110284cdf597e68b6f3ae18faf6b7 b090b42f3dc0e7a4aa7c6f19b4833a28 2b17c0705ee0426e53b2b4f48361e0b2 5e1c4ca986d216866554a94f24190b8a 697c8a9055e5ff2ea7a62969e8bea32d 2615224e88e47ed29e5ca238b1551011 703e4a7096ac1aba8f7e96a8530f50cf 6f8bb01950141f63b3e3c8d3ee0e8f52 2e54c2bad5d117994daa4565dd30535 57b1795508e5f9d19996f95a20b4c45a 9a7b0effb53375625f647c1b0a6369bc df73ce22935c8081b04c44c0f84a941e 7eedbeaa5216ff06ccd600f441988364 52ad452f1c63aee5a66bcb069f7626a7 2b58ca08b8f93769c5408f4f799fe72 e1a43edb6152a3726e23bf72aec61fd1 22a66588db3822831d20b5ad5ef1cb1b 8c0199fb20e7d4d391347c63d1dae43c c89c8eca488d5072cdd34f38f87d26cf 4bd85ce20325ba7442c20743f866e1a6 2abe34f72a7ed4eb0d00cfc385a039b c8f85606ab95f0bd75086ae01906f5ab b093af9dabb14b70cfd826dd468a5497 2571a0b3d1eb9280f26f17fb5c4740a9 7ee49cd8ad72bfd2c620cf302459a7d3 6a5f7a634b13ea7a94daa4565dd30535 beacf34e9b0c0597894b951d14f8e56 7e16ed13ded8aba83f59687345e725a 9e3c0b7fb69ec3997cd1f8dd6fbce8fb d703643f4a4f76a16c63b8b48495261a 6c1cfb2fe245b969c2e818a707fdb3e0 c15004cb38217b33af018ffb2ed4ff85 9d3f9edb3fe0ada39bddaef1ba7e1752 5a2bdc97e9d6683077f1d7a36adeef7b 370ab590d5f9f6e12998de2923cbf8ed 2d847f7ada349864a4f87aa9a31cd70 c1b48711737649616a740b8023d40f30 ffacadade68cec7b926a1ee5a429907 995547c0276be2626bd4106c65ec103c 395ce591ad2e2d9be47b958d3d1f5177 f90a485c72b6047b102edba1bfa321c4 7b602de66f5eff247991cd6455da4fb3 123c021333485d698a75485f44bcc744 dace99ad1144747eaec7ac3c7340a2f9 2988a53fc376653aae529ab4a75c4af ddf03991440ea0d15eb13ba95b07c9cb 65e829c5a8a52b9491347c63d1dae43c 703c1f85dc01baad9fb3e3631a88cdab f91e712b124915514b6c44ccda750d2e 65be4fb7c78125eda52f887aa13ba9c2 e11279543f1e3ea015ebc00dd3588bef e88c7403ff401716b7002bddf0942f8e c21024d97247df5ae922b610a625137b 8e8a38abbfa3ddec942654e703edf3c5 847e8fedddf6bee5518c49741aed1bc1 9bedc0d32c657b5a95003e7aecc71b93 8faf5fbe39f67f3dfa2eb3102eea4e72 54da496566d05afb568b456e2715b08f 93c013c922b90649ec08eb6485163157 816efac46f2f3c99452a4c76a476a0f6 2e620c48f90f6fb2f569f587daa38158 a28a7d34ad5f006f959df312c935a698 887be2603a56d8acc13b4b8de5611825 73c6ef5ee071b7f9791ed0cd6a81047 c6e127fca727e2be3d312efac35b8a09 8d5e3b659cf0df154327dc86b5ea9517 95de565a937cc4ccdb024f6e72f57630 35960e065788a31b123c06ea72522927 377ea2491f8db13c4808655181d482fb f3f66f0bce27d439c1dbab1d1ee81853 5fd1b1b185638c49c13c29cdfe828247 4214845c44563c5fb1bb46d2556ba67d 602df167ba6cb5f5443efa8c2bef3b97 d09202ccf8fa18d7de6289e76b045123 6ea8d00d7359f08f9e4614310319ea50 1eac28fe0b2d620bf0f75e254acd7ce4 bacbb452a0f6917a663e90eaf6b4ca52 389d122da973fd5cd812ac1676a22587 e93a47089f5c03fb7220891f188bc420 c993c40ab88b161e3cedf90fdd80720e 6fd433c69f9c498a12d1578498a3b488 7890b89eba662af0ce90854bc9efdc95 1f846bab69b20a23561fc06c3ebd59d2 f8b80289dbba94bdb7002bddf0942f8e c680824e615c772d18d5c097fe7ed300 411da0cd0b0089362b249fd16295bbfb f99537c4b6d50126d87c63d8b3018b58 1d5ff455b6ebd04e413559acd5524c40 1abf3b20f05ed8ea902d6f4ac8edb5f4 7aba61c9096ce60b7002bddf0942f8e c8f5f746daa5bd96b34ff70ac6c9e4d5 2212bb44240a9f0b57cf4c4836e6df44 921a5d88994aa99c71327f667b2179b0 2e958577e7756f59bf9717d602b327f4 83122dd93e3f42c08099d0cb75c1d1e1 2ba37ef44fa116f8300ca77569ad3884 2ee1a459db90488826fea6918e74b120 e82e97e22066a75d798832e32e32aae6 83aa90436933149311c337781d78350b 6d6e65b938b88eaf3a4406b2a58a646a f12f615701b9fd31a9e77d2a83027228 bdc39427c6267262c541ae04c251c7da ae65e1f6bb539fa775e66ae917e551ed eba55caf770565989c063286c702ba92 368dadba3b837dd926be51fab07b7ec6 4140a889b730d00cc613c8345c33a85a 957ac9708448e111f0ef63bb932093ce 9004946f75082a8632c0857fb4bcf47a 97b9c8f223390554e2584b7a39a94cb9 3897d265d993ee2a1fabf3cbd0fc77bc b5b320871c5dd884a24134966691a2dc bb601d5ded9bdc00746ffcbc44510229 854728b0055ec423e4f0b6b21d3809cf 2e6a74a610868d5be1e91cfa8fea7dba be8efba4b5c1cbfb94daa4565dd30535 71d6ab6979e5a313dde8c025d72da437 c45f67b42b7febf52b249fd16295bbfb f18739a47f1f08e08510ad9ae6ed36b6 4464fb8cf0d04cb732c0857fb4bcf47a 2c8725b9a09b6d0a44ebbc705ad8c07 d4079a1fa9c5eee8a3599da6d4b3696d a13e0728cbc8a41594ebaf95f022dfde f73392abd103857666ab813654be63ca e4717ec5f7e12fbf07aa2d157764a08 92f08b4bd8aed9bedc2616ac929c8116 b9c516eec45c825979283d5c77809cc1 1f9315ee16e03c64450e0a3087ad6863 39ee3af7e07310f494daa4565dd30535 72f3510fb835c3557c0ab7347b9e831a cdfe819679f7c2e2916576b265053633 438a1ce3825bc06a18803813f0c0dee8 4d8ae6327ab4ed301e66f1783a4812d7 522614512d74a2f8c5f391634c2a5ade 20c2e1a09d00f51294daa4565dd30535 ac479ce45b04972891bdbed880f31c72 10e10b663a81801148c1c53e2c827229 a0b661c93028d7de798832e32e32aae6 9d8d5086930871efe2e5f41247736024 dfd7315b7f8a07ca67585a906cb87a62 24a0d85f723fed2d7f332834f123f44 59a363d3852757572b249fd16295bbfb 49075ee8db9d66538d1140748efc85ed 9114091d7dce55242e5cac9166d7a1f5 698f399e6c578386b64d3e1832079349 7551b29b91fa4d47ca732a92ee1dda3b ace32fcd2b6c3fd081e9f45621d2c8eb 739a6f209a49040a4f44d84b9baa5f42 1fb578de4aebcd62b249fd16295bbfb 7af3abe01d2ba4ddf09d36263ac1039c e2595bc7ef0809097c0ab7347b9e831a a4d9445d191c80a235a6b421c152ac60 e92386352c19221ac99bbfcf5650bf52 8a553a23adde929ceb2c303a0e0d287b ba5723d5cab50a0b7d86b3749977e29 bc698a05ff49b6e06d793283e2a4a87e 758c75266d7788c0f5678db9e73ab77e d317c39473534f97b1bb46d2556ba67d 3f3043e275bac07a6f315eca7454150f 751aeec5f1d50668332d76467c18dfde d37263bdd876ddf6f885c09aa3e51c57 37b4b837ca7da6a4561fc06c3ebd59d2 49665c3dca5441d77c0ab7347b9e831a 1378b7d4dc05adba9069b3c9aa123329 33e3b187089a68d3f983f6a1267b9260 a99574a44a78208981f422b7e55b97ef c8414ce9b8848c3c1a3ad8aa8e24c7d1 76dab7acad83682765aae3dfe86a49ae 84097ba1b35f844ceb2c303a0e0d287b 4e3cd4d3b11584dda70cfb3232f40c6 33f7a4ca412285334616fd0dc3d5279 786f18c5f99f7006b1d1509c24a9f631 ffffe224db39febe288b05b36358465d 5fb24b87514df43a82b0247bfa21216b 8605c975778dc8634c634743f56177d4 98da594a65640370c8333f6c4d99e2c8 ================================================ FILE: AutoEncoder/dataset_info_files/ShapeNet_filelists/04530566_train.lst ================================================ 98a61aa6d78f6f49de91bdb310db8e7e 82be57a43d5d1e14fa286e2f06a75d07 54daf1472c51bb47a97a590141e0046 f4923b4ce88bdda3a9142e7277ee08f1 d35fc449232d68474163d08524f89006 722b68d90bc3955d2e5eb68672f87e15 161d9d8a1550390ff4000b62f164055f 1baadd62642d9f03a134736201a79843 3fe8b8d9fcf031574bac1c894ff81b3e 212a323fdfc0d8e59399f7cdb64577ad 397f37249263000990960087ed86644 f60404b62c44fd3b49f0e3dd7767881 daa873aacd7960d61d2d2f3b717d35d5 8849abb0be0a0ca99cace9782a7cd30a b472526267976d94e145e5e8ca0d926 11c2a8719a7d23207ca6caab209ed3be af936a44c902756dfb04eeadf4d8d0aa ec4a394fd782e66b749227c7279794e 3ffae5def89153e911141f4b3ef0acd0 6a0da87e5858b4373e45dd2f173cbf9b db3a31bb1fb188c727ca48a52046110e a40a870c5abd8c83d84b8ba651dfb8ac 303736b1be32f43c1c426bf7baf37c25 a8dd1e23448a492aad67d63ac9e4b707 90bf73b91185303139555c8c231d0eb7 4c8c605b2b452cbba66c1707a338712c f6762e2b8bef4ffa476a01ad767951be bcf9572e3f21a9505c0be177939e290 772835e02fec3a93629f9e3e495fed76 3e874274afe2d37c70640aa5d7fd3004 bbf1507f7126733665224ccd01ad35d4 88ea6d51dcf2cdee3a6f102e22936e2c 82180d1a6a7edf815e585de41f56d4fd d795b03f47dc7cd5525c5b030c9fa146 5001bc761fe86d60a43a471ceb7c72ac 44ee47ab9926aa821e062833a4a1a38 13b7b299d346020a4de203ef6842ee61 4a01d52c0d8346fda8215f78849a813c fc252e6ab475cfd6882046e7e9998f89 ffb0a1240833569b9041e5038dbb1ef6 3632e9d36e280dcc6a6cc078f0eef937 93de96748cab511731205bd848315f04 3c785a132fbf152249d508bbe117085 4c6e4bc79308e23e480060a68009533d 9feb86becf3f22f93df8f4ac45647158 75078bd36089fd98243f62fe7d2ba690 f226832ef907984fd8d4a0e4fc199475 597975f72770523eedb8bbed3955f432 3ff4ba746d73fdd08f845c46c317c0e2 b791549dfe175150a7d88fdd8b14a0fa 965153f3599a6ed6be7ca2216dc1576a e57c1a72d265147548c2e07e979bc75 38b6dc2ce1e8cd05e8d6be23f236225a 81c9e9d3f461c4da9917c7f0cf5ea813 fa18b7197a462d9b87c4e42a13b47711 b6ec93c690df4cac711722c32e47b894 8cbb360233696342309e1bb5976741f2 a5a16ec8ebc811f1aff407511d7dfc96 7b568afff918289614621506c22882a0 e271e4ef2c327dda28d0def75843d7e0 4cb135ddc5d3211c713a67cd30c1e1dc 3da3c73abafe7a9eb9e86d477b879ac0 5d301491ba435b71257fc1c453f165b6 edb4574369f95b50689cbb453f479f9f d235d9f72448d9f82c1bf9a642a59d24 108d62bb197c948c60c7b57bf6d67c74 c8bce97e59665f2811b9a587ace886f7 53fb6683aac2191fa8a3d44052f8cb25 72eb488206297aeaa60ce6f0a0028c13 5e8276dfb4c1db936f31e247620349e3 ccf527bf6ea742f0afe1d4530f4c6e24 d49066858c55d7b021d7ca6ede0e9373 991dab2b2339600a27da61c271c9c6a1 f69f4b2abc707f667610cb1c03c9c3ea 223d2316bb8b74a979170a5f8beda902 1994120ab63fd4fa3df8f4ac45647158 93304640e3a2a60d611cd70ef25f5235 b1bc73627283a4076b861850ae66c9d1 c06ec9a0e32cfd11abdc408c54a4b577 e5a3728a3b5a7ecd1d2d2f3b717d35d5 429dea3aadb0c3bdc753f4f2b4288d6 6ba7c592495e203f49006426f75e891e 60a1ffde62956a96e4723800c586d63 b4d3624a4e2651ac6bfc202176cd1f2c 72f4c3c433492d585001cb19c4a0eee4 3f3912cf68cd28eed7259ae7450dc47b 5b0e4acffe94b6ebd283df6ee191ad24 f2c8239dc51b315858e86ae676396826 9fd71a532f7c732fb036cb639ea80765 9de5e010b46919293bb25e78abe7f382 3b60a8a4d71e3f192063cebb14246130 5edcd7984de7fd4b42cdbb9140b25a0d 6fabf91638fda8bcce1decf313ece97f 7a4fb637dc511c19b1bb46d2556ba67d 7bdcc3c9462eed64482170356260f668 7b0ed74742d27ff3ccc6f1de97150965 c55868566d2cd547d8d2db57c9e192a 67dd862f05f659c71f98035449adc4bb 9043c404e310864cd5dfe0108665de88 27476b5c965b010618b731fab8bc3743 d57e124826aabbbfc6cb0dfa2f14f9d4 aa05992294efaa26a47eca0fafc43370 248092c201dbf7008088de1a3d7f09f1 956c3b989bdd0603158a3417d0510bc f531f4b2ca36d626e18dd06c1afbc426 b71deabf89e42df5cb167b89a3c3ef9a 59d2e9b3b4de8695a0c75f497eade21 512251a635bd548f3463d0a80e47bc52 a7b07a2aad642f3f18b731fab8bc3743 42d4dfd73f7e27677e72e199dc6b40e 82138919402b3b8f642f9e27aaf0c47a f31b394d652f0bd0592f00ecf480857e 645382862cc284869bfdd98fcb85ea6d 52f3ad585a3900792de1329cfb242f46 6729875f6c9b48cbe4707b1374ec004d fd255f604c44b9cf497768bbb615071b 74093f3d2583f3be7b0299baad14624c 693272dde72519813cee85b510079413 eb00c722894c3d70c40386bdd72f9a0 c8dcc1e4f2276ef1ca6895dabdbc0ada 82ff35912d0a143a4e2501f4797d0851 7aaa404bd120be52816427daa1887efe 8d8e8de880b4d7dd12ce033f7610a23e 6ec5e181c6df65d9a7afac0aa00dd174 d0e9f4c4bb582c3cfa0636f27a8b2a9c a48181b53d207f702ec88d3440bc2d77 11766a7b1f86adf36bfc202176cd1f2c dd012d1ee91543ff500cc506a763c18 dde98d21d4359f24799c6c3b2fff049 677ffbc1ee40a0a0db5a9ea3574bb285 d0aa1202f01227f7b9528bf167ff877e d80bd439608923e07610cb1c03c9c3ea 5e6e9a61eb078041556f795d265590 44858e0564cdf90e299482fc72b07ee cd67f7d1ba943b162f84cb7932f866fd e9da320a14afc7098031a892cba81629 96b27c98daf461269ff59e10e6ad1a4c 4c8fa5d0d4b2c54644dbf20ba8545fd 67adcb4dd6d1b51f3a2bf22c38d431a9 5b6d80dac7d626baa218acf6a387078 31a41e6a73c5d019efffdb45d12d0585 6189947ef21a4f4b7f6ea2f642fdf12a f10162679968fb0d8f21fab201b7ef8d 31ddf87b5ef64c9080c9c53be28cd7ba daa1781b81a74852bddd6eea3463dff0 2c7a0d5909d8dd46a3599da6d4b3696d a70c472cef0c354dba2abf2ecc57eeda 28c2e4576e53da5ee25f26a257fd7871 7400be7b247ce021be99fd8a5f540d8f fe7362e8a02d00072e4aadf908a27d12 a10a3ed95539d9e81f0c83f3777b8bde fe482b5db6daa95f88e2183678696c9a a3905dbb972cbb3db57379b548da98a0 ecdd85e25c18ea404d73ca91c97c0cb3 3bd4a80ef718b9c9a069f11e22e91bb4 ea940968d0ba131e7b66b8fe985fb060 2fcb8c472f1cbdef185cce17ce166549 b93e07e84bdfd620f4000b62f164055f 45351c87f019646115aa5b227c027ee0 507e097913d1364bba2dc6b0ec935a93 13c289d915523f2348132c07d51cd81a e3923f2d2fc2d1d39263b5578aef09fa fa2580f6b9a29f5454f886603823eb9 5aaec5938224841f36cf5f476d32636f 59fefd79eba35dbb723877c00e9cdc03 dcb390b2e8e5093def84f4e0accfb14e 25164e1af059f8507129983ba40a1750 206c86e4cf614dd5d03c0ce6ad42cc93 1b00f29471a41f59e92b1dc10fc46551 f5812d814e114a185c8b6bf3197caaf6 726a60f7dabb1c88c746ec5b7259bed7 1660bbd9c43284d98bfe41fc81907f54 4cbffb314a589346b9b184da9c0040b5 767e561fa1214fb83651bb31f42d2f80 d66b7128600af54e7afee304cce81d6f ac4286c2e92e3367d5ba5130450bf929 d3c26b292a4a6a82621153a3cbe4a77f 7e7ec66ebdd4df7ed1745f739fc0fa03 d617c5194daf4f7298a97ddfb532e08c e6a9f9135e36b6c17c0ab7347b9e831a d271233ccca1e7ee23a3427fc25942e0 859daa33e58191bee2d4c157e5bf1dde bc691ae1f2d6cf0ba628de2fd7989b40 61df71a58a9d0161202de8d12c6f7633 eb8569cf15db1dac1640aadca4c54050 5b1552a30341a3b27ac692756be9e24 52176ee07927984ab13f6ba928a796f ddd02c6fb780d4f6c683d3e7114aaa37 4e341338a4425ea391fb4dce28166bd1 293781c9bf4f6168c4ff53ac1cae3d62 9472a24df8372cd42e436d38f27146ec 3f3bf820fa5d171bd45d4d5673b732bd 9c92c9e16d1d214b81eadf50fbd8addb 50c0bd9933f7259fe59358c5e6239c84 27d32838007b5a07c63bc8fdb41b8eea f3a1538193bfc54fad3766494450e53a 71fb9e98e62ae65f6a8fde3b294e520d 6c1c628f4ff60addc5b0cf694baa734f 6abd7ebbc9020871bfbc6e788697e036 d0afe316f1648d22b5d16f91270f7fa2 55d87dea079d2b991bc665188b93587b 12a01b67cb987d385859fb379730f7f7 3f35daa80c8b364fb7b1411b0ad3bd0d e6d6a78f53ed5a34d0a07165a76e5a8 bed3fb84c9b876f930d7c2b672980ace ac2e609dec5745b9e00ca2cd74ddfc7a 490ba339e10c0b7f4de203ef6842ee61 c9bb36ffd5ccf7584cbfeb2946087e59 7114f947ac296d8034d05799e615961a 4e45c5a16f45c3bad9356bb4e82527e5 d0652ef190720c84f4e9dade6d46323d ff54247b18f676d9129032621d548b11 8185d9e558f822c177cb090a86675a1a 58c05eceed8e0a48f3e39f2e17005efc f2bf8fdce1a33c66a60ce6f0a0028c13 3d33ac667a885a1a7856807e3e4b01ad 1d8b27e78b2f326480d90033321f5c09 f728f7efb5612cfe6be14c19eeda8326 423f4d084e13106db75e46a5ead1e5fd 7ba8d5a8edb7ab991f377e6c4dfe0096 7abde2cf79febf6efe4db18443aaee4d 1039c49d2976eb87d5faf4905977884 d24616fb070d105d3a10f0b86a89bfc3 b0ef1a0332a50ad1ae4c18c4a7d1a8bd 64ceb6b8d122c2b3c9b5311300e82c12 ba62a620689a976f721c8a4254856c86 5f2ddca70687dd3062ba640dde834b4c 5c46f6ce5efa21175060c1b57f88c056 91eda08cecf2e0f1c6cb0dfa2f14f9d4 88baa5e1db4d1c624c24aa820d0994e 5059b4e973a0fc7f928a2a26ac296b52 a443271055ad0ebccc9f5b25407f3c72 ab40191e935c415cef0a5cdc2cab422d a473fe0a7f11c7ae9041531b90641b86 3e900d7ea70fccaae6100699d3d743a7 f8d3af1d1a20123c249ba97ee36ba54 40d4cf2e4c0042b81f6b8c144863b7d 306aa8588bead6f3ccbb877d944b8a64 4021a170452d19393c79f1baa816886a 209f569f50d42f7e45e2a4e5729b970d 2dc008ba026e4c8c8209e983a346eb25 bff4e5d71e9b695dc6a303e6239bc3b0 620f33e5f326e3c642f9e27aaf0c47a 7e0d128b6c8ce8b59e5ca238b1551011 969c3262a594bda487a9e46bb7812fbd 7a3ad44b854faf361f377e6c4dfe0096 215861c4bebeb328d9a75de54b023ae1 98a9c16aa2c6030f7d962e3e9892f8dc badc6f1a2c19f724f3e39f2e17005efc ca2e4bd483c006a5c9f3294669fff77d 44a50dc1a9d8a8a65144962e2c20b832 d8acb2681ea3e2466c64e0542c2b0af 80c6a14accb189a9c2c2c81e2232aa95 74480b3e812f7c1428cf87eb5ebe5e6 b91a01dfd51d615b4f84436cd4bc7d29 33692290561c798e780bc2708a85ba9a 50f0d14029f7f7be450c3626dae37aec 62b67cadf45841ab82b5804533e545b1 b942192d17d2e267b7cc248da6c5c5b6 a8daa7461ff94965c0be177939e290 a8f5ce05ab3aac91cbd32f07d6724eb4 efdfd88f3fcbc162b4c316c21a905ad4 852a4a82f02d64fb31205bd848315f04 54ad30894e9c74f28abdeb0a990504a 9a20ab78eb6a5e7af7ff315fbee3c6eb 91e0e1a6dbf302c3d55da98ad008849b 64ccd647293ba2a75e73d168e741c7c8 a230c555488ec2664b07b7d8c0d68c50 b1dea53e9995486c1b4a375734e87fc5 3038a5f927db994e6702681953f194c0 dc0d90ae6a41e0acf68668364a569266 7bfd756573de367176098e230fa177d a034dc83750e7b8144c1f09f7df84b24 77aacd8997c67145cf10e9e4657f415e a728c32eccd560e69412a62cd6b1bf5 28db3989d5ef36e9c3691cf0253958f4 60ecf4adf9e115f91eff78a25c58572c 1c7f49bab676187480901e43af4435c7 e0845c8579c5d4acc3e7754d5a998758 3e5e782373516ad760ddc468fe733ed1 6cea89128bc0b5e83b9f2b6367bac7ce 5e65f519b9f5361e657a96a9bceb8713 54cf5783ca03b3e015ea3a1685d773da abb6fe97ba97e1f84e3f9dc2fe7cec4a 24ce8f07f05d14bfb274bf54d5e89093 fa656e5b70f12edcbe7ca2216dc1576a 203c2cac2c46e06c320fa6e2cd857828 adb1b651af34dc6f42534f02c8e8b5ac 954c459bc6762abc24f2ecb72410a6d9 e5ede813e9f07ee4f3e39f2e17005efc 30cf2b36478a21ee701c1f58e22b85e8 ceaacadde93c2be6ee138bcc5a7d5853 1d451877c6270d97fe755e3418b63110 7a5de2857213a2547ea0f302610f14a5 fcab40b30e1ca530713e7356d62985db c7fb35a9ca583715ef0445a3d98d3d35 4a886c242f8d02c8b5d16f91270f7fa2 bf4386d3e823a09e57a4e26112104eae abb16b391d1634a84de203ef6842ee61 3de0aae73a33188ecc8c5a250a07787a f61132a535bd608c85f7a3de54751f1b 8b0d1cd6731593974543d90faa1260e8 54c0a11324d0ca82942dbbe2d0488895 66fc4d3e245a643c4f7b88e5a2748214 1dabc979fd569a0e850e00840470903a efa50c4e3e691d3bda1b3e013aeb1e59 4ac3edea6f7b3521cd71f832bc14be6f 249d543a30a88020be7995d5b4bc81b7 d214cdddcfaeb0cbcf8dc8d39d90900d a346005de2c522e9c9078664355a9ff2 8a779f2127dee13b28db2e450917f8b5 b33a673da4745b08b5ee11a06ae8ae58 90e6c6083fcd47833e45dd2f173cbf9b 70dcc0d460cacce0e63ec060b551ac57 2340319ec4d93ae8c1df6b0203ecb359 5810aaf1a0818553b05dfc874f00d5f3 f72222b43e40e7e84cd259bd328e92a fdd7433470c31c8b5332ddd5fe4d4fe0 ad8623ad47d72317eda0f8d4b3ce03d fad2e708e354b0315e585de41f56d4fd b04e4650e547e0509803291b0f4bf532 ec3e0694850f1a923b7cda02ebfc1f62 1522b8c3c28a9d57ace571be2585c620 51f002bbc33e4b34aff407511d7dfc96 6556015faea5ba45e0f0f0669675011 cfb7ca78b0b65c4f2d615e80824301ca 133c9fa2562498d28ae10bd53dffee76 1b89cb2463ccaf15e1e2fc42e32162ff 6f4a328af926532b642f9e27aaf0c47a 4e5b83181a13e0661868b1150be0eef4 b5d1a551525c6b7876ed13a8bcf33762 6bbd0b0e09dd43017ddd35a83509257f e3206eef4da407e7c08fee43ebed0bfa 9798a8b84987bd661851363a5850bdc fdf4b58a27a3ac8ead83f267e8f0b536 65f8bb163e351bfa9399f7cdb64577ad 1c4ea31563b54bc8b77192b0405b4a6d 863fd298e6ea46a5614edc3c9b2489f4 9efd4dac9e4b1698876eb99526752ffb 4f513b39cfce2d269eddf484109e2999 e2f4c0d1c8b6e26549e3c7e37819c26e 338e37f313d48118789eecd157794d2a 684d665be29eaa49a1e649e7e3e5f054 8fdc3288bd73ef58a127697b1776e4b1 adbbaa33c52c3b0d5c0be177939e290 2a020ea3cd5e4fba37363131ac7e8139 99a27d7e2553c629b0828c4cf6b95ee9 44571992d18375483506f52bbfa5b648 7a9ad733a68b93bbb1bb46d2556ba67d 5b6044746e12fb6733b68f5ec4e8a690 5cee5c3afee327cf360d3819686769c9 160271b40b1d6822c40386bdd72f9a0 fddb69f72a853e2f8ff5243f1df2529 e36cda06eed31d11d816402a0e81d922 dffd4f1a6a4d3647568f91064f82e7ec 498773c5047c01b35fa1a6e8897313f4 9b90b9cbd9577d842b72b4a851b36ab9 67e41dd24b6902da49f471d054f6b528 564d88a1c49ba742473f10e6caaeca56 845426b7dd1b0e55a9142e7277ee08f1 9bb4fa1026322f0f3e39f2e17005efc 9fe579f5bc52735cdef1530f49dfe050 3fd6e59f9c95a24d88b3e1662276b5b aeb094e328468631d3cf225db57b7a46 bffc229892a3d301c8bb4876165f947c 8eeb2bec8499fc6ba60ce6f0a0028c13 4b491c434e9c230c9e450dd115401ef 296f0b6a15012e33d87f29c9afcc633e 254f1c0cf13108c46c63b8b48495261a 66a90b7b92ff2549f2635cfccf45023 18642f35971d1bec86c51c3aa93bf029 573c69987f0508d210572d5e96d039f0 fda1e57da58ec9bee88464b900e0eced 9c4ae8501ef74e82cffae3eeba6126e6 5c9d5cedcb75cd2bad7daee13cc76c38 8d53d8f4cacbff77853339423b00f029 485f63613911c93fd316c98a55307c24 aec79b6f0379b1749fb6fb8ca3454a08 2a492069b6009dec37363131ac7e8139 8b2e1eabf620d76840633dde0a3c28c8 a53eb39c51a7e0a2dcb7d7c06abe0da3 4f245403e6366d48fb3294f1e40c8a29 6f3384e934f3588ccc37416b6163cbbd 2f4d7a1873384f5a7301f2b895d332ac a5fa8ae8f743d5498052128bafa4f7d8 a0f1e4ef99b57121a9142e7277ee08f1 5bc8a432a5911a4c14621506c22882a0 7b7847ccb4f15fa9b1bb46d2556ba67d cce41dda51ef0335a413908c0e169330 aba35304010a7ca093f1a6337ed3a54c 9b02ecc129d89000f4841afd366e16cb da57d296d06af50d6fbde5631e3e226 dc422a7fdde68d8bbfc744c1348ee017 3b726a3562a1bc6e9d2b0f4ee2fe01a0 36b38fd918d01c6b6c63b8b48495261a 81a7b820899ccbf15ddefb7321dceac0 92be906c57e20430fd87075a257732c6 e9c603efb5aea8087610cb1c03c9c3ea cb497aa6439c5a058c8c82196ef75032 c2eb256cde2dbb93c17ff170974eac43 39c41184f49edccbc381729395a38d7b e93d2ab44861bbd32a4947824596dce3 724ca82e43f5e4816811fda0ba2e1809 f8ec76f3861f7c68b76982957f05710f ed397dd3d2ca4c8a69852296a4bb593c d830527d616f47c811b9a587ace886f7 90a71287364b3d1bccb9d5278825aef9 87e1eda2a99c713d4fbe64e9d0fe42b6 f4f66aef4ae1ca243146aa85e47ab8e1 47c35e001ddd44bf1f2cd7f4ede43a74 d04816fe3c531b66f647317afa6ffdd4 1f4e0613a3ec7b5a975be43df8325f3d 54196fe702cd0f5ba27ad5a09bb4c2bf 19df5aa5324f265d4de203ef6842ee61 fd850819ad05f139bd4f838682e34d2a 75d41ee15fc8fa4cca581939cd410ca c78d6f5c908e2ff1b05dfc874f00d5f3 91c1e885c5cb2ace3c01fd24534f394d 5fa144c3a8cb5234379339ae6512a12 fb8206abb1fde4c08abe79d18310fd73 f582d2315b6182ec6f6b59ea659e8324 209213f07114a06a2b249fd16295bbfb 24f5011d64dff5cf1c0f52f4ec8b820b c0f619a710e4cccd15c8f969616647e5 cab0b302a23381adcdcba7385a96c2c8 8b25d01f3fd3d5a373e9b20a29bc1d50 bdd8d8f6e6536c0d4d16452ef1302b59 804e29433fda9657746ffcbc44510229 291e48a99be418846c03c11657c96c60 da4003977c998e81f74f6fb7142d37cb 6edd37977522996a9b8e79aa9da22fd7 991b0f19022a0233bb97258c2be2acca 4bef06fbd04377d4d6e2030b844bcb2 5da7daeff2b24f23206066da291e8981 51f269a4ff48c2214de203ef6842ee61 8410626d841dca3218b14db3b83de9ff c19f98f149ee5da8b1bb46d2556ba67d 12b5302a8aa697a138b0c448fc291f4a 9b91a683da8c4781f990230c33049243 3c8dc4a3621674aabb29ab7e4f889a04 7a188a5ed26af4b360a251068e7dcf6d aa6a256cce6f8248b1bb46d2556ba67d 40752c807c2be827c924fc2f78f9cea0 4e6264af2f2c3e135a15c264bb25007a ac5dad64a080899bba2dc6b0ec935a93 7f8d800b3fce12a7874f0e42f84eb4f5 482ad82769d6b5b11274a3ddd0ec9301 b8905c60432aadddb4a8f569bbe9f7c5 320b3f040f6d5147ab87075c54b494cb ff404dc428ac3cb7102f71c17954fcf0 6f5df8d6d0d77039be286ae2fb79c470 3e233d02a6943be81c99ec30e7a67a36 143df6dce1d90696874f0e42f84eb4f5 c6bc9330b0a75d83cc73edf5d735208 c00a8f1dc19a0e5341213ed93def741e 5a3924c1fb78bb908dea00b146cfa3de 8b3cf3842a88136c67c16c85d5f8c7d7 2ab688c7eaa21bbd77e7acf84a1c4b6 fe7b7ad843678dfcd8c527d4042f291 812c1a3dacdce93ab4b5d7d0cd89b504 20286f6d7aa7a853b48c6de5e38e3312 1ce3bf4b1ee8c4b41542b16dedc43949 1442afdc0aade741c46814fb26e284d4 6367d10f3cb043e1cdcba7385a96c2c8 d19c003cf7dbf111543941eaaf04581f 7cf500d15ff839e92f35bf9c34b31609 c3119babc97b4cb374f75d9e92dd466 eb891509436863da874f0e42f84eb4f5 294283d06ca9a9abfe755e3418b63110 68e60ab321e4198ab437d385637c4e1c d7fe3d95cde66115874f0e42f84eb4f5 eab41e8a5c5fbdff151300a2afaaffe0 e0fc9177fe0aab2fb50d0c6a0c254040 b31884906c966b4fa54923b7d85aee7d 8dd5ad35a45f72a64bad9b80eddb4cd1 85ca7456e200e8cb874f0e42f84eb4f5 6b87ed6710a0fc8d8aae7c4db7244339 6e3db071ed95552b3faeafe37c2ce4f6 8b335b0be37debefd85e5191b992b560 996c90952cfff5b24baa0720a34ff704 769a3afbadaa92648bfbe54b5d01550 e5c3835b9f3ae3634a27b0b4657ac8b5 99ccd811a0e3052634e1b4a71050e6de b7f288e9187a72ea5d3426ee101e9f8e 1b00e4c41b4195807e1c97634acf0214 1e127a7ca9bfcba86df38a7dd1b448e6 5c54100c798dd681bfeb646a8eadb57 a848decbfe26833c4a27b0b4657ac8b5 973b398bbcc97c3fea9bd4954e1c8c49 194ea4b2297cc2ce90c91984b829ab51 2e447f96f152a33a7428866500a95dd8 35e1639eac2c9b96cfea3d4fc15719ea 6436ddeaa11efffdcdd34f38f87d26cf c6ef6b859205ab53609e2d916fa0da27 83d2a7a4cd616008e19ccaf2c9aa161d a58fb21bfa4e2f451ddea1d5aef06a06 8508ec8efeedf4a41ff8f5b5b24b7b46 1fe84ad7b78667e47428866500a95dd8 e177d4186bff96ea6dae8586082d789 a89cda9712b67a97d1e97c10e2464c2d c6e255195b9a8691ea9bd4954e1c8c49 18761559208a970188d5590328ce0ddf a53312711cd84c9fcfea3d4fc15719ea ad251b2cd68290a41c9545c3c7193d55 d4882179bb3a1868abc6b16fdb345d24 3625522559a753b78dd2cbb9124e6d20 24ab70fe2e704df45b76db9a8a523dba 8b57b62c984575334f89761f054e2019 860e632b27b9d2469f1deb04fb8ae481 8666e4e88dc55c5795ea46728bcdc15d 80d381a6760185d8c45977b13fbe7645 94e1c24d7f205a39779adafea0303e70 b1a080228ad8a7c6eb2c303a0e0d287b 4d9a23b8b75a412c82fc4dc31c839439 f2b504b2e368bee6d3c2fcae9650358c 3a68e8dc897fba988332d0d58794c3c4 c74dbde6656efb4eb4248d66f92b2feb bec39afc5bad2dc45ef003dbb9fb9184 e12095f9d33eeeb6711722c32e47b894 4719acf1c3e56fb489d39b85991ba25a 81170170d0cf36eaa5c5aafe837d3f8f 5c6c725a75645a305de2c7f7608a946f 8497e02fa1662113776d8bc79b9caa2c d95c49195e51912056f316a86bec8b19 dc3336883fae5239d76134f29a265550 a2f46716962afe72b106d5ef46e12c19 fa63720ea3f8bd379a6e43b878d5b335 6974280e14023bd6bf984c00fef39915 c554a1d4895b67b457f5c96598c7eb45 71fbcc8e65022567b031dd7b49fa6191 91fd8bfce87a0e7d847c4e55bb965ab0 176d386905bf227da56b564158d089de a9737969ac039c9323dfd33205b06c1a d6ad84cfb652f5dd27ac692756be9e24 379fa7ba7c753376619ef21bc094a137 3d4b80858a5ae3d694daa4565dd30535 d608bdcd8a87f3af7d2dc2b4ad06dc44 da15ecf40742e9e46d813b270092aa6d 5573567872450417d61794222ef2800f c52ab3a375bec0baaff407511d7dfc96 a3459aeef2676d7653b838b6058a8d95 7eefcf457d32b9b03146aa85e47ab8e1 e6fa4d02d2df5a9b1bb46d2556ba67d 55dce6844c2bb0145368bed34e5564d5 66fcc3b9b53e0564d619719db5285416 f5fc09f67a5fdb0142d0e83abdfab1fd 69c4fbba77ee7891a3c3bb12365964c6 2b1d09f8412f647899c0080e6a5589fa eaaeb5f4195eb55c1cec93449f0f44dc 47133569866031669268271e4d570275 a83a9d54e0680aca640afc71da6e41a1 b6eefb8fe960df93d4dd83fc93961e73 c521d7e4482fc7f7a716de2121565fe 203d75b8112369d66a4afad911312b2b ad0879d8dc9312b5c6cb0dfa2f14f9d4 605b56aa6a4c9ef49f1deb04fb8ae481 47a07536cc3ff3219c42421cfc900873 b3baa99a603abe4415aeee24c2916cad 92e3343250e181e1428cf87eb5ebe5e6 35e014dccdd4fed12c791a7edd1fdff6 5295994daf6e427dbec3353c29751fdf 3807ccfaad3716ec59d8a2cd36b3278 cdaff2fe98efb90058a8952c93ff9829 29af666e04825f66576378847ca0b69 377497ba926616fbfd7a80a80a3ebd45 73343fd92c286e80c570a3d482a3f588 c00cee4431f3c2db89d39b85991ba25a 3ff7e02233affcc350eb615eb69452b e708ec80c30086c36dd8881532b5a3d9 8b92073eb06f0365e18960ef54b079a3 e42655032562701e746ffcbc44510229 217966c23fe43ab83bde759c61eecdb6 707f009ba421780c2af11d59b11e0199 c46b2f2069ce543c4bbcee86e282d431 dbe05209a14fca8fdf72e713dd4f492a a31a0ca1247e23ceb1bb46d2556ba67d 7c23b6218a5041f36a2173cf491934bd f45d51939d8ee9122698fe11741f2ba4 94aeb294adb9be58b05dfc874f00d5f3 2a86437a50f1b51727ac692756be9e24 83c90f7b104816ecc748af2814b558c4 efa85ab5aa4704d299429033f40f0f8b 26bdd8852a95cd2d4e4ba49b2943b913 fe09fbe9e43aa889a08db804545b684 d7c58ed725b2449dc570a3d482a3f588 9bdb0cf464f5c65956b5365bdce185d 38b55fc61393e40653d45bb9e1743653 563d66d82ad3f27e324be6ae66f7fdf c3bbda10fd915342c24de8a3b5a07552 7dbcab223200092feb2c303a0e0d287b 968848dda6faa772a9c79146773bd1b6 76dc1a35fee28991a5103c3a2f33a5e9 ec8d021a7d3816f2e46fe97e5f3e2c98 7703ba29545cc381acf9e4b0d73d2434 ee0e9bd4c375f1e76c07231ab3c62b82 cc7369fee843cbfc8d1322963ff40d1e 70f91186bb61208c56988d12ecb12e06 806834c2b3c0bce7989a4a13be837150 94e216dc57731577c14e2939682bc455 6d96d3f9f621292b7eabc15108a128c0 d7b1c89328c8f0099c42421cfc900873 215e4b59683247378a3e8bd3a4e48433 696136ed6723971649f471d054f6b528 fe24ea1bc3383631370d3273b84cb8bf 5fd55e301007884c742bc8027e4951ae 9408002c21ae222b27ac692756be9e24 2f682d31b26398cc2218383c174cbd7c cd1d407bf8637a019a6249baee317a57 9b5077b81457cfc2986bcbcf53ae184f 94a0345790869eace074faa875b76f82 afcafaf311af722a5446fdbcaa866773 1c89943a24952d1737f4612124cea14f 884454f0d5a376c295ea46728bcdc15d aac813074775281a4163d08524f89006 c2d6e8710215b74c82689dfa8a7d7e7f 6e0f329ced87d7a3c9cfe13d43d30dc d74ea3567f8861dc182929c56117755a b91c482da95cf3055f41c9ba4474959f 5c116a0ca9477e44318f6eb5e296bb88 de55eb89c357cd5baff407511d7dfc96 7b00ce37add93f06ffbdd9e9972332a7 52492bb52701aa4eac05cacef62577ec ed94229d6bb18b783f351db9d8c0e76 3b662a6ae2eab330d7ea446be069b8cf 3750fdd9ef7f941d2173755309fd0db7 51b25c88fd90ae2b57c58fd0f9b1d74 cc3957e0605cd684bb48c7922d71f3d0 5a7635031cd518daefa33903c8f77ab8 9c50b10fb651e57fdd93d77eaf89012 70d4ca23f31a5c4373c03aee5e8475d4 d00fe7ce177483ed5cb65f793213d431 68925483ebc30618698ab31ac670e62f 80d9d9fc9c6138c4800a0120f3e757a2 6fbf3621aa1d3a8e49f0e3dd7767881 388c5175593b057a66bc841ba9cad258 3bcfc7f00e9fb213846571d66928670 77331918e10b8eacd07153997ca82b26 a8f225774d1bc8d0b7002bddf0942f8e 31f7c298ea24bb99847c4e55bb965ab0 6a65cd6bd6897cbb42df9eeba89a416c 4ce56405f7f67d3c38cd6a6c9620e96d 11e04ef8f037194919869180453a248 1e8c9dd30d54392856d301bf1319ad4 8bc922537410e1ce847c4e55bb965ab0 dded8a613927539cd72535fe84d882f0 b78f1dd3083c35a1a716de2121565fe 79a13d8bffa87b8ba8ae9698506bed5 74d3bec29981aaa0efbed58ec3ee6f0a 6c1458eec06ad0c147a67ad1fb1cf329 29a131678dfba5339a6e43b878d5b335 d5b2fe7ceeed1ff59268271e4d570275 ae93355992a29c428064e4301e947b0d f791188138166b4d9db44e8b39ef337 7c4b6e4ef996f109a2b4e6eee41ad14a 1c6c51d2d315d576852d4401c7cd1fee 7380c6bedbd13059eb2c303a0e0d287b 5d0d84924e96eee6b6162efbd23a9d5f fe8f54e34ccfa35f3ceaa5264772e8b6 bf0084fbcc74d5632754043d4b10740c 8480865aa92d13dd46687b3834d255fa cab7f319f0b3cf8e57e59e0ad2d11e74 f5dcf3213002301ee4326375f53c1686 5ae9838a4646c0551780f6e6561db9c8 294644520ccc2ce27795dd28016933fc baeb1f25ccc59698cca5d826f4b024b3 1b2a8980c17fdd97c897e89b561760b1 92fec5e70e9c972130327a4f3a474384 46421ef3a412660b428cf87eb5ebe5e6 99d12cf62a1b5cc3f4352ea917328a5b a08180869abc48b75b0cd10627918af8 13a9352a47bab8c98cfe472915a175bb da738558b1230b8288d5590328ce0ddf 404061915066692d89e410fd8930ae43 799d446d33e604f990f7927ebadab5fc 12159b68a31a4a7eacb3e49e16caebeb 19a72473173bf26ff7bc9a344bb7bae5 476bc79bd6fec6b088f5c2d4f2395a95 abbef6c2f909b9719ef9dcee729574d5 5f7c0e4368784e795dbfbfcedb83d61 99acfc63ec4f4ad09f97ca916781e800 7e6aa3337c2e52ff196f35b142096073 6cae5a0551aca4fdb39afb07adb2a544 ea491bbee7524859cfea3d4fc15719ea 3679338b5a90bbf5fd1d4880da709562 3583b3e2b8dab3f29d8ea13dd61813ef 792427f5da01907ddf48ca5a34c88e7c 461517433312704299986cc2d8a2c28b 340a4a4420b4d9c0406483a4cd65b281 d23e71adcc315d56c748af2814b558c4 91a124454518abb7f2ad837508eb2db7 61c17240229bf84581d9d9b1473043a2 667c662b55519e4650cff0d5bea1684 4c1c5200b239b15db700877f4d4ef8cc f61eeef9235a776073fab9f1733a68f6 94ddf20a9a6e035e85f7a3de54751f1b 45642e87b3904a1395f5b96bf7fdcaf5 f36e77f80e2944ae73fb6350806be955 810cdbec3687a16e122e1a230357df67 aa741f0f7784b791e99164b294d0c671 5eb2d085267142f26192896700aa3bd4 34b77143d6313e3f717ad2ef4c4af2e5 201fdafa7287d2fe8a55122197709269 e453412c14d47ef176dfbd72ad52dca6 a64d2249cbe63b5f9cbca1f73829701e 8c611205ba2d189068b6f3ae18faf6b7 988e1d7106b705d692336765b86c93d9 553a28a8cadedc9344046d4d2ed11860 71aedddffbb7b1befb4a964cf6619fc2 47adcb0683a3de6cd202a4790115f0c 110acfe04edbd526969f70ba15f2ef4f 65f78142a6c33a89ea7dce1646d86149 9746bffb188fa8d776dfbd72ad52dca6 e738f72e4c461e79cd202a4790115f0c 7fa94092d77b9f7877c1e07fcf5968a5 8595fde74bf250a5d9fd1bb6b75d9865 80e8c7703883a40c9e4614310319ea50 f39ff9453d6247fd5ad805579cc24068 a77c64b41bcc66bbca4b459ebb5d9bcb a2d4f32a82902118aaac2db0a60f403c c2b394de8407988bb538a15c6737824e 3b8c16861667747fcfea3d4fc15719ea 4af786ed4226705279863338881ed398 6834c4f307753dd1427c8de062c1497a 29f385987ef4594ff6b98f041a0ed52 3948782a95f084b92336765b86c93d9 d3f6fc016f72c08f1346991b5a9f4d21 ab9359cafda4fd98a726cf6fcecd0742 f5217865935d63c61f2cd7f4ede43a74 c746175e0993abc19a6e43b878d5b335 e70fa867da6276efa65562f270f71c81 d152611e5b14420460e26fdb6baad14d 90c5c6b05a71381cd97a7aaf09adfff5 320683da0d8bd1f394a6427195fa0bd9 9798a8da8fb83d63847c4e55bb965ab0 92e4ae4dfff684832dbef90d406185fa eddb01638a0c8be89c9cb44b983e47a 44d1e432239591887b2cd6c1f3acedb0 ebb7451625233d772afc5c10dbf83b25 943567584893fd5218591932caa46ff6 d841f12d8e22039f56f77b6bc6731cda 4f16bb70a2c3ca48104d2711f226a055 c4c9a32c9b1c3e515586434189043e91 408cdd476e8bb202852ae095a967f0ca 4e6313bce5ee3698909d4348e3fee2dd 6a7ce5d7027678c299429033f40f0f8b 9902e521bbd9ff3348d84ab7c5cd4c19 3176313945e3739e10508e1f7e97aa01 3fb4fa12a4718cdb2001fe4ad7074729 c4830136a2451f8f45aff212946058fc 176cea94ab59ce9949f0e3dd7767881 6cf0d9cb4e2d607856f77b6bc6731cda 8e06600c02764ee98aa3ca9bfd776ccf 1e047e25506b4885eb5715ea2e14242a c74fe97df26a078facae7037c88ca7f5 567e385bc5c40247e414f982f9c422f7 22078503d5625b985dd2c581ea62184 358bac5415f0773941d6cd38228b9631 ab01205090242c7277945fcb3f0ff3f2 8790881fbc0331a87cef2df31bcf9d93 dc27c81f14e3a89c84306f3bf0a1f2d7 61142394175b9e2b6a42e03bb7759e0c 37ea55e2d023f9ae9588e71e21de9f30 715699f07f8e59a1620e7892e762134 f7b13135feabfbbd91347c63d1dae43c b1b5e16d0c96f34c46b7a006accd201 762afb11bf41fc61642f9e27aaf0c47a 5a8c1f3f0ff3e5a87bb222726cf5a84c 548c6234fc7c787bfeea5c85a86089b5 fa3ed7b176b0794d5b4b8b1a2a708ac6 9b300840d96e46f08c173f7caf7ef0ff 6ab4ddc238851014802f537afffb178 5a6439bde2204588fc3f5f3afbd6c5df ae9ab937f6c1998fcc34b900bb2492e e964c2fe232f6c3e3ece64552d44d319 ead18d83024fab8deb2c303a0e0d287b 79284d5d39e4738394749f185cc702f2 ec51dbe499e88615a267c8b6fcca89d9 511befaedb0123cd96600832daa83ed7 7dc72dc46c46410168ac0d25269a2c67 25c736b7ca26bcb7bfccc00eb137e6ec 70af463b4a51f0819330265a9fff38de e51dc5bb6b97700747d2f4d1390fa93e 6a43eb690d0157bddeadc9ca0263db5a 19640fee71ffa82816581cd5751ca97f cb7bc049274173df73a75ef44d66eede ff2b8253ca3190d5d65fb76f5f0a1db7 849c8b9c0acc91b6ed4404549c4013f5 33a9a04e7d8ab8ce861ba49603151327 af09fac5d37072a3b830672ec83e0072 aa0be5a337baedac950c27aa880e8898 325d1e9be246e1644d44f5db04bf14b8 9d737c1e2872b322d2ff3af4b7716b6 75991571412e7ce74059b9174ed51649 7c4ed531d1ecacb156258bc213b2f9c6 de010f7468ceefc6fcfb3ae2df2f7efd c189e1768a4f291d4de203ef6842ee61 c6e36ffba5630fcd7301f2b895d332ac 99f00898c6b373d5eb2c303a0e0d287b eea06d3bf1f7ce6cb538a15c6737824e 2bf9436a79954087bc585c195913193c 48cfd8b4bc4919e6cbc6ff5546f4ec42 5ecf8b2c217b840fef5e991e1c32e94a 1d8adfa96dca83849143982c80da1e75 9c3810b8bc98c59426fa791c6af15500 3d396cf4279378456d165da625f3894c c172ec6226c1374c43a8324aee7340e cfd92436ff0d0779b011f864ecc25526 341905f73563a75717e4d86bbbb01f9f 491a1618a4891fc73d1328bfe2caad0a ba3eaddcf1a2e829fb64f9487ce62dd2 598f1f474f1cedcf33827bf0303796ff 55da76d97620d111e3ecd2d9271dad4c eca25540e280ac1c2d1e53cffa2132f6 2fe634902b6ba945b4e4ece897f04daa d1a5a246ffc956d68c841014ca8dc002 b5a1facfd0a023251e6afa6efa6add34 cff1998a2a2f1b5985f7a3de54751f1b 850d6a53ae03a9aab2640ff8dd6f4f82 b1991078d16797eb221fc8bb1161b418 eadf347da5aa8877da97052ff1f36504 afe3c44c5c05c22649d2623ea24fca00 78c2790d999b0f9c1403af6fa4ab17f0 65e21949247e36a541db137505613210 7d997dbaf47acf92866219ff4a62ebc4 135a15f938c824ff90e2484c52623a2 969163f17ce6467d9378da473ee38a8d 577acbe57ebdcbbdeeb8eb76c515e836 af964792bea4edac541ae04c251c7da 74470719a1b44c9a45aff212946058fc 705df680888e17ed8841beb2e0280e42 73e6d10ad309d831ddb86907b4b5f05d 953adc8c58842c1281d9d9b1473043a2 849f7c682fe9160d8c1a083ca347f005 1117e714368f61ee1fba2cab1ada6bf6 6cc258399daf767ae1942965937d3cef b9dde09099e081e65f76b0776a50c136 e9cb5c7799f291ce51b48b48046ec39f 9e49192ba54ab0fc92c108c58096cae 1e0c84d82fd52f8c394eb4a27c704b88 5e0e9215f91c163d7c513e87d3f6c6c 99ecd71c5103416e698137c717c4ad11 b3090ee38204289cb90142192ec795d 8b5ccc3b1eba2c9bdf921d807a1adbf d262a9cfdeca256e228ca1071b304db e951df8d8d2f6ebc96f165bae5f0d61a 7ba457477629beb8888d5ca4abf8aff 3efda6b0c4e70f7decdcd70d755bfc70 e19c3bb778bc8e9ed372f295778d1591 d8b92646ee0cad39866219ff4a62ebc4 ad00fa76c831858ebb4a6ccf078584ed 7d2194fb89c42da8ae5c852356538a5e 876a4bea4fc35db067fd6c1ab7f8324 313aaf9d79105fea82fd5ed7e39258c7 5b1ef304e7a8cebde255aabfeb1b2b82 c386c703e0f06a9b3a980283f1a7085f eb1b91b2e6458a813f6d8df212adba77 f1800fb3a9873af1e64f09105f9c8a56 6f61d84f9373f7c5c05557706bb20c4 b1c2fda8665fa9b19a6e43b878d5b335 77e304ed79aded1e454ff46d89fe2a0a e2ee62e09af461498d84ac376021f1 7aeadfeb93825b387b3c166137b0d772 bb79e21e85306ba19e51f6d13f6d609a 90bb60a421727973e3852f9948e4ef35 6ec6d6a7124542c1973b07394b864922 bb248dedd82b2f28deed0e4a55ad5dd6 7d7fe630419cb3e3ff217e1345ac0f8 85dbbed13875a3a2b90142192ec795d d8d0fcfc22f1b587308717e0a8b6a9a 873b7ab23a5c85e365a308491a8f2afe 3970dff155f0a8731aa129fffe673b3e cf254a334ba1af0aaf96425967f2d458 c48e3ab1cc01521cdfaef96860d73193 58f13d9c96d702c72d5c18abc132bda5 fa8af8f2bedb0d461f29de30ec1bf6a3 7488e965278a8b8524e54dbd7430a489 a9eda0d90297844cf92c4a072103d4f3 3c3161464bb86b2d3ece64552d44d319 1f2e662c92843dc9c083d5272d526845 ce5db5f4082b56b2eb2c303a0e0d287b 355f5aa01c79fe1458a8952c93ff9829 cdd493581ed137c5a6dae8586082d789 410b12d445e5deb49588e71e21de9f30 234541314abebbd02783b84b5d2d6e46 925c05dbefada808cfe472915a175bb df307c1941ca4bbd8f6810e1a2b6aa04 2570f4db767fa046760fb52676c518d9 d2f2ccde17f68aa6f0a2921fde94663d bdf142a3fdc97a23af018ffb2ed4ff85 f2192f3c34a877f1d01eaac447e2e9b aee93c0ff8dcf746ece2f98c4b805551 731b8fb370639bec2c8b4a1ac32beb2d ad8c4e406743c29a5b84e0ded5ffcc87 cc3ebcb96229bd325f8dd1b77a5d87c4 c9b7da24378152d082e68e57491bae0e 5e8ce498a93fb7eae1a9c234926c21e2 7f05275eddecedd06f3d18c7cf5f8b6 ae1a4397815849a682b5804533e545b1 83ca38043fa57a7de8e8428fe69dbbc6 9e4f7b6ed7936401af2bbb4162e3123 e5bb455414be46bbe62f291403035429 bea93ebc1fa965ab34292139f0435d74 9951a6732eb8438a79662f01dd94fba1 3a4c31888d291859f8e1db0ba8b72d09 fa18c9283443b67388fb22c0c1b2b173 1b3a8fa303445f3e4ff4a2772e8deea ece02b7fb2257df139bf01a73033939f 47ab7cf5568066fc86f968b3508ebacf 591d1b833b9ebfe798b8c800ae001b66 4ec2f4afebc5933638d037116a032a18 4e8a28d0659e430845aff212946058fc fbc2e96b16209642fc86577bf738024a 7a1754186937d247ad78ed9a26ab1091 e49935adf322de2f77e672c4996ec4a3 5261e8e52d1581d2398589a18564a81 1f7f1d7c3882f638fb64f9487ce62dd2 9e4cf06ced9331d3bed4193378c6c5c8 c2d6eb0899e5d10dff531859cd52e4b5 55853d0f4d5ba19745aff212946058fc ee09bd0664e0a02292b9fcc49a614e2b cd65ea1bb0e091d5a1ea2dd0a4cf317e 6c2fffad4d28822c1d57de40f2cd04f6 78e347c044ac743de2d4c157e5bf1dde 840d9078c31c188feae47c2aade5a70b 20e8718d1c6d5a665a525c461820c6b3 112743160fae5bd7ad83f267e8f0b536 aec5ec913aa2084b543941eaaf04581f 5bd0346e72866c8256f77b6bc6731cda 4c433697f371db56459e601c4b110252 d35a759e08855e24dfe2d17b28f48786 4ee0ed0c56540273a6dae8586082d789 bfd8b473e1a8fd650eb615eb69452b fef52f113f59137dc541ae04c251c7da 227db3047b2ab275b3492776d9bac18 d8d49c7e002656aab572a59093f8c0bc 80930e10f1f3ab9358401a911725e987 75198f9e1c5a075c1e6afa6efa6add34 36fba9c2f4c256dc4387c5ea62cbbe8b 2f0acfd47622a8fa419fe456f622e6b2 22bfa8eb9cdce735d90cecb09ba6f1b8 4a523f749fd08ffa698137c717c4ad11 cea154f7fb5351bc26da67afecb7dc87 2d189012a5b5a64aeb5178df7a9bd7f4 7773c432613c96596cdd81a51107bb1c 70e4afbe0fa15ef3bc1624bd222f607e 3899f8b55ec9f1db8a1ec28cb7d97871 c8f5e3891a7b0d1188d5590328ce0ddf e64611b8f590d12d2ae6c39a82bec2c9 8500272b43352ae6f844b7e844d01ddc cb89a617351ec4c4eb2c303a0e0d287b 5adf37321156a7bcbfe1cbc47170312 325c2da58c641c12e3bdba9430565083 f26d39cd431135cbc92e1912af872cc 9115745cde6f30c67f141c9abbacbdb8 65c55828d88fd02da08632bc2f6881eb 43f7e9f8ad44e8236557d610dab4f1b2 dcaf4238da8ef379106f24d0bacaba69 d9e8f45b4cd81f0fd1c387e16c0a41b0 3658be4cae1c98b84a51f4b900f5eb50 7677121309eded5fbbd09450267d17cc 4944328c0ea895c53f464857aba8c0eb f2ad53e569f8ea255b9ed5fa79e9ec30 8e4fbd72746ed71c20d966555ebf57d2 db01f2f8cff7b7e1c517f0fe59ec7ee c84cc7d62a9112f7b9d24c378f086d93 147fd27a40793d7e9bbe4f1047e9e5fd e27fc8b68996d205f650f4803ec7962d d7fc7ed59558b7b3f3e39f2e17005efc 4690184ef7ea805dfdd29529d1a15514 5e9890e2f4cab96dbc6cd96a5e6546c cdb70178e2562e7a80ac63732535bbcc 2e4aeae716401155bf9913347b9df76 b2b616535ffca936c9189a1f098bd081 50848665c2b2d6f491347c63d1dae43c 7e35bae76c10fd7968cdca3005c2cffc d3ba52601a902f407f436bc8bb8973a3 4bf2dba91007f0285ce1e6c1c914b7a9 c600a1ae674cb65c335aeab2c20177db 30f5a0395aa8ce14d152039c9a3ad601 d3de6c76e6d96f7fc5fc3eafa9cdfb3f 98cbe2b3e62879058e3175d49fbb0f30 268110d849a3aafdec2f14500e179e92 6b72a64f1a6a745ec99bbfcf5650bf52 750f5d76abca0a05bdb69bbe5cb6055 d188b20659011142c8067f9682b92f0e 459decbc3c6bb150ba2abf2ecc57eeda a6d232b7443609fd20ded1536778b0f cc4f56a126353cd81985296f8eaaf6ef 486e953ff691d414d8190076748f5b20 e687e0074b0dc5bc470938161c06eb7d 35857ac61388f9fec2912ef1a1302821 8ff4c7162259b1d5cf816caaec167fbf f5a0bce67dca5ccbe3de75b155d3b403 933382c8b6cc6e24f0cdce9bd16b6c9a 48a02e067f83c803473f10e6caaeca56 a2e82524f7920e12d3ded2945a65f23f b25e91edf5510306eb2c303a0e0d287b 3173f703a1e52d7f38d037116a032a18 bc4ab06257678e8db25f0198c2ecfb0e 246335e0dfc3a0ea834ac3b5e36b95c e0ddb444604f573d48260190ec06324e b1ed34ab6779919510f652915f26dbdd 19b29e973ad05c71e0a1fe48a8d148cb 81d9e9f072f73e42c71a2f2273897a58 a49537b465965537fe3128d27fad4d2 cde9d2f6302fda60cd8d9984f3ad2fd7 2defbf22a2d6c97d48f817470e1b499a 8f9e62cf323515c4ca380c8375c4cdb6 b9d541ece25778e12783b84b5d2d6e46 bc8cfba04c86ab537117d5d39e7f9235 bc9448e22c2379d487f08fb94cd2785e c3648d0cd141035428cf87eb5ebe5e6 4fbc7c634bd4488798b8c800ae001b66 583ef94812afcd26e025e00c738da634 d939109a33e6e2d175517226b23c384c d188656d279f4d8b94daa4565dd30535 f9cb8429f822b8469ae563bb6367e47c 337381e4b5c11c4f8c9312de4e9cb8a8 b0238a48839d2b1b64ada2fd6418de4e 14b8bed0391dfe1dfa808b0b90ff6379 a554a62acf40e578cba07fb2573fff75 39875815bdfdce2193b1b9ed21f1fb92 3cbb8096ac9bef3533ffceb8a4acbfe1 7f81a9c7137c855cd03428b7741c342b 1e3400a7a099823371feee345701e9eb ab52de94b627af794c0b957b7129452a 4abbc9f36affe95dbcbc3fd6f72b94c d651a1f3e02593772b23aad8ba1ba03a 2d702653fd65092cd3ac8c766eb7aca3 4869abf7743f09b71f29de30ec1bf6a3 55cf3c1207e421a29e3e34eaf1f39535 99450835aba6e4c4da2951c4977eb283 8e1778cdc0bfec3e18693dd92ffa710d e72c59779e1a85f05308b39b1b1978d6 630bc6dc892aa9bc642f9e27aaf0c47a af07125f24a17476eb2c303a0e0d287b 36c8dc4d5bbc44c87ce8c809505eca2f 5168b7d5df698bb2852d4401c7cd1fee d6cf4f71059b98a13d9a3c3392922df1 395471e88200756d88d5590328ce0ddf 99b9eb5e1a7dd3b9e4614310319ea50 63f170670881b2deaf6320700e3cf173 c48ed09355e7ab34275e12937d8e1776 59585673328efdf2efa33903c8f77ab8 bc09ba292bd9e684610faa04834ad4e6 b10850ed8a61d4dd148bc340784a8c1 782b29db43c02f7442b917ff8145b491 2dbe5ea82a45443b71f3cc81eb6c076e 1a2b1863733c2ca65e26ee427f1e5a4c bf8995f756b59102698137c717c4ad11 ee3d521376d89f408c954439655c356e 82242062558a24bc97a9c690ec97cc81 4adb08a459076889574b6f4c9eeb8eea 75947361891546713c3d3b81c7ce4f52 4b63a567e41b63974de203ef6842ee61 2467cd9f4ae70875e26aef76db45b56 44b4972b96604e08a2fe1981a00251e0 38189a2101b5e6c3da32b7c218678a0d b26565bf67d9f61abdda868bb83c524f 81358250f7b811e73c70f7afafd32393 cfffdac8ecda7575de208b4547dba0e 2212a794bfca650384d5ba37e7a649b7 1f883bf1bf0f6bc7a993db466b6d73d3 df575767acf17d7188ca49762bf17cdc 56e2b7332f9011b28fecb9f40039f353 a06a7f4b82beb87df6fc999231665677 b9bf493040c8b434f3e39f2e17005efc d25531bd6b7b8274ceb0dd441125df3e bfa34aeefb04b4c2356c09782a9de7a4 c0eb62cb64ee1a31f29de30ec1bf6a3 12e012fc28fc8d784de203ef6842ee61 1dffc8919a03627ecc015b9f8906f7b4 4b501c73f3cb02c63438e17bc657daf1 15d805635f77420ef724cdbbd599557b 410c336c78ce00ebe2f628ca3c07d462 f46a84c0b15f8c0492f7f11d4bb65374 d9e044a3cdd4359110f59460c26e963e 677fb8c312d9c5642712ffd807ced208 5c0e6663c131610a2c3770cecdd58208 2507ed5c9eb161569a704df179502ac7 d76ad4ffab09bf27f3e39f2e17005efc 6dd448ee6a2288ff5a680bf43a0499b7 e8b93c451e4278277220891f188bc420 5702b12bfba4b9eb9223657c918f0a45 f1d39ce0d8c25403b4caa017b521f7 30e45246151fa36a9cccee214bcb0021 4818277b913b682a3c3bd8d7abbd3fc8 68f118940e88df383ac122c0078b9b60 d3043fff20dad5c41dc762869682f4f e86aed19f3272118e8340a4561cb4030 73be7ff2caea7fd47c173089abc6401 f7f62b9657aecbe77f00b68989ad3ebc 1f1fb65b78e0f6ac816e21307f82dd39 87f68a979aece6f71f29de30ec1bf6a3 11d9bfb57990eed6d674557449cdc5a4 2b7ce6a0492cb7818c0e3fdb2a94c91d 47130fa6563a4712af6320700e3cf173 89ca399e4ab129a60014fe834c82238 d3eaeb69557892657828ce3c6ecfce8b 9a9bd517b3d9c60f9e23f6fc87a31098 a668bb9ccffe8cb627ca60ff81c74bf5 9c19eacc8033da3698a97ddfb532e08c f2e303d85466a0fd88d5590328ce0ddf ebff6d8111c67fbdb52763715f7a6959 e64bb04b54022e708d7bd537eb907025 8db75d7703406e81e4f8f268ed99350e 263eeac4bcfca21285f7a3de54751f1b 390de3a1bd0191c881d9d9b1473043a2 7fb484e04409f7323f3cc56bc9bfcde3 8742b1778f2a6e7deb0cc8797c62d3c8 5bc0bff4ead8277b421dcde4f714e772 355a85d0156984c75e559927dcb9417c bd4614ae4c709729f8527bdfe6691c9 6a541c64083d2bb9c5408f4f799fe72 4dc17782858aab6e3308cf743f153e29 1b86008df6322c5d438d829603922fbc 67da87349baf66e3c1ccec171a275967 8eb481ee0fa4f55bf9d742d7f0246fb0 4765a72ac8a0eec3993eb1c02818be1e e969147de0934040b2533fe4d795f40c 36123091df7600dab1f22ce939b4db68 42b1b67e53c9a8ad14de76bc030c9322 a02fb3d1e8e9d34ffdd29529d1a15514 296c315f8f0c7d5d87c63d8b3018b58 366c8a02305d2a0f4c9b81664e789bca 77327d5b8b56083415a0ff0aad35ca87 88cc060aa20b340611b3e656ab4bd115 25677ae07e0257955dd2c581ea62184 2458e4e41633c95642f9e27aaf0c47a e3fe6f0e74fa641c2247d987054751d2 5b542fec3cd96c872e28b2b96a4985ba a4cf574f52d4e8d4642f9e27aaf0c47a 2ca06dc9165d4cdf5fbe3e7e4d41e98c 733105c0a74ab0a2b83ec978f31c7f76 32dc0308ca44f256ae9e3df35a893c9 ad8b5aaa3eb9f2f69330265a9fff38de 1c974cf5f4053701876d2c2355e426da e74a9275bf24d3e47dd35385411db37c da73f51f17f0a8bfb0d00cfc385a039b b4a2778eb3f3dc55f877f04737ced5b5 b820d42d6b9a08a03cf31426f0438400 973d0293e286c80bf3e39f2e17005efc 65577c66f22fd84d6eb9a4c3b55eb0c4 8d7af39621a060ef6483ed11b9134e43 b6ce7ac71fd3e33617a96ef097e71178 29a895c9367516c1de08ac29282054f6 d8ea840a28472e04954c06f15cb2b5c8 1d389060e50915e223676ae79aaa08f7 c83910ef0a35953756e0cfd6e5118fc9 10a57262251f03b28b27d51d442cae1c 128ab8b74fa037597fe03c0a35dc1886 4a5ad5b71ce08abc687e743787d2aa6b d0d2753d2d3e6d3d2752699ac7aab1 6d2c856797bc246898f9d8529de7066 3bb6a5deec68ef77fee64ca302793912 c1825c8ddf2f263ed6f64c5c0b0cdccc 8f3d3eb663508afb1143e3955ded9f0a 44c07d26323910f4fdef75f370a46dd5 d350936cad33863bf2ad837508eb2db7 7fbdbc374263bc0e44fe68fe7fbc12cf 39b7b83a42af6d83ad0582c282e8474 481e13e24905af01ba1e7c529a2559b5 fbca0e2a510f2b3594daa4565dd30535 2c0b850acd7d11dc428659c2b5124968 58e6243d1aade364186e889431adb691 269ada03c39d200498a4434c6f79eefc 8e7fd92d91a9974a2d220e1baafcedd8 9f34d1dbf06b4d989330265a9fff38de 5d48d75153eb221b476c772fd813166d d0ed110df0d56672b26ad4ebd4ebcb88 58b6ab987872ed42f36dc23129445ac0 a74f3cc7adbdaad2a072c5ad67cebc91 23c31b1c25689d2a7ba04de7d6d93ce8 973a6d80a9dfba962625c670c48fcecd 3a71bdf6dd3e42bd6d08077e9257af3 fd52c80ae21d19251e0d0f6bac6856eb 767cd95abc076d3af9d742d7f0246fb0 68dc6f43a895e7e143909b9ada90aa22 d25d9a2bf4820003f3e39f2e17005efc e853f137948055b188d5590328ce0ddf 27f0d2bf42b0e3374ed242fafe836df1 2005e1613f1a46b5c083d5272d526845 df15e931e12c32c38a5d92735846f6c 5da69ec4bee76b21f3e39f2e17005efc 89f52a2a136ce55728ba119bc0e1c878 42a8428a3d909fd64de203ef6842ee61 950ebca8ad7d94051fba2cab1ada6bf6 141b2e976df2d4ed4ccd729f8bcb378 5cf29e4dff6535c394eb4a27c704b88 d14c92a31d848b1371090852934fa2c1 33f4d31a559bc07fc1ccec171a275967 6de5985910b222f8afa96d6d0eac8962 aafc192d33956391b82d6a0b1fbc7c80 e0190bd315d8109f542c6282a2a9329c a7fdfc15268ff4d68413778731d6cd28 340bed24d1dbd33ba9142e7277ee08f1 7ba19c8354c66edbb74e6fa236ab84b4 6fbb26f9372ee87648192cebc0015590 1b4268c4d812e54943bd01645155d3ee 3e408017d8b03ec5a5e52d43f595c657 16f53391dba14c9829ebc23acefb248a e3a49772e431fa6a4911559f9f073abb e02d395707464e692ef42ab47be9662 49861c22df11a02b910f44c20a5d1839 29bff2fc529f82d676051c4eae3f0a9 e28a79fa4880c3c5b0df8f7e348f816a 9908b25da1e19480b51edc80d299de94 9df836e5ae285e2a5c5cb89ac1b518ee 6a7da232456b16e852f03e17d84c12b 58d8ded0bcfae37985974f8a4d3be0b0 21256efa0a78f86b4448fadc60fab7a7 df0f90c6abbfeaa0255deca950ace5f9 6c9020061d71b190a4755e7555b1e1a4 6c00d47d1c8b81fb90142192ec795d f65e78e69d1d5eac465721b273720f4c a88f4ec8440e412c92336765b86c93d9 5ef0011ffbd75eb6dc1a42a6163b8fdd a3f6f17c5febd688cb5e9b11b96f53b9 da675d2149827fe56ba3edb0853a984f 4d95b6e392c9d95981e1e9063401fa72 2e19e953c01ddd69d5bb7fc09b61862a e16e0925ab21f2d3a45eddb1d745bdff 99b36b2d2174f061ff8f632f1c753803 1d6d57f489ef47fca716de2121565fe 85481518c0938a6eb1bb46d2556ba67d 8fe646e75e9b99bbb58435942a1b4dac cc03dbbf18adc483bcf964ea747b39ec 57658278fe1fe0571711b4192259c7f2 5a84b0529edd7101d3ca4877ecd2c01b fed3590199534e0f300dee22a3d8ed99 861048281f4507b45935a8bd0d2fe1f3 97dd02cb0afa088d485fd5204f716152 611824dac2873f5b59f280bab375e8b4 6d0c48b62f610ec0b90142192ec795d 9848322f786fc6d9eb2c303a0e0d287b f7220f2e7b880c2492ab202de6ff04fa 1a9bc7dd64da10f344ebbc705ad8c07 dc38553436df0e4bb129901f80d24b7b 79c98bef5c1870b64c55cd455710ca53 de0964254f4599e8666f23db664db86 5456c7546e3f3c3d9c5408f4f799fe72 b4f254a5c49748a2db2b485c26c9f191 3e5147f0fcca2ed7c2920de4c5efc2ee b3aa94c4aac0534ec34b1b7198ff8321 9ea697394812ce328b68234f52d97099 f66bca54b97bf719b1bb46d2556ba67d 92d7254e73fdab7289c6f1079da7a8d4 6271c832e8f629b73c83f6e156ad107a 50ec883d9c1f715614edc3c9b2489f4 ecbfa1faba336185bc33bb3e21836dd7 6a5405246814b82281c5ee986f4484ec 933aa8e54e97de9392694c864c93195e b77075c46e424ce9eb2c303a0e0d287b 7127c0b5fbcdbf21adcf800d8263e5d6 853edd2a09215d83aad3e4869fb7b555 63d91bce2f3d26abdeb3e56da26a6974 447a43ec44a3e672e7cbc4e41c1d1020 4fc0f4f2d29a463cb1bb46d2556ba67d 9e653d3b0b8f8c6b28f998b2aa4c5983 1b5e114692abf9a5fdbbffe94281448 fcf21e1176459664806b90e3f08c9a28 176c629c93b5a1f73cf0b8b75857cc24 6d537a1a09de6b13f5678db9e73ab77e a88fa5daf540c14a4f6190a680acb783 d10cd8bfe5eb85572aec0b439528eb79 7b200ae33e01eda467fd076ce612c54 f83474c31e7bb6bc1022decd5ff96217 eb01f5a73f0239a348c096ae17d885c9 b0e8c331eacdc9bef3e39f2e17005efc 18f650bbd1068f0589c6f1079da7a8d4 544ed8713bb6b697846f1b9d68a7eecd 8687ac78ffaa38584de203ef6842ee61 14fff3ebab1e144d6b77971fd22cc80d cfa697be9ee40b5357018179649e2bb7 f4aa1a1c7216fdfcd3d8a17e1b074875 a8db7dcc16750af73c83f6e156ad107a 5af5aa92ba49930c3f41ddf3713a131 fc71778c7daf92e49786591d9b03a096 f8cf09473d99d5ebfb7214357e073eb7 eb214ca65059e8d8fb8de648691848ea f6288a9297948fdc67383adf153b22c5 d0e7102863fdb18fb90142192ec795d 9119eaa9b5996cd3b1bb46d2556ba67d daf5575e801967cdcefe7473eb81422f 925f3de9b1256113538505dcebf57ab1 abee560e2dd721eeb129901f80d24b7b cafc4d2198b6531bd5527b961edeb7bd ae8ccc2a90c7d57ff107f18bfa25e296 955507bbb3aa0b97b1bb46d2556ba67d 51537c56f71ec82acfd826dd468a5497 1d6bcf04874000a9ea96bfd37cd8bdfb 65b75158bb049f5af647317afa6ffdd4 30e536833dee7cd8a9d21767a2141a63 ac52cf0b598e930ab38d3c03866c1379 7baed55a551f03efa27ad5a09bb4c2bf 9b87bdd824e68950f4a06efdbafdd7ea 8bef56b64003be1789f903fb361de4ca 396fb90a02afe669258bd22729297863 df63e149e706e3741556f795d265590 d4ffdf377bda1aa5f650f4803ec7962d 43bc1dd4f4d7f07a84f7e91f7eafd792 2e4adc3992a773b1eaac92a15231622 332d072efa23ec9ae89f0d5485194c5 8e431fd55a7aca0b124dae0a32996c4c 5f5490a8a7af2898b1bb46d2556ba67d efc4de2b174c736dc99bbfcf5650bf52 571a2485fb205e5fa9142e7277ee08f1 80439bf303734b76ff37346ffc41ec74 686a53aff9209c258d25d8990968dc68 787e381b4a968a55af5574caf3b1433d 1b2e790b7c57fc5d2a08194fd3f4120d 337531151abc41a7b390176e65ea3f39 a35aea08a3cb9391fc1bbbe626c79a7d e2446b9f4b9fb179f525bb02d30fbbfe 1b1cf4f2cc24a2a2a5895e3729304f68 ff70051c32217b2df671917093bd361 6dd917d73699da0d255465ee23ab5b12 b00e1af5a8d0674efe9d6d96542b8ef4 a8455459a7b93aef9e5629b793f22d35 e604463b6c45712395ea46728bcdc15d a3be3018a002bbecacd548a9de859b7d e8b19c46e5beb3823b12275bdb30c153 8f2eb4f44b95da78639e286420a03c3f 393f1f8b2c656484a7ace102781bfe8b 4a0cbef5bbb19d840b6c13818321d0e 4cff5eb82cac0f56b7b1411b0ad3bd0d 4be2461bad10aa82a875c848d0fb1664 7d3eb0d2de5c5b8672a78a0929ee12bc 502f848385718cb76e1f79eab597a3af f84196260e558ff5abb59ca95d19016 3d908c2b4f5812702fc668af6d3ad0ad 501154d9504b62b9da27170f98feb295 a6d50000249d71cf70c8aed16b49b164 4af6289f159094d21197663c308adec2 19cbb5d8d74f8813e60e51f454cfc3c9 8411cba605709e46c26de8baaf779d69 7915c47b72e6d496e453885abe85c310 57a8ccaf2eb8d6a3924d278e5faa7137 3e03e3d547d6fd9e4ca65624f18b38a2 606b512701e71ef6fb80910115d3c39f a56c3a66dbe0ddf4a70cfb3232f40c6 62255074b0df6a115fa2a5df3ce5bc40 dbcf36d87385eeadf64bc205d76349ec 78fe059e63f817a296f6c44da3269880 5b86640d3bc2e43decac3f40526a2cc2 10fe40ebace4de15f457958925a36a51 819a7b31f925a302474a33db0a80b327 c77c30796e80cc291edf59b9c77b0b75 b7d6c9e38884b121cf439004777f8b49 abe4b3c405e1cc67bcd376892ed4f5df 97402ccd78c061251141cd3611961b0 27d5c5d0dec7b209124dae0a32996c4c b998ce1c2a335d80868bf275e08c687 9a8c57edf56dff168a76a2dc0f9ed02b c2d83f3b8665638c664b3b9b23ddfcbc 1e3f014e8eba0db7fa575e221973fef a646c8780e79d091cd079e2d482994e 99102724561012729ebc23acefb248a 57b3fb45b6c484c8cd9052ebaae01826 528689641a6562e7bd7a55708242b1bb 704aaee1bba4d220179fa02faff22219 f2d7625709d7bdaea6dae8586082d789 e456eded209aac05a8b0c9e2ebd8eeb f89a76e638ecb1aec79d3cf109867c13 df8fdfbda6e15f38fc740ecd0dc695a2 2de6a45649b392d2f7051f81d65f99eb 86e404c548d965c6d28357d0413f2f80 9625f56fdbada3377220891f188bc420 713861441f4c7110b7b1411b0ad3bd0d bd04c982ef479f160014fe834c82238 cfb1882ac34b81d8a357368f9af15b34 406e7646609bc8bd8a53c9119bc523d3 11e101e938688081d3b936925082270f ec97e9975c94f7ba727ef88d634f1148 118d43609d6de540fdd92f489e57a4cc ec779915957e5361ce000b0a5d25ebdd ce15225b24bb4ed2742fb0ba5ae222f2 9b93b845578ee8a20c10ff7bcef26d bf47c2f0b5d1c6fef37a9c459d3dd62a a4d1ec9841281a3cd1e97c10e2464c2d 7cc3c41e998caed8a70cfb3232f40c6 fd488ccadbc89bc7ece8bb633fd3452d 9e6d54edea8f2adb41556f795d265590 3c5d0c6c971d39aa70cfb3232f40c6 9c41a1bc835ab6d81194cbd9c0740031 aa0e4a79926c68f9bba1d36dfe35a060 6db27ae2c9cf722d1743d8ffcf66c439 8e0e3c0c19d38ea1696cc0dd628edec7 f678356e3e61872a28730ed49126392b a45cbcfb2763423a6540eb087d7e15bd 7bfb0e8e74e1bd2bbe7ca2216dc1576a e23e4845d3a990d25fc186cfb5f359d1 e0b49aa20792f2fdc99bbfcf5650bf52 efd174efe9130399be7ca2216dc1576a a492984be2c03294213a43a25cd73264 d55ce64040e0b3e4ecc9205d69d88837 e2e0d0dbe736e3164947b319a9e09fd 1f5d3310cc5f9346f1d7b2f32e8fa69 5a4e0cb4562b2e0ef647317afa6ffdd4 77a02f09cd22e9f879863338881ed398 3216e49e5dd304956bed41d0253513f3 ac8afdd8c70178abf0a977ae17a6b223 c2d71194be5909a75f71e6fef75fd750 fe84b8e3bf172880f54a2210c7b2aa25 1356fcf0ea4a95bcbe7ca2216dc1576a 88ba72c3f33343ae9e6f7dedb7e5f584 997054b7ea21f5829588e71e21de9f30 efc2b7a0ab3828761194cbd9c0740031 6b7284918634488da1d10a704f5ebc89 2ceb5d34a15b73393302308333adc4be c46aa66acaffc37af4a06efdbafdd7ea 2c23f32d6eaac557b93dc42f7dcef6a 8877086211c9976cd27beaa6c9701d39 3e97094bc123e370be7ca2216dc1576a aca0172e1b301b8b60c68a106ad561fd f15c255128f2c9c6b7963b720a430c5d d9ca42c1199196a8f8785957fc1b208 c318af82802fdcfa9863712216521456 5b45a9913b90c67f8e2d64007fd7ea91 907c179103304ce8efcba30d0f49b70 c28ec663f25bc97de8bdcdb326f0e57b e219390e6eb152024d0a79ea230a0577 6067d0e8dda0b78c4628573ed5739806 c3d22ce3607156466ac9421934926ab8 2a9df36f9327beb27244f3b2d7f5074d ab6724e38aa593602a99899765aa8dc1 448148366050fa2b17dccc00bc197b9b 1cd39434382e08ab8510ad9ae6ed36b6 31230e9a2e4d7cf7cf291a4a9f36cece e50e4b01588116c69eadbed0f2d15378 4bcb45bdbf0309201d2d2f3b717d35d5 43ff0403af233774a245ccf922912805 1849ee33d087288ebf473eeb55ae85d0 30dcb4eb8ae2163792e235fb0f1931f3 48a037d4699261d3b274bf54d5e89093 7be86a514fd217dbc91817453f80389d 3bf976118908886611b5f34c8a675124 75aef09a516f59da49f73a97204d432b dae38d7110c4bf252f84cb7932f866fd 4f9d7b905bdd80792b786ce268ccf414 8cf34976d5cb61b0f8901acdb7280141 deae1ec7a6e340e7c500d4aac3b87ab d7755acf25baf326e625a0837cc45a0f 12900e06f0f4ec9e49f471d054f6b528 d8a72e6a9f34ee36b571511eb0f92ed9 6fd0071445c70e9297e6e890ac2fb198 3c041c05395b37782c8a76ae283dd98b b38a6ed1bb88dc6ccd57b018370ca909 9c4d83025107322b2aed6a9a322ced74 2722150ea003017d7fa575e221973fef 69379ea3029bb2f6ee5140f12d845ca9 14241942d79f89226587cb13c78fb9b 5b00c251f971aaa437a692cc86ebcb7c 99c19a1c05dea30454e3de9fd2bf8dea 4d5d231a701433110a313d673794913 33d7cf0698dea49acaf9c991e0bc2cd c04df151b8677becd8af3a076c923cf ca3d2f904f53f945d02db4eaa8d7ba76 2a9b44ad6d6200c02b3fb35c6618f417 ad62a23a7de3965f94daa4565dd30535 fada91842e68dac015ebc00dd3588bef 6737f75bb87e3cc0847c4e55bb965ab0 a7f5b96f138649c6bc30e923e47d8bd4 759c3321f016c1cf7cd1f8dd6fbce8fb 49fb20c0d5c84e2757920cec1ab34b29 48a584c9080f7495b97c9314bd4647d5 9ac6483c969f1120b05dfc874f00d5f3 8a3a23f85c4c4fc4f2ad837508eb2db7 f193688fa17197f7798832e32e32aae6 9c92fb3f3a4fbe8cac932f3ba44b77b fd13e9a9d84bf26266d02be2d9ba0945 27540cb221ffee07983f0317c2c6f92e b044558b01dfb98d3d8de7c49284d3 bfe67a6080ff5bc17ac1d5790f13a22c ================================================ FILE: AutoEncoder/dataset_info_files/info-pix3d.json ================================================ { "lst_dir": "./dataset_info_files/pix3d_filelists", "cats": { "bed": 0, "bookcase": 1, "chair": 2, "desk": 3, "misc": 4, "sofa": 5, "table": 6, "tool": 7, "wardrobe": 8 }, "all_cats": [ "bed", "bookcase", "chair", "desk", "misc", "sofa", "table", "tool", "wardrobe" ], "raw_dirs_v1": { "mesh_dir": "pix3d/model_align", "norm_mesh_dir": "pix3d/norm_mesh_dir/", "sdf_dir": "pix3d/SDF_v1_64/" } } ================================================ FILE: AutoEncoder/dataset_info_files/info-shapenet.json ================================================ { "lst_dir": "../dataset_info_files/ShapeNet_filelists", "cats": { "watercraft": "04530566", "rifle": "04090263", "display": "03211117", "lamp": "03636649", "speaker": "03691459", "cabinet": "02933112", "chair": "03001627", "bench": "02828884", "car": "02958343", "airplane": "02691156", "sofa": "04256520", "table": "04379243", "phone": "04401088" }, "all_cats": [ "airplane", "bench", "cabinet", "car", "chair", "display", "lamp", "speaker", "rifle", "sofa", "table", "phone", "watercraft" ], "raw_dirs_v1": { "mesh_dir": "/raid/zybak/data/ShapeNetCore.v2/", "norm_mesh_dir": "/raid/zybak/data/ShapeNetCar100SDF/norm_mesh_dir_v2/", "sdf_dir": "/raid/zybak/data/ShapeNetCar100SDF/SDF_v2" } } ================================================ FILE: AutoEncoder/encdec/DynamicSampler.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data.sampler import Sampler, WeightedRandomSampler, BatchSampler from typing import Iterator, Sequence from torch.utils.data import Dataset, DataLoader import random class DummyDataset(Dataset): def __init__(self): self.training_idxes = list(range(1)) def __getitem__(self, index): return index def __len__(self): return 10000 def get_training_idxes(self): return self.training_idxes def update_training_idxes(self, new_idxes): self.training_idxes = self.training_idxes + new_idxes class SequenceSampler(Sampler): def __init__(self, training_idxes, N): self.training_idxes = training_idxes self.N = N def __iter__(self) -> Iterator[int]: yield from iter(list(set(range(self.N)) - set(self.training_idxes))) def __len__(self) -> int: return self.N - len(self.training_idxes) def update_training_idxes(self, new_add_idxes): self.training_idxes = self.training_idxes+new_add_idxes class SequenceSampler_Train(Sampler): def __init__(self, training_idxes): self.training_idxes = training_idxes def __iter__(self) -> Iterator[int]: random.shuffle(self.training_idxes) yield from iter(self.training_idxes) def __len__(self) -> int: return len(self.training_idxes) def update_training_idxes(self, new_add_idxes): self.training_idxes = self.training_idxes+new_add_idxes class WeightedDynamicSampler(WeightedRandomSampler): def __init__(self, weights: Sequence[float], num_samples: int, replacement: bool = True, generator=None) -> None: if not isinstance(num_samples, int) or isinstance(num_samples, bool) or \ num_samples <= 0: raise ValueError(f"num_samples should be a positive integer value, but got num_samples={num_samples}") if not isinstance(replacement, bool): raise ValueError(f"replacement should be a boolean value, but got replacement={replacement}") weights_tensor = torch.as_tensor(weights, dtype=torch.double) if len(weights_tensor.shape) != 1: raise ValueError("weights should be a 1d sequence but given " f"weights have shape {tuple(weights_tensor.shape)}") self.weights = weights_tensor self.num_samples = num_samples self.replacement = replacement self.generator = generator def __iter__(self) -> Iterator[int]: rand_tensor = torch.multinomial(self.weights, (self.weights > 0).sum().int(), self.replacement, generator=self.generator) yield from iter(rand_tensor.tolist()) def __len__(self) -> int: return ((self.weights > 0).sum().int()) def update_weights(self, weights): self.weights = weights class DynamicBatchSampler(BatchSampler): def update_weights(self, weights): self.sampler.update_weights(weights) def update_training_idxes(self, training_idxes): self.sampler.update_training_idxes(training_idxes) if __name__ == '__main__': dataset = DummyDataset() training_idxes = dataset.get_training_idxes() weights = [1 if i in training_idxes else 0 for i in range(len(dataset))] sampler = WeightedDynamicSampler(weights, len(dataset)) batch_sampler = DynamicBatchSampler(sampler = sampler, batch_size=8, drop_last=False) loader = DataLoader(dataset, sampler=batch_sampler) count = 1 for epoch in range(10): for batch in loader: print(batch) curr_training_idxes = dataset.get_training_idxes().copy() total_samples = len(dataset) if len(curr_training_idxes) < total_samples: ##testing here new_add_idxes = [count, count+1] dataset.update_training_idxes(new_add_idxes) count += 2 easy_p = 0.5/len(curr_training_idxes) hard_p = 0.5 / len(new_add_idxes) new_weights = torch.zeros(total_samples) new_weights.index_fill_(0, torch.LongTensor(curr_training_idxes), easy_p) new_weights.index_fill_(0, torch.LongTensor(new_add_idxes), hard_p) new_weights[curr_training_idxes] = easy_p new_weights[new_add_idxes] = hard_p print(curr_training_idxes, new_add_idxes, new_weights[:22]) batch_sampler.update_weights(new_weights) ================================================ FILE: AutoEncoder/encdec/__init__.py ================================================ ================================================ FILE: AutoEncoder/encdec/export_meshes.py ================================================ import sys sys.path.append("..") from pathlib import Path from typing import Any, Dict import torch from hesiod import hcfg, hmain from torch import Tensor from torch.utils.data import DataLoader from AutoEncoder.data.dataset import UdfsDataset from meshudf.meshudf import get_mesh_from_udf from models.cbndec import CbnDecoder from models.coordsenc import CoordsEncoder from models.dgcnn import Dgcnn from utils import get_o3d_mesh_from_tensors, progress_bar, random_point_sampling import open3d as o3d import os import numpy as np import trimesh from utils.utils import GridFiller if len(sys.argv) != 2: print("Usage: python export_meshes.py ") exit(1) @hmain( base_cfg_dir="../cfg/bases", run_cfg_file=sys.argv[1], parse_cmd_line=False, out_dir_root="../logs", ) def main() -> None: seed = 10 import random torch.backends.cudnn.benchmark = False random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.random.manual_seed(seed) ckpt_path = hcfg("ckpt_path", str) ckpt = torch.load(ckpt_path) latent_size = hcfg("latent_size", int) num_points_pcd = hcfg("num_points_pcd", int) udf_max_dist = hcfg("udf_max_dist", float) watertight = hcfg("watertight", bool) resolution = hcfg("resolution", int) encoder = Dgcnn(latent_size) encoder.load_state_dict(ckpt["encoder"], strict=True) encoder = encoder.cuda() encoder.eval() coords_encoder = CoordsEncoder() decoder_cfg = hcfg("decoder", Dict[str, Any]) decoder = CbnDecoder( coords_encoder.out_dim, latent_size, decoder_cfg["hidden_dim"], decoder_cfg["num_hidden_layers"], ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() dset_root = Path(hcfg("dset.root", str)) name = hcfg("dset.name", str) bs = 1 test_dset = UdfsDataset(name, dset_root, 'train') #deepfasion3d test_loader = DataLoader(test_dset, bs, num_workers=2, shuffle=False) for batch in progress_bar(test_loader, "Exporting"): _, item_ids, pcds, _, _, _ = batch bs = pcds.shape[0] pcds = pcds.cuda() pcds = random_point_sampling(pcds, num_points_pcd) with torch.no_grad(): latent_codes = encoder(pcds) for i in progress_bar(range(bs), "Meshing"): lat = latent_codes[i].unsqueeze(0) def udf_func(c: Tensor) -> Tensor: c_ = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c_, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p if watertight: size = resolution #256 faster fast_grid_filler = GridFiller(size) udf, gradients = fast_grid_filler.fill_grid(udf_func, max_batch=2**16) udf[udf < 0] = 0 import mcubes vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01) mesh = trimesh.Trimesh(vertices, faces) components = mesh.split(only_watertight=True) bbox = [] for k, c in enumerate(components): bbmin = c.vertices.min(0) bbmax = c.vertices.max(0) bbox.append((bbmax - bbmin).max()) max_component = np.argmax(bbox) mesh = components[max_component] mesh.vertices = mesh.vertices * (2.0 / size) - 1.0 # normalize it to [-1, 1] mesh_path = f"./outputs/AE/{hcfg('dset.exp_name', str)}/meshes_test/{item_ids[i]}mc.obj" os.makedirs(os.path.dirname(mesh_path), exist_ok=True) trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path) else: v, t, udf, gradients = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=resolution, max_batch=2**16, differentiable=False, use_fast_grid_filler=True ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) mesh_path = f"./outputs/AE/{hcfg('dset.exp_name', str)}/meshes_test/{item_ids[i]}_meshudf.obj" os.makedirs(os.path.dirname(mesh_path), exist_ok=True) o3d.io.write_triangle_mesh(str(mesh_path), pred_mesh_o3d) if __name__ == "__main__": main() ================================================ FILE: AutoEncoder/encdec/normalized_obj.py ================================================ import trimesh import os def obj_normalization(input_mesh_file, output_file_path): ''' Normalize the obj file based on the information from the first frame (T-pose). :param path: the path of original obj file :return: normalized obj file [-1,1] at the origin (0,0,0). ''' obj = trimesh.load(input_mesh_file, force='mesh') v = obj.vertices v = v - v.mean(0) # v = v*2 print(v.mean(0), v.max(0), v.min(0)) trimesh.Trimesh(vertices=v, faces=obj.faces).export(output_file_path) return True def box_center_normalization(input_mesh_file, output_file_path): ''' Normalize the obj file based on the information from the first frame (T-pose). :param path: the path of original obj file :return: normalized obj file [-1,1] at the origin (0,0,0). ''' obj = trimesh.load(input_mesh_file, force='mesh') v = obj.vertices max_v = v.max(0) min_v = v.min(0) lhw = max_v = min_v box_center = min_v + (lhw / 2) print(v.mean(0), v.max(0), v.min(0)) v = v - box_center trimesh.Trimesh(vertices=v, faces=obj.faces).export(output_file_path) return True data_root = './dataset/Deepfashion3D/filtered_registered_mesh' ids = os.listdir(data_root) output_root = './dataset/Deepfashion3D/norm_objs' os.makedirs(output_root, exist_ok=True) for id in ids: input_mesh_file = os.path.join(data_root, id, 'model_cleaned.obj') output_file_path = os.path.join(output_root, id+'.obj') obj_normalization(input_mesh_file, output_file_path) ================================================ FILE: AutoEncoder/encdec/preprocess_udfs.py ================================================ import sys sys.path.append("..") from pathlib import Path import os import numpy as np from utils import ( compute_udf_from_mesh, get_o3d_mesh_from_tensors, get_tensor_pcd_from_o3d, progress_bar, read_mesh, ) np.random.seed(1024) cat2id = { "chair": "03001627", "bench": "02828884", "cabinet": "02933112", "car": "02958343", "airplane": "02691156", "display": "03211117", "lamp": "03636649", "speaker": "03691459", "rifle": "04090263", "sofa": "04256520", "table": "04379243", "phone": "04401088", "watercraft": "04530566" } data_root = sys.argv[1] out_dir = sys.argv[2] name = sys.argv[3] assert name in ['shapenet', 'deepfashion3d', 'pix3d'] if name == 'shapenet': if len(sys.argv) != 5: print("Usage: python preprocess_udfs.py ") exit(1) category = sys.argv[4] assert category in cat2id.keys() id = cat2id[category] out_dir = os.path.join(out_dir, id) sub_ids = os.listdir(os.path.join(data_root, id)) else: if len(sys.argv) != 4: print("Usage: python preprocess_udfs.py ") exit(1) os.makedirs(out_dir, exist_ok=True) if name == 'shapenet': lst_dir = '../dataset_info_files/ShapeNet_filelists' with open(lst_dir+"/"+str(id)+"_test.lst", "r") as f: list_obj_test = f.readlines() with open(lst_dir+"/"+str(id)+"_train.lst", "r") as f: list_obj_train = f.readlines() list_obj_test = [f.rstrip() for f in list_obj_test] list_obj_train = [f.rstrip() for f in list_obj_train] elif name == 'deepfashion3d': lst_dir = '../dataset_info_files/Deepfashion3d' with open(lst_dir+"/"+"deepfashion3d_test.txt", "r") as f: list_obj_test = f.readlines() with open(lst_dir+"/"+"deepfashion3d_train.txt", "r") as f: list_obj_train = f.readlines() list_obj_test = [f.rstrip('\n') for f in list_obj_test] list_obj_train = [f.rstrip('\n') for f in list_obj_train] print(len(list_obj_train), len(list_obj_train)) check_dict = {} for id in list_obj_train: if check_dict.__contains__(id): print(id) else: check_dict[id] = 1 elif name == 'pix3d': list_obj_train = [] list_obj_test = [] data_root = './dataset/pix3d/models' cats_train = os.listdir(os.path.join(data_root, 'train')) for cat in cats_train: ids = os.listdir(os.path.join(data_root, 'train', cat)) for id in ids: model_path = os.path.join(data_root, 'train', cat, id, 'model.obj') list_obj_train.append(model_path) cats_test = os.listdir(os.path.join(data_root, 'test')) for cat in cats_test: ids = os.listdir(os.path.join(data_root, 'test', cat)) for id in ids: model_path = os.path.join(data_root, 'test', cat, id, 'model.obj') list_obj_test.append(model_path) def PrepareOneUDF(sub_id, split): if name == 'shapenet': mesh_path = os.path.join(data_root, id, sub_id, 'model.obj') elif name == 'deepfashion3d': mesh_path = os.path.join(data_root, f'{sub_id}.obj') elif name == 'pix3d': mesh_path = os.path.join(data_root, f'{sub_id}.obj') out_dir_split = os.path.join(out_dir, split) os.makedirs(out_dir_split, exist_ok=True) v, t = read_mesh(mesh_path) mesh_o3d = get_o3d_mesh_from_tensors(v, t) pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=100_000) pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3] coords, labels, gradients = compute_udf_from_mesh( mesh_o3d, num_queries_on_surface=250_000, num_queries_per_std=[250_000, 200_000, 25_000, 25_000], ) if name == 'pix3d': out_file = os.path.join(out_dir_split, sub_id.split('/')[-3], f"{sub_id.split('/')[-2]}.npz") os.makedirs(os.path.dirname(out_file), exist_ok=True) else: out_file = os.path.join(out_dir_split, f"{sub_id}.npz") print('train: ', len(list_obj_train), 'test: ', len(list_obj_test)) print(out_file) np.savez( out_file, vertices=v.numpy(), triangles=t.numpy(), pcd=pcd.numpy(), coords=coords.numpy(), labels=labels.numpy(), gradients=gradients.numpy(), ) for sub_id in progress_bar(list_obj_train): PrepareOneUDF(sub_id, 'train') for sub_id in progress_bar(list_obj_test): PrepareOneUDF(sub_id, 'test') ================================================ FILE: AutoEncoder/encdec/train_encdec.py ================================================ import sys sys.path.append("..") from hesiod import hmain from trainers.encdec import EncoderDecoderTrainer if len(sys.argv) > 1: run_cfg_file = sys.argv[1] del sys.argv[1] else: run_cfg_file = None @hmain( base_cfg_dir="../cfg/bases", template_cfg_file="../cfg/encdec.yaml", run_cfg_file=run_cfg_file, out_dir_root="../logs", ) def main() -> None: trainer = EncoderDecoderTrainer() trainer.train() if __name__ == "__main__": main() ================================================ FILE: AutoEncoder/models/__init__.py ================================================ ================================================ FILE: AutoEncoder/models/cbndec.py ================================================ from einops import repeat from torch import Tensor, nn class DecoderConditionalBatchNorm(nn.Module): def __init__( self, input_dim: int, dim_condition_embedding: int, dim_hidden_layers: int, num_hidden_layers: int, dim_out: int, refine = False ): super().__init__() self.fc_p = nn.Conv1d(input_dim, dim_hidden_layers, 1) self.num_blocks = num_hidden_layers self.blocks = nn.ModuleList() for _ in range(num_hidden_layers): self.blocks.append( ConditionalResnetBlock1d( dim_condition_embedding, dim_hidden_layers, ) ) self.bn = ConditionalBatchNorm1d(dim_condition_embedding, dim_hidden_layers) self.fc_out = nn.Conv1d(dim_hidden_layers, dim_out, 1) if refine: nn.init.zeros_(self.fc_out.weight) self.actvn = nn.ReLU() def forward(self, points: Tensor, conditions: Tensor) -> Tensor: p = points.transpose(1, 2) c = conditions.transpose(1, 2) net = self.fc_p(p) for i in range(self.num_blocks): net = self.blocks[i](net, c) out = self.fc_out(self.actvn(self.bn(net, c))) out = out.squeeze(1) return out class ConditionalBatchNorm1d(nn.Module): def __init__(self, c_dim: int, f_dim: int) -> None: super().__init__() self.c_dim = c_dim self.f_dim = f_dim self.conv_gamma = nn.Conv1d(c_dim, f_dim, 1) self.conv_beta = nn.Conv1d(c_dim, f_dim, 1) self.bn = nn.BatchNorm1d(f_dim, affine=False) self.reset_parameters() def reset_parameters(self) -> None: nn.init.zeros_(self.conv_gamma.weight) nn.init.zeros_(self.conv_beta.weight) nn.init.ones_(self.conv_gamma.bias) # type: ignore nn.init.zeros_(self.conv_beta.bias) # type: ignore def forward(self, x: Tensor, c: Tensor) -> Tensor: assert x.shape[0] == c.shape[0] # batch size assert c.shape[1] == self.c_dim # embedding dim assert x.shape[2] == c.shape[2] # num points # Affine mapping gamma = self.conv_gamma(c) beta = self.conv_beta(c) # Batchnorm net = self.bn(x) out = gamma * net + beta return out class ConditionalResnetBlock1d(nn.Module): def __init__(self, c_dim: int, size_in: int) -> None: super().__init__() self.size_in = size_in self.bn_0 = ConditionalBatchNorm1d(c_dim, size_in) self.bn_1 = ConditionalBatchNorm1d(c_dim, size_in) self.fc_0 = nn.Conv1d(size_in, size_in, 1) self.fc_1 = nn.Conv1d(size_in, size_in, 1) self.actvn = nn.ReLU() nn.init.zeros_(self.fc_1.weight) def forward(self, x: Tensor, c: Tensor) -> Tensor: net = self.fc_0(self.actvn(self.bn_0(x, c))) dx = self.fc_1(self.actvn(self.bn_1(net, c))) return x + dx class CbnDecoder(nn.Module): def __init__( self, input_dim: int, latent_dim: int, hidden_dim: int, num_hidden_layers: int, out_dim: int = 1, refine = False ) -> None: super().__init__() self.decoder = DecoderConditionalBatchNorm( input_dim, latent_dim, hidden_dim, num_hidden_layers, out_dim, refine ) def forward(self, coords_emb, latent_codes) -> Tensor: # coords -> (B, N, 3) # latent_codes -> (B, D) or (B, N, D) if len(latent_codes.shape) == 2: latent_codes = repeat(latent_codes, "b d -> b r d", r=coords_emb.shape[1]) out = self.decoder(coords_emb, latent_codes) return out ================================================ FILE: AutoEncoder/models/coordsenc.py ================================================ from typing import Callable, Tuple import torch from torch import Tensor class CoordsEncoder: def __init__( self, input_dims: int = 3, include_input: bool = True, max_freq_log2: int = 9, num_freqs: int = 10, log_sampling: bool = True, periodic_fns: Tuple[Callable, Callable] = (torch.sin, torch.cos), ) -> None: self.input_dims = input_dims self.include_input = include_input self.max_freq_log2 = max_freq_log2 self.num_freqs = num_freqs self.log_sampling = log_sampling self.periodic_fns = periodic_fns self.create_encoding_fn() def create_encoding_fn(self) -> None: encoding_fns = [] d = self.input_dims out_dim = 0 if self.include_input: encoding_fns.append(lambda x: x) out_dim += d if self.log_sampling: freq_bands = 2.0 ** torch.linspace( 0.0, self.max_freq_log2, steps=self.num_freqs ) else: freq_bands = torch.linspace( 2.0**0.0, 2.0**self.max_freq_log2, steps=self.num_freqs ) for freq in freq_bands: for p_fn in self.periodic_fns: encoding_fns.append(lambda x, p_fn=p_fn, freq=freq: p_fn(x * freq)) out_dim += d self.encoding_fns = encoding_fns self.out_dim = out_dim def encode(self, inputs: Tensor) -> Tensor: return torch.cat([fn(inputs) for fn in self.encoding_fns], -1) ================================================ FILE: AutoEncoder/models/dgcnn.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F from einops import rearrange, repeat from pytorch3d.ops import knn_gather, knn_points from torch import Tensor def get_graph_feature(x: Tensor, indices: Tensor) -> Tensor: """Select features from neighbors. Args: x: the input features with shape (B, PTS, D). indices: the indices indicating the K neighbors for each input point with shape (B, PTS, K). Returns: The selected features with shape # (B, PTS, K, 2*D) """ features = knn_gather(x, indices) x = repeat(x, "b n d -> b n r d", r=features.shape[2]) features = torch.cat((features - x, x), dim=3) return features class Dgcnn(nn.Module): def __init__( self, size_latent: int, k: int = 20, aggregate_ops_local: str = "max", aggregate_ops_global: str = "max", ): super().__init__() self.k = k self.size_latent = size_latent self.aggreate_ops_local = aggregate_ops_local self.aggreate_ops_global = aggregate_ops_global self.bn_1 = nn.BatchNorm1d(64) self.bn_2 = nn.BatchNorm1d(64) self.bn_3 = nn.BatchNorm1d(128) self.bn_4 = nn.BatchNorm1d(256) self.bn_5 = nn.BatchNorm1d(self.size_latent) self.slope = 0.2 self.conv_1 = nn.Linear(3 * 2, 64, bias=False) self.conv_2 = nn.Linear(64 * 2, 64, bias=False) self.conv_3 = nn.Linear(64 * 2, 128, bias=False) self.conv_4 = nn.Linear(128 * 2, 256, bias=False) self.conv_5 = nn.Linear(512, self.size_latent, bias=False) def block_forward( self, features: Tensor, conv: nn.Linear, bn, indices: Tensor, agggreate_ops: str, ) -> Tensor: x = get_graph_feature(features, indices) x = conv(x) x = rearrange(x, "b n k d -> b d (n k)") x = bn(x) x = F.leaky_relu(x, negative_slope=self.slope) features_out = rearrange(x, "b d (n k) -> b n d k", k=self.k) if agggreate_ops == "max": features_out = features_out.max(dim=-1)[0] elif agggreate_ops == "avg": features_out = features_out.mean(dim=-1) return features_out def forward(self, x: Tensor, latent_index=None) -> Tensor: """Forward pass. Args: x: the input point cloud with shape (B, N, 3). Returns: The global embeddings with shape (B, size_latent). """ _, indices, _ = knn_points(x, x, K=self.k) x1 = self.block_forward( x, self.conv_1, self.bn_1, indices, self.aggreate_ops_local ) x2 = self.block_forward( x1, self.conv_2, self.bn_2, indices, self.aggreate_ops_local ) x3 = self.block_forward( x2, self.conv_3, self.bn_3, indices, self.aggreate_ops_local ) x4 = self.block_forward( x3, self.conv_4, self.bn_4, indices, self.aggreate_ops_local ) x5 = self.conv_5(torch.cat((x1, x2, x3, x4), dim=-1)) x5 = rearrange(x5, "b n d -> b d n") x5 = self.bn_5(x5) feat = F.leaky_relu(x5, negative_slope=self.slope) if self.aggreate_ops_global == "max": feat = feat.max(dim=-1)[0] elif self.aggreate_ops_global == "avg": feat = feat.mean(dim=-1) else: feat = rearrange(feat, "b d n -> b n d") if latent_index is not None: feat = torch.cat((feat, latent_index.unsqueeze(-1)), dim=1) return feat ================================================ FILE: AutoEncoder/trainers/__init__.py ================================================ ================================================ FILE: AutoEncoder/trainers/encdec.py ================================================ from pathlib import Path from typing import Any, Dict import torch import torch.nn.functional as F from hesiod import get_out_dir, hcfg from torch.optim import Adam from torch.utils.data import DataLoader from torch.utils.tensorboard.writer import SummaryWriter from AutoEncoder.data.dataset import UdfsDataset from models.cbndec import CbnDecoder from models.coordsenc import CoordsEncoder from models.dgcnn import Dgcnn from utils import compute_gradients, progress_bar, random_point_sampling import numpy as np import os from encdec.DynamicSampler import WeightedDynamicSampler, DynamicBatchSampler, SequenceSampler, SequenceSampler_Train import wandb use_wandb = True if use_wandb: # start a new wandb run to track this script wandb.init( # set the wandb project where this run will be logged project="AutoEncoder", name="training", config={ "learning_rate": 1e-4, "epochs": 20000, } ) class EncoderDecoderTrainer: def __init__(self) -> None: train_ids_file = Path(hcfg("dset.train_ids_file", str)) dset_split = hcfg("dset.split", str) dset_root = Path(hcfg("dset.root", str)) name = hcfg("dset.name", str) self.evaluation = False out_dir = Path(hcfg("log_dir", str)) self.train_dset = UdfsDataset(name, dset_root, dset_split) train_bs = hcfg("train_bs", int) val_bs = hcfg("val_bs", int) if 'curriculum' in name: training_idxes = self.train_dset.get_training_idxes() print("first sample nums: ", len(training_idxes)) weights = [1 if i in training_idxes else 0 for i in range(len(self.train_dset))] #self.sampler = WeightedDynamicSampler(weights, len(self.train_dset)) self.sampler = SequenceSampler_Train(training_idxes) self.batch_sampler = DynamicBatchSampler(sampler = self.sampler, batch_size=train_bs, drop_last=False) self.train_loader = DataLoader(self.train_dset, batch_sampler=self.batch_sampler) self.val_sampler = SequenceSampler(training_idxes, len(self.train_dset)) self.val_batch_sampler = DynamicBatchSampler(sampler = self.val_sampler, batch_size=val_bs, drop_last=False) self.val_loader = DataLoader(self.train_dset, batch_sampler=self.val_batch_sampler) else: self.train_loader = DataLoader( self.train_dset, train_bs, shuffle=True, num_workers=2, pin_memory=True ) self.num_points_pcd = hcfg("num_points_pcd", int) latent_size = hcfg("latent_size", int) self.max_dist = hcfg("udf_max_dist", float) self.num_points_forward = hcfg("num_points_forward", int) encoder = Dgcnn(latent_size) self.encoder = encoder.cuda() self.coords_encoder = CoordsEncoder() decoder_cfg = hcfg("decoder", Dict[str, Any]) decoder = CbnDecoder( self.coords_encoder.out_dim, latent_size, decoder_cfg["hidden_dim"], decoder_cfg["num_hidden_layers"], ) self.decoder = decoder.cuda() params = list(encoder.parameters()) params.extend(decoder.parameters()) lr = hcfg("lr", float) self.optimizer = Adam(params, lr) self.epoch = 0 self.global_step = 0 self.ckpts_path = out_dir / "ckpts" tune = False if tune: self.restore_from_last_ckpt() else: if self.ckpts_path.exists(): self.restore_from_last_ckpt() os.makedirs(str(self.ckpts_path), exist_ok=True) self.logger = SummaryWriter(out_dir / "logs") def train(self) -> None: name = hcfg("dset.name", str) num_epochs = hcfg("num_epochs", int) start_epoch = self.epoch best_val_loss = 1e9 for epoch in range(start_epoch, num_epochs): self.epoch = epoch epoch_losses = [] epoch_loss = 0 self.encoder.train() self.decoder.train() desc = f"Epoch {epoch}/{num_epochs}" for batch in progress_bar(self.train_loader, desc=desc): indexes, _, pcds, coords, gt_udf, gt_grad = batch pcds = pcds.cuda() coords = coords.cuda() gt_udf = gt_udf.cuda() gt_grad = gt_grad.cuda() pcds = random_point_sampling(pcds, self.num_points_pcd) gt_udf = gt_udf / self.max_dist gt_udf = 1 - gt_udf c_u_g = torch.cat([coords, gt_udf.unsqueeze(-1), gt_grad], dim=-1) selected_c_u_g = random_point_sampling(c_u_g, self.num_points_forward) selected_coords = selected_c_u_g[:, :, :3] selected_coords.requires_grad = True selected_gt_udf = selected_c_u_g[:, :, 3] selected_gt_grad = selected_c_u_g[:, :, 4:] latent_codes = self.encoder(pcds) coords_encoded = self.coords_encoder.encode(selected_coords) pred = self.decoder(coords_encoded, latent_codes) udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf) udf_pred = torch.sigmoid(pred) udf_pred = 1 - udf_pred udf_pred = udf_pred * self.max_dist gradients = compute_gradients(selected_coords, udf_pred) grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction="none") mask = (selected_gt_udf > 0) & (selected_gt_udf < 1) grad_loss = grad_loss[mask].mean() self.optimizer.zero_grad() loss = udf_loss + 0.1*grad_loss epoch_losses.append(udf_loss.detach().cpu().item()) loss.backward() self.optimizer.step() if self.global_step % 10 == 0: self.logger.add_scalar( "train/udf_loss", udf_loss.item(), self.global_step, ) self.logger.add_scalar( "train/grad_loss", grad_loss.item(), self.global_step, ) if use_wandb: wandb.log({"train/udf_loss": udf_loss.item(), "train/grad_loss": grad_loss.item()}, step=self.global_step) #"train/grad_loss": grad_loss.item()}, step=self.global_step) print(f'steps: {self.global_step}; loss: {loss.item()}; udf_loss: {udf_loss.item()}; grad_loss: {grad_loss.item()}') #eikonal_loss: {gradient_error.item()} self.global_step += 1 epoch_loss = np.mean(epoch_losses) print(f'epoch_udf_loss: {epoch_loss}') switch_epoch = 64 curr_training_idxes = self.train_dset.get_training_idxes().copy() total_samples = len(self.train_dset) if epoch % switch_epoch == 63 and 'curriculum' in name and len(curr_training_idxes) < total_samples: _, _, _, new_add_idxes = self.val() self.train_dset.update_training_idxes(new_add_idxes) #self.batch_sampler.update_weights(new_weights) self.batch_sampler.update_training_idxes(new_add_idxes) self.val_batch_sampler.update_training_idxes(new_add_idxes) print(f'training samples now: {len(curr_training_idxes)+len(new_add_idxes)}') assert(len(set(curr_training_idxes)&set(new_add_idxes)) == 0) print(curr_training_idxes, new_add_idxes) if epoch % 1000 == 0: self.save_ckpt(all=True) self.save_ckpt() if use_wandb: wandb.finish() def val(self) -> float: self.encoder.eval() self.decoder.eval() print('evaluation now') val_losses = [] udf_losses = [] grad_losses = [] remain_indexes = [] for batch in progress_bar(self.val_loader): indexes, _, pcds, coords, gt_udf, gt_grad = batch pcds = pcds.cuda() coords = coords.cuda() gt_udf = gt_udf.cuda() gt_grad = gt_grad.cuda() indexes = list(indexes.cpu().numpy()) pcds = random_point_sampling(pcds, self.num_points_pcd) gt_udf = gt_udf / self.max_dist gt_udf = 1 - gt_udf c_u_g = torch.cat([coords, gt_udf.unsqueeze(-1), gt_grad], dim=-1) selected_c_u_g = random_point_sampling(c_u_g, self.num_points_forward) selected_coords = selected_c_u_g[:, :, :3] selected_coords.requires_grad = True selected_gt_udf = selected_c_u_g[:, :, 3] selected_gt_grad = selected_c_u_g[:, :, 4:] with torch.no_grad(): latent_codes = self.encoder(pcds) selected_coords.requires_grad = True coords_encoded = self.coords_encoder.encode(selected_coords) pred = self.decoder(coords_encoded, latent_codes) udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf) udf_pred = torch.sigmoid(pred) udf_pred = 1 - udf_pred udf_pred *= self.max_dist udf_pred.sum().backward() gradients = selected_coords.grad selected_coords.grad.zero_() grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction="none") mask = (selected_gt_udf > 0) & (selected_gt_udf < 1) grad_loss = grad_loss[mask].mean() loss = udf_loss + 0.1*grad_loss val_losses.append(loss.detach().cpu().item()) udf_losses.append(udf_loss.detach().cpu().item()) grad_losses.append(grad_loss.detach().cpu().item()) remain_indexes.append(indexes) val_losses = np.array(val_losses) val_losses = val_losses.reshape(-1) print('val_losses: ', val_losses) remain_indexes = np.array(remain_indexes).reshape(-1) new_can_idxes = list(np.argsort(val_losses)[:100]) new_add_idxes = [remain_indexes[i] for i in new_can_idxes] return np.mean(val_losses), np.mean(udf_losses), np.mean(grad_losses), new_add_idxes def save_ckpt(self, all: bool = False, best=False) -> None: ckpt = { "epoch": self.epoch, "encoder": self.encoder.state_dict(), "decoder": self.decoder.state_dict(), "optimizer": self.optimizer.state_dict(), } if best: for previous_ckpt_path in self.ckpts_path.glob("*.pt"): if "best" in previous_ckpt_path.name: previous_ckpt_path.unlink() ckpt_path = self.ckpts_path / f"best_{self.epoch}.pt" torch.save(ckpt, ckpt_path) elif all: ckpt_path = self.ckpts_path / f"{self.epoch}.pt" torch.save(ckpt, ckpt_path) else: for previous_ckpt_path in self.ckpts_path.glob("*.pt"): if "last" in previous_ckpt_path.name: previous_ckpt_path.unlink() ckpt_path = self.ckpts_path / f"last_{self.epoch}.pt" torch.save(ckpt, ckpt_path) def restore_from_last_ckpt(self) -> None: if self.ckpts_path.exists(): ckpt_paths = [p for p in self.ckpts_path.glob("*.pt") if "last" in p.name] error_msg = "Expected only one last ckpt, found none or too many." assert len(ckpt_paths) == 1, error_msg ckpt_path = ckpt_paths[0] ckpt = torch.load(ckpt_path) self.epoch = ckpt["epoch"] + 1 self.global_step = self.epoch * len(self.train_loader) self.encoder.load_state_dict(ckpt["encoder"]) self.decoder.load_state_dict(ckpt["decoder"]) self.optimizer.load_state_dict(ckpt["optimizer"]) ================================================ FILE: AutoEncoder/trainers/test.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data.sampler import Sampler, WeightedRandomSampler class DynamicWeightedRandomSampler(WeightedRandomSampler): r"""Samples elements randomly, without replacement. Arguments: data_source (Dataset): dataset to sample from """ def update_distribution(self, weights): self.weights = weights def __len__(self): return (self.weights>0).sum().int() class BatchSampler(Sampler): def __init__(self, sampler, batch_size, drop_last): self.sampler = sampler self.batch_size = batch_size self.drop_last = drop_last def __iter__(self): batch = [] for _, idx in enumerate(iter(self.sampler)): batch = idx yield batch if len(batch) > 0 and not self.drop_last: yield batch def __len__(self): return len(self.sampler) // self.batch_size ================================================ FILE: AutoEncoder/utils.py ================================================ from pathlib import Path from typing import Iterable, List, Tuple, Union import numpy as np import open3d as o3d import torch import torch.nn.functional as F from einops import repeat from torch import Tensor from tqdm import tqdm def read_mesh( mesh_path: Union[str, Path], dtype: torch.dtype = torch.float, ) -> Tuple[Tensor, Tensor]: """Read a mesh from a given file. The mesh is returned as a tuple of torch tensors, containing: - The vertices with shape (N, D). D can be 3 if only coordinates are available, 6 if also normals or colors are available, 9 if both normals and colors are available. - The trianges with shape (M, D). D can be 3 if normals are not available, 6 otherwise. Args: mesh_path: The path of the mesh file. dtype: The data type for the output tensors. Raises: ValueError: If the given file doesn't exist. Returns: - The tensor with the mesh vertices with shape (N, D). - The tensor with the mesh triangles with shape (M, D). """ mesh_path = Path(mesh_path) if not mesh_path.exists(): raise ValueError(f"The mesh file {str(mesh_path)} does not exists.") mesh_o3d = o3d.io.read_triangle_mesh(str(mesh_path)) return get_tensor_mesh_from_o3d(mesh_o3d, dtype) def get_tensor_mesh_from_o3d( mesh_o3d: o3d.geometry.TriangleMesh, dtype: torch.dtype = torch.float, ) -> Tuple[Tensor, Tensor]: """Convert an open3d mesh to a tuple of torch tensors. The mesh is returned as a tuple of torch tensors, containing: - The vertices with shape (N, D). D can be 3 if only coordinates are available, 6 if also normals or colors are available, 9 if both normals and colors are available. - The trianges with shape (M, D). D can be 3 if normals are not available, 6 otherwise. Args: mesh_o3d: The open3d mesh. Returns: - The tensor with the mesh vertices with shape (N, D). - The tensor with the mesh triangles with shape (M, D). """ vertices = torch.tensor(np.asarray(mesh_o3d.vertices), dtype=dtype) if len(mesh_o3d.vertex_normals) > 0: vertices_normals = torch.tensor( np.asarray(mesh_o3d.vertex_normals), dtype=dtype ) vertices = torch.cat((vertices, vertices_normals), dim=-1) if len(mesh_o3d.vertex_colors) > 0: vertices_colors = torch.tensor(np.asarray(mesh_o3d.vertex_colors), dtype=dtype) vertices = torch.cat((vertices, vertices_colors), dim=-1) triangles = torch.tensor(np.asarray(mesh_o3d.triangles), dtype=dtype) if len(mesh_o3d.triangle_normals) > 0: triangles_normals = torch.tensor( np.asarray(mesh_o3d.triangle_normals), dtype=dtype ) triangles = torch.cat((triangles, triangles_normals), dim=-1) return vertices, triangles def get_o3d_mesh_from_tensors( vertices: Union[Tensor, np.ndarray], triangles: Union[Tensor, np.ndarray], ) -> o3d.geometry.TriangleMesh: """Get open3d mesh from either numpy arrays or torch tensors. The input vertices must have shape (NUM_VERTICES, D), where D can be 3 (only X,Y,Z), 6 (X,Y,Z and normals) or 9 (X,Y,Z, normals and colors). The input triangles must have shape (NUM_TRIANGLES, D), where D can be 3 (only vertex indices) or 6 (vertex indices and normals). Args: vertices: The numpy array or torch tensor with vertices with shape (NUM_VERTICES, D). triangles: The numpy array or torch tensor with triangles with shape (NUM_TRIANGLES, D). Returns: The open3d mesh. """ mesh_o3d = o3d.geometry.TriangleMesh() if isinstance(vertices, Tensor): v = vertices.clone().detach().cpu().numpy() else: v = np.copy(vertices) if isinstance(triangles, Tensor): t = triangles.clone().detach().cpu().numpy() else: t = np.copy(triangles) mesh_o3d.vertices = o3d.utility.Vector3dVector(v[:, :3]) if v.shape[1] == 6: mesh_o3d.vertex_normals = o3d.utility.Vector3dVector(v[:, 3:6]) if v.shape[1] == 9: mesh_o3d.vertex_colors = o3d.utility.Vector3dVector(v[:, 6:9]) mesh_o3d.triangles = o3d.utility.Vector3iVector(t[:, :3]) if t.shape[1] == 6: mesh_o3d.triangle_normals = o3d.utility.Vector3dVector(t[:, 3:6]) return mesh_o3d def progress_bar(iterable: Iterable, desc: str = "", num_cols: int = 60) -> Iterable: """Decorate an iterable object using a progress bar. Args: iterable: the iterable to decorate. desc: the description to print. Defaults to "". num_cols: The width of the entire output message. Defaults to 60. Returns: The decorated iterable. """ bar_format = "{percentage:.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]" if len(desc) > 0: bar_format = "{desc}: " + bar_format return tqdm(iterable, desc=desc, bar_format=bar_format, ncols=num_cols, leave=False) def get_tensor_pcd_from_o3d( pcd_o3d: o3d.geometry.PointCloud, dtype: torch.dtype = torch.float, ) -> Tensor: """Convert an open3d point cloud to a torch tensor. The point cloud is returned as a torch tensor with shape (NUM_POINTS, D). D can be 3 (only XYZ coordinates), 6 (XYZ coordinates and normals/colors) or 9 (XYZ coordinates, normals and colors). Args: pcd_o3d: The open3d point cloud. Returns: A torch tensor with the loaded point cloud with shape (NUM_POINTS, D). """ pcd_torch = torch.tensor(np.asarray(pcd_o3d.points), dtype=dtype) if len(pcd_o3d.normals) > 0: normals_torch = torch.tensor(np.asarray(pcd_o3d.normals), dtype=dtype) pcd_torch = torch.cat((pcd_torch, normals_torch), dim=-1) if len(pcd_o3d.colors) > 0: colors_torch = torch.tensor(np.asarray(pcd_o3d.colors), dtype=dtype) pcd_torch = torch.cat((pcd_torch, colors_torch), dim=-1) return pcd_torch def sample_points_around_pcd( pcd: Tensor, stds: List[float], num_points_per_std: List[int], coords_range: Tuple[float, float], device: str = "cpu", ) -> Tensor: """Sample points around the given point cloud. Points are sampled by adding gaussian noise to the input cloud, according to the given standard deviations. Additionally, points are also sampled uniformly in the given range. Args: pcd: The point cloud tensor with shape (N, 3). stds: A list of standard deviations to compute the gaussian noise to obtain the points. num_points_per_std: A list with the number of points to sample for each standard deviation. The last number refers to points sampled uniformly in the given range (i.e., len(num_points_per_std) = len(stds) + 1). coords_range: The range for the points coordinates. device: The device for the sampled points. Defaults to "cpu". Returns: The sampled points with shape (M, 3). """ coords = torch.empty(0, 3).to(device) num_points_pcd = pcd.shape[0] for sigma, num_points in zip(stds, num_points_per_std[:-1]): mul = num_points // num_points_pcd if mul > 0: coords_for_sampling = repeat(pcd, "n d -> (n r) d", r=mul).to(device) else: coords_for_sampling = torch.empty(0, 3).to(device) still_needed = num_points % num_points_pcd if still_needed > 0: weights = torch.ones(num_points_pcd, dtype=torch.float).to(device) indices_random = torch.multinomial(weights, still_needed, replacement=False) pcd_random = pcd[indices_random].to(device) coords_for_sampling = torch.cat((coords_for_sampling, pcd_random), dim=0) offsets = torch.randn(num_points, 3).to(device) * sigma coords_i = coords_for_sampling + offsets coords = torch.cat((coords, coords_i), dim=0) random_coords = torch.rand(num_points_per_std[-1], 3).to(device) random_coords *= coords_range[1] - coords_range[0] random_coords += coords_range[0] coords = torch.cat((coords, random_coords), dim=0) coords = torch.clip(coords, min=coords_range[0], max=coords_range[1]) return coords def compute_udf_and_gradients( mesh_o3d: o3d.geometry.TriangleMesh, queries: Tensor, ) -> Tuple[Tensor, Tensor]: scene = o3d.t.geometry.RaycastingScene() vertices = np.asarray(mesh_o3d.vertices, dtype=np.float32) triangles = np.asarray(mesh_o3d.triangles, dtype=np.uint32) _ = scene.add_triangles(vertices, triangles) #signed_distance = scene.compute_signed_distance(query_point) closest_points = scene.compute_closest_points(queries.numpy())["points"] closest_points = torch.tensor(closest_points.numpy()) q2p = queries - closest_points udf = torch.linalg.vector_norm(q2p, dim=-1) gradients = F.normalize(q2p, dim=-1) return udf, gradients def compute_sdf_and_gradients( mesh_o3d: o3d.geometry.TriangleMesh, queries: Tensor, ) -> Tuple[Tensor, Tensor]: scene = o3d.t.geometry.RaycastingScene() vertices = np.asarray(mesh_o3d.vertices, dtype=np.float32) triangles = np.asarray(mesh_o3d.triangles, dtype=np.uint32) _ = scene.add_triangles(vertices, triangles) signed_distance = scene.compute_signed_distance(queries.numpy()) closest_points = scene.compute_closest_points(queries.numpy())["points"] closest_points = torch.tensor(closest_points.numpy()) signed_distance = torch.tensor(signed_distance.numpy()) #print(signed_distance.shape) #gradients = np.zeros((signed_distance.shape[0], 3)) q2p = queries - closest_points gradients = F.normalize(q2p, dim=-1) gradients = np.sign(signed_distance)[:, None] * gradients #print(gradients.shape) return signed_distance, gradients def compute_udf_from_mesh( mesh_o3d: o3d.geometry.TriangleMesh, num_surface_points: int = 100_000, num_queries_on_surface: int = 10_000, queries_stds: List[float] = [0.003, 0.01, 0.1], num_queries_per_std: List[int] = [5_000, 4_000, 500, 500], coords_range: Tuple[float, float] = (-1.0, 1.0), max_dist: float = 0.1, convert_to_bce_labels: bool = False, use_cuda: bool = True, input_queries = None ) -> Tuple[Tensor, Tensor, Tensor]: pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=num_surface_points) pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3] device = "cuda" if use_cuda else "cpu" if input_queries is not None: queries = input_queries else: queries = sample_points_around_pcd( pcd, queries_stds, num_queries_per_std, coords_range, device, ) queries = queries.cpu() udf, gradients = compute_udf_and_gradients(mesh_o3d, queries) values = torch.clip(udf, min=0, max=max_dist) # q_on_surf_o3d = mesh_o3d.sample_points_uniformly( # number_of_points=num_queries_on_surface # ) # queries_on_surface = get_tensor_pcd_from_o3d(q_on_surf_o3d)[:, :3] # values_on_surface = torch.zeros(num_queries_on_surface) # gradients_on_surface = torch.zeros(num_queries_on_surface, 3) # queries = torch.cat([queries_on_surface, queries], dim=0) # values = torch.cat([values_on_surface, values], dim=0) # gradients = torch.cat([gradients_on_surface, gradients], dim=0) # if convert_to_bce_labels: # values /= max_dist # values = 1 - values return queries, values, gradients def compute_sdf_from_mesh( mesh_o3d: o3d.geometry.TriangleMesh, num_surface_points: int = 100_000, num_queries_on_surface: int = 10_000, queries_stds: List[float] = [0.003, 0.01, 0.1], num_queries_per_std: List[int] = [5_000, 4_000, 500, 500], coords_range: Tuple[float, float] = (-1.0, 1.0), max_dist: float = 0.1, convert_to_bce_labels: bool = False, use_cuda: bool = True, input_queries = None ) -> Tuple[Tensor, Tensor, Tensor]: pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=num_surface_points) pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3] device = "cuda" if use_cuda else "cpu" if input_queries is not None: queries = input_queries else: queries = sample_points_around_pcd( pcd, queries_stds, num_queries_per_std, coords_range, device, ) queries = queries.cpu() sdf, gradients = compute_sdf_and_gradients(mesh_o3d, queries) values = torch.clip(sdf, min=-max_dist, max=max_dist) q_on_surf_o3d = mesh_o3d.sample_points_uniformly( number_of_points=num_queries_on_surface ) queries_on_surface = get_tensor_pcd_from_o3d(q_on_surf_o3d)[:, :3] values_on_surface = torch.zeros(num_queries_on_surface) gradients_on_surface = torch.zeros(num_queries_on_surface, 3) queries = torch.cat([queries_on_surface, queries], dim=0) values = torch.cat([values_on_surface, values], dim=0) gradients = torch.cat([gradients_on_surface, gradients], dim=0) if convert_to_bce_labels: values /= max_dist values = 1 - values return queries, values, gradients def compute_gradients(x: Tensor, y: Tensor) -> Tensor: grad_outputs = torch.ones_like(y) grads = torch.autograd.grad(y, x, grad_outputs=grad_outputs, create_graph=True)[0] return grads def batchify(inputs: List[Tensor], required_dim: int) -> Tuple[bool, List[Tensor]]: """Batchify input tensors if needed. All the input tensors with a number of dimensions smaller than required_dim will be expanded with a leading batch dimension. Args: inputs: The tensors to batchify. required_dim: The required number of dimensions. Returns: - A flag that indicates wether one of the inputs has been batchified. - The batchified tensors. """ results: List[Tensor] = [] has_changed = False for t in inputs: has_changed = len(t.shape) < required_dim or has_changed batched_t = torch.unsqueeze(t, dim=0) if has_changed else t results.append(batched_t) return has_changed, results def unbatchify(inputs: List[Tensor]) -> List[Tensor]: """Remove batch dimension from input tensors. Args: inputs: The tensors to unbatchify. Returns: The unbatchified tensors. """ results: List[Tensor] = [] for t in inputs: unbatched_t = torch.squeeze(t, dim=0) results.append(unbatched_t) return results def random_point_sampling(pcd: Tensor, num_points: int) -> Tensor: """Sample the requested number of points from the given point cloud(s). Points are sampled randomly. If num_points is greater than NUM_POINTS, then points are sampled with replacement. Args: pcd: The input point cloud(s) with shape ([B,] NUM_POINTS, D). num_points: The number of points to sample. Returns: The sampled points with shape ([B,] NUM_SAMPLED_POINTS, D). """ batched, [pcd] = batchify([pcd], 3) batch_size, original_num_points, _ = pcd.shape weights = torch.ones((batch_size, original_num_points), dtype=torch.float) weights = weights.to(pcd.device) replacement = original_num_points < num_points indices_to_sample = torch.multinomial(weights, num_points, replacement=replacement) batch_indices = torch.arange(batch_size).reshape(batch_size, 1) sampled_points = pcd[batch_indices, indices_to_sample] if batched: [sampled_points] = unbatchify([sampled_points]) return sampled_points ================================================ FILE: CLIP/.gitignore ================================================ __pycache__/ *.py[cod] *$py.class *.egg-info .pytest_cache .ipynb_checkpoints thumbs.db .DS_Store .idea ================================================ FILE: CLIP/LICENSE ================================================ MIT License Copyright (c) 2021 OpenAI Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: CLIP/MANIFEST.in ================================================ include clip/bpe_simple_vocab_16e6.txt.gz ================================================ FILE: CLIP/README.md ================================================ # CLIP [[Blog]](https://openai.com/blog/clip/) [[Paper]](https://arxiv.org/abs/2103.00020) [[Model Card]](model-card.md) [[Colab]](https://colab.research.google.com/github/openai/clip/blob/master/notebooks/Interacting_with_CLIP.ipynb) CLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs. It can be instructed in natural language to predict the most relevant text snippet, given an image, without directly optimizing for the task, similarly to the zero-shot capabilities of GPT-2 and 3. We found CLIP matches the performance of the original ResNet50 on ImageNet “zero-shot” without using any of the original 1.28M labeled examples, overcoming several major challenges in computer vision. ## Approach ![CLIP](CLIP.png) ## Usage First, [install PyTorch 1.7.1](https://pytorch.org/get-started/locally/) (or later) and torchvision, as well as small additional dependencies, and then install this repo as a Python package. On a CUDA GPU machine, the following will do the trick: ```bash $ conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0 $ pip install ftfy regex tqdm $ pip install git+https://github.com/openai/CLIP.git ``` Replace `cudatoolkit=11.0` above with the appropriate CUDA version on your machine or `cpuonly` when installing on a machine without a GPU. ```python import torch import clip from PIL import Image device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = clip.load("ViT-B/32", device=device) image = preprocess(Image.open("CLIP.png")).unsqueeze(0).to(device) text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device) with torch.no_grad(): image_features = model.encode_image(image) text_features = model.encode_text(text) logits_per_image, logits_per_text = model(image, text) probs = logits_per_image.softmax(dim=-1).cpu().numpy() print("Label probs:", probs) # prints: [[0.9927937 0.00421068 0.00299572]] ``` ## API The CLIP module `clip` provides the following methods: #### `clip.available_models()` Returns the names of the available CLIP models. #### `clip.load(name, device=..., jit=False)` Returns the model and the TorchVision transform needed by the model, specified by the model name returned by `clip.available_models()`. It will download the model as necessary. The `name` argument can also be a path to a local checkpoint. The device to run the model can be optionally specified, and the default is to use the first CUDA device if there is any, otherwise the CPU. When `jit` is `False`, a non-JIT version of the model will be loaded. #### `clip.tokenize(text: Union[str, List[str]], context_length=77)` Returns a LongTensor containing tokenized sequences of given text input(s). This can be used as the input to the model --- The model returned by `clip.load()` supports the following methods: #### `model.encode_image(image: Tensor)` Given a batch of images, returns the image features encoded by the vision portion of the CLIP model. #### `model.encode_text(text: Tensor)` Given a batch of text tokens, returns the text features encoded by the language portion of the CLIP model. #### `model(image: Tensor, text: Tensor)` Given a batch of images and a batch of text tokens, returns two Tensors, containing the logit scores corresponding to each image and text input. The values are cosine similarities between the corresponding image and text features, times 100. ## More Examples ### Zero-Shot Prediction The code below performs zero-shot prediction using CLIP, as shown in Appendix B in the paper. This example takes an image from the [CIFAR-100 dataset](https://www.cs.toronto.edu/~kriz/cifar.html), and predicts the most likely labels among the 100 textual labels from the dataset. ```python import os import clip import torch from torchvision.datasets import CIFAR100 # Load the model device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = clip.load('ViT-B/32', device) # Download the dataset cifar100 = CIFAR100(root=os.path.expanduser("~/.cache"), download=True, train=False) # Prepare the inputs image, class_id = cifar100[3637] image_input = preprocess(image).unsqueeze(0).to(device) text_inputs = torch.cat([clip.tokenize(f"a photo of a {c}") for c in cifar100.classes]).to(device) # Calculate features with torch.no_grad(): image_features = model.encode_image(image_input) text_features = model.encode_text(text_inputs) # Pick the top 5 most similar labels for the image image_features /= image_features.norm(dim=-1, keepdim=True) text_features /= text_features.norm(dim=-1, keepdim=True) similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1) values, indices = similarity[0].topk(5) # Print the result print("\nTop predictions:\n") for value, index in zip(values, indices): print(f"{cifar100.classes[index]:>16s}: {100 * value.item():.2f}%") ``` The output will look like the following (the exact numbers may be slightly different depending on the compute device): ``` Top predictions: snake: 65.31% turtle: 12.29% sweet_pepper: 3.83% lizard: 1.88% crocodile: 1.75% ``` Note that this example uses the `encode_image()` and `encode_text()` methods that return the encoded features of given inputs. ### Linear-probe evaluation The example below uses [scikit-learn](https://scikit-learn.org/) to perform logistic regression on image features. ```python import os import clip import torch import numpy as np from sklearn.linear_model import LogisticRegression from torch.utils.data import DataLoader from torchvision.datasets import CIFAR100 from tqdm import tqdm # Load the model device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = clip.load('ViT-B/32', device) # Load the dataset root = os.path.expanduser("~/.cache") train = CIFAR100(root, download=True, train=True, transform=preprocess) test = CIFAR100(root, download=True, train=False, transform=preprocess) def get_features(dataset): all_features = [] all_labels = [] with torch.no_grad(): for images, labels in tqdm(DataLoader(dataset, batch_size=100)): features = model.encode_image(images.to(device)) all_features.append(features) all_labels.append(labels) return torch.cat(all_features).cpu().numpy(), torch.cat(all_labels).cpu().numpy() # Calculate the image features train_features, train_labels = get_features(train) test_features, test_labels = get_features(test) # Perform logistic regression classifier = LogisticRegression(random_state=0, C=0.316, max_iter=1000, verbose=1) classifier.fit(train_features, train_labels) # Evaluate using the logistic regression classifier predictions = classifier.predict(test_features) accuracy = np.mean((test_labels == predictions).astype(float)) * 100. print(f"Accuracy = {accuracy:.3f}") ``` Note that the `C` value should be determined via a hyperparameter sweep using a validation split. ## See Also * [OpenCLIP](https://github.com/mlfoundations/open_clip): includes larger and independently trained CLIP models up to ViT-G/14 * [Hugging Face implementation of CLIP](https://huggingface.co/docs/transformers/model_doc/clip): for easier integration with the HF ecosystem ================================================ FILE: CLIP/__init__.py ================================================ from .clip import * ================================================ FILE: CLIP/clip/__init__.py ================================================ from .clip import * ================================================ FILE: CLIP/clip/clip.py ================================================ import hashlib import os import urllib import warnings from typing import Any, Union, List from pkg_resources import packaging import torch from PIL import Image from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize from tqdm import tqdm from .model import build_model from .simple_tokenizer import SimpleTokenizer as _Tokenizer try: from torchvision.transforms import InterpolationMode BICUBIC = InterpolationMode.BICUBIC except ImportError: BICUBIC = Image.BICUBIC if packaging.version.parse(torch.__version__) < packaging.version.parse("1.7.1"): warnings.warn("PyTorch version 1.7.1 or higher is recommended") __all__ = ["available_models", "load", "tokenize"] _tokenizer = _Tokenizer() _MODELS = { "RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt", "RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt", "RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt", "RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt", "RN50x64": "https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt", "ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt", "ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt", "ViT-L/14": "https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt", "ViT-L/14@336px": "https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt", } def _download(url: str, root: str): os.makedirs(root, exist_ok=True) filename = os.path.basename(url) expected_sha256 = url.split("/")[-2] download_target = os.path.join(root, filename) if os.path.exists(download_target) and not os.path.isfile(download_target): raise RuntimeError(f"{download_target} exists and is not a regular file") if os.path.isfile(download_target): if hashlib.sha256(open(download_target, "rb").read()).hexdigest() == expected_sha256: return download_target else: warnings.warn(f"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file") with urllib.request.urlopen(url) as source, open(download_target, "wb") as output: with tqdm(total=int(source.info().get("Content-Length")), ncols=80, unit='iB', unit_scale=True, unit_divisor=1024) as loop: while True: buffer = source.read(8192) if not buffer: break output.write(buffer) loop.update(len(buffer)) if hashlib.sha256(open(download_target, "rb").read()).hexdigest() != expected_sha256: raise RuntimeError("Model has been downloaded but the SHA256 checksum does not not match") return download_target def _convert_image_to_rgb(image): return image.convert("RGB") def _transform(n_px): return Compose([ Resize(n_px, interpolation=BICUBIC), CenterCrop(n_px), _convert_image_to_rgb, ToTensor(), Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), ]) def available_models() -> List[str]: """Returns the names of available CLIP models""" return list(_MODELS.keys()) def load(name: str, device: Union[str, torch.device] = "cuda" if torch.cuda.is_available() else "cpu", jit: bool = False, download_root: str = None): """Load a CLIP model Parameters ---------- name : str A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict device : Union[str, torch.device] The device to put the loaded model jit : bool Whether to load the optimized JIT model or more hackable non-JIT model (default). download_root: str path to download the model files; by default, it uses "~/.cache/clip" Returns ------- model : torch.nn.Module The CLIP model preprocess : Callable[[PIL.Image], torch.Tensor] A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input """ if name in _MODELS: model_path = _download(_MODELS[name], download_root or os.path.expanduser("~/.cache/clip")) elif os.path.isfile(name): model_path = name else: raise RuntimeError(f"Model {name} not found; available models = {available_models()}") with open(model_path, 'rb') as opened_file: try: # loading JIT archive model = torch.jit.load(opened_file, map_location=device if jit else "cpu").eval() state_dict = None except RuntimeError: # loading saved state dict if jit: warnings.warn(f"File {model_path} is not a JIT archive. Loading as a state dict instead") jit = False state_dict = torch.load(opened_file, map_location="cpu") if not jit: model = build_model(state_dict or model.state_dict()).to(device) if str(device) == "cpu": model.float() return model, _transform(model.visual.input_resolution) # patch the device names device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[]) device_node = [n for n in device_holder.graph.findAllNodes("prim::Constant") if "Device" in repr(n)][-1] def patch_device(module): try: graphs = [module.graph] if hasattr(module, "graph") else [] except RuntimeError: graphs = [] if hasattr(module, "forward1"): graphs.append(module.forward1.graph) for graph in graphs: for node in graph.findAllNodes("prim::Constant"): if "value" in node.attributeNames() and str(node["value"]).startswith("cuda"): node.copyAttributes(device_node) model.apply(patch_device) patch_device(model.encode_image) patch_device(model.encode_text) # patch dtype to float32 on CPU if str(device) == "cpu": float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[]) float_input = list(float_holder.graph.findNode("aten::to").inputs())[1] float_node = float_input.node() def patch_float(module): try: graphs = [module.graph] if hasattr(module, "graph") else [] except RuntimeError: graphs = [] if hasattr(module, "forward1"): graphs.append(module.forward1.graph) for graph in graphs: for node in graph.findAllNodes("aten::to"): inputs = list(node.inputs()) for i in [1, 2]: # dtype can be the second or third argument to aten::to() if inputs[i].node()["value"] == 5: inputs[i].node().copyAttributes(float_node) model.apply(patch_float) patch_float(model.encode_image) patch_float(model.encode_text) model.float() return model, _transform(model.input_resolution.item()) def tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> Union[torch.IntTensor, torch.LongTensor]: """ Returns the tokenized representation of given input string(s) Parameters ---------- texts : Union[str, List[str]] An input string or a list of input strings to tokenize context_length : int The context length to use; all CLIP models use 77 as the context length truncate: bool Whether to truncate the text in case its encoding is longer than the context length Returns ------- A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length]. We return LongTensor when torch version is <1.8.0, since older index_select requires indices to be long. """ if isinstance(texts, str): texts = [texts] sot_token = _tokenizer.encoder["<|startoftext|>"] eot_token = _tokenizer.encoder["<|endoftext|>"] all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts] if packaging.version.parse(torch.__version__) < packaging.version.parse("1.8.0"): result = torch.zeros(len(all_tokens), context_length, dtype=torch.long) else: result = torch.zeros(len(all_tokens), context_length, dtype=torch.int) for i, tokens in enumerate(all_tokens): if len(tokens) > context_length: if truncate: tokens = tokens[:context_length] tokens[-1] = eot_token else: raise RuntimeError(f"Input {texts[i]} is too long for context length {context_length}") result[i, :len(tokens)] = torch.tensor(tokens) return result ================================================ FILE: CLIP/clip/model.py ================================================ from collections import OrderedDict from typing import Tuple, Union import numpy as np import torch import torch.nn.functional as F from torch import nn class Bottleneck(nn.Module): expansion = 4 def __init__(self, inplanes, planes, stride=1): super().__init__() # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1 self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False) self.bn1 = nn.BatchNorm2d(planes) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(planes) self.relu2 = nn.ReLU(inplace=True) self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity() self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False) self.bn3 = nn.BatchNorm2d(planes * self.expansion) self.relu3 = nn.ReLU(inplace=True) self.downsample = None self.stride = stride if stride > 1 or inplanes != planes * Bottleneck.expansion: # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1 self.downsample = nn.Sequential(OrderedDict([ ("-1", nn.AvgPool2d(stride)), ("0", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)), ("1", nn.BatchNorm2d(planes * self.expansion)) ])) def forward(self, x: torch.Tensor): identity = x out = self.relu1(self.bn1(self.conv1(x))) out = self.relu2(self.bn2(self.conv2(out))) out = self.avgpool(out) out = self.bn3(self.conv3(out)) if self.downsample is not None: identity = self.downsample(x) out += identity out = self.relu3(out) return out class AttentionPool2d(nn.Module): def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None): super().__init__() self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5) self.k_proj = nn.Linear(embed_dim, embed_dim) self.q_proj = nn.Linear(embed_dim, embed_dim) self.v_proj = nn.Linear(embed_dim, embed_dim) self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim) self.num_heads = num_heads def forward(self, x): x = x.flatten(start_dim=2).permute(2, 0, 1) # NCHW -> (HW)NC x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0) # (HW+1)NC x = x + self.positional_embedding[:, None, :].to(x.dtype) # (HW+1)NC x, _ = F.multi_head_attention_forward( query=x[:1], key=x, value=x, embed_dim_to_check=x.shape[-1], num_heads=self.num_heads, q_proj_weight=self.q_proj.weight, k_proj_weight=self.k_proj.weight, v_proj_weight=self.v_proj.weight, in_proj_weight=None, in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]), bias_k=None, bias_v=None, add_zero_attn=False, dropout_p=0, out_proj_weight=self.c_proj.weight, out_proj_bias=self.c_proj.bias, use_separate_proj_weight=True, training=self.training, need_weights=False ) return x.squeeze(0) class ModifiedResNet(nn.Module): """ A ResNet class that is similar to torchvision's but contains the following changes: - There are now 3 "stem" convolutions as opposed to 1, with an average pool instead of a max pool. - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1 - The final pooling layer is a QKV attention instead of an average pool """ def __init__(self, layers, output_dim, heads, input_resolution=224, width=64): super().__init__() self.output_dim = output_dim self.input_resolution = input_resolution # the 3-layer stem self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(width // 2) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(width // 2) self.relu2 = nn.ReLU(inplace=True) self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False) self.bn3 = nn.BatchNorm2d(width) self.relu3 = nn.ReLU(inplace=True) self.avgpool = nn.AvgPool2d(2) # residual layers self._inplanes = width # this is a *mutable* variable used during construction self.layer1 = self._make_layer(width, layers[0]) self.layer2 = self._make_layer(width * 2, layers[1], stride=2) self.layer3 = self._make_layer(width * 4, layers[2], stride=2) self.layer4 = self._make_layer(width * 8, layers[3], stride=2) embed_dim = width * 32 # the ResNet feature dimension self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim) def _make_layer(self, planes, blocks, stride=1): layers = [Bottleneck(self._inplanes, planes, stride)] self._inplanes = planes * Bottleneck.expansion for _ in range(1, blocks): layers.append(Bottleneck(self._inplanes, planes)) return nn.Sequential(*layers) def forward(self, x): def stem(x): x = self.relu1(self.bn1(self.conv1(x))) x = self.relu2(self.bn2(self.conv2(x))) x = self.relu3(self.bn3(self.conv3(x))) x = self.avgpool(x) return x x = x.type(self.conv1.weight.dtype) x = stem(x) x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) x = self.attnpool(x) return x class LayerNorm(nn.LayerNorm): """Subclass torch's LayerNorm to handle fp16.""" def forward(self, x: torch.Tensor): orig_type = x.dtype ret = super().forward(x.type(torch.float32)) return ret.type(orig_type) class QuickGELU(nn.Module): def forward(self, x: torch.Tensor): return x * torch.sigmoid(1.702 * x) class ResidualAttentionBlock(nn.Module): def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None): super().__init__() self.attn = nn.MultiheadAttention(d_model, n_head) self.ln_1 = LayerNorm(d_model) self.mlp = nn.Sequential(OrderedDict([ ("c_fc", nn.Linear(d_model, d_model * 4)), ("gelu", QuickGELU()), ("c_proj", nn.Linear(d_model * 4, d_model)) ])) self.ln_2 = LayerNorm(d_model) self.attn_mask = attn_mask def attention(self, x: torch.Tensor): self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0] def forward(self, x: torch.Tensor): x = x + self.attention(self.ln_1(x)) x = x + self.mlp(self.ln_2(x)) return x class Transformer(nn.Module): def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None): super().__init__() self.width = width self.layers = layers self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)]) def forward(self, x: torch.Tensor): return self.resblocks(x) class VisionTransformer(nn.Module): def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int): super().__init__() self.input_resolution = input_resolution self.output_dim = output_dim self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False) scale = width ** -0.5 self.class_embedding = nn.Parameter(scale * torch.randn(width)) self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width)) self.ln_pre = LayerNorm(width) self.transformer = Transformer(width, layers, heads) self.ln_post = LayerNorm(width) self.proj = nn.Parameter(scale * torch.randn(width, output_dim)) def forward(self, x: torch.Tensor): x = self.conv1(x) # shape = [*, width, grid, grid] x = x.reshape(x.shape[0], x.shape[1], -1) # shape = [*, width, grid ** 2] x = x.permute(0, 2, 1) # shape = [*, grid ** 2, width] x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1) # shape = [*, grid ** 2 + 1, width] x = x + self.positional_embedding.to(x.dtype) x = self.ln_pre(x) x = x.permute(1, 0, 2) # NLD -> LND x = self.transformer(x) x = x.permute(1, 0, 2) # LND -> NLD x = self.ln_post(x[:, 0, :]) if self.proj is not None: x = x @ self.proj return x class CLIP(nn.Module): def __init__(self, embed_dim: int, # vision image_resolution: int, vision_layers: Union[Tuple[int, int, int, int], int], vision_width: int, vision_patch_size: int, # text context_length: int, vocab_size: int, transformer_width: int, transformer_heads: int, transformer_layers: int ): super().__init__() self.context_length = context_length if isinstance(vision_layers, (tuple, list)): vision_heads = vision_width * 32 // 64 self.visual = ModifiedResNet( layers=vision_layers, output_dim=embed_dim, heads=vision_heads, input_resolution=image_resolution, width=vision_width ) else: vision_heads = vision_width // 64 self.visual = VisionTransformer( input_resolution=image_resolution, patch_size=vision_patch_size, width=vision_width, layers=vision_layers, heads=vision_heads, output_dim=embed_dim ) self.transformer = Transformer( width=transformer_width, layers=transformer_layers, heads=transformer_heads, attn_mask=self.build_attention_mask() ) self.vocab_size = vocab_size self.token_embedding = nn.Embedding(vocab_size, transformer_width) self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width)) self.ln_final = LayerNorm(transformer_width) self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim)) self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07)) self.initialize_parameters() def initialize_parameters(self): nn.init.normal_(self.token_embedding.weight, std=0.02) nn.init.normal_(self.positional_embedding, std=0.01) if isinstance(self.visual, ModifiedResNet): if self.visual.attnpool is not None: std = self.visual.attnpool.c_proj.in_features ** -0.5 nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std) for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]: for name, param in resnet_block.named_parameters(): if name.endswith("bn3.weight"): nn.init.zeros_(param) proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5) attn_std = self.transformer.width ** -0.5 fc_std = (2 * self.transformer.width) ** -0.5 for block in self.transformer.resblocks: nn.init.normal_(block.attn.in_proj_weight, std=attn_std) nn.init.normal_(block.attn.out_proj.weight, std=proj_std) nn.init.normal_(block.mlp.c_fc.weight, std=fc_std) nn.init.normal_(block.mlp.c_proj.weight, std=proj_std) if self.text_projection is not None: nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5) def build_attention_mask(self): # lazily create causal attention mask, with full attention between the vision tokens # pytorch uses additive attention mask; fill with -inf mask = torch.empty(self.context_length, self.context_length) mask.fill_(float("-inf")) mask.triu_(1) # zero out the lower diagonal return mask @property def dtype(self): return self.visual.conv1.weight.dtype def encode_image(self, image): return self.visual(image.type(self.dtype)) def encode_text(self, text): x = self.token_embedding(text).type(self.dtype) # [batch_size, n_ctx, d_model] x = x + self.positional_embedding.type(self.dtype) x = x.permute(1, 0, 2) # NLD -> LND x = self.transformer(x) x = x.permute(1, 0, 2) # LND -> NLD x = self.ln_final(x).type(self.dtype) # x.shape = [batch_size, n_ctx, transformer.width] # take features from the eot embedding (eot_token is the highest number in each sequence) x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection return x def forward(self, image, text): image_features = self.encode_image(image) text_features = self.encode_text(text) # normalized features image_features = image_features / image_features.norm(dim=1, keepdim=True) text_features = text_features / text_features.norm(dim=1, keepdim=True) # cosine similarity as logits logit_scale = self.logit_scale.exp() logits_per_image = logit_scale * image_features @ text_features.t() logits_per_text = logits_per_image.t() # shape = [global_batch_size, global_batch_size] return logits_per_image, logits_per_text def convert_weights(model: nn.Module): """Convert applicable model parameters to fp16""" def _convert_weights_to_fp16(l): if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)): l.weight.data = l.weight.data.half() if l.bias is not None: l.bias.data = l.bias.data.half() if isinstance(l, nn.MultiheadAttention): for attr in [*[f"{s}_proj_weight" for s in ["in", "q", "k", "v"]], "in_proj_bias", "bias_k", "bias_v"]: tensor = getattr(l, attr) if tensor is not None: tensor.data = tensor.data.half() for name in ["text_projection", "proj"]: if hasattr(l, name): attr = getattr(l, name) if attr is not None: attr.data = attr.data.half() model.apply(_convert_weights_to_fp16) def build_model(state_dict: dict): vit = "visual.proj" in state_dict if vit: vision_width = state_dict["visual.conv1.weight"].shape[0] vision_layers = len([k for k in state_dict.keys() if k.startswith("visual.") and k.endswith(".attn.in_proj_weight")]) vision_patch_size = state_dict["visual.conv1.weight"].shape[-1] grid_size = round((state_dict["visual.positional_embedding"].shape[0] - 1) ** 0.5) image_resolution = vision_patch_size * grid_size else: counts: list = [len(set(k.split(".")[2] for k in state_dict if k.startswith(f"visual.layer{b}"))) for b in [1, 2, 3, 4]] vision_layers = tuple(counts) vision_width = state_dict["visual.layer1.0.conv1.weight"].shape[0] output_width = round((state_dict["visual.attnpool.positional_embedding"].shape[0] - 1) ** 0.5) vision_patch_size = None assert output_width ** 2 + 1 == state_dict["visual.attnpool.positional_embedding"].shape[0] image_resolution = output_width * 32 embed_dim = state_dict["text_projection"].shape[1] context_length = state_dict["positional_embedding"].shape[0] vocab_size = state_dict["token_embedding.weight"].shape[0] transformer_width = state_dict["ln_final.weight"].shape[0] transformer_heads = transformer_width // 64 transformer_layers = len(set(k.split(".")[2] for k in state_dict if k.startswith("transformer.resblocks"))) model = CLIP( embed_dim, image_resolution, vision_layers, vision_width, vision_patch_size, context_length, vocab_size, transformer_width, transformer_heads, transformer_layers ) for key in ["input_resolution", "context_length", "vocab_size"]: if key in state_dict: del state_dict[key] convert_weights(model) model.load_state_dict(state_dict) return model.eval() ================================================ FILE: CLIP/clip/simple_tokenizer.py ================================================ import gzip import html import os from functools import lru_cache import ftfy import regex as re @lru_cache() def default_bpe(): return os.path.join(os.path.dirname(os.path.abspath(__file__)), "bpe_simple_vocab_16e6.txt.gz") @lru_cache() def bytes_to_unicode(): """ Returns list of utf-8 byte and a corresponding list of unicode strings. The reversible bpe codes work on unicode strings. This means you need a large # of unicode characters in your vocab if you want to avoid UNKs. When you're at something like a 10B token dataset you end up needing around 5K for decent coverage. This is a signficant percentage of your normal, say, 32K bpe vocab. To avoid that, we want lookup tables between utf-8 bytes and unicode strings. And avoids mapping to whitespace/control characters the bpe code barfs on. """ bs = list(range(ord("!"), ord("~")+1))+list(range(ord("¡"), ord("¬")+1))+list(range(ord("®"), ord("ÿ")+1)) cs = bs[:] n = 0 for b in range(2**8): if b not in bs: bs.append(b) cs.append(2**8+n) n += 1 cs = [chr(n) for n in cs] return dict(zip(bs, cs)) def get_pairs(word): """Return set of symbol pairs in a word. Word is represented as tuple of symbols (symbols being variable-length strings). """ pairs = set() prev_char = word[0] for char in word[1:]: pairs.add((prev_char, char)) prev_char = char return pairs def basic_clean(text): text = ftfy.fix_text(text) text = html.unescape(html.unescape(text)) return text.strip() def whitespace_clean(text): text = re.sub(r'\s+', ' ', text) text = text.strip() return text class SimpleTokenizer(object): def __init__(self, bpe_path: str = default_bpe()): self.byte_encoder = bytes_to_unicode() self.byte_decoder = {v: k for k, v in self.byte_encoder.items()} merges = gzip.open(bpe_path).read().decode("utf-8").split('\n') merges = merges[1:49152-256-2+1] merges = [tuple(merge.split()) for merge in merges] vocab = list(bytes_to_unicode().values()) vocab = vocab + [v+'' for v in vocab] for merge in merges: vocab.append(''.join(merge)) vocab.extend(['<|startoftext|>', '<|endoftext|>']) self.encoder = dict(zip(vocab, range(len(vocab)))) self.decoder = {v: k for k, v in self.encoder.items()} self.bpe_ranks = dict(zip(merges, range(len(merges)))) self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'} self.pat = re.compile(r"""<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+""", re.IGNORECASE) def bpe(self, token): if token in self.cache: return self.cache[token] word = tuple(token[:-1]) + ( token[-1] + '',) pairs = get_pairs(word) if not pairs: return token+'' while True: bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf'))) if bigram not in self.bpe_ranks: break first, second = bigram new_word = [] i = 0 while i < len(word): try: j = word.index(first, i) new_word.extend(word[i:j]) i = j except: new_word.extend(word[i:]) break if word[i] == first and i < len(word)-1 and word[i+1] == second: new_word.append(first+second) i += 2 else: new_word.append(word[i]) i += 1 new_word = tuple(new_word) word = new_word if len(word) == 1: break else: pairs = get_pairs(word) word = ' '.join(word) self.cache[token] = word return word def encode(self, text): bpe_tokens = [] text = whitespace_clean(basic_clean(text)).lower() for token in re.findall(self.pat, text): token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8')) bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' ')) return bpe_tokens def decode(self, tokens): text = ''.join([self.decoder[token] for token in tokens]) text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors="replace").replace('', ' ') return text ================================================ FILE: CLIP/clip.py ================================================ import hashlib import os import urllib import warnings from typing import Any, Union, List from pkg_resources import packaging import torch from PIL import Image from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize from tqdm import tqdm from .model import build_model from .simple_tokenizer import SimpleTokenizer as _Tokenizer try: from torchvision.transforms import InterpolationMode BICUBIC = InterpolationMode.BICUBIC except ImportError: BICUBIC = Image.BICUBIC if packaging.version.parse(torch.__version__) < packaging.version.parse("1.7.1"): warnings.warn("PyTorch version 1.7.1 or higher is recommended") __all__ = ["available_models", "load", "tokenize"] _tokenizer = _Tokenizer() _MODELS = { "RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt", "RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt", "RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt", "RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt", "RN50x64": "https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt", "ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt", "ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt", "ViT-L/14": "https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt", "ViT-L/14@336px": "https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt", } def _download(url: str, root: str): os.makedirs(root, exist_ok=True) filename = os.path.basename(url) expected_sha256 = url.split("/")[-2] download_target = os.path.join(root, filename) if os.path.exists(download_target) and not os.path.isfile(download_target): raise RuntimeError(f"{download_target} exists and is not a regular file") if os.path.isfile(download_target): if hashlib.sha256(open(download_target, "rb").read()).hexdigest() == expected_sha256: return download_target else: warnings.warn(f"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file") with urllib.request.urlopen(url) as source, open(download_target, "wb") as output: with tqdm(total=int(source.info().get("Content-Length")), ncols=80, unit='iB', unit_scale=True, unit_divisor=1024) as loop: while True: buffer = source.read(8192) if not buffer: break output.write(buffer) loop.update(len(buffer)) if hashlib.sha256(open(download_target, "rb").read()).hexdigest() != expected_sha256: raise RuntimeError("Model has been downloaded but the SHA256 checksum does not not match") return download_target def _convert_image_to_rgb(image): return image.convert("RGB") def _transform(n_px): return Compose([ Resize(n_px, interpolation=BICUBIC), CenterCrop(n_px), _convert_image_to_rgb, ToTensor(), Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), ]) def available_models() -> List[str]: """Returns the names of available CLIP models""" return list(_MODELS.keys()) def load(name: str, device: Union[str, torch.device] = "cuda" if torch.cuda.is_available() else "cpu", jit: bool = False, download_root: str = None): """Load a CLIP model Parameters ---------- name : str A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict device : Union[str, torch.device] The device to put the loaded model jit : bool Whether to load the optimized JIT model or more hackable non-JIT model (default). download_root: str path to download the model files; by default, it uses "~/.cache/clip" Returns ------- model : torch.nn.Module The CLIP model preprocess : Callable[[PIL.Image], torch.Tensor] A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input """ if name in _MODELS: model_path = _download(_MODELS[name], download_root or os.path.expanduser("~/.cache/clip")) elif os.path.isfile(name): model_path = name else: raise RuntimeError(f"Model {name} not found; available models = {available_models()}") with open(model_path, 'rb') as opened_file: try: # loading JIT archive model = torch.jit.load(opened_file, map_location=device if jit else "cpu").eval() state_dict = None except RuntimeError: # loading saved state dict if jit: warnings.warn(f"File {model_path} is not a JIT archive. Loading as a state dict instead") jit = False state_dict = torch.load(opened_file, map_location="cpu") if not jit: model = build_model(state_dict or model.state_dict()).to(device) if str(device) == "cpu": model.float() return model, _transform(model.visual.input_resolution) # patch the device names device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[]) device_node = [n for n in device_holder.graph.findAllNodes("prim::Constant") if "Device" in repr(n)][-1] def patch_device(module): try: graphs = [module.graph] if hasattr(module, "graph") else [] except RuntimeError: graphs = [] if hasattr(module, "forward1"): graphs.append(module.forward1.graph) for graph in graphs: for node in graph.findAllNodes("prim::Constant"): if "value" in node.attributeNames() and str(node["value"]).startswith("cuda"): node.copyAttributes(device_node) model.apply(patch_device) patch_device(model.encode_image) patch_device(model.encode_text) # patch dtype to float32 on CPU if str(device) == "cpu": float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[]) float_input = list(float_holder.graph.findNode("aten::to").inputs())[1] float_node = float_input.node() def patch_float(module): try: graphs = [module.graph] if hasattr(module, "graph") else [] except RuntimeError: graphs = [] if hasattr(module, "forward1"): graphs.append(module.forward1.graph) for graph in graphs: for node in graph.findAllNodes("aten::to"): inputs = list(node.inputs()) for i in [1, 2]: # dtype can be the second or third argument to aten::to() if inputs[i].node()["value"] == 5: inputs[i].node().copyAttributes(float_node) model.apply(patch_float) patch_float(model.encode_image) patch_float(model.encode_text) model.float() return model, _transform(model.input_resolution.item()) def tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> Union[torch.IntTensor, torch.LongTensor]: """ Returns the tokenized representation of given input string(s) Parameters ---------- texts : Union[str, List[str]] An input string or a list of input strings to tokenize context_length : int The context length to use; all CLIP models use 77 as the context length truncate: bool Whether to truncate the text in case its encoding is longer than the context length Returns ------- A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length]. We return LongTensor when torch version is <1.8.0, since older index_select requires indices to be long. """ if isinstance(texts, str): texts = [texts] sot_token = _tokenizer.encoder["<|startoftext|>"] eot_token = _tokenizer.encoder["<|endoftext|>"] all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts] if packaging.version.parse(torch.__version__) < packaging.version.parse("1.8.0"): result = torch.zeros(len(all_tokens), context_length, dtype=torch.long) else: result = torch.zeros(len(all_tokens), context_length, dtype=torch.int) for i, tokens in enumerate(all_tokens): if len(tokens) > context_length: if truncate: tokens = tokens[:context_length] tokens[-1] = eot_token else: raise RuntimeError(f"Input {texts[i]} is too long for context length {context_length}") result[i, :len(tokens)] = torch.tensor(tokens) return result ================================================ FILE: CLIP/data/country211.md ================================================ # The Country211 Dataset In the paper, we used an image classification dataset called Country211, to evaluate the model's capability on geolocation. To do so, we filtered the YFCC100m dataset that have GPS coordinate corresponding to a [ISO-3166 country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) and created a balanced dataset by sampling 150 train images, 50 validation images, and 100 test images images for each country. The following command will download an 11GB archive countaining the images and extract into a subdirectory `country211`: ```bash wget https://openaipublic.azureedge.net/clip/data/country211.tgz tar zxvf country211.tgz ``` These images are a subset of the YFCC100m dataset. Use of the underlying media files is subject to the Creative Commons licenses chosen by their creators/uploaders. For more information about the YFCC100M dataset, visit [the official website](https://multimediacommons.wordpress.com/yfcc100m-core-dataset/). ================================================ FILE: CLIP/data/prompts.md ================================================ # Prompts for Image Classification Below are the class names and templates that are used for collecting the zero-shot classification scores in the paper. Each dataset has two lists `classes` and `templates`, where the string `{}` in the template is to be replaced with the corresponding class names. For the Facial Emotion Recognition 2013 dataset specifically, we used multiple class names for certain classes. This file contains prompt data for 26 of the 27 datasets shown in Table 9 of the paper; the text prompts for ImageNet (as well as other [ImageNet Testbed](https://modestyachts.github.io/imagenet-testbed/) datasets in Figure 13) can be found in [this notebook](https://github.com/openai/CLIP/blob/main/notebooks/Prompt_Engineering_for_ImageNet.ipynb), as well as how to ensemble predictions from multiple prompts using these templates. If you are viewing this document on GitHub, use the table of contents icon at the upper left to browse the datasets. ## Birdsnap ```bash classes = [ 'Acadian Flycatcher', 'Acorn Woodpecker', 'Alder Flycatcher', 'Allens Hummingbird', 'Altamira Oriole', 'American Avocet', 'American Bittern', 'American Black Duck', 'American Coot', 'American Crow', 'American Dipper', 'American Golden Plover', 'American Goldfinch', 'American Kestrel', 'American Oystercatcher', 'American Pipit', 'American Redstart', 'American Robin', 'American Three toed Woodpecker', 'American Tree Sparrow', 'American White Pelican', 'American Wigeon', 'American Woodcock', 'Anhinga', 'Annas Hummingbird', 'Arctic Tern', 'Ash throated Flycatcher', 'Audubons Oriole', 'Bairds Sandpiper', 'Bald Eagle', 'Baltimore Oriole', 'Band tailed Pigeon', 'Barn Swallow', 'Barred Owl', 'Barrows Goldeneye', 'Bay breasted Warbler', 'Bells Vireo', 'Belted Kingfisher', 'Bewicks Wren', 'Black Guillemot', 'Black Oystercatcher', 'Black Phoebe', 'Black Rosy Finch', 'Black Scoter', 'Black Skimmer', 'Black Tern', 'Black Turnstone', 'Black Vulture', 'Black and white Warbler', 'Black backed Woodpecker', 'Black bellied Plover', 'Black billed Cuckoo', 'Black billed Magpie', 'Black capped Chickadee', 'Black chinned Hummingbird', 'Black chinned Sparrow', 'Black crested Titmouse', 'Black crowned Night Heron', 'Black headed Grosbeak', 'Black legged Kittiwake', 'Black necked Stilt', 'Black throated Blue Warbler', 'Black throated Gray Warbler', 'Black throated Green Warbler', 'Black throated Sparrow', 'Blackburnian Warbler', 'Blackpoll Warbler', 'Blue Grosbeak', 'Blue Jay', 'Blue gray Gnatcatcher', 'Blue headed Vireo', 'Blue winged Teal', 'Blue winged Warbler', 'Boat tailed Grackle', 'Bobolink', 'Bohemian Waxwing', 'Bonapartes Gull', 'Boreal Chickadee', 'Brandts Cormorant', 'Brant', 'Brewers Blackbird', 'Brewers Sparrow', 'Bridled Titmouse', 'Broad billed Hummingbird', 'Broad tailed Hummingbird', 'Broad winged Hawk', 'Bronzed Cowbird', 'Brown Creeper', 'Brown Pelican', 'Brown Thrasher', 'Brown capped Rosy Finch', 'Brown crested Flycatcher', 'Brown headed Cowbird', 'Brown headed Nuthatch', 'Bufflehead', 'Bullocks Oriole', 'Burrowing Owl', 'Bushtit', 'Cackling Goose', 'Cactus Wren', 'California Gull', 'California Quail', 'California Thrasher', 'California Towhee', 'Calliope Hummingbird', 'Canada Goose', 'Canada Warbler', 'Canvasback', 'Canyon Towhee', 'Canyon Wren', 'Cape May Warbler', 'Carolina Chickadee', 'Carolina Wren', 'Caspian Tern', 'Cassins Finch', 'Cassins Kingbird', 'Cassins Sparrow', 'Cassins Vireo', 'Cattle Egret', 'Cave Swallow', 'Cedar Waxwing', 'Cerulean Warbler', 'Chestnut backed Chickadee', 'Chestnut collared Longspur', 'Chestnut sided Warbler', 'Chihuahuan Raven', 'Chimney Swift', 'Chipping Sparrow', 'Cinnamon Teal', 'Clapper Rail', 'Clarks Grebe', 'Clarks Nutcracker', 'Clay colored Sparrow', 'Cliff Swallow', 'Common Black Hawk', 'Common Eider', 'Common Gallinule', 'Common Goldeneye', 'Common Grackle', 'Common Ground Dove', 'Common Loon', 'Common Merganser', 'Common Murre', 'Common Nighthawk', 'Common Raven', 'Common Redpoll', 'Common Tern', 'Common Yellowthroat', 'Connecticut Warbler', 'Coopers Hawk', 'Cordilleran Flycatcher', 'Costas Hummingbird', 'Couchs Kingbird', 'Crested Caracara', 'Curve billed Thrasher', 'Dark eyed Junco', 'Dickcissel', 'Double crested Cormorant', 'Downy Woodpecker', 'Dunlin', 'Dusky Flycatcher', 'Dusky Grouse', 'Eared Grebe', 'Eastern Bluebird', 'Eastern Kingbird', 'Eastern Meadowlark', 'Eastern Phoebe', 'Eastern Screech Owl', 'Eastern Towhee', 'Eastern Wood Pewee', 'Elegant Trogon', 'Elf Owl', 'Eurasian Collared Dove', 'Eurasian Wigeon', 'European Starling', 'Evening Grosbeak', 'Ferruginous Hawk', 'Ferruginous Pygmy Owl', 'Field Sparrow', 'Fish Crow', 'Florida Scrub Jay', 'Forsters Tern', 'Fox Sparrow', 'Franklins Gull', 'Fulvous Whistling Duck', 'Gadwall', 'Gambels Quail', 'Gila Woodpecker', 'Glaucous Gull', 'Glaucous winged Gull', 'Glossy Ibis', 'Golden Eagle', 'Golden crowned Kinglet', 'Golden crowned Sparrow', 'Golden fronted Woodpecker', 'Golden winged Warbler', 'Grasshopper Sparrow', 'Gray Catbird', 'Gray Flycatcher', 'Gray Jay', 'Gray Kingbird', 'Gray cheeked Thrush', 'Gray crowned Rosy Finch', 'Great Black backed Gull', 'Great Blue Heron', 'Great Cormorant', 'Great Crested Flycatcher', 'Great Egret', 'Great Gray Owl', 'Great Horned Owl', 'Great Kiskadee', 'Great tailed Grackle', 'Greater Prairie Chicken', 'Greater Roadrunner', 'Greater Sage Grouse', 'Greater Scaup', 'Greater White fronted Goose', 'Greater Yellowlegs', 'Green Jay', 'Green tailed Towhee', 'Green winged Teal', 'Groove billed Ani', 'Gull billed Tern', 'Hairy Woodpecker', 'Hammonds Flycatcher', 'Harlequin Duck', 'Harriss Hawk', 'Harriss Sparrow', 'Heermanns Gull', 'Henslows Sparrow', 'Hepatic Tanager', 'Hermit Thrush', 'Herring Gull', 'Hoary Redpoll', 'Hooded Merganser', 'Hooded Oriole', 'Hooded Warbler', 'Horned Grebe', 'Horned Lark', 'House Finch', 'House Sparrow', 'House Wren', 'Huttons Vireo', 'Iceland Gull', 'Inca Dove', 'Indigo Bunting', 'Killdeer', 'King Rail', 'Ladder backed Woodpecker', 'Lapland Longspur', 'Lark Bunting', 'Lark Sparrow', 'Laughing Gull', 'Lazuli Bunting', 'Le Contes Sparrow', 'Least Bittern', 'Least Flycatcher', 'Least Grebe', 'Least Sandpiper', 'Least Tern', 'Lesser Goldfinch', 'Lesser Nighthawk', 'Lesser Scaup', 'Lesser Yellowlegs', 'Lewiss Woodpecker', 'Limpkin', 'Lincolns Sparrow', 'Little Blue Heron', 'Loggerhead Shrike', 'Long billed Curlew', 'Long billed Dowitcher', 'Long billed Thrasher', 'Long eared Owl', 'Long tailed Duck', 'Louisiana Waterthrush', 'Magnificent Frigatebird', 'Magnolia Warbler', 'Mallard', 'Marbled Godwit', 'Marsh Wren', 'Merlin', 'Mew Gull', 'Mexican Jay', 'Mississippi Kite', 'Monk Parakeet', 'Mottled Duck', 'Mountain Bluebird', 'Mountain Chickadee', 'Mountain Plover', 'Mourning Dove', 'Mourning Warbler', 'Muscovy Duck', 'Mute Swan', 'Nashville Warbler', 'Nelsons Sparrow', 'Neotropic Cormorant', 'Northern Bobwhite', 'Northern Cardinal', 'Northern Flicker', 'Northern Gannet', 'Northern Goshawk', 'Northern Harrier', 'Northern Hawk Owl', 'Northern Mockingbird', 'Northern Parula', 'Northern Pintail', 'Northern Rough winged Swallow', 'Northern Saw whet Owl', 'Northern Shrike', 'Northern Waterthrush', 'Nuttalls Woodpecker', 'Oak Titmouse', 'Olive Sparrow', 'Olive sided Flycatcher', 'Orange crowned Warbler', 'Orchard Oriole', 'Osprey', 'Ovenbird', 'Pacific Golden Plover', 'Pacific Loon', 'Pacific Wren', 'Pacific slope Flycatcher', 'Painted Bunting', 'Painted Redstart', 'Palm Warbler', 'Pectoral Sandpiper', 'Peregrine Falcon', 'Phainopepla', 'Philadelphia Vireo', 'Pied billed Grebe', 'Pigeon Guillemot', 'Pileated Woodpecker', 'Pine Grosbeak', 'Pine Siskin', 'Pine Warbler', 'Piping Plover', 'Plumbeous Vireo', 'Prairie Falcon', 'Prairie Warbler', 'Prothonotary Warbler', 'Purple Finch', 'Purple Gallinule', 'Purple Martin', 'Purple Sandpiper', 'Pygmy Nuthatch', 'Pyrrhuloxia', 'Red Crossbill', 'Red Knot', 'Red Phalarope', 'Red bellied Woodpecker', 'Red breasted Merganser', 'Red breasted Nuthatch', 'Red breasted Sapsucker', 'Red cockaded Woodpecker', 'Red eyed Vireo', 'Red headed Woodpecker', 'Red naped Sapsucker', 'Red necked Grebe', 'Red necked Phalarope', 'Red shouldered Hawk', 'Red tailed Hawk', 'Red throated Loon', 'Red winged Blackbird', 'Reddish Egret', 'Redhead', 'Ring billed Gull', 'Ring necked Duck', 'Ring necked Pheasant', 'Rock Pigeon', 'Rock Ptarmigan', 'Rock Sandpiper', 'Rock Wren', 'Rose breasted Grosbeak', 'Roseate Tern', 'Rosss Goose', 'Rough legged Hawk', 'Royal Tern', 'Ruby crowned Kinglet', 'Ruby throated Hummingbird', 'Ruddy Duck', 'Ruddy Turnstone', 'Ruffed Grouse', 'Rufous Hummingbird', 'Rufous crowned Sparrow', 'Rusty Blackbird', 'Sage Thrasher', 'Saltmarsh Sparrow', 'Sanderling', 'Sandhill Crane', 'Sandwich Tern', 'Says Phoebe', 'Scaled Quail', 'Scarlet Tanager', 'Scissor tailed Flycatcher', 'Scotts Oriole', 'Seaside Sparrow', 'Sedge Wren', 'Semipalmated Plover', 'Semipalmated Sandpiper', 'Sharp shinned Hawk', 'Sharp tailed Grouse', 'Short billed Dowitcher', 'Short eared Owl', 'Snail Kite', 'Snow Bunting', 'Snow Goose', 'Snowy Egret', 'Snowy Owl', 'Snowy Plover', 'Solitary Sandpiper', 'Song Sparrow', 'Sooty Grouse', 'Sora', 'Spotted Owl', 'Spotted Sandpiper', 'Spotted Towhee', 'Spruce Grouse', 'Stellers Jay', 'Stilt Sandpiper', 'Summer Tanager', 'Surf Scoter', 'Surfbird', 'Swainsons Hawk', 'Swainsons Thrush', 'Swallow tailed Kite', 'Swamp Sparrow', 'Tennessee Warbler', 'Thayers Gull', 'Townsends Solitaire', 'Townsends Warbler', 'Tree Swallow', 'Tricolored Heron', 'Tropical Kingbird', 'Trumpeter Swan', 'Tufted Titmouse', 'Tundra Swan', 'Turkey Vulture', 'Upland Sandpiper', 'Varied Thrush', 'Veery', 'Verdin', 'Vermilion Flycatcher', 'Vesper Sparrow', 'Violet green Swallow', 'Virginia Rail', 'Wandering Tattler', 'Warbling Vireo', 'Western Bluebird', 'Western Grebe', 'Western Gull', 'Western Kingbird', 'Western Meadowlark', 'Western Sandpiper', 'Western Screech Owl', 'Western Scrub Jay', 'Western Tanager', 'Western Wood Pewee', 'Whimbrel', 'White Ibis', 'White breasted Nuthatch', 'White crowned Sparrow', 'White eyed Vireo', 'White faced Ibis', 'White headed Woodpecker', 'White rumped Sandpiper', 'White tailed Hawk', 'White tailed Kite', 'White tailed Ptarmigan', 'White throated Sparrow', 'White throated Swift', 'White winged Crossbill', 'White winged Dove', 'White winged Scoter', 'Wild Turkey', 'Willet', 'Williamsons Sapsucker', 'Willow Flycatcher', 'Willow Ptarmigan', 'Wilsons Phalarope', 'Wilsons Plover', 'Wilsons Snipe', 'Wilsons Warbler', 'Winter Wren', 'Wood Stork', 'Wood Thrush', 'Worm eating Warbler', 'Wrentit', 'Yellow Warbler', 'Yellow bellied Flycatcher', 'Yellow bellied Sapsucker', 'Yellow billed Cuckoo', 'Yellow billed Magpie', 'Yellow breasted Chat', 'Yellow crowned Night Heron', 'Yellow eyed Junco', 'Yellow headed Blackbird', 'Yellow rumped Warbler', 'Yellow throated Vireo', 'Yellow throated Warbler', 'Zone tailed Hawk', ] templates = [ 'a photo of a {}, a type of bird.', ] ``` ## CIFAR10 ```bash classes = [ 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck', ] templates = [ 'a photo of a {}.', 'a blurry photo of a {}.', 'a black and white photo of a {}.', 'a low contrast photo of a {}.', 'a high contrast photo of a {}.', 'a bad photo of a {}.', 'a good photo of a {}.', 'a photo of a small {}.', 'a photo of a big {}.', 'a photo of the {}.', 'a blurry photo of the {}.', 'a black and white photo of the {}.', 'a low contrast photo of the {}.', 'a high contrast photo of the {}.', 'a bad photo of the {}.', 'a good photo of the {}.', 'a photo of the small {}.', 'a photo of the big {}.', ] ``` ## CIFAR100 ```bash classes = [ 'apple', 'aquarium fish', 'baby', 'bear', 'beaver', 'bed', 'bee', 'beetle', 'bicycle', 'bottle', 'bowl', 'boy', 'bridge', 'bus', 'butterfly', 'camel', 'can', 'castle', 'caterpillar', 'cattle', 'chair', 'chimpanzee', 'clock', 'cloud', 'cockroach', 'couch', 'crab', 'crocodile', 'cup', 'dinosaur', 'dolphin', 'elephant', 'flatfish', 'forest', 'fox', 'girl', 'hamster', 'house', 'kangaroo', 'keyboard', 'lamp', 'lawn mower', 'leopard', 'lion', 'lizard', 'lobster', 'man', 'maple tree', 'motorcycle', 'mountain', 'mouse', 'mushroom', 'oak tree', 'orange', 'orchid', 'otter', 'palm tree', 'pear', 'pickup truck', 'pine tree', 'plain', 'plate', 'poppy', 'porcupine', 'possum', 'rabbit', 'raccoon', 'ray', 'road', 'rocket', 'rose', 'sea', 'seal', 'shark', 'shrew', 'skunk', 'skyscraper', 'snail', 'snake', 'spider', 'squirrel', 'streetcar', 'sunflower', 'sweet pepper', 'table', 'tank', 'telephone', 'television', 'tiger', 'tractor', 'train', 'trout', 'tulip', 'turtle', 'wardrobe', 'whale', 'willow tree', 'wolf', 'woman', 'worm', ] templates = [ 'a photo of a {}.', 'a blurry photo of a {}.', 'a black and white photo of a {}.', 'a low contrast photo of a {}.', 'a high contrast photo of a {}.', 'a bad photo of a {}.', 'a good photo of a {}.', 'a photo of a small {}.', 'a photo of a big {}.', 'a photo of the {}.', 'a blurry photo of the {}.', 'a black and white photo of the {}.', 'a low contrast photo of the {}.', 'a high contrast photo of the {}.', 'a bad photo of the {}.', 'a good photo of the {}.', 'a photo of the small {}.', 'a photo of the big {}.', ] ``` ## CLEVRCounts ```bash classes = [ '10', '3', '4', '5', '6', '7', '8', '9', ] templates = [ 'a photo of {} objects.', ] ``` ## Caltech101 ```bash classes = [ 'background', 'off-center face', 'centered face', 'leopard', 'motorbike', 'accordion', 'airplane', 'anchor', 'ant', 'barrel', 'bass', 'beaver', 'binocular', 'bonsai', 'brain', 'brontosaurus', 'buddha', 'butterfly', 'camera', 'cannon', 'side of a car', 'ceiling fan', 'cellphone', 'chair', 'chandelier', 'body of a cougar cat', 'face of a cougar cat', 'crab', 'crayfish', 'crocodile', 'head of a crocodile', 'cup', 'dalmatian', 'dollar bill', 'dolphin', 'dragonfly', 'electric guitar', 'elephant', 'emu', 'euphonium', 'ewer', 'ferry', 'flamingo', 'head of a flamingo', 'garfield', 'gerenuk', 'gramophone', 'grand piano', 'hawksbill', 'headphone', 'hedgehog', 'helicopter', 'ibis', 'inline skate', 'joshua tree', 'kangaroo', 'ketch', 'lamp', 'laptop', 'llama', 'lobster', 'lotus', 'mandolin', 'mayfly', 'menorah', 'metronome', 'minaret', 'nautilus', 'octopus', 'okapi', 'pagoda', 'panda', 'pigeon', 'pizza', 'platypus', 'pyramid', 'revolver', 'rhino', 'rooster', 'saxophone', 'schooner', 'scissors', 'scorpion', 'sea horse', 'snoopy (cartoon beagle)', 'soccer ball', 'stapler', 'starfish', 'stegosaurus', 'stop sign', 'strawberry', 'sunflower', 'tick', 'trilobite', 'umbrella', 'watch', 'water lilly', 'wheelchair', 'wild cat', 'windsor chair', 'wrench', 'yin and yang symbol', ] templates = [ 'a photo of a {}.', 'a painting of a {}.', 'a plastic {}.', 'a sculpture of a {}.', 'a sketch of a {}.', 'a tattoo of a {}.', 'a toy {}.', 'a rendition of a {}.', 'a embroidered {}.', 'a cartoon {}.', 'a {} in a video game.', 'a plushie {}.', 'a origami {}.', 'art of a {}.', 'graffiti of a {}.', 'a drawing of a {}.', 'a doodle of a {}.', 'a photo of the {}.', 'a painting of the {}.', 'the plastic {}.', 'a sculpture of the {}.', 'a sketch of the {}.', 'a tattoo of the {}.', 'the toy {}.', 'a rendition of the {}.', 'the embroidered {}.', 'the cartoon {}.', 'the {} in a video game.', 'the plushie {}.', 'the origami {}.', 'art of the {}.', 'graffiti of the {}.', 'a drawing of the {}.', 'a doodle of the {}.', ] ``` ## Country211 ```bash classes = [ 'Andorra', 'United Arab Emirates', 'Afghanistan', 'Antigua and Barbuda', 'Anguilla', 'Albania', 'Armenia', 'Angola', 'Antarctica', 'Argentina', 'Austria', 'Australia', 'Aruba', 'Aland Islands', 'Azerbaijan', 'Bosnia and Herzegovina', 'Barbados', 'Bangladesh', 'Belgium', 'Burkina Faso', 'Bulgaria', 'Bahrain', 'Benin', 'Bermuda', 'Brunei Darussalam', 'Bolivia', 'Bonaire, Saint Eustatius and Saba', 'Brazil', 'Bahamas', 'Bhutan', 'Botswana', 'Belarus', 'Belize', 'Canada', 'DR Congo', 'Central African Republic', 'Switzerland', "Cote d'Ivoire", 'Cook Islands', 'Chile', 'Cameroon', 'China', 'Colombia', 'Costa Rica', 'Cuba', 'Cabo Verde', 'Curacao', 'Cyprus', 'Czech Republic', 'Germany', 'Denmark', 'Dominica', 'Dominican Republic', 'Algeria', 'Ecuador', 'Estonia', 'Egypt', 'Spain', 'Ethiopia', 'Finland', 'Fiji', 'Falkland Islands', 'Faeroe Islands', 'France', 'Gabon', 'United Kingdom', 'Grenada', 'Georgia', 'French Guiana', 'Guernsey', 'Ghana', 'Gibraltar', 'Greenland', 'Gambia', 'Guadeloupe', 'Greece', 'South Georgia and South Sandwich Is.', 'Guatemala', 'Guam', 'Guyana', 'Hong Kong', 'Honduras', 'Croatia', 'Haiti', 'Hungary', 'Indonesia', 'Ireland', 'Israel', 'Isle of Man', 'India', 'Iraq', 'Iran', 'Iceland', 'Italy', 'Jersey', 'Jamaica', 'Jordan', 'Japan', 'Kenya', 'Kyrgyz Republic', 'Cambodia', 'St. Kitts and Nevis', 'North Korea', 'South Korea', 'Kuwait', 'Cayman Islands', 'Kazakhstan', 'Laos', 'Lebanon', 'St. Lucia', 'Liechtenstein', 'Sri Lanka', 'Liberia', 'Lithuania', 'Luxembourg', 'Latvia', 'Libya', 'Morocco', 'Monaco', 'Moldova', 'Montenegro', 'Saint-Martin', 'Madagascar', 'Macedonia', 'Mali', 'Myanmar', 'Mongolia', 'Macau', 'Martinique', 'Mauritania', 'Malta', 'Mauritius', 'Maldives', 'Malawi', 'Mexico', 'Malaysia', 'Mozambique', 'Namibia', 'New Caledonia', 'Nigeria', 'Nicaragua', 'Netherlands', 'Norway', 'Nepal', 'New Zealand', 'Oman', 'Panama', 'Peru', 'French Polynesia', 'Papua New Guinea', 'Philippines', 'Pakistan', 'Poland', 'Puerto Rico', 'Palestine', 'Portugal', 'Palau', 'Paraguay', 'Qatar', 'Reunion', 'Romania', 'Serbia', 'Russia', 'Rwanda', 'Saudi Arabia', 'Solomon Islands', 'Seychelles', 'Sudan', 'Sweden', 'Singapore', 'St. Helena', 'Slovenia', 'Svalbard and Jan Mayen Islands', 'Slovakia', 'Sierra Leone', 'San Marino', 'Senegal', 'Somalia', 'South Sudan', 'El Salvador', 'Sint Maarten', 'Syria', 'Eswatini', 'Togo', 'Thailand', 'Tajikistan', 'Timor-Leste', 'Turkmenistan', 'Tunisia', 'Tonga', 'Turkey', 'Trinidad and Tobago', 'Taiwan', 'Tanzania', 'Ukraine', 'Uganda', 'United States', 'Uruguay', 'Uzbekistan', 'Vatican', 'Venezuela', 'British Virgin Islands', 'United States Virgin Islands', 'Vietnam', 'Vanuatu', 'Samoa', 'Kosovo', 'Yemen', 'South Africa', 'Zambia', 'Zimbabwe', ] templates = [ 'a photo i took in {}.', 'a photo i took while visiting {}.', 'a photo from my home country of {}.', 'a photo from my visit to {}.', 'a photo showing the country of {}.', ] ``` ## DescribableTextures ```bash classes = [ 'banded', 'blotchy', 'braided', 'bubbly', 'bumpy', 'chequered', 'cobwebbed', 'cracked', 'crosshatched', 'crystalline', 'dotted', 'fibrous', 'flecked', 'freckled', 'frilly', 'gauzy', 'grid', 'grooved', 'honeycombed', 'interlaced', 'knitted', 'lacelike', 'lined', 'marbled', 'matted', 'meshed', 'paisley', 'perforated', 'pitted', 'pleated', 'polka-dotted', 'porous', 'potholed', 'scaly', 'smeared', 'spiralled', 'sprinkled', 'stained', 'stratified', 'striped', 'studded', 'swirly', 'veined', 'waffled', 'woven', 'wrinkled', 'zigzagged', ] templates = [ 'a photo of a {} texture.', 'a photo of a {} pattern.', 'a photo of a {} thing.', 'a photo of a {} object.', 'a photo of the {} texture.', 'a photo of the {} pattern.', 'a photo of the {} thing.', 'a photo of the {} object.', ] ``` ## EuroSAT ```bash classes = [ 'forest', 'permanent crop land', 'residential buildings or homes or apartments', 'river', 'pasture land', 'lake or sea', 'brushland or shrubland', 'annual crop land', 'industrial buildings or commercial buildings', 'highway or road', ] templates = [ 'a centered satellite photo of {}.', 'a centered satellite photo of a {}.', 'a centered satellite photo of the {}.', ] ``` ## FGVCAircraft ```bash classes = [ '707-320', '727-200', '737-200', '737-300', '737-400', '737-500', '737-600', '737-700', '737-800', '737-900', '747-100', '747-200', '747-300', '747-400', '757-200', '757-300', '767-200', '767-300', '767-400', '777-200', '777-300', 'A300B4', 'A310', 'A318', 'A319', 'A320', 'A321', 'A330-200', 'A330-300', 'A340-200', 'A340-300', 'A340-500', 'A340-600', 'A380', 'ATR-42', 'ATR-72', 'An-12', 'BAE 146-200', 'BAE 146-300', 'BAE-125', 'Beechcraft 1900', 'Boeing 717', 'C-130', 'C-47', 'CRJ-200', 'CRJ-700', 'CRJ-900', 'Cessna 172', 'Cessna 208', 'Cessna 525', 'Cessna 560', 'Challenger 600', 'DC-10', 'DC-3', 'DC-6', 'DC-8', 'DC-9-30', 'DH-82', 'DHC-1', 'DHC-6', 'DHC-8-100', 'DHC-8-300', 'DR-400', 'Dornier 328', 'E-170', 'E-190', 'E-195', 'EMB-120', 'ERJ 135', 'ERJ 145', 'Embraer Legacy 600', 'Eurofighter Typhoon', 'F-16A/B', 'F/A-18', 'Falcon 2000', 'Falcon 900', 'Fokker 100', 'Fokker 50', 'Fokker 70', 'Global Express', 'Gulfstream IV', 'Gulfstream V', 'Hawk T1', 'Il-76', 'L-1011', 'MD-11', 'MD-80', 'MD-87', 'MD-90', 'Metroliner', 'Model B200', 'PA-28', 'SR-20', 'Saab 2000', 'Saab 340', 'Spitfire', 'Tornado', 'Tu-134', 'Tu-154', 'Yak-42', ] templates = [ 'a photo of a {}, a type of aircraft.', 'a photo of the {}, a type of aircraft.', ] ``` ## FacialEmotionRecognition2013 ```bash classes = [ ['angry'], ['disgusted'], ['fearful'], ['happy', 'smiling'], ['sad', 'depressed'], ['surprised', 'shocked', 'spooked'], ['neutral', 'bored'], ] templates = [ 'a photo of a {} looking face.', 'a photo of a face showing the emotion: {}.', 'a photo of a face looking {}.', 'a face that looks {}.', 'they look {}.', 'look at how {} they are.', ] ``` ## Flowers102 ```bash classes = [ 'pink primrose', 'hard-leaved pocket orchid', 'canterbury bells', 'sweet pea', 'english marigold', 'tiger lily', 'moon orchid', 'bird of paradise', 'monkshood', 'globe thistle', 'snapdragon', "colt's foot", 'king protea', 'spear thistle', 'yellow iris', 'globe flower', 'purple coneflower', 'peruvian lily', 'balloon flower', 'giant white arum lily', 'fire lily', 'pincushion flower', 'fritillary', 'red ginger', 'grape hyacinth', 'corn poppy', 'prince of wales feathers', 'stemless gentian', 'artichoke', 'sweet william', 'carnation', 'garden phlox', 'love in the mist', 'mexican aster', 'alpine sea holly', 'ruby-lipped cattleya', 'cape flower', 'great masterwort', 'siam tulip', 'lenten rose', 'barbeton daisy', 'daffodil', 'sword lily', 'poinsettia', 'bolero deep blue', 'wallflower', 'marigold', 'buttercup', 'oxeye daisy', 'common dandelion', 'petunia', 'wild pansy', 'primula', 'sunflower', 'pelargonium', 'bishop of llandaff', 'gaura', 'geranium', 'orange dahlia', 'pink and yellow dahlia', 'cautleya spicata', 'japanese anemone', 'black-eyed susan', 'silverbush', 'californian poppy', 'osteospermum', 'spring crocus', 'bearded iris', 'windflower', 'tree poppy', 'gazania', 'azalea', 'water lily', 'rose', 'thorn apple', 'morning glory', 'passion flower', 'lotus', 'toad lily', 'anthurium', 'frangipani', 'clematis', 'hibiscus', 'columbine', 'desert-rose', 'tree mallow', 'magnolia', 'cyclamen', 'watercress', 'canna lily', 'hippeastrum', 'bee balm', 'air plant', 'foxglove', 'bougainvillea', 'camellia', 'mallow', 'mexican petunia', 'bromelia', 'blanket flower', 'trumpet creeper', 'blackberry lily', ] templates = [ 'a photo of a {}, a type of flower.', ] ``` ## Food101 ```bash classes = [ 'apple pie', 'baby back ribs', 'baklava', 'beef carpaccio', 'beef tartare', 'beet salad', 'beignets', 'bibimbap', 'bread pudding', 'breakfast burrito', 'bruschetta', 'caesar salad', 'cannoli', 'caprese salad', 'carrot cake', 'ceviche', 'cheese plate', 'cheesecake', 'chicken curry', 'chicken quesadilla', 'chicken wings', 'chocolate cake', 'chocolate mousse', 'churros', 'clam chowder', 'club sandwich', 'crab cakes', 'creme brulee', 'croque madame', 'cup cakes', 'deviled eggs', 'donuts', 'dumplings', 'edamame', 'eggs benedict', 'escargots', 'falafel', 'filet mignon', 'fish and chips', 'foie gras', 'french fries', 'french onion soup', 'french toast', 'fried calamari', 'fried rice', 'frozen yogurt', 'garlic bread', 'gnocchi', 'greek salad', 'grilled cheese sandwich', 'grilled salmon', 'guacamole', 'gyoza', 'hamburger', 'hot and sour soup', 'hot dog', 'huevos rancheros', 'hummus', 'ice cream', 'lasagna', 'lobster bisque', 'lobster roll sandwich', 'macaroni and cheese', 'macarons', 'miso soup', 'mussels', 'nachos', 'omelette', 'onion rings', 'oysters', 'pad thai', 'paella', 'pancakes', 'panna cotta', 'peking duck', 'pho', 'pizza', 'pork chop', 'poutine', 'prime rib', 'pulled pork sandwich', 'ramen', 'ravioli', 'red velvet cake', 'risotto', 'samosa', 'sashimi', 'scallops', 'seaweed salad', 'shrimp and grits', 'spaghetti bolognese', 'spaghetti carbonara', 'spring rolls', 'steak', 'strawberry shortcake', 'sushi', 'tacos', 'takoyaki', 'tiramisu', 'tuna tartare', 'waffles', ] templates = [ 'a photo of {}, a type of food.', ] ``` ## GTSRB ```bash classes = [ 'red and white circle 20 kph speed limit', 'red and white circle 30 kph speed limit', 'red and white circle 50 kph speed limit', 'red and white circle 60 kph speed limit', 'red and white circle 70 kph speed limit', 'red and white circle 80 kph speed limit', 'end / de-restriction of 80 kph speed limit', 'red and white circle 100 kph speed limit', 'red and white circle 120 kph speed limit', 'red and white circle red car and black car no passing', 'red and white circle red truck and black car no passing', 'red and white triangle road intersection warning', 'white and yellow diamond priority road', 'red and white upside down triangle yield right-of-way', 'stop', 'empty red and white circle', 'red and white circle no truck entry', 'red circle with white horizonal stripe no entry', 'red and white triangle with exclamation mark warning', 'red and white triangle with black left curve approaching warning', 'red and white triangle with black right curve approaching warning', 'red and white triangle with black double curve approaching warning', 'red and white triangle rough / bumpy road warning', 'red and white triangle car skidding / slipping warning', 'red and white triangle with merging / narrow lanes warning', 'red and white triangle with person digging / construction / road work warning', 'red and white triangle with traffic light approaching warning', 'red and white triangle with person walking warning', 'red and white triangle with child and person walking warning', 'red and white triangle with bicyle warning', 'red and white triangle with snowflake / ice warning', 'red and white triangle with deer warning', 'white circle with gray strike bar no speed limit', 'blue circle with white right turn arrow mandatory', 'blue circle with white left turn arrow mandatory', 'blue circle with white forward arrow mandatory', 'blue circle with white forward or right turn arrow mandatory', 'blue circle with white forward or left turn arrow mandatory', 'blue circle with white keep right arrow mandatory', 'blue circle with white keep left arrow mandatory', 'blue circle with white arrows indicating a traffic circle', 'white circle with gray strike bar indicating no passing for cars has ended', 'white circle with gray strike bar indicating no passing for trucks has ended', ] templates = [ 'a zoomed in photo of a "{}" traffic sign.', 'a centered photo of a "{}" traffic sign.', 'a close up photo of a "{}" traffic sign.', ] ``` ## HatefulMemes ```bash classes = [ 'meme', 'hatespeech meme', ] templates = [ 'a {}.', ] ``` ## KITTI ```bash classes = [ 'a photo i took of a car on my left or right side.', 'a photo i took with a car nearby.', 'a photo i took with a car in the distance.', 'a photo i took with no car.', ] templates = [ '{}', ] ``` ## Kinetics700 ```bash classes = [ 'abseiling', 'acting in play', 'adjusting glasses', 'air drumming', 'alligator wrestling', 'answering questions', 'applauding', 'applying cream', 'archaeological excavation', 'archery', 'arguing', 'arm wrestling', 'arranging flowers', 'arresting', 'assembling bicycle', 'assembling computer', 'attending conference', 'auctioning', 'baby waking up', 'backflip (human)', 'baking cookies', 'bandaging', 'barbequing', 'bartending', 'base jumping', 'bathing dog', 'battle rope training', 'beatboxing', 'bee keeping', 'being excited', 'being in zero gravity', 'belly dancing', 'bench pressing', 'bending back', 'bending metal', 'biking through snow', 'blasting sand', 'blending fruit', 'blowdrying hair', 'blowing bubble gum', 'blowing glass', 'blowing leaves', 'blowing nose', 'blowing out candles', 'bobsledding', 'bodysurfing', 'bookbinding', 'bottling', 'bouncing ball (not juggling)', 'bouncing on bouncy castle', 'bouncing on trampoline', 'bowling', 'braiding hair', 'breading or breadcrumbing', 'breakdancing', 'breaking boards', 'breaking glass', 'breathing fire', 'brush painting', 'brushing floor', 'brushing hair', 'brushing teeth', 'building cabinet', 'building lego', 'building sandcastle', 'building shed', 'bulldozing', 'bungee jumping', 'burping', 'busking', 'calculating', 'calligraphy', 'canoeing or kayaking', 'capoeira', 'capsizing', 'card stacking', 'card throwing', 'carrying baby', 'carrying weight', 'cartwheeling', 'carving ice', 'carving marble', 'carving pumpkin', 'carving wood with a knife', 'casting fishing line', 'catching fish', 'catching or throwing baseball', 'catching or throwing frisbee', 'catching or throwing softball', 'celebrating', 'changing gear in car', 'changing oil', 'changing wheel (not on bike)', 'chasing', 'checking tires', 'checking watch', 'cheerleading', 'chewing gum', 'chiseling stone', 'chiseling wood', 'chopping meat', 'chopping wood', 'clam digging', 'clapping', 'clay pottery making', 'clean and jerk', 'cleaning gutters', 'cleaning pool', 'cleaning shoes', 'cleaning toilet', 'cleaning windows', 'climbing a rope', 'climbing ladder', 'climbing tree', 'closing door', 'coloring in', 'combing hair', 'contact juggling', 'contorting', 'cooking chicken', 'cooking egg', 'cooking on campfire', 'cooking sausages (not on barbeque)', 'cooking scallops', 'cosplaying', 'coughing', 'counting money', 'country line dancing', 'cracking back', 'cracking knuckles', 'cracking neck', 'crawling baby', 'crocheting', 'crossing eyes', 'crossing river', 'crying', 'cumbia', 'curling (sport)', 'curling eyelashes', 'curling hair', 'cutting apple', 'cutting cake', 'cutting nails', 'cutting orange', 'cutting pineapple', 'cutting watermelon', 'dancing ballet', 'dancing charleston', 'dancing gangnam style', 'dancing macarena', 'deadlifting', 'dealing cards', 'decorating the christmas tree', 'decoupage', 'delivering mail', 'digging', 'dining', 'directing traffic', 'disc golfing', 'diving cliff', 'docking boat', 'dodgeball', 'doing aerobics', 'doing jigsaw puzzle', 'doing laundry', 'doing nails', 'doing sudoku', 'drawing', 'dribbling basketball', 'drinking shots', 'driving car', 'driving tractor', 'drooling', 'drop kicking', 'drumming fingers', 'dumpster diving', 'dunking basketball', 'dyeing eyebrows', 'dyeing hair', 'eating burger', 'eating cake', 'eating carrots', 'eating chips', 'eating doughnuts', 'eating hotdog', 'eating ice cream', 'eating nachos', 'eating spaghetti', 'eating watermelon', 'egg hunting', 'embroidering', 'entering church', 'exercising arm', 'exercising with an exercise ball', 'extinguishing fire', 'faceplanting', 'falling off bike', 'falling off chair', 'feeding birds', 'feeding fish', 'feeding goats', 'fencing (sport)', 'fidgeting', 'filling cake', 'filling eyebrows', 'finger snapping', 'fixing bicycle', 'fixing hair', 'flint knapping', 'flipping bottle', 'flipping pancake', 'fly tying', 'flying kite', 'folding clothes', 'folding napkins', 'folding paper', 'front raises', 'frying vegetables', 'gargling', 'geocaching', 'getting a haircut', 'getting a piercing', 'getting a tattoo', 'giving or receiving award', 'gold panning', 'golf chipping', 'golf driving', 'golf putting', 'gospel singing in church', 'grinding meat', 'grooming cat', 'grooming dog', 'grooming horse', 'gymnastics tumbling', 'hammer throw', 'hand washing clothes', 'head stand', 'headbanging', 'headbutting', 'helmet diving', 'herding cattle', 'high fiving', 'high jump', 'high kick', 'historical reenactment', 'hitting baseball', 'hockey stop', 'holding snake', 'home roasting coffee', 'hopscotch', 'hoverboarding', 'huddling', 'hugging (not baby)', 'hugging baby', 'hula hooping', 'hurdling', 'hurling (sport)', 'ice climbing', 'ice fishing', 'ice skating', 'ice swimming', 'inflating balloons', 'installing carpet', 'ironing', 'ironing hair', 'javelin throw', 'jaywalking', 'jetskiing', 'jogging', 'juggling balls', 'juggling fire', 'juggling soccer ball', 'jumping bicycle', 'jumping into pool', 'jumping jacks', 'jumping sofa', 'jumpstyle dancing', 'karaoke', 'kicking field goal', 'kicking soccer ball', 'kissing', 'kitesurfing', 'knitting', 'krumping', 'land sailing', 'laughing', 'lawn mower racing', 'laying bricks', 'laying concrete', 'laying decking', 'laying stone', 'laying tiles', 'leatherworking', 'letting go of balloon', 'licking', 'lifting hat', 'lighting candle', 'lighting fire', 'listening with headphones', 'lock picking', 'long jump', 'longboarding', 'looking at phone', 'looking in mirror', 'luge', 'lunge', 'making a cake', 'making a sandwich', 'making balloon shapes', 'making bubbles', 'making cheese', 'making horseshoes', 'making jewelry', 'making latte art', 'making paper aeroplanes', 'making pizza', 'making slime', 'making snowman', 'making sushi', 'making tea', 'making the bed', 'marching', 'marriage proposal', 'massaging back', 'massaging feet', 'massaging legs', 'massaging neck', "massaging person's head", 'metal detecting', 'milking cow', 'milking goat', 'mixing colours', 'moon walking', 'mopping floor', 'mosh pit dancing', 'motorcycling', 'mountain climber (exercise)', 'moving baby', 'moving child', 'moving furniture', 'mowing lawn', 'mushroom foraging', 'needle felting', 'news anchoring', 'opening bottle (not wine)', 'opening coconuts', 'opening door', 'opening present', 'opening refrigerator', 'opening wine bottle', 'packing', 'paragliding', 'parasailing', 'parkour', 'passing American football (in game)', 'passing American football (not in game)', 'passing soccer ball', 'peeling apples', 'peeling banana', 'peeling potatoes', 'person collecting garbage', 'petting animal (not cat)', 'petting cat', 'petting horse', 'photobombing', 'photocopying', 'picking apples', 'picking blueberries', 'pillow fight', 'pinching', 'pirouetting', 'planing wood', 'planting trees', 'plastering', 'playing accordion', 'playing american football', 'playing badminton', 'playing bagpipes', 'playing basketball', 'playing bass guitar', 'playing beer pong', 'playing billiards', 'playing blackjack', 'playing cards', 'playing cello', 'playing checkers', 'playing chess', 'playing clarinet', 'playing controller', 'playing cricket', 'playing cymbals', 'playing darts', 'playing didgeridoo', 'playing dominoes', 'playing drums', 'playing field hockey', 'playing flute', 'playing gong', 'playing guitar', 'playing hand clapping games', 'playing harmonica', 'playing harp', 'playing ice hockey', 'playing keyboard', 'playing kickball', 'playing laser tag', 'playing lute', 'playing mahjong', 'playing maracas', 'playing marbles', 'playing monopoly', 'playing netball', 'playing nose flute', 'playing oboe', 'playing ocarina', 'playing organ', 'playing paintball', 'playing pan pipes', 'playing piano', 'playing piccolo', 'playing pinball', 'playing ping pong', 'playing poker', 'playing polo', 'playing recorder', 'playing road hockey', 'playing rounders', 'playing rubiks cube', 'playing saxophone', 'playing scrabble', 'playing shuffleboard', 'playing slot machine', 'playing squash or racquetball', 'playing tennis', 'playing trombone', 'playing trumpet', 'playing ukulele', 'playing violin', 'playing volleyball', 'playing with trains', 'playing xylophone', 'poaching eggs', 'poking bellybutton', 'pole vault', 'polishing furniture', 'polishing metal', 'popping balloons', 'pouring beer', 'pouring milk', 'pouring wine', 'preparing salad', 'presenting weather forecast', 'pretending to be a statue', 'pull ups', 'pulling espresso shot', 'pulling rope (game)', 'pumping fist', 'pumping gas', 'punching bag', 'punching person (boxing)', 'push up', 'pushing car', 'pushing cart', 'pushing wheelbarrow', 'pushing wheelchair', 'putting in contact lenses', 'putting on eyeliner', 'putting on foundation', 'putting on lipstick', 'putting on mascara', 'putting on sari', 'putting on shoes', 'putting wallpaper on wall', 'raising eyebrows', 'reading book', 'reading newspaper', 'recording music', 'repairing puncture', 'riding a bike', 'riding camel', 'riding elephant', 'riding mechanical bull', 'riding mule', 'riding or walking with horse', 'riding scooter', 'riding snow blower', 'riding unicycle', 'ripping paper', 'roasting marshmallows', 'roasting pig', 'robot dancing', 'rock climbing', 'rock scissors paper', 'roller skating', 'rolling eyes', 'rolling pastry', 'rope pushdown', 'running on treadmill', 'sailing', 'salsa dancing', 'saluting', 'sanding floor', 'sanding wood', 'sausage making', 'sawing wood', 'scrambling eggs', 'scrapbooking', 'scrubbing face', 'scuba diving', 'seasoning food', 'separating eggs', 'setting table', 'sewing', 'shaking hands', 'shaking head', 'shaping bread dough', 'sharpening knives', 'sharpening pencil', 'shaving head', 'shaving legs', 'shearing sheep', 'shining flashlight', 'shining shoes', 'shoot dance', 'shooting basketball', 'shooting goal (soccer)', 'shooting off fireworks', 'shopping', 'shot put', 'shouting', 'shoveling snow', 'shredding paper', 'shucking oysters', 'shuffling cards', 'shuffling feet', 'side kick', 'sieving', 'sign language interpreting', 'silent disco', 'singing', 'sipping cup', 'situp', 'skateboarding', 'ski ballet', 'ski jumping', 'skiing crosscountry', 'skiing mono', 'skiing slalom', 'skipping rope', 'skipping stone', 'skydiving', 'slacklining', 'slapping', 'sled dog racing', 'sleeping', 'slicing onion', 'smashing', 'smelling feet', 'smoking', 'smoking hookah', 'smoking pipe', 'snatch weight lifting', 'sneezing', 'snorkeling', 'snowboarding', 'snowkiting', 'snowmobiling', 'somersaulting', 'spelunking', 'spinning plates', 'spinning poi', 'splashing water', 'spray painting', 'spraying', 'springboard diving', 'square dancing', 'squat', 'squeezing orange', 'stacking cups', 'stacking dice', 'standing on hands', 'staring', 'steer roping', 'steering car', 'sticking tongue out', 'stomping grapes', 'stretching arm', 'stretching leg', 'sucking lolly', 'surfing crowd', 'surfing water', 'surveying', 'sweeping floor', 'swimming backstroke', 'swimming breast stroke', 'swimming butterfly stroke', 'swimming front crawl', 'swimming with dolphins', 'swimming with sharks', 'swing dancing', 'swinging baseball bat', 'swinging on something', 'sword fighting', 'sword swallowing', 'tackling', 'tagging graffiti', 'tai chi', 'taking photo', 'talking on cell phone', 'tango dancing', 'tap dancing', 'tapping guitar', 'tapping pen', 'tasting beer', 'tasting food', 'tasting wine', 'testifying', 'texting', 'threading needle', 'throwing axe', 'throwing ball (not baseball or American football)', 'throwing discus', 'throwing knife', 'throwing snowballs', 'throwing tantrum', 'throwing water balloon', 'tickling', 'tie dying', 'tightrope walking', 'tiptoeing', 'tobogganing', 'tossing coin', 'tossing salad', 'training dog', 'trapezing', 'treating wood', 'trimming or shaving beard', 'trimming shrubs', 'trimming trees', 'triple jump', 'twiddling fingers', 'tying bow tie', 'tying knot (not on a tie)', 'tying necktie', 'tying shoe laces', 'unboxing', 'uncorking champagne', 'unloading truck', 'using a microscope', 'using a paint roller', 'using a power drill', 'using a sledge hammer', 'using a wrench', 'using atm', 'using bagging machine', 'using circular saw', 'using inhaler', 'using megaphone', 'using puppets', 'using remote controller (not gaming)', 'using segway', 'vacuuming car', 'vacuuming floor', 'visiting the zoo', 'wading through mud', 'wading through water', 'waiting in line', 'waking up', 'walking on stilts', 'walking the dog', 'walking through snow', 'walking with crutches', 'washing dishes', 'washing feet', 'washing hair', 'washing hands', 'watching tv', 'water skiing', 'water sliding', 'watering plants', 'waving hand', 'waxing armpits', 'waxing back', 'waxing chest', 'waxing eyebrows', 'waxing legs', 'weaving basket', 'weaving fabric', 'welding', 'whistling', 'windsurfing', 'winking', 'wood burning (art)', 'wrapping present', 'wrestling', 'writing', 'yarn spinning', 'yawning', 'yoga', 'zumba' ] templates = [ 'a photo of {}.', 'a photo of a person {}.', 'a photo of a person using {}.', 'a photo of a person doing {}.', 'a photo of a person during {}.', 'a photo of a person performing {}.', 'a photo of a person practicing {}.', 'a video of {}.', 'a video of a person {}.', 'a video of a person using {}.', 'a video of a person doing {}.', 'a video of a person during {}.', 'a video of a person performing {}.', 'a video of a person practicing {}.', 'a example of {}.', 'a example of a person {}.', 'a example of a person using {}.', 'a example of a person doing {}.', 'a example of a person during {}.', 'a example of a person performing {}.', 'a example of a person practicing {}.', 'a demonstration of {}.', 'a demonstration of a person {}.', 'a demonstration of a person using {}.', 'a demonstration of a person doing {}.', 'a demonstration of a person during {}.', 'a demonstration of a person performing {}.', 'a demonstration of a person practicing {}.', ] ``` ## MNIST ```bash classes = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ] templates = [ 'a photo of the number: "{}".', ] ``` ## OxfordPets ```bash classes = [ 'Abyssinian', 'Bengal', 'Birman', 'Bombay', 'British Shorthair', 'Egyptian Mau', 'Maine Coon', 'Persian', 'Ragdoll', 'Russian Blue', 'Siamese', 'Sphynx', 'american bulldog', 'american pit bull terrier', 'basset hound', 'beagle', 'boxer', 'chihuahua', 'english cocker spaniel', 'english setter', 'german shorthaired', 'great pyrenees', 'havanese', 'japanese chin', 'keeshond', 'leonberger', 'miniature pinscher', 'newfoundland', 'pomeranian', 'pug', 'saint bernard', 'samoyed', 'scottish terrier', 'shiba inu', 'staffordshire bull terrier', 'wheaten terrier', 'yorkshire terrier', ] templates = [ 'a photo of a {}, a type of pet.', ] ``` ## PascalVOC2007 ```bash classes = [ 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'dog', 'horse', 'motorbike', 'person', 'sheep', 'sofa', 'diningtable', 'pottedplant', 'train', 'tvmonitor', ] templates = [ 'a photo of a {}.', ] ``` ## PatchCamelyon ```bash classes = [ 'lymph node', 'lymph node containing metastatic tumor tissue', ] templates = [ 'this is a photo of {}', ] ``` ## RESISC45 ```bash classes = [ 'airplane', 'airport', 'baseball diamond', 'basketball court', 'beach', 'bridge', 'chaparral', 'church', 'circular farmland', 'cloud', 'commercial area', 'dense residential', 'desert', 'forest', 'freeway', 'golf course', 'ground track field', 'harbor', 'industrial area', 'intersection', 'island', 'lake', 'meadow', 'medium residential', 'mobile home park', 'mountain', 'overpass', 'palace', 'parking lot', 'railway', 'railway station', 'rectangular farmland', 'river', 'roundabout', 'runway', 'sea ice', 'ship', 'snowberg', 'sparse residential', 'stadium', 'storage tank', 'tennis court', 'terrace', 'thermal power station', 'wetland', ] templates = [ 'satellite imagery of {}.', 'aerial imagery of {}.', 'satellite photo of {}.', 'aerial photo of {}.', 'satellite view of {}.', 'aerial view of {}.', 'satellite imagery of a {}.', 'aerial imagery of a {}.', 'satellite photo of a {}.', 'aerial photo of a {}.', 'satellite view of a {}.', 'aerial view of a {}.', 'satellite imagery of the {}.', 'aerial imagery of the {}.', 'satellite photo of the {}.', 'aerial photo of the {}.', 'satellite view of the {}.', 'aerial view of the {}.', ] ``` ## SST2 ```bash classes = [ 'negative', 'positive', ] templates = [ 'a {} review of a movie.', ] ``` ## STL10 ```bash classes = [ 'airplane', 'bird', 'car', 'cat', 'deer', 'dog', 'horse', 'monkey', 'ship', 'truck', ] templates = [ 'a photo of a {}.', 'a photo of the {}.', ] ``` ## SUN397 ```bash classes = [ 'abbey', 'airplane cabin', 'airport terminal', 'alley', 'amphitheater', 'amusement arcade', 'amusement park', 'anechoic chamber', 'apartment building outdoor', 'apse indoor', 'aquarium', 'aqueduct', 'arch', 'archive', 'arrival gate outdoor', 'art gallery', 'art school', 'art studio', 'assembly line', 'athletic field outdoor', 'atrium public', 'attic', 'auditorium', 'auto factory', 'badlands', 'badminton court indoor', 'baggage claim', 'bakery shop', 'balcony exterior', 'balcony interior', 'ball pit', 'ballroom', 'bamboo forest', 'banquet hall', 'bar', 'barn', 'barndoor', 'baseball field', 'basement', 'basilica', 'basketball court outdoor', 'bathroom', 'batters box', 'bayou', 'bazaar indoor', 'bazaar outdoor', 'beach', 'beauty salon', 'bedroom', 'berth', 'biology laboratory', 'bistro indoor', 'boardwalk', 'boat deck', 'boathouse', 'bookstore', 'booth indoor', 'botanical garden', 'bow window indoor', 'bow window outdoor', 'bowling alley', 'boxing ring', 'brewery indoor', 'bridge', 'building facade', 'bullring', 'burial chamber', 'bus interior', 'butchers shop', 'butte', 'cabin outdoor', 'cafeteria', 'campsite', 'campus', 'canal natural', 'canal urban', 'candy store', 'canyon', 'car interior backseat', 'car interior frontseat', 'carrousel', 'casino indoor', 'castle', 'catacomb', 'cathedral indoor', 'cathedral outdoor', 'cavern indoor', 'cemetery', 'chalet', 'cheese factory', 'chemistry lab', 'chicken coop indoor', 'chicken coop outdoor', 'childs room', 'church indoor', 'church outdoor', 'classroom', 'clean room', 'cliff', 'cloister indoor', 'closet', 'clothing store', 'coast', 'cockpit', 'coffee shop', 'computer room', 'conference center', 'conference room', 'construction site', 'control room', 'control tower outdoor', 'corn field', 'corral', 'corridor', 'cottage garden', 'courthouse', 'courtroom', 'courtyard', 'covered bridge exterior', 'creek', 'crevasse', 'crosswalk', 'cubicle office', 'dam', 'delicatessen', 'dentists office', 'desert sand', 'desert vegetation', 'diner indoor', 'diner outdoor', 'dinette home', 'dinette vehicle', 'dining car', 'dining room', 'discotheque', 'dock', 'doorway outdoor', 'dorm room', 'driveway', 'driving range outdoor', 'drugstore', 'electrical substation', 'elevator door', 'elevator interior', 'elevator shaft', 'engine room', 'escalator indoor', 'excavation', 'factory indoor', 'fairway', 'fastfood restaurant', 'field cultivated', 'field wild', 'fire escape', 'fire station', 'firing range indoor', 'fishpond', 'florist shop indoor', 'food court', 'forest broadleaf', 'forest needleleaf', 'forest path', 'forest road', 'formal garden', 'fountain', 'galley', 'game room', 'garage indoor', 'garbage dump', 'gas station', 'gazebo exterior', 'general store indoor', 'general store outdoor', 'gift shop', 'golf course', 'greenhouse indoor', 'greenhouse outdoor', 'gymnasium indoor', 'hangar indoor', 'hangar outdoor', 'harbor', 'hayfield', 'heliport', 'herb garden', 'highway', 'hill', 'home office', 'hospital', 'hospital room', 'hot spring', 'hot tub outdoor', 'hotel outdoor', 'hotel room', 'house', 'hunting lodge outdoor', 'ice cream parlor', 'ice floe', 'ice shelf', 'ice skating rink indoor', 'ice skating rink outdoor', 'iceberg', 'igloo', 'industrial area', 'inn outdoor', 'islet', 'jacuzzi indoor', 'jail cell', 'jail indoor', 'jewelry shop', 'kasbah', 'kennel indoor', 'kennel outdoor', 'kindergarden classroom', 'kitchen', 'kitchenette', 'labyrinth outdoor', 'lake natural', 'landfill', 'landing deck', 'laundromat', 'lecture room', 'library indoor', 'library outdoor', 'lido deck outdoor', 'lift bridge', 'lighthouse', 'limousine interior', 'living room', 'lobby', 'lock chamber', 'locker room', 'mansion', 'manufactured home', 'market indoor', 'market outdoor', 'marsh', 'martial arts gym', 'mausoleum', 'medina', 'moat water', 'monastery outdoor', 'mosque indoor', 'mosque outdoor', 'motel', 'mountain', 'mountain snowy', 'movie theater indoor', 'museum indoor', 'music store', 'music studio', 'nuclear power plant outdoor', 'nursery', 'oast house', 'observatory outdoor', 'ocean', 'office', 'office building', 'oil refinery outdoor', 'oilrig', 'operating room', 'orchard', 'outhouse outdoor', 'pagoda', 'palace', 'pantry', 'park', 'parking garage indoor', 'parking garage outdoor', 'parking lot', 'parlor', 'pasture', 'patio', 'pavilion', 'pharmacy', 'phone booth', 'physics laboratory', 'picnic area', 'pilothouse indoor', 'planetarium outdoor', 'playground', 'playroom', 'plaza', 'podium indoor', 'podium outdoor', 'pond', 'poolroom establishment', 'poolroom home', 'power plant outdoor', 'promenade deck', 'pub indoor', 'pulpit', 'putting green', 'racecourse', 'raceway', 'raft', 'railroad track', 'rainforest', 'reception', 'recreation room', 'residential neighborhood', 'restaurant', 'restaurant kitchen', 'restaurant patio', 'rice paddy', 'riding arena', 'river', 'rock arch', 'rope bridge', 'ruin', 'runway', 'sandbar', 'sandbox', 'sauna', 'schoolhouse', 'sea cliff', 'server room', 'shed', 'shoe shop', 'shopfront', 'shopping mall indoor', 'shower', 'skatepark', 'ski lodge', 'ski resort', 'ski slope', 'sky', 'skyscraper', 'slum', 'snowfield', 'squash court', 'stable', 'stadium baseball', 'stadium football', 'stage indoor', 'staircase', 'street', 'subway interior', 'subway station platform', 'supermarket', 'sushi bar', 'swamp', 'swimming pool indoor', 'swimming pool outdoor', 'synagogue indoor', 'synagogue outdoor', 'television studio', 'temple east asia', 'temple south asia', 'tennis court indoor', 'tennis court outdoor', 'tent outdoor', 'theater indoor procenium', 'theater indoor seats', 'thriftshop', 'throne room', 'ticket booth', 'toll plaza', 'topiary garden', 'tower', 'toyshop', 'track outdoor', 'train railway', 'train station platform', 'tree farm', 'tree house', 'trench', 'underwater coral reef', 'utility room', 'valley', 'van interior', 'vegetable garden', 'veranda', 'veterinarians office', 'viaduct', 'videostore', 'village', 'vineyard', 'volcano', 'volleyball court indoor', 'volleyball court outdoor', 'waiting room', 'warehouse indoor', 'water tower', 'waterfall block', 'waterfall fan', 'waterfall plunge', 'watering hole', 'wave', 'wet bar', 'wheat field', 'wind farm', 'windmill', 'wine cellar barrel storage', 'wine cellar bottle storage', 'wrestling ring indoor', 'yard', 'youth hostel', ] templates = [ 'a photo of a {}.', 'a photo of the {}.', ] ``` ## StanfordCars ```bash classes = [ 'AM General Hummer SUV 2000', 'Acura RL Sedan 2012', 'Acura TL Sedan 2012', 'Acura TL Type-S 2008', 'Acura TSX Sedan 2012', 'Acura Integra Type R 2001', 'Acura ZDX Hatchback 2012', 'Aston Martin V8 Vantage Convertible 2012', 'Aston Martin V8 Vantage Coupe 2012', 'Aston Martin Virage Convertible 2012', 'Aston Martin Virage Coupe 2012', 'Audi RS 4 Convertible 2008', 'Audi A5 Coupe 2012', 'Audi TTS Coupe 2012', 'Audi R8 Coupe 2012', 'Audi V8 Sedan 1994', 'Audi 100 Sedan 1994', 'Audi 100 Wagon 1994', 'Audi TT Hatchback 2011', 'Audi S6 Sedan 2011', 'Audi S5 Convertible 2012', 'Audi S5 Coupe 2012', 'Audi S4 Sedan 2012', 'Audi S4 Sedan 2007', 'Audi TT RS Coupe 2012', 'BMW ActiveHybrid 5 Sedan 2012', 'BMW 1 Series Convertible 2012', 'BMW 1 Series Coupe 2012', 'BMW 3 Series Sedan 2012', 'BMW 3 Series Wagon 2012', 'BMW 6 Series Convertible 2007', 'BMW X5 SUV 2007', 'BMW X6 SUV 2012', 'BMW M3 Coupe 2012', 'BMW M5 Sedan 2010', 'BMW M6 Convertible 2010', 'BMW X3 SUV 2012', 'BMW Z4 Convertible 2012', 'Bentley Continental Supersports Conv. Convertible 2012', 'Bentley Arnage Sedan 2009', 'Bentley Mulsanne Sedan 2011', 'Bentley Continental GT Coupe 2012', 'Bentley Continental GT Coupe 2007', 'Bentley Continental Flying Spur Sedan 2007', 'Bugatti Veyron 16.4 Convertible 2009', 'Bugatti Veyron 16.4 Coupe 2009', 'Buick Regal GS 2012', 'Buick Rainier SUV 2007', 'Buick Verano Sedan 2012', 'Buick Enclave SUV 2012', 'Cadillac CTS-V Sedan 2012', 'Cadillac SRX SUV 2012', 'Cadillac Escalade EXT Crew Cab 2007', 'Chevrolet Silverado 1500 Hybrid Crew Cab 2012', 'Chevrolet Corvette Convertible 2012', 'Chevrolet Corvette ZR1 2012', 'Chevrolet Corvette Ron Fellows Edition Z06 2007', 'Chevrolet Traverse SUV 2012', 'Chevrolet Camaro Convertible 2012', 'Chevrolet HHR SS 2010', 'Chevrolet Impala Sedan 2007', 'Chevrolet Tahoe Hybrid SUV 2012', 'Chevrolet Sonic Sedan 2012', 'Chevrolet Express Cargo Van 2007', 'Chevrolet Avalanche Crew Cab 2012', 'Chevrolet Cobalt SS 2010', 'Chevrolet Malibu Hybrid Sedan 2010', 'Chevrolet TrailBlazer SS 2009', 'Chevrolet Silverado 2500HD Regular Cab 2012', 'Chevrolet Silverado 1500 Classic Extended Cab 2007', 'Chevrolet Express Van 2007', 'Chevrolet Monte Carlo Coupe 2007', 'Chevrolet Malibu Sedan 2007', 'Chevrolet Silverado 1500 Extended Cab 2012', 'Chevrolet Silverado 1500 Regular Cab 2012', 'Chrysler Aspen SUV 2009', 'Chrysler Sebring Convertible 2010', 'Chrysler Town and Country Minivan 2012', 'Chrysler 300 SRT-8 2010', 'Chrysler Crossfire Convertible 2008', 'Chrysler PT Cruiser Convertible 2008', 'Daewoo Nubira Wagon 2002', 'Dodge Caliber Wagon 2012', 'Dodge Caliber Wagon 2007', 'Dodge Caravan Minivan 1997', 'Dodge Ram Pickup 3500 Crew Cab 2010', 'Dodge Ram Pickup 3500 Quad Cab 2009', 'Dodge Sprinter Cargo Van 2009', 'Dodge Journey SUV 2012', 'Dodge Dakota Crew Cab 2010', 'Dodge Dakota Club Cab 2007', 'Dodge Magnum Wagon 2008', 'Dodge Challenger SRT8 2011', 'Dodge Durango SUV 2012', 'Dodge Durango SUV 2007', 'Dodge Charger Sedan 2012', 'Dodge Charger SRT-8 2009', 'Eagle Talon Hatchback 1998', 'FIAT 500 Abarth 2012', 'FIAT 500 Convertible 2012', 'Ferrari FF Coupe 2012', 'Ferrari California Convertible 2012', 'Ferrari 458 Italia Convertible 2012', 'Ferrari 458 Italia Coupe 2012', 'Fisker Karma Sedan 2012', 'Ford F-450 Super Duty Crew Cab 2012', 'Ford Mustang Convertible 2007', 'Ford Freestar Minivan 2007', 'Ford Expedition EL SUV 2009', 'Ford Edge SUV 2012', 'Ford Ranger SuperCab 2011', 'Ford GT Coupe 2006', 'Ford F-150 Regular Cab 2012', 'Ford F-150 Regular Cab 2007', 'Ford Focus Sedan 2007', 'Ford E-Series Wagon Van 2012', 'Ford Fiesta Sedan 2012', 'GMC Terrain SUV 2012', 'GMC Savana Van 2012', 'GMC Yukon Hybrid SUV 2012', 'GMC Acadia SUV 2012', 'GMC Canyon Extended Cab 2012', 'Geo Metro Convertible 1993', 'HUMMER H3T Crew Cab 2010', 'HUMMER H2 SUT Crew Cab 2009', 'Honda Odyssey Minivan 2012', 'Honda Odyssey Minivan 2007', 'Honda Accord Coupe 2012', 'Honda Accord Sedan 2012', 'Hyundai Veloster Hatchback 2012', 'Hyundai Santa Fe SUV 2012', 'Hyundai Tucson SUV 2012', 'Hyundai Veracruz SUV 2012', 'Hyundai Sonata Hybrid Sedan 2012', 'Hyundai Elantra Sedan 2007', 'Hyundai Accent Sedan 2012', 'Hyundai Genesis Sedan 2012', 'Hyundai Sonata Sedan 2012', 'Hyundai Elantra Touring Hatchback 2012', 'Hyundai Azera Sedan 2012', 'Infiniti G Coupe IPL 2012', 'Infiniti QX56 SUV 2011', 'Isuzu Ascender SUV 2008', 'Jaguar XK XKR 2012', 'Jeep Patriot SUV 2012', 'Jeep Wrangler SUV 2012', 'Jeep Liberty SUV 2012', 'Jeep Grand Cherokee SUV 2012', 'Jeep Compass SUV 2012', 'Lamborghini Reventon Coupe 2008', 'Lamborghini Aventador Coupe 2012', 'Lamborghini Gallardo LP 570-4 Superleggera 2012', 'Lamborghini Diablo Coupe 2001', 'Land Rover Range Rover SUV 2012', 'Land Rover LR2 SUV 2012', 'Lincoln Town Car Sedan 2011', 'MINI Cooper Roadster Convertible 2012', 'Maybach Landaulet Convertible 2012', 'Mazda Tribute SUV 2011', 'McLaren MP4-12C Coupe 2012', 'Mercedes-Benz 300-Class Convertible 1993', 'Mercedes-Benz C-Class Sedan 2012', 'Mercedes-Benz SL-Class Coupe 2009', 'Mercedes-Benz E-Class Sedan 2012', 'Mercedes-Benz S-Class Sedan 2012', 'Mercedes-Benz Sprinter Van 2012', 'Mitsubishi Lancer Sedan 2012', 'Nissan Leaf Hatchback 2012', 'Nissan NV Passenger Van 2012', 'Nissan Juke Hatchback 2012', 'Nissan 240SX Coupe 1998', 'Plymouth Neon Coupe 1999', 'Porsche Panamera Sedan 2012', 'Ram C/V Cargo Van Minivan 2012', 'Rolls-Royce Phantom Drophead Coupe Convertible 2012', 'Rolls-Royce Ghost Sedan 2012', 'Rolls-Royce Phantom Sedan 2012', 'Scion xD Hatchback 2012', 'Spyker C8 Convertible 2009', 'Spyker C8 Coupe 2009', 'Suzuki Aerio Sedan 2007', 'Suzuki Kizashi Sedan 2012', 'Suzuki SX4 Hatchback 2012', 'Suzuki SX4 Sedan 2012', 'Tesla Model S Sedan 2012', 'Toyota Sequoia SUV 2012', 'Toyota Camry Sedan 2012', 'Toyota Corolla Sedan 2012', 'Toyota 4Runner SUV 2012', 'Volkswagen Golf Hatchback 2012', 'Volkswagen Golf Hatchback 1991', 'Volkswagen Beetle Hatchback 2012', 'Volvo C30 Hatchback 2012', 'Volvo 240 Sedan 1993', 'Volvo XC90 SUV 2007', 'smart fortwo Convertible 2012', ] templates = [ 'a photo of a {}.', 'a photo of the {}.', 'a photo of my {}.', 'i love my {}!', 'a photo of my dirty {}.', 'a photo of my clean {}.', 'a photo of my new {}.', 'a photo of my old {}.', ] ``` ## UCF101 ```bash classes = [ 'Apply Eye Makeup', 'Apply Lipstick', 'Archery', 'Baby Crawling', 'Balance Beam', 'Band Marching', 'Baseball Pitch', 'Basketball', 'Basketball Dunk', 'Bench Press', 'Biking', 'Billiards', 'Blow Dry Hair', 'Blowing Candles', 'Body Weight Squats', 'Bowling', 'Boxing Punching Bag', 'Boxing Speed Bag', 'Breast Stroke', 'Brushing Teeth', 'Clean And Jerk', 'Cliff Diving', 'Cricket Bowling', 'Cricket Shot', 'Cutting In Kitchen', 'Diving', 'Drumming', 'Fencing', 'Field Hockey Penalty', 'Floor Gymnastics', 'Frisbee Catch', 'Front Crawl', 'Golf Swing', 'Haircut', 'Hammer Throw', 'Hammering', 'Hand Stand Pushups', 'Handstand Walking', 'Head Massage', 'High Jump', 'Horse Race', 'Horse Riding', 'Hula Hoop', 'Ice Dancing', 'Javelin Throw', 'Juggling Balls', 'Jump Rope', 'Jumping Jack', 'Kayaking', 'Knitting', 'Long Jump', 'Lunges', 'Military Parade', 'Mixing', 'Mopping Floor', 'Nunchucks', 'Parallel Bars', 'Pizza Tossing', 'Playing Cello', 'Playing Daf', 'Playing Dhol', 'Playing Flute', 'Playing Guitar', 'Playing Piano', 'Playing Sitar', 'Playing Tabla', 'Playing Violin', 'Pole Vault', 'Pommel Horse', 'Pull Ups', 'Punch', 'Push Ups', 'Rafting', 'Rock Climbing Indoor', 'Rope Climbing', 'Rowing', 'Salsa Spin', 'Shaving Beard', 'Shotput', 'Skate Boarding', 'Skiing', 'Skijet', 'Sky Diving', 'Soccer Juggling', 'Soccer Penalty', 'Still Rings', 'Sumo Wrestling', 'Surfing', 'Swing', 'Table Tennis Shot', 'Tai Chi', 'Tennis Swing', 'Throw Discus', 'Trampoline Jumping', 'Typing', 'Uneven Bars', 'Volleyball Spiking', 'Walking With Dog', 'Wall Pushups', 'Writing On Board', 'Yo Yo', ] templates = [ 'a photo of a person {}.', 'a video of a person {}.', 'a example of a person {}.', 'a demonstration of a person {}.', 'a photo of the person {}.', 'a video of the person {}.', 'a example of the person {}.', 'a demonstration of the person {}.', 'a photo of a person using {}.', 'a video of a person using {}.', 'a example of a person using {}.', 'a demonstration of a person using {}.', 'a photo of the person using {}.', 'a video of the person using {}.', 'a example of the person using {}.', 'a demonstration of the person using {}.', 'a photo of a person doing {}.', 'a video of a person doing {}.', 'a example of a person doing {}.', 'a demonstration of a person doing {}.', 'a photo of the person doing {}.', 'a video of the person doing {}.', 'a example of the person doing {}.', 'a demonstration of the person doing {}.', 'a photo of a person during {}.', 'a video of a person during {}.', 'a example of a person during {}.', 'a demonstration of a person during {}.', 'a photo of the person during {}.', 'a video of the person during {}.', 'a example of the person during {}.', 'a demonstration of the person during {}.', 'a photo of a person performing {}.', 'a video of a person performing {}.', 'a example of a person performing {}.', 'a demonstration of a person performing {}.', 'a photo of the person performing {}.', 'a video of the person performing {}.', 'a example of the person performing {}.', 'a demonstration of the person performing {}.', 'a photo of a person practicing {}.', 'a video of a person practicing {}.', 'a example of a person practicing {}.', 'a demonstration of a person practicing {}.', 'a photo of the person practicing {}.', 'a video of the person practicing {}.', 'a example of the person practicing {}.', 'a demonstration of the person practicing {}.', ] ``` ================================================ FILE: CLIP/data/rendered-sst2.md ================================================ # The Rendered SST2 Dataset In the paper, we used an image classification dataset called Rendered SST2, to evaluate the model's capability on optical character recognition. To do so, we rendered the sentences in the [Standford Sentiment Treebank v2](https://nlp.stanford.edu/sentiment/treebank.html) dataset and used those as the input to the CLIP image encoder. The following command will download a 131MB archive countaining the images and extract into a subdirectory `rendered-sst2`: ```bash wget https://openaipublic.azureedge.net/clip/data/rendered-sst2.tgz tar zxvf rendered-sst2.tgz ``` ================================================ FILE: CLIP/data/yfcc100m.md ================================================ # The YFCC100M Subset In the paper, we performed a dataset ablation using a subset of the YFCC100M dataset and showed that the performance remained largely similar. The subset contains 14,829,396 images, about 15% of the full dataset, which have been filtered to only keep those with natural languag titles and/or descriptions in English. We provide the list of (line number, photo identifier, photo hash) of each image contained in this subset. These correspond to the first three columns in the dataset's metadata TSV file. ```bash wget https://openaipublic.azureedge.net/clip/data/yfcc100m_subset_data.tsv.bz2 bunzip2 yfcc100m_subset_data.tsv.bz2 ``` Use of the underlying media files is subject to the Creative Commons licenses chosen by their creators/uploaders. For more information about the YFCC100M dataset, visit [the official website](https://multimediacommons.wordpress.com/yfcc100m-core-dataset/). ================================================ FILE: CLIP/hubconf.py ================================================ from clip.clip import tokenize as _tokenize, load as _load, available_models as _available_models import re import string dependencies = ["torch", "torchvision", "ftfy", "regex", "tqdm"] # For compatibility (cannot include special characters in function name) model_functions = { model: re.sub(f'[{string.punctuation}]', '_', model) for model in _available_models()} def _create_hub_entrypoint(model): def entrypoint(**kwargs): return _load(model, **kwargs) entrypoint.__doc__ = f"""Loads the {model} CLIP model Parameters ---------- device : Union[str, torch.device] The device to put the loaded model jit : bool Whether to load the optimized JIT model or more hackable non-JIT model (default). download_root: str path to download the model files; by default, it uses "~/.cache/clip" Returns ------- model : torch.nn.Module The {model} CLIP model preprocess : Callable[[PIL.Image], torch.Tensor] A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input """ return entrypoint def tokenize(): return _tokenize _entrypoints = {model_functions[model]: _create_hub_entrypoint(model) for model in _available_models()} globals().update(_entrypoints) ================================================ FILE: CLIP/model-card.md ================================================ # Model Card: CLIP Inspired by [Model Cards for Model Reporting (Mitchell et al.)](https://arxiv.org/abs/1810.03993) and [Lessons from Archives (Jo & Gebru)](https://arxiv.org/pdf/1912.10389.pdf), we’re providing some accompanying information about the multimodal model. ## Model Details The CLIP model was developed by researchers at OpenAI to learn about what contributes to robustness in computer vision tasks. The model was also developed to test the ability of models to generalize to arbitrary image classification tasks in a zero-shot manner. It was not developed for general model deployment - to deploy models like CLIP, researchers will first need to carefully study their capabilities in relation to the specific context they’re being deployed within. ### Model Date January 2021 ### Model Type The base model uses a ResNet50 with several modifications as an image encoder and uses a masked self-attention Transformer as a text encoder. These encoders are trained to maximize the similarity of (image, text) pairs via a contrastive loss. There is also a variant of the model where the ResNet image encoder is replaced with a Vision Transformer. ### Model Versions Initially, we’ve released one CLIP model based on the Vision Transformer architecture equivalent to ViT-B/32, along with the RN50 model, using the architecture equivalent to ResNet-50. As part of the staged release process, we have also released the RN101 model, as well as RN50x4, a RN50 scaled up 4x according to the [EfficientNet](https://arxiv.org/abs/1905.11946) scaling rule. In July 2021, we additionally released the RN50x16 and ViT-B/16 models, and in January 2022, the RN50x64 and ViT-L/14 models were released. Lastly, the ViT-L/14@336px model was released in April 2022. Please see the paper linked below for further details about their specification. ### Documents - [Blog Post](https://openai.com/blog/clip/) - [CLIP Paper](https://arxiv.org/abs/2103.00020) ## Model Use ### Intended Use The model is intended as a research output for research communities. We hope that this model will enable researchers to better understand and explore zero-shot, arbitrary image classification. We also hope it can be used for interdisciplinary studies of the potential impact of such models - the CLIP paper includes a discussion of potential downstream impacts to provide an example for this sort of analysis. #### Primary intended uses The primary intended users of these models are AI researchers. We primarily imagine the model will be used by researchers to better understand robustness, generalization, and other capabilities, biases, and constraints of computer vision models. ### Out-of-Scope Use Cases **Any** deployed use case of the model - whether commercial or not - is currently out of scope. Non-deployed use cases such as image search in a constrained environment, are also not recommended unless there is thorough in-domain testing of the model with a specific, fixed class taxonomy. This is because our safety assessment demonstrated a high need for task specific testing especially given the variability of CLIP’s performance with different class taxonomies. This makes untested and unconstrained deployment of the model in any use case currently potentially harmful. Certain use cases which would fall under the domain of surveillance and facial recognition are always out-of-scope regardless of performance of the model. This is because the use of artificial intelligence for tasks such as these can be premature currently given the lack of testing norms and checks to ensure its fair use. Since the model has not been purposefully trained in or evaluated on any languages other than English, its use should be limited to English language use cases. ## Data The model was trained on publicly available image-caption data. This was done through a combination of crawling a handful of websites and using commonly-used pre-existing image datasets such as [YFCC100M](http://projects.dfki.uni-kl.de/yfcc100m/). A large portion of the data comes from our crawling of the internet. This means that the data is more representative of people and societies most connected to the internet which tend to skew towards more developed nations, and younger, male users. ### Data Mission Statement Our goal with building this dataset was to test out robustness and generalizability in computer vision tasks. As a result, the focus was on gathering large quantities of data from different publicly-available internet data sources. The data was gathered in a mostly non-interventionist manner. However, we only crawled websites that had policies against excessively violent and adult images and allowed us to filter out such content. We do not intend for this dataset to be used as the basis for any commercial or deployed model and will not be releasing the dataset. ## Performance and Limitations ### Performance We have evaluated the performance of CLIP on a wide range of benchmarks across a variety of computer vision datasets such as OCR to texture recognition to fine-grained classification. The paper describes model performance on the following datasets: - Food101 - CIFAR10 - CIFAR100 - Birdsnap - SUN397 - Stanford Cars - FGVC Aircraft - VOC2007 - DTD - Oxford-IIIT Pet dataset - Caltech101 - Flowers102 - MNIST - SVHN - IIIT5K - Hateful Memes - SST-2 - UCF101 - Kinetics700 - Country211 - CLEVR Counting - KITTI Distance - STL-10 - RareAct - Flickr30 - MSCOCO - ImageNet - ImageNet-A - ImageNet-R - ImageNet Sketch - ObjectNet (ImageNet Overlap) - Youtube-BB - ImageNet-Vid ## Limitations CLIP and our analysis of it have a number of limitations. CLIP currently struggles with respect to certain tasks such as fine grained classification and counting objects. CLIP also poses issues with regards to fairness and bias which we discuss in the paper and briefly in the next section. Additionally, our approach to testing CLIP also has an important limitation- in many cases we have used linear probes to evaluate the performance of CLIP and there is evidence suggesting that linear probes can underestimate model performance. ### Bias and Fairness We find that the performance of CLIP - and the specific biases it exhibits - can depend significantly on class design and the choices one makes for categories to include and exclude. We tested the risk of certain kinds of denigration with CLIP by classifying images of people from [Fairface](https://arxiv.org/abs/1908.04913) into crime-related and non-human animal categories. We found significant disparities with respect to race and gender. Additionally, we found that these disparities could shift based on how the classes were constructed. (Details captured in the Broader Impacts Section in the paper). We also tested the performance of CLIP on gender, race and age classification using the Fairface dataset (We default to using race categories as they are constructed in the Fairface dataset.) in order to assess quality of performance across different demographics. We found accuracy >96% across all races for gender classification with ‘Middle Eastern’ having the highest accuracy (98.4%) and ‘White’ having the lowest (96.5%). Additionally, CLIP averaged ~93% for racial classification and ~63% for age classification. Our use of evaluations to test for gender, race and age classification as well as denigration harms is simply to evaluate performance of the model across people and surface potential risks and not to demonstrate an endorsement/enthusiasm for such tasks. ## Feedback ### Where to send questions or comments about the model Please use [this Google Form](https://forms.gle/Uv7afRH5dvY34ZEs9) ================================================ FILE: CLIP/model.py ================================================ from collections import OrderedDict from typing import Tuple, Union import numpy as np import torch import torch.nn.functional as F from torch import nn class Bottleneck(nn.Module): expansion = 4 def __init__(self, inplanes, planes, stride=1): super().__init__() # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1 self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False) self.bn1 = nn.BatchNorm2d(planes) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(planes) self.relu2 = nn.ReLU(inplace=True) self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity() self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False) self.bn3 = nn.BatchNorm2d(planes * self.expansion) self.relu3 = nn.ReLU(inplace=True) self.downsample = None self.stride = stride if stride > 1 or inplanes != planes * Bottleneck.expansion: # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1 self.downsample = nn.Sequential(OrderedDict([ ("-1", nn.AvgPool2d(stride)), ("0", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)), ("1", nn.BatchNorm2d(planes * self.expansion)) ])) def forward(self, x: torch.Tensor): identity = x out = self.relu1(self.bn1(self.conv1(x))) out = self.relu2(self.bn2(self.conv2(out))) out = self.avgpool(out) out = self.bn3(self.conv3(out)) if self.downsample is not None: identity = self.downsample(x) out += identity out = self.relu3(out) return out class AttentionPool2d(nn.Module): def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None): super().__init__() self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5) self.k_proj = nn.Linear(embed_dim, embed_dim) self.q_proj = nn.Linear(embed_dim, embed_dim) self.v_proj = nn.Linear(embed_dim, embed_dim) self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim) self.num_heads = num_heads def forward(self, x): x = x.flatten(start_dim=2).permute(2, 0, 1) # NCHW -> (HW)NC x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0) # (HW+1)NC x = x + self.positional_embedding[:, None, :].to(x.dtype) # (HW+1)NC x, _ = F.multi_head_attention_forward( query=x[:1], key=x, value=x, embed_dim_to_check=x.shape[-1], num_heads=self.num_heads, q_proj_weight=self.q_proj.weight, k_proj_weight=self.k_proj.weight, v_proj_weight=self.v_proj.weight, in_proj_weight=None, in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]), bias_k=None, bias_v=None, add_zero_attn=False, dropout_p=0, out_proj_weight=self.c_proj.weight, out_proj_bias=self.c_proj.bias, use_separate_proj_weight=True, training=self.training, need_weights=False ) return x.squeeze(0) class ModifiedResNet(nn.Module): """ A ResNet class that is similar to torchvision's but contains the following changes: - There are now 3 "stem" convolutions as opposed to 1, with an average pool instead of a max pool. - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1 - The final pooling layer is a QKV attention instead of an average pool """ def __init__(self, layers, output_dim, heads, input_resolution=224, width=64): super().__init__() self.output_dim = output_dim self.input_resolution = input_resolution # the 3-layer stem self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(width // 2) self.relu1 = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(width // 2) self.relu2 = nn.ReLU(inplace=True) self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False) self.bn3 = nn.BatchNorm2d(width) self.relu3 = nn.ReLU(inplace=True) self.avgpool = nn.AvgPool2d(2) # residual layers self._inplanes = width # this is a *mutable* variable used during construction self.layer1 = self._make_layer(width, layers[0]) self.layer2 = self._make_layer(width * 2, layers[1], stride=2) self.layer3 = self._make_layer(width * 4, layers[2], stride=2) self.layer4 = self._make_layer(width * 8, layers[3], stride=2) embed_dim = width * 32 # the ResNet feature dimension self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim) def _make_layer(self, planes, blocks, stride=1): layers = [Bottleneck(self._inplanes, planes, stride)] self._inplanes = planes * Bottleneck.expansion for _ in range(1, blocks): layers.append(Bottleneck(self._inplanes, planes)) return nn.Sequential(*layers) def forward(self, x): def stem(x): x = self.relu1(self.bn1(self.conv1(x))) x = self.relu2(self.bn2(self.conv2(x))) x = self.relu3(self.bn3(self.conv3(x))) x = self.avgpool(x) return x x = x.type(self.conv1.weight.dtype) x = stem(x) x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) x = self.attnpool(x) return x class LayerNorm(nn.LayerNorm): """Subclass torch's LayerNorm to handle fp16.""" def forward(self, x: torch.Tensor): orig_type = x.dtype ret = super().forward(x.type(torch.float32)) return ret.type(orig_type) class QuickGELU(nn.Module): def forward(self, x: torch.Tensor): return x * torch.sigmoid(1.702 * x) class ResidualAttentionBlock(nn.Module): def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None): super().__init__() self.attn = nn.MultiheadAttention(d_model, n_head) self.ln_1 = LayerNorm(d_model) self.mlp = nn.Sequential(OrderedDict([ ("c_fc", nn.Linear(d_model, d_model * 4)), ("gelu", QuickGELU()), ("c_proj", nn.Linear(d_model * 4, d_model)) ])) self.ln_2 = LayerNorm(d_model) self.attn_mask = attn_mask def attention(self, x: torch.Tensor): self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0] def forward(self, x: torch.Tensor): x = x + self.attention(self.ln_1(x)) x = x + self.mlp(self.ln_2(x)) return x class Transformer(nn.Module): def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None): super().__init__() self.width = width self.layers = layers self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)]) def forward(self, x: torch.Tensor): return self.resblocks(x) class VisionTransformer(nn.Module): def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int): super().__init__() self.input_resolution = input_resolution self.output_dim = output_dim self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False) scale = width ** -0.5 self.class_embedding = nn.Parameter(scale * torch.randn(width)) self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width)) self.ln_pre = LayerNorm(width) self.transformer = Transformer(width, layers, heads) self.ln_post = LayerNorm(width) self.proj = nn.Parameter(scale * torch.randn(width, output_dim)) def forward(self, x: torch.Tensor): x = self.conv1(x) # shape = [*, width, grid, grid] x = x.reshape(x.shape[0], x.shape[1], -1) # shape = [*, width, grid ** 2] x = x.permute(0, 2, 1) # shape = [*, grid ** 2, width] x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1) # shape = [*, grid ** 2 + 1, width] x = x + self.positional_embedding.to(x.dtype) x = self.ln_pre(x) x = x.permute(1, 0, 2) # NLD -> LND x = self.transformer(x) x = x.permute(1, 0, 2) # LND -> NLD x = self.ln_post(x[:, 0, :]) if self.proj is not None: x = x @ self.proj return x class CLIP(nn.Module): def __init__(self, embed_dim: int, # vision image_resolution: int, vision_layers: Union[Tuple[int, int, int, int], int], vision_width: int, vision_patch_size: int, # text context_length: int, vocab_size: int, transformer_width: int, transformer_heads: int, transformer_layers: int ): super().__init__() self.context_length = context_length if isinstance(vision_layers, (tuple, list)): vision_heads = vision_width * 32 // 64 self.visual = ModifiedResNet( layers=vision_layers, output_dim=embed_dim, heads=vision_heads, input_resolution=image_resolution, width=vision_width ) else: vision_heads = vision_width // 64 self.visual = VisionTransformer( input_resolution=image_resolution, patch_size=vision_patch_size, width=vision_width, layers=vision_layers, heads=vision_heads, output_dim=embed_dim ) self.transformer = Transformer( width=transformer_width, layers=transformer_layers, heads=transformer_heads, attn_mask=self.build_attention_mask() ) self.vocab_size = vocab_size self.token_embedding = nn.Embedding(vocab_size, transformer_width) self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width)) self.ln_final = LayerNorm(transformer_width) self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim)) self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07)) self.initialize_parameters() def initialize_parameters(self): nn.init.normal_(self.token_embedding.weight, std=0.02) nn.init.normal_(self.positional_embedding, std=0.01) if isinstance(self.visual, ModifiedResNet): if self.visual.attnpool is not None: std = self.visual.attnpool.c_proj.in_features ** -0.5 nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std) nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std) for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]: for name, param in resnet_block.named_parameters(): if name.endswith("bn3.weight"): nn.init.zeros_(param) proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5) attn_std = self.transformer.width ** -0.5 fc_std = (2 * self.transformer.width) ** -0.5 for block in self.transformer.resblocks: nn.init.normal_(block.attn.in_proj_weight, std=attn_std) nn.init.normal_(block.attn.out_proj.weight, std=proj_std) nn.init.normal_(block.mlp.c_fc.weight, std=fc_std) nn.init.normal_(block.mlp.c_proj.weight, std=proj_std) if self.text_projection is not None: nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5) def build_attention_mask(self): # lazily create causal attention mask, with full attention between the vision tokens # pytorch uses additive attention mask; fill with -inf mask = torch.empty(self.context_length, self.context_length) mask.fill_(float("-inf")) mask.triu_(1) # zero out the lower diagonal return mask @property def dtype(self): return self.visual.conv1.weight.dtype def encode_image(self, image): return self.visual(image.type(self.dtype)) def encode_text(self, text): x = self.token_embedding(text).type(self.dtype) # [batch_size, n_ctx, d_model] x = x + self.positional_embedding.type(self.dtype) x = x.permute(1, 0, 2) # NLD -> LND x = self.transformer(x) x = x.permute(1, 0, 2) # LND -> NLD x = self.ln_final(x).type(self.dtype) # x.shape = [batch_size, n_ctx, transformer.width] # take features from the eot embedding (eot_token is the highest number in each sequence) x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection return x def forward(self, image, text): image_features = self.encode_image(image) text_features = self.encode_text(text) # normalized features image_features = image_features / image_features.norm(dim=1, keepdim=True) text_features = text_features / text_features.norm(dim=1, keepdim=True) # cosine similarity as logits logit_scale = self.logit_scale.exp() logits_per_image = logit_scale * image_features @ text_features.t() logits_per_text = logits_per_image.t() # shape = [global_batch_size, global_batch_size] return logits_per_image, logits_per_text def convert_weights(model: nn.Module): """Convert applicable model parameters to fp16""" def _convert_weights_to_fp16(l): if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)): l.weight.data = l.weight.data.half() if l.bias is not None: l.bias.data = l.bias.data.half() if isinstance(l, nn.MultiheadAttention): for attr in [*[f"{s}_proj_weight" for s in ["in", "q", "k", "v"]], "in_proj_bias", "bias_k", "bias_v"]: tensor = getattr(l, attr) if tensor is not None: tensor.data = tensor.data.half() for name in ["text_projection", "proj"]: if hasattr(l, name): attr = getattr(l, name) if attr is not None: attr.data = attr.data.half() model.apply(_convert_weights_to_fp16) def build_model(state_dict: dict): vit = "visual.proj" in state_dict if vit: vision_width = state_dict["visual.conv1.weight"].shape[0] vision_layers = len([k for k in state_dict.keys() if k.startswith("visual.") and k.endswith(".attn.in_proj_weight")]) vision_patch_size = state_dict["visual.conv1.weight"].shape[-1] grid_size = round((state_dict["visual.positional_embedding"].shape[0] - 1) ** 0.5) image_resolution = vision_patch_size * grid_size else: counts: list = [len(set(k.split(".")[2] for k in state_dict if k.startswith(f"visual.layer{b}"))) for b in [1, 2, 3, 4]] vision_layers = tuple(counts) vision_width = state_dict["visual.layer1.0.conv1.weight"].shape[0] output_width = round((state_dict["visual.attnpool.positional_embedding"].shape[0] - 1) ** 0.5) vision_patch_size = None assert output_width ** 2 + 1 == state_dict["visual.attnpool.positional_embedding"].shape[0] image_resolution = output_width * 32 embed_dim = state_dict["text_projection"].shape[1] context_length = state_dict["positional_embedding"].shape[0] vocab_size = state_dict["token_embedding.weight"].shape[0] transformer_width = state_dict["ln_final.weight"].shape[0] transformer_heads = transformer_width // 64 transformer_layers = len(set(k.split(".")[2] for k in state_dict if k.startswith("transformer.resblocks"))) model = CLIP( embed_dim, image_resolution, vision_layers, vision_width, vision_patch_size, context_length, vocab_size, transformer_width, transformer_heads, transformer_layers ) for key in ["input_resolution", "context_length", "vocab_size"]: if key in state_dict: del state_dict[key] convert_weights(model) model.load_state_dict(state_dict) return model.eval() ================================================ FILE: CLIP/requirements.txt ================================================ ftfy regex tqdm torch torchvision ================================================ FILE: CLIP/setup.py ================================================ import os import pkg_resources from setuptools import setup, find_packages setup( name="clip", py_modules=["clip"], version="1.0", description="", author="OpenAI", packages=find_packages(exclude=["tests*"]), install_requires=[ str(r) for r in pkg_resources.parse_requirements( open(os.path.join(os.path.dirname(__file__), "requirements.txt")) ) ], include_package_data=True, extras_require={'dev': ['pytest']}, ) ================================================ FILE: CLIP/simple_tokenizer.py ================================================ import gzip import html import os from functools import lru_cache import ftfy import regex as re @lru_cache() def default_bpe(): return os.path.join(os.path.dirname(os.path.abspath(__file__)), "bpe_simple_vocab_16e6.txt.gz") @lru_cache() def bytes_to_unicode(): """ Returns list of utf-8 byte and a corresponding list of unicode strings. The reversible bpe codes work on unicode strings. This means you need a large # of unicode characters in your vocab if you want to avoid UNKs. When you're at something like a 10B token dataset you end up needing around 5K for decent coverage. This is a signficant percentage of your normal, say, 32K bpe vocab. To avoid that, we want lookup tables between utf-8 bytes and unicode strings. And avoids mapping to whitespace/control characters the bpe code barfs on. """ bs = list(range(ord("!"), ord("~")+1))+list(range(ord("¡"), ord("¬")+1))+list(range(ord("®"), ord("ÿ")+1)) cs = bs[:] n = 0 for b in range(2**8): if b not in bs: bs.append(b) cs.append(2**8+n) n += 1 cs = [chr(n) for n in cs] return dict(zip(bs, cs)) def get_pairs(word): """Return set of symbol pairs in a word. Word is represented as tuple of symbols (symbols being variable-length strings). """ pairs = set() prev_char = word[0] for char in word[1:]: pairs.add((prev_char, char)) prev_char = char return pairs def basic_clean(text): text = ftfy.fix_text(text) text = html.unescape(html.unescape(text)) return text.strip() def whitespace_clean(text): text = re.sub(r'\s+', ' ', text) text = text.strip() return text class SimpleTokenizer(object): def __init__(self, bpe_path: str = default_bpe()): self.byte_encoder = bytes_to_unicode() self.byte_decoder = {v: k for k, v in self.byte_encoder.items()} merges = gzip.open(bpe_path).read().decode("utf-8").split('\n') merges = merges[1:49152-256-2+1] merges = [tuple(merge.split()) for merge in merges] vocab = list(bytes_to_unicode().values()) vocab = vocab + [v+'' for v in vocab] for merge in merges: vocab.append(''.join(merge)) vocab.extend(['<|startoftext|>', '<|endoftext|>']) self.encoder = dict(zip(vocab, range(len(vocab)))) self.decoder = {v: k for k, v in self.encoder.items()} self.bpe_ranks = dict(zip(merges, range(len(merges)))) self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'} self.pat = re.compile(r"""<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+""", re.IGNORECASE) def bpe(self, token): if token in self.cache: return self.cache[token] word = tuple(token[:-1]) + ( token[-1] + '',) pairs = get_pairs(word) if not pairs: return token+'' while True: bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf'))) if bigram not in self.bpe_ranks: break first, second = bigram new_word = [] i = 0 while i < len(word): try: j = word.index(first, i) new_word.extend(word[i:j]) i = j except: new_word.extend(word[i:]) break if word[i] == first and i < len(word)-1 and word[i+1] == second: new_word.append(first+second) i += 2 else: new_word.append(word[i]) i += 1 new_word = tuple(new_word) word = new_word if len(word) == 1: break else: pairs = get_pairs(word) word = ' '.join(word) self.cache[token] = word return word def encode(self, text): bpe_tokens = [] text = whitespace_clean(basic_clean(text)).lower() for token in re.findall(self.pat, text): token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8')) bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' ')) return bpe_tokens def decode(self, tokens): text = ''.join([self.decoder[token] for token in tokens]) text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors="replace").replace('', ' ') return text ================================================ FILE: CLIP/tests/test_consistency.py ================================================ import numpy as np import pytest import torch from PIL import Image import clip @pytest.mark.parametrize('model_name', clip.available_models()) def test_consistency(model_name): device = "cpu" jit_model, transform = clip.load(model_name, device=device, jit=True) py_model, _ = clip.load(model_name, device=device, jit=False) image = transform(Image.open("CLIP.png")).unsqueeze(0).to(device) text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device) with torch.no_grad(): logits_per_image, _ = jit_model(image, text) jit_probs = logits_per_image.softmax(dim=-1).cpu().numpy() logits_per_image, _ = py_model(image, text) py_probs = logits_per_image.softmax(dim=-1).cpu().numpy() assert np.allclose(jit_probs, py_probs, atol=0.01, rtol=0.1) ================================================ FILE: README.md ================================================ # Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models (ECCV 2024) **Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models**
**[Project Page](https://yzmblog.github.io/projects/SurfD)** | **[Paper](https://arxiv.org/abs/2311.17050)** This is an official implementation of Surf-D using [PyTorch](https://pytorch.org/) >We present **Surf-D**, a novel method for generating high-quality 3D shapes as **Surfaces** with arbitrary topologies using **Diffusion** models. Previous methods explored shape generation with different representations and they suffer from limited topologies and poor geometry details. To generate high-quality surfaces of arbitrary topologies, we use the Unsigned Distance Field (UDF) as our surface representation to accommodate arbitrary topologies. Furthermore, we propose a new pipeline that employs a point-based AutoEncoder to learn a compact and continuous latent space for accurately encoding UDF and support high-resolution mesh extraction. We further show that our new pipeline significantly outperforms the prior approaches to learning the distance fields, such as the grid-based AutoEncoder, which is not scalable and incapable of learning accurate UDF. In addition, we adopt a curriculum learning strategy to efficiently embed various surfaces. With the pretrained shape latent space, we employ a latent diffusion model to acquire the distribution of various shapes. Extensive experiments are presented on using Surf-D for unconditional generation, category conditional generation, image conditional generation, and text-to-shape tasks. The experiments demonstrate the superior performance of Surf-D in shape generation across multiple modalities as conditions. ## Installation We recommend to use [Anaconda](https://www.anaconda.com/). Create and activate a virtual environment. conda env create -f environment.yaml conda activate SurfD cd meshudf python3 setup.py build_ext --inplace ## Download pretrained models Download our pretrained models at [google drive](https://drive.google.com/drive/folders/19Wdbg-zOB48IZ3KSxayRK3q1v1HfWRUP?usp=sharing). ## Generate from Diffusion: ### Extract a 512 resolution mesh will take some time, if you want to get a mesh quickly, feel free to modify the following command to --resolution 256 Unconditional generation: python -m sample.generate_uncond \ --model_path pretrained_models/diffusion_uncond.pt \ --output_dir ./outputs/uncond/ \ --cond_mode no_cond \ --ae_dir pretrained_models/ae_deepfashion3d.pt \ --num_samples 10 \ --resolution 512 Sketch conditional generation: python -m sample.generate_sketch \ --model_path pretrained_models/diffusion_sketch.pt \ --output_dir ./outputs/sketch_cond/ \ --cond_mode sketch \ --ae_dir pretrained_models/ae_deepfashion3d.pt \ --sketch_path demo_images/sketch.png \ --resolution 512 Image conditional generation: python -m sample.generate_image \ --model_path pretrained_models/diffusion_image.pt \ --output_dir ./outputs/image_cond/ \ --cond_mode img \ --ae_dir pretrained_models/ae_pix3d.pt \ --image_path demo_images/0049.jpg \ --mask_path demo_images/0049.png \ --resolution 512 Text conditional generation: python -m sample.generate_text \ --model_path pretrained_models/diffusion_text.pt \ --output_dir ./outputs/text_cond/ \ --cond_mode text \ --ae_dir pretrained_models/ae_text.pt \ --prompt "a dining chair" \ --watertight --num_samples 10 \ --resolution 512 # Training ## Prepare dataset Down load DeepFashion3D dataset at [DeepFashion3D](https://github.com/GAP-LAB-CUHK-SZ/deepFashion3D), Pix3D dataset at [Pix3D](http://pix3d.csail.mit.edu/) and ShapeNet dataset at [ShapeNet](https://shapenet.org/). ## Preprocess the dataset cd AutoEncoder/encdc python preprocess_udfs.py /path/to/data_root /path/to/output dataset_name ## AutoEncoder Training: ``` cd AutoEncoder/encdc ``` python train_encdec.py ../cfg/xxx/xxx.yaml ## Diffusion Training: python train_diffcloth.py --cond_mode no_cond --save_dir xxx --overwrite --data_dir xxx --ae_dir xxx --log_interval 25 --save_interval 10000 --dataset deepfashion3d ## Acknowledgement Our code took reference from [MDM](https://github.com/GuyTevet/motion-diffusion-model), [SDFusion](https://github.com/yccyenchicheng/SDFusion), [DrapeNet](https://github.com/liren2515/DrapeNet), [MeshUDF](https://github.com/cvlab-epfl/MeshUDF), [Stable Diffusion](https://github.com/CompVis/stable-diffusion). We thank these authors for their great works and open-source contribution. ## Citation If you find this work useful for your research, please consider citing our paper: ```bibtex @article{yu2023surf, title={Surf-D: High-Quality Surface Generation for Arbitrary Topologies using Diffusion Models}, author={Yu, Zhengming and Dou, Zhiyang and Long, Xiaoxiao and Lin, Cheng and Li, Zekun and Liu, Yuan and M{\"u}ller, Norman and Komura, Taku and Habermann, Marc and Theobalt, Christian and others}, journal={arXiv preprint arXiv:2311.17050}, year={2023} } ``` or ```bibtex @inproceedings{yu2025surf, title={Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models}, author={Yu, Zhengming and Dou, Zhiyang and Long, Xiaoxiao and Lin, Cheng and Li, Zekun and Liu, Yuan and M{\"u}ller, Norman and Komura, Taku and Habermann, Marc and Theobalt, Christian and others}, booktitle={European Conference on Computer Vision}, pages={419--438}, year={2025}, organization={Springer} } ``` ================================================ FILE: data_loaders/dataset.py ================================================ import pickle from pathlib import Path from typing import Tuple import numpy as np import torch from torch import Tensor from torch.utils.data import Dataset from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize from PIL import Image import os import csv T_ITEM = Tuple[int, str, Tensor, Tensor, Tensor, Tensor] # for img2shape # https://stackoverflow.com/questions/31400769/bounding-box-of-numpy-array def mask2bbox(mask): # mask: w x h rows = np.any(mask, axis=1) cols = np.any(mask, axis=0) rmin, rmax = np.where(rows)[0][[0, -1]] cmin, cmax = np.where(cols)[0][[0, -1]] # return rmin, rmax, cmin, cmax return cmin, rmin, cmax, rmax # ref: pix2vox: https://github.com/hzxie/Pix2Vox/blob/f1b82823e79d4afeedddfadb3da0940bcf1c536d/utils/data_transforms.py def crop_square(img, bbox, img_size_h=256, img_size_w=256): # from pix2vox img_height, img_width, c = img.shape x0, y0, x1, y1 = bbox # Calculate the size of bounding boxes bbox_width = x1 - x0 bbox_height = y1 - y0 bbox_x_mid = (x0 + x1) * .5 bbox_y_mid = (y0 + y1) * .5 # Make the crop area as a square square_object_size = max(bbox_width, bbox_height) x_left = int(bbox_x_mid - square_object_size * .5) x_right = int(bbox_x_mid + square_object_size * .5) y_top = int(bbox_y_mid - square_object_size * .5) y_bottom = int(bbox_y_mid + square_object_size * .5) # If the crop position is out of the image, fix it with padding pad_x_left = 0 if x_left < 0: pad_x_left = -x_left x_left = 0 pad_x_right = 0 if x_right >= img_width: pad_x_right = x_right - img_width + 1 x_right = img_width - 1 pad_y_top = 0 if y_top < 0: pad_y_top = -y_top y_top = 0 pad_y_bottom = 0 if y_bottom >= img_height: pad_y_bottom = y_bottom - img_height + 1 y_bottom = img_height - 1 # Padding the image and resize the image processed_image = np.pad(img[y_top:y_bottom + 1, x_left:x_right + 1], ((pad_y_top, pad_y_bottom), (pad_x_left, pad_x_right), (0, 0)), mode='edge') pil_img = Image.fromarray(processed_image) pil_img = pil_img.resize((img_size_w, img_size_h)) # processed_image = cv2.resize(processed_image, (img_size_w, img_size_h)) return pil_img def _convert_image_to_rgb(image): return image.convert("RGB") def _transform(n_px): return Compose([ CenterCrop(n_px), _convert_image_to_rgb, ToTensor(), Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), ]) def _transform_rgb(n_px): return Compose([ ToTensor(), Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), Resize((n_px, n_px)), ]) class UDFs3d(Dataset): def __init__(self, name: str, root: Path, split: str, cond: str) -> None: super().__init__() self.root = str(root) self.ids = [] self.npz_list = [] self.name2text = {} self.text2name_all = {} self.text2name = {} self.cond = cond self.id2cat = {} self.cat2garment_type = {} self.name2npz = {} self.split = split self.name = name if 'sketch' in self.cond: self.clip_preprocess = _transform(224) elif 'img' in self.cond: print('here') self.clip_preprocess = _transform_rgb(224) if 'text' in self.cond: with open('./dataset/ShapeNet/text2shape/captions.tablechair_train.csv') as f: reader = csv.reader(f, delimiter=',') self.header = next(reader, None) data = [row for row in reader] for d in data: _, model_id, text, cat_i, synset, subSynsetId = d self.name2text[model_id] = text self.text2name_all[text] = model_id if 'category' in self.cond: with open('./dataset/Deepfashion3D/garment_type_list.txt', 'r') as f: data = f.readlines() for i, line in enumerate(data): line = line.rstrip() line = line.split(' ') for l in line[1:]: self.id2cat[l] = i self.cat2garment_type[i] = line[0] print(self.cat2garment_type) if name in ['shapenet', 'deepfashion3d']: if name == 'deepfashion3d': self.data_root = os.path.join(self.root, 'udfs', 'train') self.sketch_root = os.path.join(self.root, 'images', 'train', 'sketch') else: self.data_root = os.path.join(self.root, 'train') ids = os.listdir(self.data_root) for id in ids: assert id.endswith(".npz") self.ids.append(id[:-4]) self.npz_list.append(os.path.join(self.data_root, id)) elif name == 'text2shape': data_root_chair = os.path.join(self.root, '03001627', 'train') ids_chair = os.listdir(data_root_chair) for id in ids_chair: #print(id) assert id.endswith(".npz") self.ids.append(id[:-4]) self.npz_list.append(os.path.join(data_root_chair, id)) data_root_table = os.path.join(self.root, '04379243', 'train') ids_table = os.listdir(data_root_table) for id in ids_table: #print(id) assert id.endswith(".npz") self.ids.append(id[:-4]) self.npz_list.append(os.path.join(data_root_table, id)) for npz_ in self.npz_list: self.name2npz[npz_.split('/')[-1][:-4]] = npz_ for t in self.text2name_all.keys(): if self.text2name_all[t] in self.ids: self.text2name[t] = self.text2name_all[t] self.info_text = list(self.text2name.keys()) elif name == 'pix3d': cats = os.listdir(os.path.join(self.root, 'udfs', split)) for cat in cats: ids = os.listdir(os.path.join(self.root, 'udfs', split, cat)) for id in ids: self.ids.append(id[:-4]) self.npz_list.append(os.path.join(self.root, 'udfs', split, cat, id)) self.img_root = os.path.join(self.root, 'images', 'train') def __len__(self) -> int: if 'text' in self.name: return (len(self.text2name.keys())) else: return len(self.ids) def __getitem__(self, index: int) -> T_ITEM: if not 'text' in self.name: item_id = self.ids[index] if 'sketch' in self.cond: sketch_view_index = 0 sketch_path = os.path.join(self.sketch_root, item_id, f'sketch_{sketch_view_index}.png') img = Image.open(sketch_path) img = self.clip_preprocess(img) elif 'img' in self.cond: cat = self.npz_list[index].split('/')[-2] all_imgs = os.listdir(os.path.join(self.img_root, cat, item_id)) select_img = np.random.choice(all_imgs, 1)[0] img_path = os.path.join(self.img_root, cat, item_id, select_img) img_np = np.array(Image.open(img_path).convert('RGB')) mask_path = os.path.join(self.root, 'mask', cat, select_img.split('.')[0]+'.png') mask_np = np.array(Image.open(mask_path).convert('1')) x0, y0, x1, y1 = mask2bbox(mask_np) bbox = [x0, y0, x1, y1] try: img_clean = img_np * mask_np[:, :, None] except: print(img_path, mask_path) img_clean = crop_square(img_clean.astype(np.uint8), bbox) img = self.clip_preprocess(img_clean) if 'text' in self.name: text = self.info_text[index] item_id = self.text2name[text] npz = np.load(self.name2npz[item_id]) else: npz = np.load(self.npz_list[index]) pcd = torch.from_numpy(npz["pcd"]) coords = torch.from_numpy(npz["coords"]) labels = torch.from_numpy(npz["labels"]) gradients = torch.from_numpy(npz["gradients"]) if 'text' in self.cond: return index, item_id, pcd, coords, labels, gradients, text if 'sketch' in self.cond or 'img' in self.cond: return index, item_id, pcd, coords, labels, gradients, img if 'category' in self.cond: cat = self.id2cat[item_id.split('-')[0]] return index, item_id, pcd, coords, labels, gradients, cat return index, item_id, pcd, coords, labels, gradients def get_mesh(self, index: int) -> Tuple[Tensor, Tensor]: npz = np.load(self.root / f"{self.ids[index]}.npz") v = torch.from_numpy(npz["vertices"]) t = torch.from_numpy(npz["triangles"]) return v, t ================================================ FILE: diffusion/fp16_util.py ================================================ """ Helpers to train with 16-bit precision. """ import numpy as np import torch as th import torch.nn as nn from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors from diffusion import logger INITIAL_LOG_LOSS_SCALE = 20.0 def convert_module_to_f16(l): """ Convert primitive modules to float16. """ if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Conv3d)): l.weight.data = l.weight.data.half() if l.bias is not None: l.bias.data = l.bias.data.half() def convert_module_to_f32(l): """ Convert primitive modules to float32, undoing convert_module_to_f16(). """ if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Conv3d)): l.weight.data = l.weight.data.float() if l.bias is not None: l.bias.data = l.bias.data.float() def make_master_params(param_groups_and_shapes): """ Copy model parameters into a (differently-shaped) list of full-precision parameters. """ master_params = [] for param_group, shape in param_groups_and_shapes: master_param = nn.Parameter( _flatten_dense_tensors( [param.detach().float() for (_, param) in param_group] ).view(shape) ) master_param.requires_grad = True master_params.append(master_param) return master_params def model_grads_to_master_grads(param_groups_and_shapes, master_params): """ Copy the gradients from the model parameters into the master parameters from make_master_params(). """ for master_param, (param_group, shape) in zip( master_params, param_groups_and_shapes ): master_param.grad = _flatten_dense_tensors( [param_grad_or_zeros(param) for (_, param) in param_group] ).view(shape) def master_params_to_model_params(param_groups_and_shapes, master_params): """ Copy the master parameter data back into the model parameters. """ # Without copying to a list, if a generator is passed, this will # silently not copy any parameters. for master_param, (param_group, _) in zip(master_params, param_groups_and_shapes): for (_, param), unflat_master_param in zip( param_group, unflatten_master_params(param_group, master_param.view(-1)) ): param.detach().copy_(unflat_master_param) def unflatten_master_params(param_group, master_param): return _unflatten_dense_tensors(master_param, [param for (_, param) in param_group]) def get_param_groups_and_shapes(named_model_params): named_model_params = list(named_model_params) scalar_vector_named_params = ( [(n, p) for (n, p) in named_model_params if p.ndim <= 1], (-1), ) matrix_named_params = ( [(n, p) for (n, p) in named_model_params if p.ndim > 1], (1, -1), ) return [scalar_vector_named_params, matrix_named_params] def master_params_to_state_dict( model, param_groups_and_shapes, master_params, use_fp16 ): if use_fp16: state_dict = model.state_dict() for master_param, (param_group, _) in zip( master_params, param_groups_and_shapes ): for (name, _), unflat_master_param in zip( param_group, unflatten_master_params(param_group, master_param.view(-1)) ): assert name in state_dict state_dict[name] = unflat_master_param else: state_dict = model.state_dict() for i, (name, _value) in enumerate(model.named_parameters()): assert name in state_dict state_dict[name] = master_params[i] return state_dict def state_dict_to_master_params(model, state_dict, use_fp16): if use_fp16: named_model_params = [ (name, state_dict[name]) for name, _ in model.named_parameters() ] param_groups_and_shapes = get_param_groups_and_shapes(named_model_params) master_params = make_master_params(param_groups_and_shapes) else: master_params = [state_dict[name] for name, _ in model.named_parameters()] return master_params def zero_master_grads(master_params): for param in master_params: param.grad = None def zero_grad(model_params): for param in model_params: # Taken from https://pytorch.org/docs/stable/_modules/torch/optim/optimizer.html#Optimizer.add_param_group if param.grad is not None: param.grad.detach_() param.grad.zero_() def param_grad_or_zeros(param): if param.grad is not None: return param.grad.data.detach() else: return th.zeros_like(param) class MixedPrecisionTrainer: def __init__( self, *, model, use_fp16=False, fp16_scale_growth=1e-3, initial_lg_loss_scale=INITIAL_LOG_LOSS_SCALE, ): self.model = model self.use_fp16 = use_fp16 self.fp16_scale_growth = fp16_scale_growth self.model_params = list(self.model.parameters()) self.master_params = self.model_params self.param_groups_and_shapes = None self.lg_loss_scale = initial_lg_loss_scale if self.use_fp16: self.param_groups_and_shapes = get_param_groups_and_shapes( self.model.named_parameters() ) self.master_params = make_master_params(self.param_groups_and_shapes) self.model.convert_to_fp16() def zero_grad(self): zero_grad(self.model_params) def backward(self, loss: th.Tensor): if self.use_fp16: loss_scale = 2 ** self.lg_loss_scale (loss * loss_scale).backward() else: loss.backward() def optimize(self, opt: th.optim.Optimizer): if self.use_fp16: return self._optimize_fp16(opt) else: return self._optimize_normal(opt) def _optimize_fp16(self, opt: th.optim.Optimizer): logger.logkv_mean("lg_loss_scale", self.lg_loss_scale) model_grads_to_master_grads(self.param_groups_and_shapes, self.master_params) grad_norm, param_norm = self._compute_norms(grad_scale=2 ** self.lg_loss_scale) if check_overflow(grad_norm): self.lg_loss_scale -= 1 logger.log(f"Found NaN, decreased lg_loss_scale to {self.lg_loss_scale}") zero_master_grads(self.master_params) return False logger.logkv_mean("grad_norm", grad_norm) logger.logkv_mean("param_norm", param_norm) self.master_params[0].grad.mul_(1.0 / (2 ** self.lg_loss_scale)) opt.step() zero_master_grads(self.master_params) master_params_to_model_params(self.param_groups_and_shapes, self.master_params) self.lg_loss_scale += self.fp16_scale_growth return True def _optimize_normal(self, opt: th.optim.Optimizer): grad_norm, param_norm = self._compute_norms() logger.logkv_mean("grad_norm", grad_norm) logger.logkv_mean("param_norm", param_norm) opt.step() return True def _compute_norms(self, grad_scale=1.0): grad_norm = 0.0 param_norm = 0.0 for p in self.master_params: with th.no_grad(): param_norm += th.norm(p, p=2, dtype=th.float32).item() ** 2 if p.grad is not None: grad_norm += th.norm(p.grad, p=2, dtype=th.float32).item() ** 2 return np.sqrt(grad_norm) / grad_scale, np.sqrt(param_norm) def master_params_to_state_dict(self, master_params): return master_params_to_state_dict( self.model, self.param_groups_and_shapes, master_params, self.use_fp16 ) def state_dict_to_master_params(self, state_dict): return state_dict_to_master_params(self.model, state_dict, self.use_fp16) def check_overflow(value): return (value == float("inf")) or (value == -float("inf")) or (value != value) ================================================ FILE: diffusion/gaussian_diffusion.py ================================================ # This code is based on https://github.com/openai/guided-diffusion """ This code started out as a PyTorch port of Ho et al's diffusion models: https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py Docstrings have been added, as well as DDIM sampling and a new collection of beta schedules. """ import enum import math import time import numpy as np import torch import torch as th from copy import deepcopy from diffusion.nn import mean_flat, sum_flat from diffusion.losses import normal_kl, discretized_gaussian_log_likelihood import torch.nn.functional as F from utils.utils import compute_gradients def get_named_beta_schedule(schedule_name, num_diffusion_timesteps, scale_betas=1.): """ Get a pre-defined beta schedule for the given name. The beta schedule library consists of beta schedules which remain similar in the limit of num_diffusion_timesteps. Beta schedules may be added, but should not be removed or changed once they are committed to maintain backwards compatibility. """ if schedule_name == "linear": # Linear schedule from Ho et al, extended to work for any number of # diffusion steps. scale = scale_betas * 1000 / num_diffusion_timesteps beta_start = scale * 0.0001 beta_end = scale * 0.02 return np.linspace( beta_start, beta_end, num_diffusion_timesteps, dtype=np.float64 ) elif schedule_name == "cosine": return betas_for_alpha_bar( num_diffusion_timesteps, lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2, ) else: raise NotImplementedError(f"unknown beta schedule: {schedule_name}") def betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999): """ Create a beta schedule that discretizes the given alpha_t_bar function, which defines the cumulative product of (1-beta) over time from t = [0,1]. :param num_diffusion_timesteps: the number of betas to produce. :param alpha_bar: a lambda that takes an argument t from 0 to 1 and produces the cumulative product of (1-beta) up to that part of the diffusion process. :param max_beta: the maximum beta to use; use values lower than 1 to prevent singularities. """ betas = [] for i in range(num_diffusion_timesteps): t1 = i / num_diffusion_timesteps t2 = (i + 1) / num_diffusion_timesteps betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta)) return np.array(betas) class ModelMeanType(enum.Enum): """ Which type of output the model predicts. """ PREVIOUS_X = enum.auto() # the model predicts x_{t-1} START_X = enum.auto() # the model predicts x_0 EPSILON = enum.auto() # the model predicts epsilon class ModelVarType(enum.Enum): """ What is used as the model's output variance. The LEARNED_RANGE option has been added to allow the model to predict values between FIXED_SMALL and FIXED_LARGE, making its job easier. """ LEARNED = enum.auto() FIXED_SMALL = enum.auto() FIXED_LARGE = enum.auto() LEARNED_RANGE = enum.auto() class LossType(enum.Enum): MSE = enum.auto() # use raw MSE loss (and KL when learning variances) RESCALED_MSE = ( enum.auto() ) # use raw MSE loss (with RESCALED_KL when learning variances) KL = enum.auto() # use the variational lower-bound RESCALED_KL = enum.auto() # like KL, but rescale to estimate the full VLB def is_vb(self): return self == LossType.KL or self == LossType.RESCALED_KL class GaussianDiffusion: """ Utilities for training and sampling diffusion models. Ported directly from here, and then adapted over time to further experimentation. https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py#L42 :param betas: a 1-D numpy array of betas for each diffusion timestep, starting at T and going to 1. :param model_mean_type: a ModelMeanType determining what the model outputs. :param model_var_type: a ModelVarType determining how variance is output. :param loss_type: a LossType determining the loss function to use. :param rescale_timesteps: if True, pass floating point timesteps into the model so that they are always scaled like in the original paper (0 to 1000). """ def __init__( self, *, betas, model_mean_type, model_var_type, loss_type, rescale_timesteps=False, args, ): ############## final value clipping... self.clip_value = args.clip_value self.model_mean_type = model_mean_type self.model_var_type = model_var_type self.loss_type = loss_type self.rescale_timesteps = rescale_timesteps # Use float64 for accuracy. betas = np.array(betas, dtype=np.float64) self.betas = betas assert len(betas.shape) == 1, "betas must be 1-D" assert (betas > 0).all() and (betas <= 1).all() self.num_timesteps = int(betas.shape[0]) alphas = 1.0 - betas self.alphas_cumprod = np.cumprod(alphas, axis=0) self.alphas_cumprod_prev = np.append(1.0, self.alphas_cumprod[:-1]) self.alphas_cumprod_next = np.append(self.alphas_cumprod[1:], 0.0) assert self.alphas_cumprod_prev.shape == (self.num_timesteps,) # calculations for diffusion q(x_t | x_{t-1}) and others self.sqrt_alphas_cumprod = np.sqrt(self.alphas_cumprod) self.sqrt_one_minus_alphas_cumprod = np.sqrt(1.0 - self.alphas_cumprod) self.log_one_minus_alphas_cumprod = np.log(1.0 - self.alphas_cumprod) self.sqrt_recip_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod) self.sqrt_recipm1_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod - 1) # calculations for posterior q(x_{t-1} | x_t, x_0) self.posterior_variance = ( betas * (1.0 - self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod) ) # log calculation clipped because the posterior variance is 0 at the # beginning of the diffusion chain. self.posterior_log_variance_clipped = np.log( np.append(self.posterior_variance[1], self.posterior_variance[1:]) ) self.posterior_mean_coef1 = ( betas * np.sqrt(self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod) ) self.posterior_mean_coef2 = ( (1.0 - self.alphas_cumprod_prev) * np.sqrt(alphas) / (1.0 - self.alphas_cumprod) ) self.l2_loss = lambda a, b: (a - b) ** 2 # th.nn.MSELoss(reduction='none') # must be None for handling mask later on. self.time_con = [] def masked_l2(self, a, b, mask): # assuming a.shape == b.shape == bs, J, Jdim, seqlen # assuming mask.shape == bs, 1, 1, seqlen loss = self.l2_loss(a, b) loss = sum_flat(loss * mask.float()) # gives \sigma_euclidean over unmasked elements n_entries = a.shape[1] * a.shape[2] non_zero_elements = sum_flat(mask) * n_entries mse_loss_val = loss / non_zero_elements return mse_loss_val def q_mean_variance(self, x_start, t): """ Get the distribution q(x_t | x_0). :param x_start: the [N x C x ...] tensor of noiseless inputs. :param t: the number of diffusion steps (minus 1). Here, 0 means one step. :return: A tuple (mean, variance, log_variance), all of x_start's shape. """ mean = ( _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start ) variance = _extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape) log_variance = _extract_into_tensor( self.log_one_minus_alphas_cumprod, t, x_start.shape ) return mean, variance, log_variance def q_sample(self, x_start, t, noise=None): """ Diffuse the dataset for a given number of diffusion steps. In other words, sample from q(x_t | x_0). :param x_start: the initial dataset batch. :param t: the number of diffusion steps (minus 1). Here, 0 means one step. :param noise: if specified, the split-out normal noise. :return: A noisy version of x_start. """ if noise is None: noise = th.randn_like(x_start) assert noise.shape == x_start.shape #print(t.device,x_start.device) #print(noise.shape, noise) return ( _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start + _extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise ) def q_posterior_mean_variance(self, x_start, x_t, t): """ Compute the mean and variance of the diffusion posterior: q(x_{t-1} | x_t, x_0) """ assert x_start.shape == x_t.shape posterior_mean = ( _extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start + _extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t ) posterior_variance = _extract_into_tensor(self.posterior_variance, t, x_t.shape) posterior_log_variance_clipped = _extract_into_tensor( self.posterior_log_variance_clipped, t, x_t.shape ) assert ( posterior_mean.shape[0] == posterior_variance.shape[0] == posterior_log_variance_clipped.shape[0] == x_start.shape[0] ) return posterior_mean, posterior_variance, posterior_log_variance_clipped def p_mean_variance( self, model, x, t, clip_denoised=True, denoised_fn=None, model_kwargs=None ): """ Apply the model to get p(x_{t-1} | x_t), as well as a prediction of the initial x, x_0. :param model: the model, which takes a signal and a batch of timesteps as input. :param x: the [N x C x ...] tensor at time t. :param t: a 1-D Tensor of timesteps. :param clip_denoised: if True, clip the denoised signal into [-1, 1]. :param denoised_fn: if not None, a function which applies to the x_start prediction before it is used to sample. Applies before clip_denoised. :param model_kwargs: if not None, a dict of extra keyword arguments to pass to the model. This can be used for conditioning. :return: a dict with the following keys: - 'mean': the model mean output. - 'variance': the model variance output. - 'log_variance': the log of 'variance'. - 'pred_xstart': the prediction for x_0. """ if model_kwargs is None: model_kwargs = {} B, C = x.shape[:2] assert t.shape == (B,) model_output = model(x, self._scale_timesteps(t), **model_kwargs) if 'inpainting_mask' in model_kwargs['y'].keys() and 'inpainted_motion' in model_kwargs['y'].keys(): inpainting_mask, inpainted_motion = model_kwargs['y']['inpainting_mask'], model_kwargs['y']['inpainted_motion'] assert self.model_mean_type == ModelMeanType.START_X, 'This feature supports only X_start pred for mow!' assert model_output.shape == inpainting_mask.shape == inpainted_motion.shape model_output = (model_output * ~inpainting_mask) + (inpainted_motion * inpainting_mask) input("type1") if self.model_var_type in [ModelVarType.LEARNED, ModelVarType.LEARNED_RANGE]: input("type2") assert model_output.shape == (B, C * 2, *x.shape[2:]) model_output, model_var_values = th.split(model_output, C, dim=1) if self.model_var_type == ModelVarType.LEARNED: model_log_variance = model_var_values model_variance = th.exp(model_log_variance) else: min_log = _extract_into_tensor( self.posterior_log_variance_clipped, t, x.shape ) max_log = _extract_into_tensor(np.log(self.betas), t, x.shape) # The model_var_values is [-1, 1] for [min_var, max_var]. frac = (model_var_values + 1) / 2 model_log_variance = frac * max_log + (1 - frac) * min_log model_variance = th.exp(model_log_variance) else: # here... model_variance, model_log_variance = { # for fixedlarge, we set the initial (log-)variance like so # to get a better decoder log likelihood. ModelVarType.FIXED_LARGE: ( np.append(self.posterior_variance[1], self.betas[1:]), np.log(np.append(self.posterior_variance[1], self.betas[1:])), ), ModelVarType.FIXED_SMALL: ( self.posterior_variance, self.posterior_log_variance_clipped, ), }[self.model_var_type] model_variance = _extract_into_tensor(model_variance, t, x.shape) model_log_variance = _extract_into_tensor(model_log_variance, t, x.shape) def process_xstart(x): if denoised_fn is not None: x = denoised_fn(x) if clip_denoised: return x.clamp(-1, 1) return x if self.model_mean_type == ModelMeanType.PREVIOUS_X: pred_xstart = process_xstart( self._predict_xstart_from_xprev(x_t=x, t=t, xprev=model_output) ) model_mean = model_output elif self.model_mean_type in [ModelMeanType.START_X, ModelMeanType.EPSILON]: # THIS IS US! if self.model_mean_type == ModelMeanType.START_X: pred_xstart = process_xstart(model_output) else: pred_xstart = process_xstart( self._predict_xstart_from_eps(x_t=x, t=t, eps=model_output) ) model_mean, _, _ = self.q_posterior_mean_variance( x_start=pred_xstart, x_t=x, t=t ) else: raise NotImplementedError(self.model_mean_type) assert ( model_mean.shape == model_log_variance.shape == pred_xstart.shape == x.shape ) return { "mean": model_mean, "variance": model_variance, "log_variance": model_log_variance, "pred_xstart": pred_xstart, } def _predict_xstart_from_eps(self, x_t, t, eps): assert x_t.shape == eps.shape return ( _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * eps ) def _predict_xstart_from_xprev(self, x_t, t, xprev): assert x_t.shape == xprev.shape return ( # (xprev - coef2*x_t) / coef1 _extract_into_tensor(1.0 / self.posterior_mean_coef1, t, x_t.shape) * xprev - _extract_into_tensor( self.posterior_mean_coef2 / self.posterior_mean_coef1, t, x_t.shape ) * x_t ) def _predict_eps_from_xstart(self, x_t, t, pred_xstart): return ( _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - pred_xstart ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) def _scale_timesteps(self, t): if self.rescale_timesteps: return t.float() * (1000.0 / self.num_timesteps) return t def condition_mean(self, cond_fn, p_mean_var, x, t, model_kwargs=None): """ Compute the mean for the previous step, given a function cond_fn that computes the gradient of a conditional log probability with respect to x. In particular, cond_fn computes grad(log(p(y|x))), and we want to condition on y. This uses the conditioning strategy from Sohl-Dickstein et al. (2015). """ gradient = cond_fn(x, self._scale_timesteps(t), **model_kwargs) new_mean = ( p_mean_var["mean"].float() + p_mean_var["variance"] * gradient.float() ) return new_mean def condition_mean_with_grad(self, cond_fn, p_mean_var, x, t, model_kwargs=None): """ Compute the mean for the previous step, given a function cond_fn that computes the gradient of a conditional log probability with respect to x. In particular, cond_fn computes grad(log(p(y|x))), and we want to condition on y. This uses the conditioning strategy from Sohl-Dickstein et al. (2015). """ gradient = cond_fn(x, t, p_mean_var, **model_kwargs) new_mean = ( p_mean_var["mean"].float() + p_mean_var["variance"] * gradient.float() ) return new_mean def condition_score(self, cond_fn, p_mean_var, x, t, model_kwargs=None): """ Compute what the p_mean_variance output would have been, should the model's score function be conditioned by cond_fn. See condition_mean() for details on cond_fn. Unlike condition_mean(), this instead uses the conditioning strategy from Song et al (2020). """ alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape) eps = self._predict_eps_from_xstart(x, t, p_mean_var["pred_xstart"]) eps = eps - (1 - alpha_bar).sqrt() * cond_fn( x, self._scale_timesteps(t), **model_kwargs ) out = p_mean_var.copy() out["pred_xstart"] = self._predict_xstart_from_eps(x, t, eps) out["mean"], _, _ = self.q_posterior_mean_variance( x_start=out["pred_xstart"], x_t=x, t=t ) return out def condition_score_with_grad(self, cond_fn, p_mean_var, x, t, model_kwargs=None): """ Compute what the p_mean_variance output would have been, should the model's score function be conditioned by cond_fn. See condition_mean() for details on cond_fn. Unlike condition_mean(), this instead uses the conditioning strategy from Song et al (2020). """ alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape) eps = self._predict_eps_from_xstart(x, t, p_mean_var["pred_xstart"]) eps = eps - (1 - alpha_bar).sqrt() * cond_fn( x, t, p_mean_var, **model_kwargs ) out = p_mean_var.copy() out["pred_xstart"] = self._predict_xstart_from_eps(x, t, eps) out["mean"], _, _ = self.q_posterior_mean_variance( x_start=out["pred_xstart"], x_t=x, t=t ) return out def p_sample( self, model, x, t, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, const_noise=False, ): """ Sample x_{t-1} from the model at the given timestep. :param model: the model to sample from. :param x: the current tensor at x_{t-1}. :param t: the value of t, starting at 0 for the first diffusion step. :param clip_denoised: if True, clip the x_start prediction to [-1, 1]. :param denoised_fn: if not None, a function which applies to the x_start prediction before it is used to sample. :param cond_fn: if not None, this is a gradient function that acts similarly to the model. :param model_kwargs: if not None, a dict of extra keyword arguments to pass to the model. This can be used for conditioning. :return: a dict containing the following keys: - 'sample': a random sample from the model. - 'pred_xstart': a prediction of x_0. """ out = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) noise = th.randn_like(x) # print('const_noise', const_noise) if const_noise: noise = noise[[0]].repeat(x.shape[0], 1, 1, 1) nonzero_mask = ( (t != 0).float().view(-1, *([1] * (len(x.shape) - 1))) ) # no noise when t == 0 if cond_fn is not None: out["mean"] = self.condition_mean( cond_fn, out, x, t, model_kwargs=model_kwargs ) sample = out["mean"] + nonzero_mask * th.exp(0.5 * out["log_variance"]) * noise return {"sample": sample, "pred_xstart": out["pred_xstart"]} def p_sample_with_grad( self, model, x, t, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, ): """ Sample x_{t-1} from the model at the given timestep. :param model: the model to sample from. :param x: the current tensor at x_{t-1}. :param t: the value of t, starting at 0 for the first diffusion step. :param clip_denoised: if True, clip the x_start prediction to [-1, 1]. :param denoised_fn: if not None, a function which applies to the x_start prediction before it is used to sample. :param cond_fn: if not None, this is a gradient function that acts similarly to the model. :param model_kwargs: if not None, a dict of extra keyword arguments to pass to the model. This can be used for conditioning. :return: a dict containing the following keys: - 'sample': a random sample from the model. - 'pred_xstart': a prediction of x_0. """ with th.enable_grad(): x = x.detach().requires_grad_() out = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) noise = th.randn_like(x) nonzero_mask = ( (t != 0).float().view(-1, *([1] * (len(x.shape) - 1))) ) # no noise when t == 0 if cond_fn is not None: out["mean"] = self.condition_mean_with_grad( cond_fn, out, x, t, model_kwargs=model_kwargs ) sample = out["mean"] + nonzero_mask * th.exp(0.5 * out["log_variance"]) * noise return {"sample": sample, "pred_xstart": out["pred_xstart"].detach()} def p_sample_loop( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, dump_steps=None, const_noise=False, ): """ Generate samples from the model. :param model: the model module. :param shape: the shape of the samples, (N, C, H, W). :param noise: if specified, the noise from the encoder to sample. Should be of the same shape as `shape`. :param clip_denoised: if True, clip x_start predictions to [-1, 1]. :param denoised_fn: if not None, a function which applies to the x_start prediction before it is used to sample. :param cond_fn: if not None, this is a gradient function that acts similarly to the model. :param model_kwargs: if not None, a dict of extra keyword arguments to pass to the model. This can be used for conditioning. :param device: if specified, the device to create the samples on. If not specified, use a model parameter's device. :param progress: if True, show a tqdm progress bar. :param const_noise: If True, will noise all samples with the same noise throughout sampling :return: a non-differentiable batch of samples. """ final = None if dump_steps is not None: dump = [] for i, sample in enumerate(self.p_sample_loop_progressive( model, shape, noise=noise, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, device=device, progress=progress, skip_timesteps=skip_timesteps, init_image=init_image, randomize_class=randomize_class, cond_fn_with_grad=cond_fn_with_grad, const_noise=const_noise, )): if dump_steps is not None and i in dump_steps: dump.append(deepcopy(sample["sample"])) final = sample if dump_steps is not None: return dump return final["sample"] def p_sample_loop_progressive( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, const_noise=False, ): """ Generate samples from the model and yield intermediate samples from each timestep of diffusion. Arguments are the same as p_sample_loop(). Returns a generator over dicts, where each dict is the return value of p_sample(). """ if device is None: device = next(model.parameters()).device assert isinstance(shape, (tuple, list)) if noise is not None: img = noise else: img = th.randn(*shape, device=device) if skip_timesteps and init_image is None: init_image = th.zeros_like(img) indices = list(range(self.num_timesteps - skip_timesteps))[::-1] if init_image is not None: my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0] img = self.q_sample(init_image, my_t, img) if progress: # Lazy import so that we don't depend on tqdm. from tqdm.auto import tqdm indices = tqdm(indices) for i in indices: time_st = time.time() t = th.tensor([i] * shape[0], device=device) if randomize_class and 'y' in model_kwargs: model_kwargs['y'] = th.randint(low=0, high=model.num_classes, size=model_kwargs['y'].shape, device=model_kwargs['y'].device) with th.no_grad(): sample_fn = self.p_sample_with_grad if cond_fn_with_grad else self.p_sample out = sample_fn( model, img, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, const_noise=const_noise, ) yield out img = out["sample"] self.time_con.append(time.time() - time_st) def ddim_sample( self, model, x, t, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, eta=0.0, ): """ Sample x_{t-1} from the model using DDIM. Same usage as p_sample(). """ out_orig = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) if cond_fn is not None: out = self.condition_score(cond_fn, out_orig, x, t, model_kwargs=model_kwargs) else: out = out_orig # Usually our model outputs epsilon, but we re-derive it # in case we used x_start or x_prev prediction. eps = self._predict_eps_from_xstart(x, t, out["pred_xstart"]) alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape) alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape) sigma = ( eta * th.sqrt((1 - alpha_bar_prev) / (1 - alpha_bar)) * th.sqrt(1 - alpha_bar / alpha_bar_prev) ) # Equation 12. noise = th.randn_like(x) mean_pred = ( out["pred_xstart"] * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev - sigma ** 2) * eps ) nonzero_mask = ( (t != 0).float().view(-1, *([1] * (len(x.shape) - 1))) ) # no noise when t == 0 sample = mean_pred + nonzero_mask * sigma * noise return {"sample": sample, "pred_xstart": out_orig["pred_xstart"]} def ddim_sample_with_grad( self, model, x, t, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, eta=0.0, ): """ Sample x_{t-1} from the model using DDIM. Same usage as p_sample(). """ with th.enable_grad(): x = x.detach().requires_grad_() out_orig = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) if cond_fn is not None: out = self.condition_score_with_grad(cond_fn, out_orig, x, t, model_kwargs=model_kwargs) else: out = out_orig out["pred_xstart"] = out["pred_xstart"].detach() # Usually our model outputs epsilon, but we re-derive it # in case we used x_start or x_prev prediction. eps = self._predict_eps_from_xstart(x, t, out["pred_xstart"]) alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape) alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape) sigma = ( eta * th.sqrt((1 - alpha_bar_prev) / (1 - alpha_bar)) * th.sqrt(1 - alpha_bar / alpha_bar_prev) ) # Equation 12. noise = th.randn_like(x) mean_pred = ( out["pred_xstart"] * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev - sigma ** 2) * eps ) nonzero_mask = ( (t != 0).float().view(-1, *([1] * (len(x.shape) - 1))) ) # no noise when t == 0 sample = mean_pred + nonzero_mask * sigma * noise return {"sample": sample, "pred_xstart": out_orig["pred_xstart"].detach()} def ddim_reverse_sample( self, model, x, t, clip_denoised=True, denoised_fn=None, model_kwargs=None, eta=0.0, ): """ Sample x_{t+1} from the model using DDIM reverse ODE. """ assert eta == 0.0, "Reverse ODE only for deterministic path" out = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) # Usually our model outputs epsilon, but we re-derive it # in case we used x_start or x_prev prediction. eps = ( _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x.shape) * x - out["pred_xstart"] ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x.shape) alpha_bar_next = _extract_into_tensor(self.alphas_cumprod_next, t, x.shape) # Equation 12. reversed mean_pred = ( out["pred_xstart"] * th.sqrt(alpha_bar_next) + th.sqrt(1 - alpha_bar_next) * eps ) return {"sample": mean_pred, "pred_xstart": out["pred_xstart"]} def ddim_sample_loop( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, eta=0.0, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, dump_steps=None, const_noise=False, ): """ Generate samples from the model using DDIM. Same usage as p_sample_loop(). """ if dump_steps is not None: raise NotImplementedError() if const_noise == True: raise NotImplementedError() final = None for sample in self.ddim_sample_loop_progressive( model, shape, noise=noise, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, device=device, progress=progress, eta=eta, skip_timesteps=skip_timesteps, init_image=init_image, randomize_class=randomize_class, cond_fn_with_grad=cond_fn_with_grad, ): final = sample return final["sample"] def ddim_sample_loop_progressive( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, eta=0.0, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, ): """ Use DDIM to sample from the model and yield intermediate samples from each timestep of DDIM. Same usage as p_sample_loop_progressive(). """ if device is None: device = next(model.parameters()).device assert isinstance(shape, (tuple, list)) if noise is not None: img = noise else: img = th.randn(*shape, device=device) if skip_timesteps and init_image is None: init_image = th.zeros_like(img) indices = list(range(self.num_timesteps - skip_timesteps))[::-1] if init_image is not None: my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0] img = self.q_sample(init_image, my_t, img) if progress: # Lazy import so that we don't depend on tqdm. from tqdm.auto import tqdm indices = tqdm(indices) for i in indices: t = th.tensor([i] * shape[0], device=device) if randomize_class and 'y' in model_kwargs: model_kwargs['y'] = th.randint(low=0, high=model.num_classes, size=model_kwargs['y'].shape, device=model_kwargs['y'].device) with th.no_grad(): sample_fn = self.ddim_sample_with_grad if cond_fn_with_grad else self.ddim_sample out = sample_fn( model, img, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, eta=eta, ) yield out img = out["sample"] def plms_sample( self, model, x, t, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, cond_fn_with_grad=False, order=2, old_out=None, ): """ Sample x_{t-1} from the model using Pseudo Linear Multistep. Same usage as p_sample(). """ if not int(order) or not 1 <= order <= 4: raise ValueError('order is invalid (should be int from 1-4).') def get_model_output(x, t): with th.set_grad_enabled(cond_fn_with_grad and cond_fn is not None): x = x.detach().requires_grad_() if cond_fn_with_grad else x out_orig = self.p_mean_variance( model, x, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, model_kwargs=model_kwargs, ) if cond_fn is not None: if cond_fn_with_grad: out = self.condition_score_with_grad(cond_fn, out_orig, x, t, model_kwargs=model_kwargs) x = x.detach() else: out = self.condition_score(cond_fn, out_orig, x, t, model_kwargs=model_kwargs) else: out = out_orig # Usually our model outputs epsilon, but we re-derive it # in case we used x_start or x_prev prediction. eps = self._predict_eps_from_xstart(x, t, out["pred_xstart"]) return eps, out, out_orig alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape) alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape) eps, out, out_orig = get_model_output(x, t) if order > 1 and old_out is None: # Pseudo Improved Euler old_eps = [eps] mean_pred = out["pred_xstart"] * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps eps_2, _, _ = get_model_output(mean_pred, t - 1) eps_prime = (eps + eps_2) / 2 pred_prime = self._predict_xstart_from_eps(x, t, eps_prime) mean_pred = pred_prime * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps_prime else: # Pseudo Linear Multistep (Adams-Bashforth) old_eps = old_out["old_eps"] old_eps.append(eps) cur_order = min(order, len(old_eps)) if cur_order == 1: eps_prime = old_eps[-1] elif cur_order == 2: eps_prime = (3 * old_eps[-1] - old_eps[-2]) / 2 elif cur_order == 3: eps_prime = (23 * old_eps[-1] - 16 * old_eps[-2] + 5 * old_eps[-3]) / 12 elif cur_order == 4: eps_prime = (55 * old_eps[-1] - 59 * old_eps[-2] + 37 * old_eps[-3] - 9 * old_eps[-4]) / 24 else: raise RuntimeError('cur_order is invalid.') pred_prime = self._predict_xstart_from_eps(x, t, eps_prime) mean_pred = pred_prime * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps_prime if len(old_eps) >= order: old_eps.pop(0) nonzero_mask = (t != 0).float().view(-1, *([1] * (len(x.shape) - 1))) sample = mean_pred * nonzero_mask + out["pred_xstart"] * (1 - nonzero_mask) return {"sample": sample, "pred_xstart": out_orig["pred_xstart"], "old_eps": old_eps} def plms_sample_loop( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, order=2, ): """ Generate samples from the model using Pseudo Linear Multistep. Same usage as p_sample_loop(). """ final = None for sample in self.plms_sample_loop_progressive( model, shape, noise=noise, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, device=device, progress=progress, skip_timesteps=skip_timesteps, init_image=init_image, randomize_class=randomize_class, cond_fn_with_grad=cond_fn_with_grad, order=order, ): final = sample return final["sample"] def plms_sample_loop_progressive( self, model, shape, noise=None, clip_denoised=True, denoised_fn=None, cond_fn=None, model_kwargs=None, device=None, progress=False, skip_timesteps=0, init_image=None, randomize_class=False, cond_fn_with_grad=False, order=2, ): """ Use PLMS to sample from the model and yield intermediate samples from each timestep of PLMS. Same usage as p_sample_loop_progressive(). """ if device is None: device = next(model.parameters()).device assert isinstance(shape, (tuple, list)) if noise is not None: img = noise else: img = th.randn(*shape, device=device) if skip_timesteps and init_image is None: init_image = th.zeros_like(img) indices = list(range(self.num_timesteps - skip_timesteps))[::-1] if init_image is not None: my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0] img = self.q_sample(init_image, my_t, img) if progress: # Lazy import so that we don't depend on tqdm. from tqdm.auto import tqdm indices = tqdm(indices) old_out = None for i in indices: t = th.tensor([i] * shape[0], device=device) if randomize_class and 'y' in model_kwargs: model_kwargs['y'] = th.randint(low=0, high=model.num_classes, size=model_kwargs['y'].shape, device=model_kwargs['y'].device) with th.no_grad(): out = self.plms_sample( model, img, t, clip_denoised=clip_denoised, denoised_fn=denoised_fn, cond_fn=cond_fn, model_kwargs=model_kwargs, cond_fn_with_grad=cond_fn_with_grad, order=order, old_out=old_out, ) yield out old_out = out img = out["sample"] def _vb_terms_bpd( self, model, x_start, x_t, t, clip_denoised=True, model_kwargs=None ): """ Get a term for the variational lower-bound. The resulting units are bits (rather than nats, as one might expect). This allows for comparison to other papers. :return: a dict with the following keys: - 'output': a shape [N] tensor of NLLs or KLs. - 'pred_xstart': the x_0 predictions. """ true_mean, _, true_log_variance_clipped = self.q_posterior_mean_variance( x_start=x_start, x_t=x_t, t=t ) out = self.p_mean_variance( model, x_t, t, clip_denoised=clip_denoised, model_kwargs=model_kwargs ) kl = normal_kl( true_mean, true_log_variance_clipped, out["mean"], out["log_variance"] ) kl = mean_flat(kl) / np.log(2.0) decoder_nll = -discretized_gaussian_log_likelihood( x_start, means=out["mean"], log_scales=0.5 * out["log_variance"] ) assert decoder_nll.shape == x_start.shape decoder_nll = mean_flat(decoder_nll) / np.log(2.0) # At the first timestep return the decoder NLL, # otherwise return KL(q(x_{t-1}|x_t,x_0) || p(x_{t-1}|x_t)) output = th.where((t == 0), decoder_nll, kl) return {"output": output, "pred_xstart": out["pred_xstart"]} def training_losses(self, model, x_start, t, loss_L1, loss_args=None, model_kwargs=None, noise=None, dataset=None): """ Compute training losses for a single timestep. :param model: the model to evaluate loss on. :param x_start: the [N x C x ...] tensor of inputs. :param t: a batch of timestep indices. :param Loss_L1: L1 loss function. :param model_kwargs: if not None, a dict of extra keyword arguments to pass to the model. This can be used for conditioning. :param noise: if specified, the specific Gaussian noise to try to remove. :return: a dict with the key "loss" containing a tensor of shape [N]. Some mean or variance settings may also have other keys. """ if model_kwargs is None: model_kwargs = {} if noise is None: noise = th.randn_like(x_start) x_t = self.q_sample(x_start, t, noise=noise) terms = {} if self.loss_type == LossType.KL or self.loss_type == LossType.RESCALED_KL: input("not used.") terms["loss"] = self._vb_terms_bpd( model=model, x_start=x_start, x_t=x_t, t=t, clip_denoised=False, model_kwargs=model_kwargs, )["output"] if self.loss_type == LossType.RESCALED_KL: terms["loss"] *= self.num_timesteps elif self.loss_type == LossType.MSE or self.loss_type == LossType.RESCALED_MSE: model_output = model(x_t, self._scale_timesteps(t), **model_kwargs) decode_loss = False if decode_loss: selected_coords = loss_args["selected_coords"] selected_gt_udf = loss_args["selected_gt_udf"] selected_gt_grad = loss_args["selected_gt_grad"] coords_encoder = loss_args["coords_encoder"] decoder = loss_args["decoder"] max_dist = 0.1 latent_codes = model_output.squeeze(1) coords_encoded = coords_encoder.encode(selected_coords) pred = decoder(coords_encoded, latent_codes) udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf) udf_pred = torch.sigmoid(pred) udf_pred = 1 - udf_pred udf_pred *= max_dist gradients = compute_gradients(selected_coords, udf_pred) grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction="none") mask = (selected_gt_udf > 0) & (selected_gt_udf < 1) grad_loss = grad_loss[mask].mean() terms["UDF_L1Loss"] = udf_loss terms["Grad_loss"] = 0.1 * grad_loss if self.model_var_type in [ ModelVarType.LEARNED, ModelVarType.LEARNED_RANGE, ]: B, C = x_t.shape[:2] assert model_output.shape == (B, C * 2, *x_t.shape[2:]) model_output, model_var_values = th.split(model_output, C, dim=1) # Learn the variance using the variational bound, but don't let # it affect our mean prediction. frozen_out = th.cat([model_output.detach(), model_var_values], dim=1) terms["vb"] = self._vb_terms_bpd( model=lambda *args, r=frozen_out: r, x_start=x_start, x_t=x_t, t=t, clip_denoised=False, )["output"] if self.loss_type == LossType.RESCALED_MSE: # Divide by 1000 for equivalence with initial implementation. # Without a factor of 1/1000, the VB term hurts the MSE term. terms["vb"] *= self.num_timesteps / 1000.0 target = { ModelMeanType.PREVIOUS_X: self.q_posterior_mean_variance( x_start=x_start, x_t=x_t, t=t )[0], ModelMeanType.START_X: x_start, ModelMeanType.EPSILON: noise, }[self.model_mean_type] target = target.to(model_output.device) assert model_output.device == target.device target = target[:,:,:] x_start = x_start[:,:,:] assert model_output.shape == target.shape == x_start.shape # [bs, njoints, nfeats, nframes] terms["Latent_L1Loss"] = 1000*loss_L1(model_output, target) # mean_flat(rot_mse) terms["loss"] = terms["Latent_L1Loss"] if decode_loss: terms["loss"] = terms["loss"] + terms.get('UDF_L1Loss', 0.) + terms.get('Grad_loss', 0.) else: raise NotImplementedError(self.loss_type) return terms def _extract_into_tensor(arr, timesteps, broadcast_shape): """ Extract values from a 1-D numpy array for a batch of indices. :param arr: the 1-D numpy array. :param timesteps: a tensor of indices into the array to extract. :param broadcast_shape: a larger shape of K dimensions with the batch dimension equal to the length of timesteps. :return: a tensor of shape [batch_size, 1, ...] where the shape has K dims. """ res = th.from_numpy(arr).to(device=timesteps.device)[timesteps].float() while len(res.shape) < len(broadcast_shape): res = res[..., None] return res.expand(broadcast_shape) ================================================ FILE: diffusion/logger.py ================================================ """ Logger copied from OpenAI baselines to avoid extra RL-based dependencies: https://github.com/openai/baselines/blob/ea25b9e8b234e6ee1bca43083f8f3cf974143998/baselines/logger.py """ import os import sys import shutil import os.path as osp import json import time import datetime import tempfile import warnings from collections import defaultdict from contextlib import contextmanager DEBUG = 10 INFO = 20 WARN = 30 ERROR = 40 DISABLED = 50 class KVWriter(object): def writekvs(self, kvs): raise NotImplementedError class SeqWriter(object): def writeseq(self, seq): raise NotImplementedError class HumanOutputFormat(KVWriter, SeqWriter): def __init__(self, filename_or_file): if isinstance(filename_or_file, str): self.file = open(filename_or_file, "wt") self.own_file = True else: assert hasattr(filename_or_file, "read"), ( "expected file or str, got %s" % filename_or_file ) self.file = filename_or_file self.own_file = False def writekvs(self, kvs): # Create strings for printing key2str = {} for (key, val) in sorted(kvs.items()): if hasattr(val, "__float__"): valstr = "%-8.3g" % val else: valstr = str(val) key2str[self._truncate(key)] = self._truncate(valstr) # Find max widths if len(key2str) == 0: print("WARNING: tried to write empty key-value dict") return else: keywidth = max(map(len, key2str.keys())) valwidth = max(map(len, key2str.values())) # Write out the data dashes = "-" * (keywidth + valwidth + 7) lines = [dashes] for (key, val) in sorted(key2str.items(), key=lambda kv: kv[0].lower()): lines.append( "| %s%s | %s%s |" % (key, " " * (keywidth - len(key)), val, " " * (valwidth - len(val))) ) lines.append(dashes) self.file.write("\n".join(lines) + "\n") # Flush the output to the file self.file.flush() def _truncate(self, s): maxlen = 30 return s[: maxlen - 3] + "..." if len(s) > maxlen else s def writeseq(self, seq): seq = list(seq) for (i, elem) in enumerate(seq): self.file.write(elem) if i < len(seq) - 1: # add space unless this is the last one self.file.write(" ") self.file.write("\n") self.file.flush() def close(self): if self.own_file: self.file.close() class JSONOutputFormat(KVWriter): def __init__(self, filename): self.file = open(filename, "wt") def writekvs(self, kvs): for k, v in sorted(kvs.items()): if hasattr(v, "dtype"): kvs[k] = float(v) self.file.write(json.dumps(kvs) + "\n") self.file.flush() def close(self): self.file.close() class CSVOutputFormat(KVWriter): def __init__(self, filename): self.file = open(filename, "w+t") self.keys = [] self.sep = "," def writekvs(self, kvs): # Add our current row to the history extra_keys = list(kvs.keys() - self.keys) extra_keys.sort() if extra_keys: self.keys.extend(extra_keys) self.file.seek(0) lines = self.file.readlines() self.file.seek(0) for (i, k) in enumerate(self.keys): if i > 0: self.file.write(",") self.file.write(k) self.file.write("\n") for line in lines[1:]: self.file.write(line[:-1]) self.file.write(self.sep * len(extra_keys)) self.file.write("\n") for (i, k) in enumerate(self.keys): if i > 0: self.file.write(",") v = kvs.get(k) if v is not None: self.file.write(str(v)) self.file.write("\n") self.file.flush() def close(self): self.file.close() class TensorBoardOutputFormat(KVWriter): """ Dumps key/value pairs into TensorBoard's numeric format. """ def __init__(self, dir): os.makedirs(dir, exist_ok=True) self.dir = dir self.step = 1 prefix = "events" path = osp.join(osp.abspath(dir), prefix) import tensorflow as tf from tensorflow.python import pywrap_tensorflow from tensorflow.core.util import event_pb2 from tensorflow.python.util import compat self.tf = tf self.event_pb2 = event_pb2 self.pywrap_tensorflow = pywrap_tensorflow self.writer = pywrap_tensorflow.EventsWriter(compat.as_bytes(path)) def writekvs(self, kvs): def summary_val(k, v): kwargs = {"tag": k, "simple_value": float(v)} return self.tf.Summary.Value(**kwargs) summary = self.tf.Summary(value=[summary_val(k, v) for k, v in kvs.items()]) event = self.event_pb2.Event(wall_time=time.time(), summary=summary) event.step = ( self.step ) # is there any reason why you'd want to specify the step? self.writer.WriteEvent(event) self.writer.Flush() self.step += 1 def close(self): if self.writer: self.writer.Close() self.writer = None def make_output_format(format, ev_dir, log_suffix=""): os.makedirs(ev_dir, exist_ok=True) if format == "stdout": return HumanOutputFormat(sys.stdout) elif format == "log": return HumanOutputFormat(osp.join(ev_dir, "log%s.txt" % log_suffix)) elif format == "json": return JSONOutputFormat(osp.join(ev_dir, "progress%s.json" % log_suffix)) elif format == "csv": return CSVOutputFormat(osp.join(ev_dir, "progress%s.csv" % log_suffix)) elif format == "tensorboard": return TensorBoardOutputFormat(osp.join(ev_dir, "tb%s" % log_suffix)) else: raise ValueError("Unknown format specified: %s" % (format,)) # ================================================================ # API # ================================================================ def logkv(key, val): """ Log a value of some diagnostic Call this once for each diagnostic quantity, each iteration If called many times, last value will be used. """ get_current().logkv(key, val) def logkv_mean(key, val): """ The same as logkv(), but if called many times, values averaged. """ get_current().logkv_mean(key, val) def logkvs(d): """ Log a dictionary of key-value pairs """ for (k, v) in d.items(): logkv(k, v) def dumpkvs(): """ Write all of the diagnostics from the current iteration """ return get_current().dumpkvs() def getkvs(): return get_current().name2val def log(*args, level=INFO): """ Write the sequence of args, with no separators, to the console and output files (if you've configured an output file). """ get_current().log(*args, level=level) def debug(*args): log(*args, level=DEBUG) def info(*args): log(*args, level=INFO) def warn(*args): log(*args, level=WARN) def error(*args): log(*args, level=ERROR) def set_level(level): """ Set logging threshold on current logger. """ get_current().set_level(level) def set_comm(comm): get_current().set_comm(comm) def get_dir(): """ Get directory that log files are being written to. will be None if there is no output directory (i.e., if you didn't call start) """ return get_current().get_dir() record_tabular = logkv dump_tabular = dumpkvs @contextmanager def profile_kv(scopename): logkey = "wait_" + scopename tstart = time.time() try: yield finally: get_current().name2val[logkey] += time.time() - tstart def profile(n): """ Usage: @profile("my_func") def my_func(): code """ def decorator_with_name(func): def func_wrapper(*args, **kwargs): with profile_kv(n): return func(*args, **kwargs) return func_wrapper return decorator_with_name # ================================================================ # Backend # ================================================================ def get_current(): if Logger.CURRENT is None: _configure_default_logger() return Logger.CURRENT class Logger(object): DEFAULT = None # A logger with no output files. (See right below class definition) # So that you can still log to the terminal without setting up any output files CURRENT = None # Current logger being used by the free functions above def __init__(self, dir, output_formats, comm=None): self.name2val = defaultdict(float) # values this iteration self.name2cnt = defaultdict(int) self.level = INFO self.dir = dir self.output_formats = output_formats self.comm = comm # Logging API, forwarded # ---------------------------------------- def logkv(self, key, val): self.name2val[key] = val def logkv_mean(self, key, val): oldval, cnt = self.name2val[key], self.name2cnt[key] self.name2val[key] = oldval * cnt / (cnt + 1) + val / (cnt + 1) self.name2cnt[key] = cnt + 1 def dumpkvs(self): if self.comm is None: d = self.name2val else: d = mpi_weighted_mean( self.comm, { name: (val, self.name2cnt.get(name, 1)) for (name, val) in self.name2val.items() }, ) if self.comm.rank != 0: d["dummy"] = 1 # so we don't get a warning about empty dict out = d.copy() # Return the dict for unit testing purposes for fmt in self.output_formats: if isinstance(fmt, KVWriter): fmt.writekvs(d) self.name2val.clear() self.name2cnt.clear() return out def log(self, *args, level=INFO): if self.level <= level: self._do_log(args) # Configuration # ---------------------------------------- def set_level(self, level): self.level = level def set_comm(self, comm): self.comm = comm def get_dir(self): return self.dir def close(self): for fmt in self.output_formats: fmt.close() # Misc # ---------------------------------------- def _do_log(self, args): for fmt in self.output_formats: if isinstance(fmt, SeqWriter): fmt.writeseq(map(str, args)) def get_rank_without_mpi_import(): # check environment variables here instead of importing mpi4py # to avoid calling MPI_Init() when this module is imported for varname in ["PMI_RANK", "OMPI_COMM_WORLD_RANK"]: if varname in os.environ: return int(os.environ[varname]) return 0 def mpi_weighted_mean(comm, local_name2valcount): """ Copied from: https://github.com/openai/baselines/blob/ea25b9e8b234e6ee1bca43083f8f3cf974143998/baselines/common/mpi_util.py#L110 Perform a weighted average over dicts that are each on a different node Input: local_name2valcount: dict mapping key -> (value, count) Returns: key -> mean """ all_name2valcount = comm.gather(local_name2valcount) if comm.rank == 0: name2sum = defaultdict(float) name2count = defaultdict(float) for n2vc in all_name2valcount: for (name, (val, count)) in n2vc.items(): try: val = float(val) except ValueError: if comm.rank == 0: warnings.warn( "WARNING: tried to compute mean on non-float {}={}".format( name, val ) ) else: name2sum[name] += val * count name2count[name] += count return {name: name2sum[name] / name2count[name] for name in name2sum} else: return {} def configure(dir=None, format_strs=None, comm=None, log_suffix=""): """ If comm is provided, average all numerical stats across that comm """ if dir is None: dir = os.getenv("OPENAI_LOGDIR") if dir is None: dir = osp.join( tempfile.gettempdir(), datetime.datetime.now().strftime("openai-%Y-%m-%d-%H-%M-%S-%f"), ) assert isinstance(dir, str) dir = os.path.expanduser(dir) os.makedirs(os.path.expanduser(dir), exist_ok=True) rank = get_rank_without_mpi_import() if rank > 0: log_suffix = log_suffix + "-rank%03i" % rank if format_strs is None: if rank == 0: format_strs = os.getenv("OPENAI_LOG_FORMAT", "stdout,log,csv").split(",") else: format_strs = os.getenv("OPENAI_LOG_FORMAT_MPI", "log").split(",") format_strs = filter(None, format_strs) output_formats = [make_output_format(f, dir, log_suffix) for f in format_strs] Logger.CURRENT = Logger(dir=dir, output_formats=output_formats, comm=comm) if output_formats: log("Logging to %s" % dir) def _configure_default_logger(): configure() Logger.DEFAULT = Logger.CURRENT def reset(): if Logger.CURRENT is not Logger.DEFAULT: Logger.CURRENT.close() Logger.CURRENT = Logger.DEFAULT log("Reset logger") @contextmanager def scoped_configure(dir=None, format_strs=None, comm=None): prevlogger = Logger.CURRENT configure(dir=dir, format_strs=format_strs, comm=comm) try: yield finally: Logger.CURRENT.close() Logger.CURRENT = prevlogger ================================================ FILE: diffusion/losses.py ================================================ # This code is based on https://github.com/openai/guided-diffusion """ Helpers for various likelihood-based losses. These are ported from the original Ho et al. diffusion models codebase: https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/utils.py """ import numpy as np import torch as th def normal_kl(mean1, logvar1, mean2, logvar2): """ Compute the KL divergence between two gaussians. Shapes are automatically broadcasted, so batches can be compared to scalars, among other use cases. """ tensor = None for obj in (mean1, logvar1, mean2, logvar2): if isinstance(obj, th.Tensor): tensor = obj break assert tensor is not None, "at least one argument must be a Tensor" # Force variances to be Tensors. Broadcasting helps convert scalars to # Tensors, but it does not work for th.exp(). logvar1, logvar2 = [ x if isinstance(x, th.Tensor) else th.tensor(x).to(tensor) for x in (logvar1, logvar2) ] return 0.5 * ( -1.0 + logvar2 - logvar1 + th.exp(logvar1 - logvar2) + ((mean1 - mean2) ** 2) * th.exp(-logvar2) ) def approx_standard_normal_cdf(x): """ A fast approximation of the cumulative distribution function of the standard normal. """ return 0.5 * (1.0 + th.tanh(np.sqrt(2.0 / np.pi) * (x + 0.044715 * th.pow(x, 3)))) def discretized_gaussian_log_likelihood(x, *, means, log_scales): """ Compute the log-likelihood of a Gaussian distribution discretizing to a given image. :param x: the target images. It is assumed that this was uint8 values, rescaled to the range [-1, 1]. :param means: the Gaussian mean Tensor. :param log_scales: the Gaussian log stddev Tensor. :return: a tensor like x of log probabilities (in nats). """ assert x.shape == means.shape == log_scales.shape centered_x = x - means inv_stdv = th.exp(-log_scales) plus_in = inv_stdv * (centered_x + 1.0 / 255.0) cdf_plus = approx_standard_normal_cdf(plus_in) min_in = inv_stdv * (centered_x - 1.0 / 255.0) cdf_min = approx_standard_normal_cdf(min_in) log_cdf_plus = th.log(cdf_plus.clamp(min=1e-12)) log_one_minus_cdf_min = th.log((1.0 - cdf_min).clamp(min=1e-12)) cdf_delta = cdf_plus - cdf_min log_probs = th.where( x < -0.999, log_cdf_plus, th.where(x > 0.999, log_one_minus_cdf_min, th.log(cdf_delta.clamp(min=1e-12))), ) assert log_probs.shape == x.shape return log_probs ================================================ FILE: diffusion/nn.py ================================================ # This code is based on https://github.com/openai/guided-diffusion """ Various utilities for neural networks. """ import math import torch as th import torch.nn as nn # PyTorch 1.7 has SiLU, but we support PyTorch 1.5. class SiLU(nn.Module): def forward(self, x): return x * th.sigmoid(x) class GroupNorm32(nn.GroupNorm): def forward(self, x): return super().forward(x.float()).type(x.dtype) def conv_nd(dims, *args, **kwargs): """ Create a 1D, 2D, or 3D convolution module. """ if dims == 1: return nn.Conv1d(*args, **kwargs) elif dims == 2: return nn.Conv2d(*args, **kwargs) elif dims == 3: return nn.Conv3d(*args, **kwargs) raise ValueError(f"unsupported dimensions: {dims}") def linear(*args, **kwargs): """ Create a linear module. """ return nn.Linear(*args, **kwargs) def avg_pool_nd(dims, *args, **kwargs): """ Create a 1D, 2D, or 3D average pooling module. """ if dims == 1: return nn.AvgPool1d(*args, **kwargs) elif dims == 2: return nn.AvgPool2d(*args, **kwargs) elif dims == 3: return nn.AvgPool3d(*args, **kwargs) raise ValueError(f"unsupported dimensions: {dims}") def update_ema(target_params, source_params, rate=0.99): """ Update target parameters to be closer to those of source parameters using an exponential moving average. :param target_params: the target parameter sequence. :param source_params: the source parameter sequence. :param rate: the EMA rate (closer to 1 means slower). """ for targ, src in zip(target_params, source_params): targ.detach().mul_(rate).add_(src, alpha=1 - rate) def zero_module(module): """ Zero out the parameters of a module and return it. """ for p in module.parameters(): p.detach().zero_() return module def scale_module(module, scale): """ Scale the parameters of a module and return it. """ for p in module.parameters(): p.detach().mul_(scale) return module def mean_flat(tensor): """ Take the mean over all non-batch dimensions. """ return tensor.mean(dim=list(range(1, len(tensor.shape)))) def sum_flat(tensor): """ Take the sum over all non-batch dimensions. """ return tensor.sum(dim=list(range(1, len(tensor.shape)))) def normalization(channels): """ Make a standard normalization layer. :param channels: number of input channels. :return: an nn.Module for normalization. """ return GroupNorm32(32, channels) def timestep_embedding(timesteps, dim, max_period=10000): """ Create sinusoidal timestep embeddings. :param timesteps: a 1-D Tensor of N indices, one per batch element. These may be fractional. :param dim: the dimension of the output. :param max_period: controls the minimum frequency of the embeddings. :return: an [N x dim] Tensor of positional embeddings. """ half = dim // 2 freqs = th.exp( -math.log(max_period) * th.arange(start=0, end=half, dtype=th.float32) / half ).to(device=timesteps.device) args = timesteps[:, None].float() * freqs[None] embedding = th.cat([th.cos(args), th.sin(args)], dim=-1) if dim % 2: embedding = th.cat([embedding, th.zeros_like(embedding[:, :1])], dim=-1) return embedding def checkpoint(func, inputs, params, flag): """ Evaluate a function without caching intermediate activations, allowing for reduced memory at the expense of extra compute in the backward pass. :param func: the function to evaluate. :param inputs: the argument sequence to pass to `func`. :param params: a sequence of parameters `func` depends on but does not explicitly take as arguments. :param flag: if False, disable gradient checkpointing. """ if flag: args = tuple(inputs) + tuple(params) return CheckpointFunction.apply(func, len(inputs), *args) else: return func(*inputs) class CheckpointFunction(th.autograd.Function): @staticmethod @th.cuda.amp.custom_fwd def forward(ctx, run_function, length, *args): ctx.run_function = run_function ctx.input_length = length ctx.save_for_backward(*args) with th.no_grad(): output_tensors = ctx.run_function(*args[:length]) return output_tensors @staticmethod @th.cuda.amp.custom_bwd def backward(ctx, *output_grads): args = list(ctx.saved_tensors) # Filter for inputs that require grad. If none, exit early. input_indices = [i for (i, x) in enumerate(args) if x.requires_grad] if not input_indices: return (None, None) + tuple(None for _ in args) with th.enable_grad(): for i in input_indices: if i < ctx.input_length: # Not sure why the OAI code does this little # dance. It might not be necessary. args[i] = args[i].detach().requires_grad_() args[i] = args[i].view_as(args[i]) output_tensors = ctx.run_function(*args[:ctx.input_length]) if isinstance(output_tensors, th.Tensor): output_tensors = [output_tensors] # Filter for outputs that require grad. If none, exit early. out_and_grads = [(o, g) for (o, g) in zip(output_tensors, output_grads) if o.requires_grad] if not out_and_grads: return (None, None) + tuple(None for _ in args) # Compute gradients on the filtered tensors. computed_grads = th.autograd.grad( [o for (o, g) in out_and_grads], [args[i] for i in input_indices], [g for (o, g) in out_and_grads] ) # Reassemble the complete gradient tuple. input_grads = [None for _ in args] for (i, g) in zip(input_indices, computed_grads): input_grads[i] = g return (None, None) + tuple(input_grads) ================================================ FILE: diffusion/resample.py ================================================ from abc import ABC, abstractmethod import numpy as np import torch as th import torch.distributed as dist def create_named_schedule_sampler(name, diffusion): """ Create a ScheduleSampler from a library of pre-defined samplers. :param name: the name of the sampler. :param diffusion: the diffusion object to sample for. """ if name == "uniform": return UniformSampler(diffusion) elif name == "loss-second-moment": return LossSecondMomentResampler(diffusion) else: raise NotImplementedError(f"unknown schedule sampler: {name}") class ScheduleSampler(ABC): """ A distribution over timesteps in the diffusion process, intended to reduce variance of the objective. By default, samplers perform unbiased importance sampling, in which the objective's mean is unchanged. However, subclasses may override sample() to change how the resampled terms are reweighted, allowing for actual changes in the objective. """ @abstractmethod def weights(self): """ Get a numpy array of weights, one per diffusion step. The weights needn't be normalized, but must be positive. """ def sample(self, batch_size, device): """ Importance-sample timesteps for a batch. :param batch_size: the number of timesteps. :param device: the torch device to save to. :return: a tuple (timesteps, weights): - timesteps: a tensor of timestep indices. - weights: a tensor of weights to scale the resulting losses. """ w = self.weights() p = w / np.sum(w) indices_np = np.random.choice(len(p), size=(batch_size,), p=p) indices = th.from_numpy(indices_np).long().to(device) weights_np = 1 / (len(p) * p[indices_np]) weights = th.from_numpy(weights_np).float().to(device) return indices, weights class UniformSampler(ScheduleSampler): def __init__(self, diffusion): self.diffusion = diffusion self._weights = np.ones([diffusion.num_timesteps]) def weights(self): return self._weights class LossAwareSampler(ScheduleSampler): def update_with_local_losses(self, local_ts, local_losses): """ Update the reweighting using losses from a model. Call this method from each rank with a batch of timesteps and the corresponding losses for each of those timesteps. This method will perform synchronization to make sure all of the ranks maintain the exact same reweighting. :param local_ts: an integer Tensor of timesteps. :param local_losses: a 1D Tensor of losses. """ batch_sizes = [ th.tensor([0], dtype=th.int32, device=local_ts.device) for _ in range(dist.get_world_size()) ] dist.all_gather( batch_sizes, th.tensor([len(local_ts)], dtype=th.int32, device=local_ts.device), ) # Pad all_gather batches to be the maximum batch size. batch_sizes = [x.item() for x in batch_sizes] max_bs = max(batch_sizes) timestep_batches = [th.zeros(max_bs).to(local_ts) for bs in batch_sizes] loss_batches = [th.zeros(max_bs).to(local_losses) for bs in batch_sizes] dist.all_gather(timestep_batches, local_ts) dist.all_gather(loss_batches, local_losses) timesteps = [ x.item() for y, bs in zip(timestep_batches, batch_sizes) for x in y[:bs] ] losses = [x.item() for y, bs in zip(loss_batches, batch_sizes) for x in y[:bs]] self.update_with_all_losses(timesteps, losses) @abstractmethod def update_with_all_losses(self, ts, losses): """ Update the reweighting using losses from a model. Sub-classes should override this method to update the reweighting using losses from the model. This method directly updates the reweighting without synchronizing between workers. It is called by update_with_local_losses from all ranks with identical arguments. Thus, it should have deterministic behavior to maintain state across workers. :param ts: a list of int timesteps. :param losses: a list of float losses, one per timestep. """ class LossSecondMomentResampler(LossAwareSampler): def __init__(self, diffusion, history_per_term=10, uniform_prob=0.001): self.diffusion = diffusion self.history_per_term = history_per_term self.uniform_prob = uniform_prob self._loss_history = np.zeros( [diffusion.num_timesteps, history_per_term], dtype=np.float64 ) self._loss_counts = np.zeros([diffusion.num_timesteps], dtype=np.int) def weights(self): if not self._warmed_up(): return np.ones([self.diffusion.num_timesteps], dtype=np.float64) weights = np.sqrt(np.mean(self._loss_history ** 2, axis=-1)) weights /= np.sum(weights) weights *= 1 - self.uniform_prob weights += self.uniform_prob / len(weights) return weights def update_with_all_losses(self, ts, losses): for t, loss in zip(ts, losses): if self._loss_counts[t] == self.history_per_term: # Shift out the oldest loss term. self._loss_history[t, :-1] = self._loss_history[t, 1:] self._loss_history[t, -1] = loss else: self._loss_history[t, self._loss_counts[t]] = loss self._loss_counts[t] += 1 def _warmed_up(self): return (self._loss_counts == self.history_per_term).all() ================================================ FILE: diffusion/respace.py ================================================ # This code is based on https://github.com/openai/guided-diffusion import numpy as np import torch as th from .gaussian_diffusion import GaussianDiffusion def space_timesteps(num_timesteps, section_counts): """ Create a list of timesteps to use from an original diffusion process, given the number of timesteps we want to take from equally-sized portions of the original process. For example, if there's 300 timesteps and the section counts are [10,15,20] then the first 100 timesteps are strided to be 10 timesteps, the second 100 are strided to be 15 timesteps, and the final 100 are strided to be 20. If the stride is a string starting with "ddim", then the fixed striding from the DDIM paper is used, and only one section is allowed. :param num_timesteps: the number of diffusion steps in the original process to divide up. :param section_counts: either a list of numbers, or a string containing comma-separated numbers, indicating the step count per section. As a special case, use "ddimN" where N is a number of steps to use the striding from the DDIM paper. :return: a set of diffusion steps from the original process to use. """ if isinstance(section_counts, str): if section_counts.startswith("ddim"): desired_count = int(section_counts[len("ddim") :]) for i in range(1, num_timesteps): if len(range(0, num_timesteps, i)) == desired_count: return set(range(0, num_timesteps, i)) raise ValueError( f"cannot create exactly {num_timesteps} steps with an integer stride" ) section_counts = [int(x) for x in section_counts.split(",")] size_per = num_timesteps // len(section_counts) extra = num_timesteps % len(section_counts) start_idx = 0 all_steps = [] for i, section_count in enumerate(section_counts): size = size_per + (1 if i < extra else 0) if size < section_count: raise ValueError( f"cannot divide section of {size} steps into {section_count}" ) if section_count <= 1: frac_stride = 1 else: frac_stride = (size - 1) / (section_count - 1) cur_idx = 0.0 taken_steps = [] for _ in range(section_count): taken_steps.append(start_idx + round(cur_idx)) cur_idx += frac_stride all_steps += taken_steps start_idx += size return set(all_steps) class SpacedDiffusion(GaussianDiffusion): """ A diffusion process which can skip steps in a base diffusion process. :param use_timesteps: a collection (sequence or set) of timesteps from the original diffusion process to retain. :param kwargs: the kwargs to create the base diffusion process. """ def __init__(self, use_timesteps, **kwargs): self.use_timesteps = set(use_timesteps) self.timestep_map = [] self.original_num_steps = len(kwargs["betas"]) base_diffusion = GaussianDiffusion(**kwargs) # pylint: disable=missing-kwoa last_alpha_cumprod = 1.0 new_betas = [] for i, alpha_cumprod in enumerate(base_diffusion.alphas_cumprod): if i in self.use_timesteps: new_betas.append(1 - alpha_cumprod / last_alpha_cumprod) last_alpha_cumprod = alpha_cumprod self.timestep_map.append(i) kwargs["betas"] = np.array(new_betas) super().__init__(**kwargs) def p_mean_variance( self, model, *args, **kwargs ): # pylint: disable=signature-differs return super().p_mean_variance(self._wrap_model(model), *args, **kwargs) def training_losses( self, model, *args, **kwargs ): # pylint: disable=signature-differs return super().training_losses(self._wrap_model(model), *args, **kwargs) def condition_mean(self, cond_fn, *args, **kwargs): return super().condition_mean(self._wrap_model(cond_fn), *args, **kwargs) def condition_score(self, cond_fn, *args, **kwargs): return super().condition_score(self._wrap_model(cond_fn), *args, **kwargs) def _wrap_model(self, model): if isinstance(model, _WrappedModel): return model return _WrappedModel( model, self.timestep_map, self.rescale_timesteps, self.original_num_steps ) def _scale_timesteps(self, t): # Scaling is done by the wrapped model. return t class _WrappedModel: def __init__(self, model, timestep_map, rescale_timesteps, original_num_steps): self.model = model self.timestep_map = timestep_map self.rescale_timesteps = rescale_timesteps self.original_num_steps = original_num_steps def __call__(self, x, ts, **kwargs): map_tensor = th.tensor(self.timestep_map, device=ts.device, dtype=ts.dtype) new_ts = map_tensor[ts] if self.rescale_timesteps: new_ts = new_ts.float() * (1000.0 / self.original_num_steps) # print(self.original_num_steps) # 1000. # input("stop") return self.model(x, new_ts, **kwargs) ================================================ FILE: environment.yaml ================================================ name: SurfD channels: - iopath - fvcore - pytorch - conda-forge - defaults dependencies: - _libgcc_mutex=0.1=main - _openmp_mutex=5.1=1_gnu - blas=1.0=mkl - brotli-python=1.0.9=py38h6a678d5_7 - bzip2=1.0.8=h7b6447c_0 - ca-certificates=2023.11.17=hbcca054_0 - certifi=2023.11.17=pyhd8ed1ab_0 - cffi=1.16.0=py38h5eee18b_0 - charset-normalizer=2.0.4=pyhd3eb1b0_0 - colorama=0.4.6=pyhd8ed1ab_0 - cryptography=41.0.7=py38hdda0065_0 - cudatoolkit=11.3.1=h2bc3f7f_2 - ffmpeg=4.3=hf484d3e_0 - freetype=2.12.1=h4a9f257_0 - fvcore=0.1.5.post20210915=py38 - giflib=5.2.1=h5eee18b_3 - gmp=6.2.1=h295c915_3 - gnutls=3.6.15=he1e5248_0 - idna=3.4=py38h06a4308_0 - intel-openmp=2023.1.0=hdb19cb5_46306 - iopath=0.1.9=py38 - jpeg=9e=h5eee18b_1 - lame=3.100=h7b6447c_0 - lcms2=2.12=h3be6417_0 - ld_impl_linux-64=2.38=h1181459_1 - lerc=3.0=h295c915_0 - libdeflate=1.17=h5eee18b_1 - libffi=3.4.4=h6a678d5_0 - libgcc-ng=11.2.0=h1234567_1 - libgomp=11.2.0=h1234567_1 - libiconv=1.16=h7f8727e_2 - libidn2=2.3.4=h5eee18b_0 - libpng=1.6.39=h5eee18b_0 - libstdcxx-ng=11.2.0=h1234567_1 - libtasn1=4.19.0=h5eee18b_0 - libtiff=4.5.1=h6a678d5_0 - libunistring=0.9.10=h27cfd23_0 - libuv=1.44.2=h5eee18b_0 - libwebp=1.3.2=h11a3e52_0 - libwebp-base=1.3.2=h5eee18b_0 - lz4-c=1.9.4=h6a678d5_0 - mkl=2023.1.0=h213fc3f_46344 - mkl-service=2.4.0=py38h5eee18b_1 - mkl_fft=1.3.8=py38h5eee18b_0 - mkl_random=1.2.4=py38hdb19cb5_0 - ncurses=6.4=h6a678d5_0 - nettle=3.7.3=hbbd107a_1 - numpy=1.24.3=py38hf6e8229_1 - numpy-base=1.24.3=py38h060ed82_1 - openh264=2.1.1=h4ff587b_0 - openjpeg=2.4.0=h3ad879b_0 - openssl=3.0.12=h7f8727e_0 - pillow=10.0.1=py38ha6cbd5a_0 - pip=23.3.1=py38h06a4308_0 - portalocker=1.4.0=py_0 - pycparser=2.21=pyhd3eb1b0_0 - pyopenssl=23.2.0=py38h06a4308_0 - pysocks=1.7.1=py38h06a4308_0 - python=3.8.18=h955ad1f_0 - pytorch=1.11.0=py3.8_cuda11.3_cudnn8.2.0_0 - pytorch-mutex=1.0=cuda - readline=8.2=h5eee18b_0 - requests=2.31.0=py38h06a4308_0 - setuptools=68.2.2=py38h06a4308_0 - sqlite=3.41.2=h5eee18b_0 - tabulate=0.9.0=pyhd8ed1ab_1 - tbb=2021.8.0=hdb19cb5_0 - termcolor=2.4.0=pyhd8ed1ab_0 - tk=8.6.12=h1ccaba5_0 - torchaudio=0.11.0=py38_cu113 - torchvision=0.12.0=py38_cu113 - tqdm=4.66.1=pyhd8ed1ab_0 - urllib3=1.26.18=py38h06a4308_0 - wheel=0.41.2=py38h06a4308_0 - xz=5.4.5=h5eee18b_0 - yacs=0.1.8=pyhd8ed1ab_0 - yaml=0.2.5=h7f98852_2 - zlib=1.2.13=h5eee18b_0 - zstd=1.5.5=hc292b87_0 - pip: - absl-py==2.0.0 - addict==2.4.0 - aiofiles==23.2.1 - altair==5.2.0 - annotated-types==0.6.0 - ansi2html==1.9.1 - anyio==4.2.0 - appdirs==1.4.4 - asciimatics==1.15.0 - asttokens==2.4.1 - attrs==23.2.0 - backcall==0.2.0 - blinker==1.7.0 - blobfile==2.1.1 - cachetools==5.3.2 - click==8.1.7 - clip==1.0 - comm==0.2.1 - configargparse==1.7 - contourpy==1.1.1 - cycler==0.12.1 - cython==3.0.8 - dash==2.14.2 - dash-core-components==2.0.0 - dash-html-components==2.0.0 - dash-table==5.0.0 - dcor==0.6 - decorator==5.1.1 - docker-pycreds==0.4.0 - einops==0.7.0 - emd==0.6.2 - exceptiongroup==1.2.0 - executing==2.0.1 - fastapi==0.109.2 - fastjsonschema==2.19.1 - ffmpy==0.3.1 - filelock==3.13.1 - fire==0.5.0 - flask==3.0.0 - fonttools==4.47.0 - fsspec==2024.2.0 - ftfy==6.1.3 - gitdb==4.0.11 - gitpython==3.1.41 - google-auth==2.26.1 - google-auth-oauthlib==1.0.0 - gradio==4.17.0 - gradio-client==0.9.0 - grpcio==1.60.0 - h11==0.14.0 - h5py==3.10.0 - hesiod==1.0.0 - httpcore==1.0.2 - httpx==0.26.0 - huggingface-hub==0.20.3 - imageio==2.34.0 - importlib-metadata==7.0.1 - importlib-resources==6.1.1 - ipython==8.12.3 - ipywidgets==8.1.1 - itsdangerous==2.1.2 - jedi==0.19.1 - jinja2==3.1.3 - joblib==1.3.2 - jsonpatch==1.33 - jsonpointer==2.4 - jsonschema==4.20.0 - jsonschema-specifications==2023.12.1 - jupyter-core==5.7.1 - jupyterlab-widgets==3.0.9 - kiwisolver==1.4.5 - llvmlite==0.41.1 - lxml==4.9.4 - markdown==3.5.2 - markdown-it-py==3.0.0 - markupsafe==2.1.3 - matplotlib==3.7.4 - matplotlib-inline==0.1.6 - mdurl==0.1.2 - nbformat==5.9.2 - nest-asyncio==1.5.8 - networkx==3.1 - neuralnet-pytorch==0.0.3 - numba==0.58.1 - oauthlib==3.2.2 - open3d==0.18.0 - orjson==3.9.13 - packaging==23.2 - pandas==2.0.3 - parso==0.8.3 - pexpect==4.9.0 - pickleshare==0.7.5 - pkgutil-resolve-name==1.3.10 - platformdirs==4.1.0 - plotly==5.18.0 - prompt-toolkit==3.0.43 - protobuf==4.25.2 - psutil==5.9.7 - ptyprocess==0.7.0 - pure-eval==0.2.2 - pyasn1==0.5.1 - pyasn1-modules==0.3.0 - pycryptodomex==3.20.0 - pydantic==2.6.1 - pydantic-core==2.16.2 - pydub==0.25.1 - pyfiglet==0.8.post1 - pygments==2.17.2 - pymcubes==0.1.4 - pymeshlab==2023.12 - pyparsing==3.1.1 - pyquaternion==0.9.9 - python-dateutil==2.8.2 - python-multipart==0.0.7 - pytorch3d==0.7.2 - pytz==2023.3.post1 - pyyaml==6.0.1 - referencing==0.32.1 - regex==2023.12.25 - requests-oauthlib==1.3.1 - retrying==1.3.4 - rich==13.7.0 - rpds-py==0.16.2 - rsa==4.9 - ruamel-yaml==0.16.13 - ruamel-yaml-clib==0.2.8 - ruff==0.2.1 - scikit-learn==1.3.2 - scipy==1.10.1 - seaborn==0.13.2 - semantic-version==2.10.0 - sentry-sdk==1.39.2 - setproctitle==1.3.3 - shellingham==1.5.4 - six==1.16.0 - smmap==5.0.1 - sniffio==1.3.0 - sparse==0.15.1 - stack-data==0.6.3 - starlette==0.36.3 - tenacity==8.2.3 - tensorboard==2.14.0 - tensorboard-data-server==0.7.2 - threadpoolctl==3.2.0 - tomlkit==0.12.0 - toolz==0.12.1 - torch-dct==0.1.6 - torch-scatter==2.1.2 - tornado==6.4 - traitlets==5.14.1 - trimesh==4.0.8 - typeguard==2.13.3 - typer==0.9.0 - typing-extensions==4.9.0 - tzdata==2023.4 - uvicorn==0.27.0.post1 - visdom==0.2.4 - wandb==0.16.2 - wcwidth==0.2.13 - websocket-client==1.7.0 - websockets==11.0.3 - werkzeug==3.0.1 - widgetsnbextension==4.0.9 - zipp==3.17.0 prefix: /home/yuzhengming/miniconda3/envs/SurfD ================================================ FILE: meshudf/_marching_cubes_lewiner.py ================================================ import base64 import numpy as np import meshudf._marching_cubes_lewiner_luts as mcluts from meshudf import _marching_cubes_lewiner_cy def marching_cubes_lewiner( volume, level=None, spacing=(1.0, 1.0, 1.0), gradient_direction="descent", step_size=1, allow_degenerate=True, use_classic=False, mask=None, ): """Lewiner et al. algorithm for marching cubes. See marching_cubes_lewiner for documentation. """ # Check volume and ensure its in the format that the alg needs if not isinstance(volume, np.ndarray) or (volume.ndim != 3): raise ValueError("Input volume should be a 3D numpy array.") if volume.shape[0] < 2 or volume.shape[1] < 2 or volume.shape[2] < 2: raise ValueError("Input array must be at least 2x2x2.") volume = np.ascontiguousarray(volume, np.float32) # no copy if not necessary # Check/convert other inputs: # level if level is None: level = 0.5 * (volume.min() + volume.max()) else: level = float(level) if level < volume.min() or level > volume.max(): raise ValueError("Surface level must be within volume data range.") # spacing if len(spacing) != 3: raise ValueError("`spacing` must consist of three floats.") # step_size step_size = int(step_size) if step_size < 1: raise ValueError("step_size must be at least one.") # use_classic use_classic = bool(use_classic) # Get LutProvider class (reuse if possible) L = _get_mc_luts() # Check if a mask array is passed if mask is not None: if not mask.shape == volume.shape: raise ValueError("volume and mask must have the same shape.") # Apply algorithm func = _marching_cubes_lewiner_cy.marching_cubes vertices, faces, normals, values = func(volume, level, L, step_size, use_classic, mask) if not len(vertices): raise RuntimeError("No surface found at the given iso value.") # Output in z-y-x order, as is common in skimage vertices = np.fliplr(vertices) normals = np.fliplr(normals) # Finishing touches to output faces.shape = -1, 3 if gradient_direction == "descent": # MC implementation is right-handed, but gradient_direction is # left-handed faces = np.fliplr(faces) elif not gradient_direction == "ascent": raise ValueError( "Incorrect input %s in `gradient_direction`, see " "docstring." % (gradient_direction) ) if not np.array_equal(spacing, (1, 1, 1)): vertices = vertices * np.r_[spacing] if allow_degenerate: return vertices, faces, normals, values else: fun = _marching_cubes_lewiner_cy.remove_degenerate_faces return fun(vertices.astype(np.float32), faces, normals, values) def udf_mc_lewiner( volume, grads, spacing=(1.0, 1.0, 1.0), gradient_direction="descent", step_size=1, allow_degenerate=True, use_classic=False, mask=None, ): """Lewiner et al. algorithm for marching cubes. See marching_cubes_lewiner for documentation. """ # Check volume and ensure its in the format that the alg needs if not isinstance(volume, np.ndarray) or (volume.ndim != 3): raise ValueError("Input volume should be a 3D numpy array.") if volume.shape[0] < 2 or volume.shape[1] < 2 or volume.shape[2] < 2: raise ValueError("Input array must be at least 2x2x2.") volume = np.ascontiguousarray(volume, np.float32) # no copy if not necessary # spacing if len(spacing) != 3: raise ValueError("`spacing` must consist of three floats.") # step_size step_size = int(step_size) if step_size < 1: raise ValueError("step_size must be at least one.") # use_classic use_classic = bool(use_classic) # Get LutProvider class (reuse if possible) L = _get_mc_luts() # Check if a mask array is passed if mask is not None: if not mask.shape == volume.shape: raise ValueError("volume and mask must have the same shape.") # Apply algorithm func = _marching_cubes_lewiner_cy.marching_cubes_udf vertices, faces, normals, values = func(volume, grads, L, step_size, use_classic, mask) if not len(vertices): raise RuntimeError("No surface found at the given iso value.") # Output in z-y-x order, as is common in skimage vertices = np.fliplr(vertices) normals = np.fliplr(normals) # Finishing touches to output faces.shape = -1, 3 if gradient_direction == "descent": # MC implementation is right-handed, but gradient_direction is # left-handed faces = np.fliplr(faces) elif not gradient_direction == "ascent": raise ValueError( "Incorrect input %s in `gradient_direction`, see " "docstring." % (gradient_direction) ) if not np.array_equal(spacing, (1, 1, 1)): vertices = vertices * np.r_[spacing] if allow_degenerate: return vertices, faces, normals, values else: fun = _marching_cubes_lewiner_cy.remove_degenerate_faces return fun(vertices.astype(np.float32), faces, normals, values) def _to_array(args): shape, text = args byts = base64.decodebytes(text.encode("utf-8")) ar = np.frombuffer(byts, dtype="int8") ar.shape = shape return ar # Map an edge-index to two relative pixel positions. The ege index # represents a point that lies somewhere in between these pixels. # Linear interpolation should be used to determine where it is exactly. # 0 # 3 1 -> 0x # 2 xx EDGETORELATIVEPOSX = np.array( [ [0, 1], [1, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [0, 0], [0, 0], [1, 1], [1, 1], [0, 0], ], "int8", ) EDGETORELATIVEPOSY = np.array( [ [0, 0], [0, 1], [1, 1], [1, 0], [0, 0], [0, 1], [1, 1], [1, 0], [0, 0], [0, 0], [1, 1], [1, 1], ], "int8", ) EDGETORELATIVEPOSZ = np.array( [ [0, 0], [0, 0], [0, 0], [0, 0], [1, 1], [1, 1], [1, 1], [1, 1], [0, 1], [0, 1], [0, 1], [0, 1], ], "int8", ) def _get_mc_luts(): """Kind of lazy obtaining of the luts.""" if not hasattr(mcluts, "THE_LUTS"): mcluts.THE_LUTS = _marching_cubes_lewiner_cy.LutProvider( EDGETORELATIVEPOSX, EDGETORELATIVEPOSY, EDGETORELATIVEPOSZ, _to_array(mcluts.CASESCLASSIC), _to_array(mcluts.CASES), _to_array(mcluts.TILING1), _to_array(mcluts.TILING2), _to_array(mcluts.TILING3_1), _to_array(mcluts.TILING3_2), _to_array(mcluts.TILING4_1), _to_array(mcluts.TILING4_2), _to_array(mcluts.TILING5), _to_array(mcluts.TILING6_1_1), _to_array(mcluts.TILING6_1_2), _to_array(mcluts.TILING6_2), _to_array(mcluts.TILING7_1), _to_array(mcluts.TILING7_2), _to_array(mcluts.TILING7_3), _to_array(mcluts.TILING7_4_1), _to_array(mcluts.TILING7_4_2), _to_array(mcluts.TILING8), _to_array(mcluts.TILING9), _to_array(mcluts.TILING10_1_1), _to_array(mcluts.TILING10_1_1_), _to_array(mcluts.TILING10_1_2), _to_array(mcluts.TILING10_2), _to_array(mcluts.TILING10_2_), _to_array(mcluts.TILING11), _to_array(mcluts.TILING12_1_1), _to_array(mcluts.TILING12_1_1_), _to_array(mcluts.TILING12_1_2), _to_array(mcluts.TILING12_2), _to_array(mcluts.TILING12_2_), _to_array(mcluts.TILING13_1), _to_array(mcluts.TILING13_1_), _to_array(mcluts.TILING13_2), _to_array(mcluts.TILING13_2_), _to_array(mcluts.TILING13_3), _to_array(mcluts.TILING13_3_), _to_array(mcluts.TILING13_4), _to_array(mcluts.TILING13_5_1), _to_array(mcluts.TILING13_5_2), _to_array(mcluts.TILING14), _to_array(mcluts.TEST3), _to_array(mcluts.TEST4), _to_array(mcluts.TEST6), _to_array(mcluts.TEST7), _to_array(mcluts.TEST10), _to_array(mcluts.TEST12), _to_array(mcluts.TEST13), _to_array(mcluts.SUBCONFIG13), ) return mcluts.THE_LUTS ================================================ FILE: meshudf/_marching_cubes_lewiner_cy.pyx ================================================ #cython: cdivision=True #cython: boundscheck=False #cython: nonecheck=False #cython: wraparound=False """ This is an implementation of the marching cubes algorithm proposed in: Efficient implementation of Marching Cubes' cases with topological guarantees. Thomas Lewiner, Helio Lopes, Antonio Wilson Vieira and Geovan Tavares. Journal of Graphics Tools 8(2): pp. 1-15 (december 2003) This algorithm has the advantage that it provides topologically correct results, and the algorithms implementation is relatively simple. Most of the magic is in the lookup tables, which are provided as open source. Originally implemented in C++ by Thomas Lewiner in 2002, ported to Cython by Almar Klein in 2012. Adapted for scikit-image in 2016. """ # Cython specific imports import numpy as np cimport numpy as np import cython from libcpp.deque cimport deque np.import_array() from cpython cimport array import array # Enable low level memory management from libc.stdlib cimport malloc, free # Define tiny winy number cdef double FLT_EPSILON = np.spacing(1.0) #0.0000001 # Define abs function for doubles cdef inline double dabs(double a): return a if a>=0 else -a cdef inline int imin(int a, int b): return a if a0]]] vertices2 = vertices[vertices_ok] arrays2 = [arr[vertices_ok] for arr in arrays] return (vertices2, faces2) + tuple(arrays2) cdef class Cell: """ Class to keep track of some stuff during the whole cube marching procedure. This "struct" keeps track of the current cell location, and the values of corners of the cube. Gradients for the cube corners are calculated when needed. Additionally, it keeps track of the array of vertices, faces and normals. Notes on vertices ----------------- The vertices are stored in a C-array that is increased in size with factors of two if needed. The same applies to the faces and normals. Notes on faces -------------- To keep track of the vertices already defined, this class maintains two faceLayer arrays. faceLayer1 is of the current layer (z-value) and faceLayer2 is of the next. Both face layers have 4 elements per cell in that layer, 1 for each unique edge per cell (see get_index_in_facelayer). These are initialized as -1, and set to the index in the vertex array when a new vertex is created. In summary, this allows us to keep track of the already created vertices without keeping a very big array. Notes on normals ---------------- The normal is simply defined as the gradient. Each time that a face is created, we also add the gradient of that vertex position to the normals array. The gradients are all calculated from the differences between the 8 corners of the current cube, but because the final value of a normal was contributed from multiple cells, the normals are quite accurate. """ # Reference to LUTS object cdef LutProvider luts # Location of cube cdef int x cdef int y cdef int z # Stepsize cdef int step # Values of cube corners (isovalue subtracted) cdef double v0 cdef double v1 cdef double v2 cdef double v3 cdef double v4 cdef double v5 cdef double v6 cdef double v7 # Small arrays to store the above values in (allowing indexing) # and also the gradient at these points cdef double *vv cdef double *vg # Max value of the eight corners cdef double vmax # Vertex position of center of cube (only calculated if needed) cdef double v12_x cdef double v12_y cdef double v12_z # And corresponding gradient cdef double v12_xg cdef double v12_yg cdef double v12_zg cdef int v12_calculated # a boolean # The index value, our magic 256 bit word cdef int index # Dimensions of the total volume cdef int nx cdef int ny cdef int nz # Arrays with face information cdef int *faceLayer # The current facelayer (reference-copy of one of the below) # cdef int *faceLayer1 # The actual first face layer # cdef int *faceLayer2 # The actual second face layer # Stuff to store the output vertices cdef float *_vertices cdef float *_normals cdef float *_values cdef int _vertexCount cdef int _vertexMaxCount # Stuff to store the output faces cdef int *_faces cdef int _faceCount cdef int _faceMaxCount def __init__(self, LutProvider luts, int nx, int ny, int nz): self.luts = luts self.nx, self.ny, self.nz = nx, ny, nz # Allocate face layers # self.faceLayer1 = malloc(self.nx*self.ny*4 * sizeof(int)) # self.faceLayer2 = malloc(self.nx*self.ny*4 * sizeof(int)) self.faceLayer = malloc(self.nx*self.ny*self.nz*4 * sizeof(int)) # if (self.faceLayer1 is NULL or self.faceLayer2 is NULL or # self.vv is NULL or self.vg is NULL or self._vertices is NULL or # self._normals is NULL or self._values is NULL or # self._faces is NULL): # raise MemoryError() if (self.faceLayer is NULL or self.vv is NULL or self.vg is NULL or self._vertices is NULL or self._normals is NULL or self._values is NULL or self._faces is NULL): raise MemoryError() cdef int i # for i in range(self.nx*self.ny*4): # self.faceLayer1[i] = -1 # self.faceLayer2[i] = -1 # self.faceLayer = self.faceLayer1 for i in range(self.nx*self.ny*self.nz*4): self.faceLayer[i] = -1 def __cinit__(self): # Init tiny arrays for vertices and gradients at the vertices self.vv = malloc(8 * sizeof(double)) self.vg = malloc(8*3 * sizeof(double)) # Init face layers # self.faceLayer1 = NULL # self.faceLayer2 = NULL self.faceLayer = NULL # Init vertices self._vertexCount = 0 self._vertexMaxCount = 8 self._vertices = malloc(self._vertexMaxCount*3 * sizeof(float)) self._normals = malloc(self._vertexMaxCount*3 * sizeof(float)) self._values = malloc(self._vertexMaxCount * sizeof(float)) # Clear normals and values cdef int i, j if self._values is not NULL and self._normals is not NULL: for i in range(self._vertexMaxCount): self._values[i] = 0.0 for j in range(3): self._normals[i*3+j] = 0.0 # Init faces self._faceCount = 0 self._faceMaxCount = 8 self._faces = malloc(self._faceMaxCount * sizeof(int)) def __dealloc__(self): free(self.vv) free(self.vg) # free(self.faceLayer1) # free(self.faceLayer2) free(self.faceLayer) free(self._vertices) free(self._normals) free(self._values) free(self._faces) cdef void _increase_size_vertices(self): """ Increase the size of the vertices array by a factor two. """ # Allocate new array cdef int newMaxCount = self._vertexMaxCount * 2 cdef float *newVertices = malloc(newMaxCount*3 * sizeof(float)) cdef float *newNormals = malloc(newMaxCount*3 * sizeof(float)) cdef float *newValues = malloc(newMaxCount * sizeof(float)) if newVertices is NULL or newNormals is NULL or newValues is NULL: free(newVertices) free(newNormals) free(newValues) raise MemoryError() # Clear cdef int i, j for i in range(self._vertexCount, newMaxCount): newValues[i] = 0.0 for j in range(3): newNormals[i*3+j] = 0.0 # Copy for i in range(self._vertexCount): newValues[i] = self._values[i] for j in range(3): newVertices[i*3+j] = self._vertices[i*3+j] newNormals[i*3+j] = self._normals[i*3+j] # Apply free(self._vertices); self._vertices = newVertices free(self._normals); self._normals = newNormals free(self._values); self._values = newValues self._vertexMaxCount = newMaxCount cdef void _increase_size_faces(self): """ Increase the size of the faces array by a factor two. """ # Allocate new array cdef int newMaxCount = self._faceMaxCount * 2 cdef int *newFaces = malloc(newMaxCount * sizeof(int)) if newFaces is NULL: raise MemoryError() # Copy cdef int i for i in range(self._faceCount): newFaces[i] = self._faces[i] # Apply free(self._faces) self._faces = newFaces self._faceMaxCount = newMaxCount ## Adding results cdef int add_vertex(self, float x, float y, float z): """ Add a vertex to the result. Return index in vertex array. """ # Check if array is large enough if self._vertexCount >= self._vertexMaxCount: self._increase_size_vertices() # Add vertex self._vertices[self._vertexCount*3+0] = x self._vertices[self._vertexCount*3+1] = y self._vertices[self._vertexCount*3+2] = z self._vertexCount += 1 return self._vertexCount -1 cdef void add_gradient(self, int vertexIndex, float gx, float gy, float gz): """ Add a gradient value to the vertex corresponding to the given index. """ self._normals[vertexIndex*3+0] += gx self._normals[vertexIndex*3+1] += gy self._normals[vertexIndex*3+2] += gz cdef void add_gradient_from_index(self, int vertexIndex, int i, float strength): """ Add a gradient value to the vertex corresponding to the given index. vertexIndex is the index in the large array of vertices that is returned. i is the index of the array of vertices 0-7 for the current cell. """ self.add_gradient(vertexIndex, self.vg[i*3+0] * strength, self.vg[i*3+1] * strength, self.vg[i*3+2] * strength) cdef add_face(self, int index): """ Add a face to the result. Also updates the value. """ # Check if array is large enough if self._faceCount >= self._faceMaxCount: self._increase_size_faces() # Add face self._faces[self._faceCount] = index self._faceCount += 1 # if (self._faceCount < 18): # print(str(self._faces[self._faceCount-1])) # # print("f: " + str(self._faceCount) + " v: " + str(self._vertexCount)) # Also update value if self.vmax > self._values[index]: self._values[index] = self.vmax ## Getting results def get_vertices(self): """ Get the final vertex array. """ vertices = np.empty((self._vertexCount,3), np.float32) cdef float [:, :] vertices_ = vertices cdef int i, j for i in range(self._vertexCount): for j in range(3): vertices_[i, j] = self._vertices[i*3+j] return vertices def get_normals(self): """ Get the final normals array. The normals are normalized to unit length. """ normals = np.empty((self._vertexCount,3), np.float32) cdef float [:, :] normals_ = normals cdef int i, j cdef double length, dtmp for i in range(self._vertexCount): length = 0.0 for j in range(3): dtmp = self._normals[i*3+j] # Make it double before taking **2! length += dtmp*dtmp if length > 0.0: length = 1.0 / length**0.5 for j in range(3): normals_[i,j] = self._normals[i*3+j] * length return normals def get_faces(self): faces = np.empty((self._faceCount,), np.int32) cdef int [:] faces_ = faces cdef int i, j for i in range(self._faceCount): faces_[i] = self._faces[i] return faces def get_values(self): values = np.empty((self._vertexCount,), np.float32) cdef float [:] values_ = values cdef int i, j for i in range(self._vertexCount): values_[i] = self._values[i] return values ## Called from marching cube function # cdef void new_z_value(self): # """ This method should be called each time a new z layer is entered. # We will swap the layers with face information and empty the second. # """ # # Swap layers # self.faceLayer1, self.faceLayer2 = self.faceLayer2, self.faceLayer1 # # Empty last # cdef int i # for i in range(self.nx*self.ny*4): # self.faceLayer2[i] = -1 cdef void set_cube(self, double isovalue, int x, int y, int z, int step, double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7): """ Set the cube to the new location. Set the values of the cube corners. The isovalue is subtracted from them, such that in further calculations the isovalue can be taken as zero. This method also calculated the magic 256 word to identify the cases (i.e. cell.index). """ # Set location and step self.x = x self.y = y self.z = z self.step = step # Set values self.v0 = v0 - isovalue self.v1 = v1 - isovalue self.v2 = v2 - isovalue self.v3 = v3 - isovalue self.v4 = v4 - isovalue self.v5 = v5 - isovalue self.v6 = v6 - isovalue self.v7 = v7 - isovalue # Calculate index cdef int index = 0 if self.v0 > 0.0: index += 1 if self.v1 > 0.0: index += 2 if self.v2 > 0.0: index += 4 if self.v3 > 0.0: index += 8 if self.v4 > 0.0: index += 16 if self.v5 > 0.0: index += 32 if self.v6 > 0.0: index += 64 if self.v7 > 0.0: index += 128 self.index = index # Reset c12 self.v12_calculated = 0 cdef bint check_triangles(self, Lut lut, int lutIndex, int nt): """ Check triangles. The vertices for the triangles are specified in the given Lut at the specified index. There are nt triangles. The reason that nt should be given is because it is often known beforehand. """ cdef int i, j cdef int vi cdef int result = 0 cdef list fl_values = [] self.prepare_for_adding_triangles() for i in range(nt): for j in range(3): # Get two sides for each element in this vertex vi = lut.get2(lutIndex, i*3+j) index = self.get_index_in_facelayer(vi) fl_value = self.faceLayer[index] # print(index, fl_value) if (not fl_value in fl_values) and fl_value >= 0: # print("True") result += 1 fl_values.append(fl_value) # print(result) return result cdef bint check_triangles2(self, Lut lut, int lutIndex, int lutIndex2, int nt): """ Same as check_triangles, except that now the geometry is in a LUT with 3 dimensions, and an extra index is provided. """ cdef int i, j cdef int vi cdef int result = 0 cdef list fl_values = [] self.prepare_for_adding_triangles() for i in range(nt): for j in range(3): # Get two sides for each element in this vertex vi = lut.get3(lutIndex, lutIndex2, i*3+j) index = self.get_index_in_facelayer(vi) fl_value = self.faceLayer[index] # print(index, fl_value) if (not fl_value in fl_values) and fl_value >= 0: # print("True") result += 1 fl_values.append(fl_value) # print(result) return result cdef bint add_triangles(self, Lut lut, int lutIndex, int nt): """ Add triangles. The vertices for the triangles are specified in the given Lut at the specified index. There are nt triangles. The reason that nt should be given is because it is often known beforehand. """ cdef int i, j cdef int vi cdef bint result = False # cdef list indices = [] self.prepare_for_adding_triangles() for i in range(nt): for j in range(3): # Get two sides for each element in this vertex vi = lut.get2(lutIndex, i*3+j) self._add_face_from_edge_index(vi) # index, fl_value = self._add_face_from_edge_index(vi) # print(index, fl_value) # if (not index in indices) and fl_value >= 0: # print(index) # print(indices) # result = True # indices.append(index) return result cdef bint add_triangles2(self, Lut lut, int lutIndex, int lutIndex2, int nt): """ Same as add_triangles, except that now the geometry is in a LUT with 3 dimensions, and an extra index is provided. """ cdef int i, j cdef int vi cdef bint result = False # cdef list indices = [] self.prepare_for_adding_triangles() for i in range(nt): for j in range(3): # Get two sides for each element in this vertex vi = lut.get3(lutIndex, lutIndex2, i*3+j) self._add_face_from_edge_index(vi) # index, fl_value = self._add_face_from_edge_index(vi) # print(index, fl_value) # if (not index in indices) and fl_value >= 0: # print(index) # print(indices) # result = True # indices.append(index) return result ## Used internally cdef (int, int) _add_face_from_edge_index(self, int vi): """ Add one face from an edge index. Only adds a face if the vertex already exists. Otherwise also adds a vertex and applies interpolation. """ # typedefs cdef int indexInVertexArray, indexInFaceLayer cdef int dx1, dy1, dz1 cdef int dx2, dy2, dz2 cdef int index1, index2 cdef double tmpf1, tmpf2 cdef double fx, fy, fz, ff cdef double stp = self.step # Get index in the face layer and corresponding vertex number indexInFaceLayer = self.get_index_in_facelayer(vi) indexInVertexArray = self.faceLayer[indexInFaceLayer] fl_value = self.faceLayer[indexInFaceLayer] # If we have the center vertex, we have things pre-calculated, # otherwise we need to interpolate. # In both cases we distinguish between having this vertex already # or not. if vi == 12: # center vertex if self.v12_calculated == 0: self.calculate_center_vertex() if indexInVertexArray >= 0: # Vertex already calculated, only need to add face and gradient self.add_face(indexInVertexArray) self.add_gradient(indexInVertexArray, self.v12_xg, self.v12_yg, self.v12_zg) else: # Add precalculated center vertex position (is interpolated) indexInVertexArray = self.add_vertex( self.v12_x, self.v12_y, self.v12_z) # Update face layer self.faceLayer[indexInFaceLayer] = indexInVertexArray # Add face and gradient self.add_face(indexInVertexArray) self.add_gradient(indexInVertexArray, self.v12_xg, self.v12_yg, self.v12_zg) else: # Get relative edge indices for x, y and z dx1, dx2 = self.luts.EDGESRELX.get2(vi,0), self.luts.EDGESRELX.get2(vi,1) dy1, dy2 = self.luts.EDGESRELY.get2(vi,0), self.luts.EDGESRELY.get2(vi,1) dz1, dz2 = self.luts.EDGESRELZ.get2(vi,0), self.luts.EDGESRELZ.get2(vi,1) # Make two vertex indices index1 = dz1*4 + dy1*2 + dx1 index2 = dz2*4 + dy2*2 + dx2 # Define strength of both corners tmpf1 = 1.0 / (FLT_EPSILON + dabs(self.vv[index1])) tmpf2 = 1.0 / (FLT_EPSILON + dabs(self.vv[index2])) # print('indexInVertexArray', self.x, self.y, self.z, '-', vi, indexInVertexArray, indexInFaceLayer) if indexInVertexArray >= 0: # Vertex already calculated, only need to add face and gradient self.add_face(indexInVertexArray) self.add_gradient_from_index(indexInVertexArray, index1, tmpf1) self.add_gradient_from_index(indexInVertexArray, index2, tmpf2) else: # Interpolate by applying a kind of center-of-mass method fx, fy, fz, ff = 0.0, 0.0, 0.0, 0.0 fx += dx1 * tmpf1; fy += dy1 * tmpf1; fz += dz1 * tmpf1; ff += tmpf1 fx += dx2 * tmpf2; fy += dy2 * tmpf2; fz += dz2 * tmpf2; ff += tmpf2 # Add vertex indexInVertexArray = self.add_vertex( self.x + stp*fx/ff, self.y + stp*fy/ff, self.z + stp*fz/ff ) # Update face layer self.faceLayer[indexInFaceLayer] = indexInVertexArray # Add face and gradient self.add_face(indexInVertexArray) self.add_gradient_from_index(indexInVertexArray, index1, tmpf1) self.add_gradient_from_index(indexInVertexArray, index2, tmpf2) # # Create vertex non-interpolated # self.add_vertex( self.x + 0.5* dx1 + 0.5 * dx2, # self.y + 0.5* dy1 + 0.5 * dy2, # self.z + 0.5* dz1 + 0.5 * dz2 ) return indexInFaceLayer, fl_value cdef int get_index_in_facelayer(self, int vi): """ Get the index of a vertex position, given the edge on which it lies. We keep a list of faces so we can reuse vertices. This improves speed because we need less interpolation, and the result is more compact and can be visualized better because normals can be interpolated. For each cell, we store 4 vertex indices; all other edges can be represented as the edge of another cell. The fourth is the center vertex. This method returns -1 if no vertex has been defined yet. vertices edges edge-indices per cell * 7 ________ 6 _____6__ ________ * /| /| 7/| /| /| /| * / | / | / | /5 | / | / | * 4 /_______ / | /__4____ / 10 /_______ / | * | | |5 | | 11 | | | | | | * | 3|__|_____|2 | |__|__2__| | |__|_____| * | / | / 8 3/ 9 / 2 / | / * | / | / | / | /1 | 1 | / * |/_______|/ |/___0___|/ |/___0___|/ * 0 1 */ """ # Init indices, both are corrected below # cdef int i = self.nx * self.y + self.x # Index of cube to get vertex at cdef int i = self.ny*self.nx*self.z + self.nx * self.y + self.x # Index of cube to get vertex at cdef int j = 0 # Vertex number for that cell cdef int vi_ = vi # cdef int *faceLayer cdef int k = 0 #Defines whether to go to a higher z or not # Select either upper or lower half if vi < 8: # 8 horizontal edges if vi < 4: # faceLayer = self.faceLayer1 k = 0 else: vi -= 4 # faceLayer = self.faceLayer2 k = 1 # Calculate actual index based on edge #if vi == 0: pass # no step if vi == 1: # step in x i += self.step j = 1 elif vi == 2: # step in y i += self.nx * self.step elif vi == 3: # no step j = 1 elif vi < 12: # 4 vertical edges # faceLayer = self.faceLayer1 k = 0 j = 2 #if vi == 8: pass # no step if vi == 9: # step in x i += self.step elif vi == 10: # step in x and y i += self.nx * self.step + self.step elif vi == 11: # step in y i += self.nx * self.step else: # center vertex # faceLayer = self.faceLayer1 k = 0 j = 3 k = self.nx*self.ny * k i = i+k # Store facelayer and return index # self.faceLayer = faceLayer # Dirty way of returning a value return 4*i + j cdef void prepare_for_adding_triangles(self): """ Calculates some things to help adding the triangles: array with corner values, max corner value, gradient at each corner. """ cdef int i # Copy values in array so we can index them. Note the misalignment # because the numbering does not correspond with bitwise OR of xyz. self.vv[0] = self.v0 self.vv[1] = self.v1 self.vv[2] = self.v3# self.vv[3] = self.v2# self.vv[4] = self.v4 self.vv[5] = self.v5 self.vv[6] = self.v7# self.vv[7] = self.v6# # Calculate max cdef double vmin, vmax vmin, vmax = 0.0, 0.0 for i in range(8): if self.vv[i] > vmax: vmax = self.vv[i] if self.vv[i] < vmin: vmin = self.vv[i] self.vmax = vmax-vmin # Calculate gradients # Derivatives, selected to always point in same direction. # Note that many corners have the same components as other points, # by interpolating and averaging the normals this is solved. # todo: we can potentially reuse these similar to how we store vertex indices in face layers self.vg[0*3+0], self.vg[0*3+1], self.vg[0*3+2] = self.v0-self.v1, self.v0-self.v3, self.v0-self.v4 self.vg[1*3+0], self.vg[1*3+1], self.vg[1*3+2] = self.v0-self.v1, self.v1-self.v2, self.v1-self.v5 self.vg[2*3+0], self.vg[2*3+1], self.vg[2*3+2] = self.v3-self.v2, self.v1-self.v2, self.v2-self.v6 self.vg[3*3+0], self.vg[3*3+1], self.vg[3*3+2] = self.v3-self.v2, self.v0-self.v3, self.v3-self.v7 self.vg[4*3+0], self.vg[4*3+1], self.vg[4*3+2] = self.v4-self.v5, self.v4-self.v7, self.v0-self.v4 self.vg[5*3+0], self.vg[5*3+1], self.vg[5*3+2] = self.v4-self.v5, self.v5-self.v6, self.v1-self.v5 self.vg[6*3+0], self.vg[6*3+1], self.vg[6*3+2] = self.v7-self.v6, self.v5-self.v6, self.v2-self.v6 self.vg[7*3+0], self.vg[7*3+1], self.vg[7*3+2] = self.v7-self.v6, self.v4-self.v7, self.v3-self.v7 cdef void calculate_center_vertex(self): """ Calculate interpolated center vertex and its gradient. """ cdef double v0, v1, v2, v3, v4, v5, v6, v7 cdef double fx, fy, fz, ff fx, fy, fz, ff = 0.0, 0.0, 0.0, 0.0 # Define "strength" of each corner of the cube that we need v0 = 1.0 / (FLT_EPSILON + dabs(self.v0)) v1 = 1.0 / (FLT_EPSILON + dabs(self.v1)) v2 = 1.0 / (FLT_EPSILON + dabs(self.v2)) v3 = 1.0 / (FLT_EPSILON + dabs(self.v3)) v4 = 1.0 / (FLT_EPSILON + dabs(self.v4)) v5 = 1.0 / (FLT_EPSILON + dabs(self.v5)) v6 = 1.0 / (FLT_EPSILON + dabs(self.v6)) v7 = 1.0 / (FLT_EPSILON + dabs(self.v7)) # Apply a kind of center-of-mass method fx += 0.0*v0; fy += 0.0*v0; fz += 0.0*v0; ff += v0 fx += 1.0*v1; fy += 0.0*v1; fz += 0.0*v1; ff += v1 fx += 1.0*v2; fy += 1.0*v2; fz += 0.0*v2; ff += v2 fx += 0.0*v3; fy += 1.0*v3; fz += 0.0*v3; ff += v3 fx += 0.0*v4; fy += 0.0*v4; fz += 1.0*v4; ff += v4 fx += 1.0*v5; fy += 0.0*v5; fz += 1.0*v5; ff += v5 fx += 1.0*v6; fy += 1.0*v6; fz += 1.0*v6; ff += v6 fx += 0.0*v7; fy += 1.0*v7; fz += 1.0*v7; ff += v7 # Store cdef double stp = self.step self.v12_x = self.x + stp * fx / ff self.v12_y = self.y + stp * fy / ff self.v12_z = self.z + stp * fz / ff # Also pre-calculate gradient of center # note that prepare_for_adding_triangles() must have been called for # the gradient data to exist. self.v12_xg = ( v0*self.vg[0*3+0] + v1*self.vg[1*3+0] + v2*self.vg[2*3+0] + v3*self.vg[3*3+0] + v4*self.vg[4*3+0] + v5*self.vg[5*3+0] + v6*self.vg[6*3+0] + v7*self.vg[7*3+0] ) self.v12_yg = ( v0*self.vg[0*3+1] + v1*self.vg[1*3+1] + v2*self.vg[2*3+1] + v3*self.vg[3*3+1] + v4*self.vg[4*3+1] + v5*self.vg[5*3+1] + v6*self.vg[6*3+1] + v7*self.vg[7*3+1] ) self.v12_xg = ( v0*self.vg[0*3+2] + v1*self.vg[1*3+2] + v2*self.vg[2*3+2] + v3*self.vg[3*3+2] + v4*self.vg[4*3+2] + v5*self.vg[5*3+2] + v6*self.vg[6*3+2] + v7*self.vg[7*3+2] ) # Set flag that this stuff is calculated self.v12_calculated = 1 cdef class Lut: """ Representation of a lookup table. The tables are initially defined as numpy arrays. On initialization, this class converts them to a C array for fast access. This class defines functions to look up values using 1, 2 or 3 indices. """ cdef signed char* VALUES cdef int L0 # Length cdef int L1 # size of tuple cdef int L2 # size of tuple in tuple (if any) def __init__(self, array): # Get the shape of the LUT self.L1 = 1 self.L2 = 1 # self.L0 = array.shape[0] if array.ndim > 1: self.L1 = array.shape[1] if array.ndim > 2: self.L2 = array.shape[2] # Copy the contents array = array.ravel() cdef int n, N N = self.L0 * self.L1 * self.L2 self.VALUES = malloc(N * sizeof(signed char)) if self.VALUES is NULL: raise MemoryError() for n in range(N): self.VALUES[n] = array[n] def __cinit__(self): self.VALUES = NULL def __dealloc__(self): if self.VALUES is not NULL: free(self.VALUES) cdef int get1(self, int i0): return self.VALUES[i0] cdef int get2(self, int i0, int i1): return self.VALUES[i0*self.L1 + i1] cdef int get3(self, int i0, int i1, int i2): return self.VALUES[i0*self.L1*self.L2 + i1*self.L2 + i2] cdef class LutProvider: """ Class that provides a common interface to the many lookup tables used by the algorithm. All the lists of lut names are autogenerated to prevent human error. """ cdef Lut EDGESRELX # Edges relative X cdef Lut EDGESRELY cdef Lut EDGESRELZ cdef Lut CASESCLASSIC cdef Lut CASES cdef Lut TILING1 cdef Lut TILING2 cdef Lut TILING3_1 cdef Lut TILING3_2 cdef Lut TILING4_1 cdef Lut TILING4_2 cdef Lut TILING5 cdef Lut TILING6_1_1 cdef Lut TILING6_1_2 cdef Lut TILING6_2 cdef Lut TILING7_1 cdef Lut TILING7_2 cdef Lut TILING7_3 cdef Lut TILING7_4_1 cdef Lut TILING7_4_2 cdef Lut TILING8 cdef Lut TILING9 cdef Lut TILING10_1_1 cdef Lut TILING10_1_1_ cdef Lut TILING10_1_2 cdef Lut TILING10_2 cdef Lut TILING10_2_ cdef Lut TILING11 cdef Lut TILING12_1_1 cdef Lut TILING12_1_1_ cdef Lut TILING12_1_2 cdef Lut TILING12_2 cdef Lut TILING12_2_ cdef Lut TILING13_1 cdef Lut TILING13_1_ cdef Lut TILING13_2 cdef Lut TILING13_2_ cdef Lut TILING13_3 cdef Lut TILING13_3_ cdef Lut TILING13_4 cdef Lut TILING13_5_1 cdef Lut TILING13_5_2 cdef Lut TILING14 cdef Lut TEST3 cdef Lut TEST4 cdef Lut TEST6 cdef Lut TEST7 cdef Lut TEST10 cdef Lut TEST12 cdef Lut TEST13 cdef Lut SUBCONFIG13 def __init__(self, EDGESRELX, EDGESRELY, EDGESRELZ, CASESCLASSIC, CASES, TILING1, TILING2, TILING3_1, TILING3_2, TILING4_1, TILING4_2, TILING5, TILING6_1_1, TILING6_1_2, TILING6_2, TILING7_1, TILING7_2, TILING7_3, TILING7_4_1, TILING7_4_2, TILING8, TILING9, TILING10_1_1, TILING10_1_1_, TILING10_1_2, TILING10_2, TILING10_2_, TILING11, TILING12_1_1, TILING12_1_1_, TILING12_1_2, TILING12_2, TILING12_2_, TILING13_1, TILING13_1_, TILING13_2, TILING13_2_, TILING13_3, TILING13_3_, TILING13_4, TILING13_5_1, TILING13_5_2, TILING14, TEST3, TEST4, TEST6, TEST7, TEST10, TEST12, TEST13, SUBCONFIG13, ): self.EDGESRELX = Lut(EDGESRELX) self.EDGESRELY = Lut(EDGESRELY) self.EDGESRELZ = Lut(EDGESRELZ) self.CASESCLASSIC = Lut(CASESCLASSIC) self.CASES = Lut(CASES) self.TILING1 = Lut(TILING1) self.TILING2 = Lut(TILING2) self.TILING3_1 = Lut(TILING3_1) self.TILING3_2 = Lut(TILING3_2) self.TILING4_1 = Lut(TILING4_1) self.TILING4_2 = Lut(TILING4_2) self.TILING5 = Lut(TILING5) self.TILING6_1_1 = Lut(TILING6_1_1) self.TILING6_1_2 = Lut(TILING6_1_2) self.TILING6_2 = Lut(TILING6_2) self.TILING7_1 = Lut(TILING7_1) self.TILING7_2 = Lut(TILING7_2) self.TILING7_3 = Lut(TILING7_3) self.TILING7_4_1 = Lut(TILING7_4_1) self.TILING7_4_2 = Lut(TILING7_4_2) self.TILING8 = Lut(TILING8) self.TILING9 = Lut(TILING9) self.TILING10_1_1 = Lut(TILING10_1_1) self.TILING10_1_1_ = Lut(TILING10_1_1_) self.TILING10_1_2 = Lut(TILING10_1_2) self.TILING10_2 = Lut(TILING10_2) self.TILING10_2_ = Lut(TILING10_2_) self.TILING11 = Lut(TILING11) self.TILING12_1_1 = Lut(TILING12_1_1) self.TILING12_1_1_ = Lut(TILING12_1_1_) self.TILING12_1_2 = Lut(TILING12_1_2) self.TILING12_2 = Lut(TILING12_2) self.TILING12_2_ = Lut(TILING12_2_) self.TILING13_1 = Lut(TILING13_1) self.TILING13_1_ = Lut(TILING13_1_) self.TILING13_2 = Lut(TILING13_2) self.TILING13_2_ = Lut(TILING13_2_) self.TILING13_3 = Lut(TILING13_3) self.TILING13_3_ = Lut(TILING13_3_) self.TILING13_4 = Lut(TILING13_4) self.TILING13_5_1 = Lut(TILING13_5_1) self.TILING13_5_2 = Lut(TILING13_5_2) self.TILING14 = Lut(TILING14) self.TEST3 = Lut(TEST3) self.TEST4 = Lut(TEST4) self.TEST6 = Lut(TEST6) self.TEST7 = Lut(TEST7) self.TEST10 = Lut(TEST10) self.TEST12 = Lut(TEST12) self.TEST13 = Lut(TEST13) self.SUBCONFIG13 = Lut(SUBCONFIG13) # def marching_cubes(float[:, :, :] im not None, double isovalue, # LutProvider luts, int st=1, int classic=0, # np.ndarray[np.npy_bool, ndim=3, cast=True] mask=None): # """ marching_cubes(im, double isovalue, LutProvider luts, int st=1, int classic=0) # Main entry to apply marching cubes. # Masked version of marching cubes. This function will check a # masking array (same size as im) to decide if the algorithm must be # computed for a given voxel. This adds a small overhead that # rapidly gets compensated by the fewer computed cubes # Returns (vertices, faces, normals, values) # """ # # Get dimemsnions # cdef int Nx, Ny, Nz # Nx, Ny, Nz = im.shape[2], im.shape[1], im.shape[0] # # Create cell to use throughout # cdef Cell cell = Cell(luts, Nx, Ny, Nz) # # Typedef variables # cdef int x, y, z, x_st, y_st, z_st # cdef int nt # cdef int case, config, subconfig # cdef bint no_mask = mask is None # # Unfortunately specifying a step in range() significantly degrades # # performance. Therefore we use a while loop. # # we have: max_x = Nx_bound + st + st - 1 # # -> Nx_bound = max_allowable_x + 1 - 2 * st # # -> Nx_bound = Nx - 2 * st # assert st > 0 # cdef int Nx_bound, Ny_bound, Nz_bound # Nx_bound, Ny_bound, Nz_bound = Nx - 2 * st, Ny - 2 * st, Nz - 2 * st # precalculated index range # z = -st # while z < Nz_bound: # z += st # z_st = z + st # cell.new_z_value() # Indicate that we enter a new layer # y = -st # while y < Ny_bound: # y += st # y_st = y + st # x = -st # while x < Nx_bound: # x += st # x_st = x + st # if no_mask or mask[z_st, y_st, x_st]: # # Initialize cell # cell.set_cube(isovalue, x, y, z, st, # im[z ,y, x], im[z ,y, x_st], im[z ,y_st, x_st], im[z ,y_st, x], # im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x] ) # # Do classic! # if classic: # # Determine number of vertices # nt = 0 # while luts.CASESCLASSIC.get2(cell.index, 3*nt) != -1: # nt += 1 # # Add triangles # if nt > 0: # cell.add_triangles(luts.CASESCLASSIC, cell.index, nt) # else: # # Get case, if non-nul, enter the big switch # case = luts.CASES.get2(cell.index, 0) # if case > 0: # config = luts.CASES.get2(cell.index, 1) # the_big_switch(luts, cell, case, config) # # Done # return cell.get_vertices(), cell.get_faces(), cell.get_normals(), cell.get_values() def marching_cubes_udf(float[:, :, :] im not None, float[:, :, :, :] grads not None, LutProvider luts, int st=1, int classic=0, np.ndarray[np.npy_bool, ndim=3, cast=True] mask=None): """ marching_cubes(im, double isovalue, LutProvider luts, int st=1, int classic=0) Main entry to apply marching cubes. Masked version of marching cubes. This function will check a masking array (same size as im) to decide if the algorithm must be computed for a given voxel. This adds a small overhead that rapidly gets compensated by the fewer computed cubes Returns (vertices, faces, normals, values) """ # Get dimemsnions cdef int Nx, Ny, Nz Nx, Ny, Nz = im.shape[2], im.shape[1], im.shape[0] # Compute voxel size cdef voxel_size = 2.0 / (Nx - 1) # Create cell to use throughout cdef Cell cell = Cell(luts, Nx, Ny, Nz) # Create a 3D matrix to store signed im values cdef float[:,:,:] signed_im = np.zeros((Nz, Ny, Nx), dtype=np.float32) cdef bint[:,:,:] signed_im_mask = np.zeros((Nz, Ny, Nx), dtype=np.int32) # Typedef variables cdef int x, y, z, x_st, y_st, z_st, xi, yi, zi, x_i, y_i, z_i cdef int dir_x, dir_y, dir_z, cur_x_i, cur_y_i, cur_z_i cdef int nt cdef int case, config, subconfig cdef bint no_mask = mask is None cdef double v0, v1, v2, v3, v4, v5, v6, v7 # Unfortunately specifying a step in range() significantly degrades # performance. Therefore we use a while loop. # we have: max_x = Nx_bound + st + st - 1 # -> Nx_bound = max_allowable_x + 1 - 2 * st # -> Nx_bound = Nx - 2 * st assert st > 0 cdef int Nx_bound, Ny_bound, Nz_bound Nx_bound, Ny_bound, Nz_bound = Nx - 2 * st, Ny - 2 * st, Nz - 2 * st # precalculated index range cdef float[:] base_vec = np.empty((3), dtype=np.float32) cdef float avg_cube_val_thresh = 1.05 * voxel_size cdef float max_cube_val_thresh = 1.74 * voxel_size # BFS data structures cdef bint[:,:,:] visited = np.zeros((Nz, Ny, Nx), dtype=np.int32) # cdef list queue = [] cdef deque[(int,int,int)] queue cdef deque[(int,int,int)] unsure_cases_queue cdef deque[(int,int,int)] non_trivial_mc_cases_queue cdef (int, int, int) current_tuple cdef array.array sign_vs = array.array('f', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) cdef array.array visited_vs = array.array('i', [0, 0, 0, 0, 0, 0, 0, 0]) cdef int cube_sign cdef int total_cubes = 0 cdef int connected_components = 0 cdef array.array vertex_index_array_z cdef array.array vertex_index_array_y cdef array.array vertex_index_array_x cdef array.array directions_z = array.array('i', [st, -st, 0, 0, 0, 0]) cdef array.array directions_y = array.array('i', [0, 0, st, -st, 0, 0]) cdef array.array directions_x = array.array('i', [0, 0, 0, 0, st, -st]) cdef int max_distance = 1 cdef int max_distance_temp cdef float unsure_cases_thresh = 0.707 cdef bint change_cube cdef int i, v_index, dir_index cdef bint unsure_cases_visit_neighbours # Raster scan of the whole 3D grid zi = -st while zi < Nz_bound: zi += st yi = -st while yi < Ny_bound: yi += st xi = -st while xi < Nx_bound: xi += st z, y, x = zi, yi, xi z_st = z+st y_st = y+st x_st = x+st if visited[z,y,x] == False and (no_mask or mask[z_st, y_st, x_st]): if (avg_cube( im[z ,y, x], im[z ,y, x_st], im[z ,y_st, x_st], im[z ,y_st, x], im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) < avg_cube_val_thresh and max_cube( im[z ,y, x], im[z ,y, x_st], im[z ,y_st, x_st], im[z ,y_st, x], im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) <= max_cube_val_thresh): vertex_index_array_z = array.array('i', [z, z, z, z, z_st, z_st, z_st, z_st]) vertex_index_array_y = array.array('i', [y, y, y_st, y_st, y, y, y_st, y_st]) vertex_index_array_x = array.array('i', [x, x_st, x_st, x, x, x_st, x_st, x]) # The following block follows this pseudocode and lets # the nearby vertices vote for the sign of each of the # vertices of current cube #for each non-computed non-zero vertex v #for each of the 6 directions #for each vertex v_i along that direction, up to max-distance vertices #if v_i hasn't been computed #continue #if v_i is 0 #if max-distance is not reached #continue #else #while v_i along that direction is not 0 #compute edge vote #else #compute edge vote v_index = -1 change_cube = False while v_index < 7: #from 0 to 7, included v_index += 1 visited_vs[v_index] = 0 z_i = vertex_index_array_z[v_index] y_i = vertex_index_array_y[v_index] x_i = vertex_index_array_x[v_index] sign_vs[v_index] = 0.0 #If the vertex value has been previously computed or is zero, skip it if signed_im_mask[z_i,y_i,x_i] == True: visited_vs[v_index] = 1 sign_vs[v_index] = signed_im[z_i,y_i,x_i] continue if im[z_i,y_i,x_i] == 0.0: visited_vs[v_index] = 1 continue dir_index = -1 while dir_index < 5: #from 0 to 5, included dir_index += 1 dir_z = directions_z[dir_index] dir_y = directions_y[dir_index] dir_x = directions_x[dir_index] i = 0 max_distance_temp = max_distance while i < max_distance_temp: #from 1 to max_distance, included i += 1 cur_z_i = z_i + i*dir_z cur_y_i = y_i + i*dir_y cur_x_i = x_i + i*dir_x #If out of bounds, search on another direction if (cur_z_i > Nz_bound or cur_z_i < 0 or cur_y_i > Ny_bound or cur_y_i < 0 or cur_x_i > Nx_bound or cur_x_i < 0): break # If the vertex value is zero, continue to check what's beyond if im[cur_z_i, cur_y_i, cur_x_i] == 0.0: if i < max_distance_temp: continue else: max_distance_temp = max_distance_temp + 1 #Check one vertex further away continue # 1.3: If not computed during previous cubes AND not already computed during this cube, skip it if signed_im[cur_z_i, cur_y_i, cur_x_i] == 0.0: continue # Normal case visited_vs[v_index] += 1 sign_vs[v_index] += signed_im[cur_z_i, cur_y_i, cur_x_i] * compute_edge_vote(grads[z_i,y_i,x_i], grads[cur_z_i, cur_y_i, cur_x_i], dir_z, dir_y, dir_x) # Set the vertex. This value is used to compute adjacent vertices, but is not considered as precomputed, so it will be computed again signed_im[z_i, y_i, x_i] = my_sign(sign_vs[v_index]) # Compute and use anchor gradient only when needed (when some vertices have no votes) if not (visited_vs[0] >= 1 and visited_vs[1] >= 1 and visited_vs[2] >= 1 and visited_vs[3] >= 1 and visited_vs[4] >= 1 and visited_vs[5] >= 1 and visited_vs[6] >= 1 and visited_vs[7] >= 1): anchor_sign = 1. if signed_im_mask[z,y,x] and not non_zero_norm(grads[z,y,x]) == 0: #1 anchor_sign = my_sign(signed_im[z,y,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2] elif signed_im_mask[z,y,x_st] and not non_zero_norm(grads[z,y,x_st]) == 0: #2 anchor_sign = my_sign(signed_im[z,y,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2] elif signed_im_mask[z,y_st,x] and not non_zero_norm(grads[z,y_st,x]) == 0: #4 anchor_sign = my_sign(signed_im[z,y_st,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2] elif signed_im_mask[z,y_st,x_st] and not non_zero_norm(grads[z,y_st,x_st]) == 0: #3 anchor_sign = my_sign(signed_im[z,y_st,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2] elif signed_im_mask[z_st,y,x] and not non_zero_norm(grads[z_st,y,x]) == 0: #5 anchor_sign = my_sign(signed_im[z_st,y,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2] elif signed_im_mask[z_st,y,x_st] and not non_zero_norm(grads[z_st,y,x_st]) == 0: #6 anchor_sign = my_sign(signed_im[z_st,y,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2] elif signed_im_mask[z_st,y_st,x] and not non_zero_norm(grads[z_st,y_st,x]) == 0: #8 anchor_sign = my_sign(signed_im[z_st,y_st,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2] elif signed_im_mask[z_st,y_st,x_st] and not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7 anchor_sign = my_sign(signed_im[z_st,y_st,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2] elif not non_zero_norm(grads[z,y,x]) == 0: #1 base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2] elif not non_zero_norm(grads[z,y,x_st]) == 0: #2 base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2] elif not non_zero_norm(grads[z,y_st,x]) == 0: #4 base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2] elif not non_zero_norm(grads[z,y_st,x_st]) == 0: #3 base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2] elif not non_zero_norm(grads[z_st,y,x]) == 0: #5 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2] elif not non_zero_norm(grads[z_st,y,x_st]) == 0: #6 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2] elif not non_zero_norm(grads[z_st,y_st,x]) == 0: #8 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2] elif not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2] else: print('all 0 vec...') base_vec[0], base_vec[1], base_vec[2] = anchor_sign * base_vec[0], anchor_sign * base_vec[1], anchor_sign * base_vec[2] if visited_vs[0] == 0: signed_im[z,y,x] = my_sign(dot3(base_vec, grads[z ,y, x])) if visited_vs[1] == 0: signed_im[z,y,x_st] = my_sign(dot3(base_vec, grads[z ,y, x_st])) if visited_vs[2] == 0: signed_im[z,y_st,x_st] = my_sign(dot3(base_vec, grads[z ,y_st, x_st])) if visited_vs[3] == 0: signed_im[z,y_st,x] = my_sign(dot3(base_vec, grads[z ,y_st, x])) if visited_vs[4] == 0: signed_im[z_st,y,x] = my_sign(dot3(base_vec, grads[z_st,y, x])) if visited_vs[5] == 0: signed_im[z_st,y,x_st] = my_sign(dot3(base_vec, grads[z_st,y, x_st])) if visited_vs[6] == 0: signed_im[z_st,y_st,x_st] = my_sign(dot3(base_vec, grads[z_st,y_st, x_st])) if visited_vs[7] == 0: signed_im[z_st,y_st,x] = my_sign(dot3(base_vec, grads[z_st,y_st, x])) v0 = signed_im[z,y,x] * im[z ,y, x] v1 = signed_im[z,y,x_st] * im[z ,y, x_st] v2 = signed_im[z,y_st,x_st] * im[z ,y_st, x_st] v3 = signed_im[z,y_st,x] * im[z ,y_st, x] v4 = signed_im[z_st,y,x] * im[z_st,y, x] v5 = signed_im[z_st,y,x_st] * im[z_st,y, x_st] v6 = signed_im[z_st,y_st,x_st] * im[z_st,y_st, x_st] v7 = signed_im[z_st,y_st,x] * im[z_st,y_st, x] cell.set_cube(0.0, x, y, z, st, v0, v1, v2, v3, v4, v5, v6, v7) signed_im_mask[z,y,x] = True signed_im_mask[z,y,x_st] = True signed_im_mask[z,y_st,x_st] = True signed_im_mask[z,y_st,x] = True signed_im_mask[z_st,y,x] = True signed_im_mask[z_st,y,x_st] = True signed_im_mask[z_st,y_st,x_st] = True signed_im_mask[z_st,y_st,x] = True # Get case, if non-nul, enter the big switch case = luts.CASES.get2(cell.index, 0) if case > 0: config = luts.CASES.get2(cell.index, 1) visited[z,y,x] = True the_big_switch(luts, cell, case, config) if x_st < Nx_bound: queue.push_back((z,y,x_st)) if y_st < Ny_bound: queue.push_back((z,y_st,x)) if x-st >= 0: queue.push_back((z,y,x-st)) if y-st >= 0: queue.push_back((z,y-st,x)) if z-st >= 0: queue.push_back((z-st,y,x)) if z_st < Nz_bound: queue.push_back((z_st,y,x)) else: visited[z,y,x] = True continue else: continue else: continue # If reaching here, it means that a cube has been visited and a face has been produced. # We now use this cube as the starting point and start the breadth-first exploration. unsure_cases_visit_neighbours = True while queue.empty() == False or unsure_cases_queue.empty() == False or non_trivial_mc_cases_queue.empty() == False: if queue.empty(): if unsure_cases_queue.empty(): current_tuple = non_trivial_mc_cases_queue.front() non_trivial_mc_cases_queue.pop_front() else: current_tuple = unsure_cases_queue.front() # If a cube is taken from the queue with low threshold cases, compute first its neighbors then the cube itself # When visiting neighbours we set unsure_cases_visit_neighbours to False, so that such neighbours are treated # differently: no faces is computed from them, and they do not take part to the breadth-first exploration. # (Note: they could still be part of the search and thus produce faces if they are visited again during the normal exploration) # After visiting such cubes, we re-visit the unsure case that requested them to increase its reliability. if unsure_cases_visit_neighbours: z, y, x = current_tuple[0], current_tuple[1], current_tuple[2] if visited[z,y,x] == True: unsure_cases_queue.pop_front() continue z_st = z+st y_st = y+st x_st = x+st if x_st < Nx_bound: queue.push_back((z,y,x_st)) if y_st < Ny_bound: queue.push_back((z,y_st,x)) if x-st >= 0: queue.push_back((z,y,x-st)) if y-st >= 0: queue.push_back((z,y-st,x)) if z-st >= 0: queue.push_back((z-st,y,x)) if z_st < Nz_bound: queue.push_back((z_st,y,x)) unsure_cases_visit_neighbours = False continue else: unsure_cases_queue.pop_front() unsure_cases_visit_neighbours = True else: current_tuple = queue.front() queue.pop_front() z, y, x = current_tuple[0], current_tuple[1], current_tuple[2] z_st = z+st y_st = y+st x_st = x+st if visited[z,y,x] == False and (no_mask or mask[z_st, y_st, x_st]): if (avg_cube( im[z ,y, x], im[z ,y, x_st], im[z ,y_st, x_st], im[z ,y_st, x], im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) < avg_cube_val_thresh and max_cube( im[z ,y, x], im[z ,y, x_st], im[z ,y_st, x_st], im[z ,y_st, x], im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) <= max_cube_val_thresh): vertex_index_array_z = array.array('i', [z, z, z, z, z_st, z_st, z_st, z_st]) vertex_index_array_y = array.array('i', [y, y, y_st, y_st, y, y, y_st, y_st]) vertex_index_array_x = array.array('i', [x, x_st, x_st, x, x, x_st, x_st, x]) # The following block follows this pseudocode and lets # the nearby vertices vote for the sign of each of the # vertices of current cube #for each non-computed non-zero vertex v #for each of the 6 directions #for each vertex v_i along that direction, up to max-distance vertices #if v_i hasn't been computed #continue #if v_i is 0 #if max-distance is not reached #continue #else #while v_i along that direction is not 0 #compute edge vote #else #compute edge vote v_index = -1 change_cube = False while v_index < 7: #from 0 to 7, included v_index += 1 visited_vs[v_index] = 0 z_i = vertex_index_array_z[v_index] y_i = vertex_index_array_y[v_index] x_i = vertex_index_array_x[v_index] sign_vs[v_index] = 0.0 #If the vertex value has been previously computed or is zero, skip it if signed_im_mask[z_i,y_i,x_i] == True: visited_vs[v_index] = 1 sign_vs[v_index] = signed_im[z_i,y_i,x_i] continue if im[z_i,y_i,x_i] == 0.0: visited_vs[v_index] = 1 continue dir_index = -1 while dir_index < 5: #from 0 to 5, included dir_index += 1 dir_z = directions_z[dir_index] dir_y = directions_y[dir_index] dir_x = directions_x[dir_index] i = 0 max_distance_temp = max_distance while i < max_distance_temp: #from 1 to max_distance, included i += 1 cur_z_i = z_i + i*dir_z cur_y_i = y_i + i*dir_y cur_x_i = x_i + i*dir_x #If out of bounds, search on another direction if (cur_z_i > Nz_bound or cur_z_i < 0 or cur_y_i > Ny_bound or cur_y_i < 0 or cur_x_i > Nx_bound or cur_x_i < 0): break # If the vertex value is zero, continue to check what's beyond if im[cur_z_i, cur_y_i, cur_x_i] == 0.0: if i < max_distance_temp: continue else: max_distance_temp = max_distance_temp + 1 #Check one vertex further away continue # 1.3: If not computed during previous cubes AND not already computed during this cube, skip it if signed_im[cur_z_i, cur_y_i, cur_x_i] == 0.0: continue # Normal case visited_vs[v_index] += 1 sign_vs[v_index] += signed_im[cur_z_i, cur_y_i, cur_x_i] * compute_edge_vote(grads[z_i,y_i,x_i], grads[cur_z_i, cur_y_i, cur_x_i], dir_z, dir_y, dir_x) # If the sign of one vertex is not sure enough, put the current cube into a lower priority queue to be computed later. if visited_vs[v_index] >= 1 and abs(sign_vs[v_index]) / visited_vs[v_index] < unsure_cases_thresh and (queue.empty() == False): if unsure_cases_visit_neighbours == True: unsure_cases_queue.push_back((z,y,x)) change_cube = True break # Set the vertex. This value is used to compute adjacent vertices, but is not considered as precomputed, so it will be computed again signed_im[z_i, y_i, x_i] = my_sign(sign_vs[v_index]) if change_cube: continue # Compute and use anchor gradient only when needed (when some vertices have no votes) if not (visited_vs[0] >= 1 and visited_vs[1] >= 1 and visited_vs[2] >= 1 and visited_vs[3] >= 1 and visited_vs[4] >= 1 and visited_vs[5] >= 1 and visited_vs[6] >= 1 and visited_vs[7] >= 1): anchor_sign = 1. if signed_im_mask[z,y,x] and not non_zero_norm(grads[z,y,x]) == 0: #1 anchor_sign = my_sign(signed_im[z,y,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2] elif signed_im_mask[z,y,x_st] and not non_zero_norm(grads[z,y,x_st]) == 0: #2 anchor_sign = my_sign(signed_im[z,y,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2] elif signed_im_mask[z,y_st,x] and not non_zero_norm(grads[z,y_st,x]) == 0: #4 anchor_sign = my_sign(signed_im[z,y_st,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2] elif signed_im_mask[z,y_st,x_st] and not non_zero_norm(grads[z,y_st,x_st]) == 0: #3 anchor_sign = my_sign(signed_im[z,y_st,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2] elif signed_im_mask[z_st,y,x] and not non_zero_norm(grads[z_st,y,x]) == 0: #5 anchor_sign = my_sign(signed_im[z_st,y,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2] elif signed_im_mask[z_st,y,x_st] and not non_zero_norm(grads[z_st,y,x_st]) == 0: #6 anchor_sign = my_sign(signed_im[z_st,y,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2] elif signed_im_mask[z_st,y_st,x] and not non_zero_norm(grads[z_st,y_st,x]) == 0: #8 anchor_sign = my_sign(signed_im[z_st,y_st,x]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2] elif signed_im_mask[z_st,y_st,x_st] and not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7 anchor_sign = my_sign(signed_im[z_st,y_st,x_st]) base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2] elif not non_zero_norm(grads[z,y,x]) == 0: #1 base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2] elif not non_zero_norm(grads[z,y,x_st]) == 0: #2 base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2] elif not non_zero_norm(grads[z,y_st,x]) == 0: #4 base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2] elif not non_zero_norm(grads[z,y_st,x_st]) == 0: #3 base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2] elif not non_zero_norm(grads[z_st,y,x]) == 0: #5 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2] elif not non_zero_norm(grads[z_st,y,x_st]) == 0: #6 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2] elif not non_zero_norm(grads[z_st,y_st,x]) == 0: #8 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2] elif not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7 base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2] else: print('all 0 vec...') base_vec[0], base_vec[1], base_vec[2] = anchor_sign * base_vec[0], anchor_sign * base_vec[1], anchor_sign * base_vec[2] # If the sign of one vertex is not sure enough, put the current cube into a lower priority queue of unsure cases to be computed later. # This behaviour is not applied to the neighbours of unsure cases if unsure_cases_visit_neighbours == True and queue.empty() == False: if visited_vs[0] == 0: sign_vs[0] = dot3(base_vec, grads[z ,y, x]) if abs(sign_vs[0]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z,y,x] = my_sign(sign_vs[0]) if visited_vs[1] == 0: sign_vs[1] = dot3(base_vec, grads[z ,y, x_st]) if abs(sign_vs[1]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z,y,x_st] = my_sign(sign_vs[1]) if visited_vs[2] == 0: sign_vs[2] = dot3(base_vec, grads[z ,y_st, x_st]) if abs(sign_vs[2]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z,y_st,x_st] = my_sign(sign_vs[2]) if visited_vs[3] == 0: sign_vs[3] = dot3(base_vec, grads[z ,y_st, x]) if abs(sign_vs[3]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z,y_st,x] = my_sign(sign_vs[3]) if visited_vs[4] == 0: sign_vs[4] = dot3(base_vec, grads[z_st,y, x]) if abs(sign_vs[4]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z_st,y,x] = my_sign(sign_vs[4]) if visited_vs[5] == 0: sign_vs[5] = dot3(base_vec, grads[z_st,y, x_st]) if abs(sign_vs[5]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z_st,y,x_st] = my_sign(sign_vs[5]) if visited_vs[6] == 0: sign_vs[6] = dot3(base_vec, grads[z_st,y_st, x_st]) if abs(sign_vs[6]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z_st,y_st,x_st] = my_sign(sign_vs[6]) if visited_vs[7] == 0: sign_vs[7] = dot3(base_vec, grads[z_st,y_st, x]) if abs(sign_vs[7]) < unsure_cases_thresh: unsure_cases_queue.push_back((z,y,x)) continue signed_im[z_st,y_st,x] = my_sign(sign_vs[7]) else: if visited_vs[0] == 0: signed_im[z,y,x] = my_sign(dot3(base_vec, grads[z ,y, x])) if visited_vs[1] == 0: signed_im[z,y,x_st] = my_sign(dot3(base_vec, grads[z ,y, x_st])) if visited_vs[2] == 0: signed_im[z,y_st,x_st] = my_sign(dot3(base_vec, grads[z ,y_st, x_st])) if visited_vs[3] == 0: signed_im[z,y_st,x] = my_sign(dot3(base_vec, grads[z ,y_st, x])) if visited_vs[4] == 0: signed_im[z_st,y,x] = my_sign(dot3(base_vec, grads[z_st,y, x])) if visited_vs[5] == 0: signed_im[z_st,y,x_st] = my_sign(dot3(base_vec, grads[z_st,y, x_st])) if visited_vs[6] == 0: signed_im[z_st,y_st,x_st] = my_sign(dot3(base_vec, grads[z_st,y_st, x_st])) if visited_vs[7] == 0: signed_im[z_st,y_st,x] = my_sign(dot3(base_vec, grads[z_st,y_st, x])) if unsure_cases_visit_neighbours == True: v0 = signed_im[z,y,x] * im[z ,y, x] v1 = signed_im[z,y,x_st] * im[z ,y, x_st] v2 = signed_im[z,y_st,x_st] * im[z ,y_st, x_st] v3 = signed_im[z,y_st,x] * im[z ,y_st, x] v4 = signed_im[z_st,y,x] * im[z_st,y, x] v5 = signed_im[z_st,y,x_st] * im[z_st,y, x_st] v6 = signed_im[z_st,y_st,x_st] * im[z_st,y_st, x_st] v7 = signed_im[z_st,y_st,x] * im[z_st,y_st, x] cell.set_cube(0.0, x, y, z, st, v0, v1, v2, v3, v4, v5, v6, v7) signed_im_mask[z,y,x] = True signed_im_mask[z,y,x_st] = True signed_im_mask[z,y_st,x_st] = True signed_im_mask[z,y_st,x] = True signed_im_mask[z_st,y,x] = True signed_im_mask[z_st,y,x_st] = True signed_im_mask[z_st,y_st,x_st] = True signed_im_mask[z_st,y_st,x] = True # Get case, if non-nul, enter the big switch case = luts.CASES.get2(cell.index, 0) # If the current cube is being visited to increase the reliability of an unsure case, # no faces are created and no further neighbours are visited if case > 0: # If the current cube is producing a non-trivial Marching Cubes configuration, # we leave it for later. It could otherwise produce unwanted inversions in face orientations. if (not case in [1,2,5,8,9]) and (queue.empty() == False or unsure_cases_queue.empty() == False): non_trivial_mc_cases_queue.push_back((z,y,x)) continue config = luts.CASES.get2(cell.index, 1) if check_the_big_switch(luts, cell, case, config) >= 2: visited[z,y,x] = True the_big_switch(luts, cell, case, config) if x_st < Nx_bound: queue.push_back((z,y,x_st)) if y_st < Ny_bound: queue.push_back((z,y_st,x)) if x-st >= 0: queue.push_back((z,y,x-st)) if y-st >= 0: queue.push_back((z,y-st,x)) if z-st >= 0: queue.push_back((z-st,y,x)) if z_st < Nz_bound: queue.push_back((z_st,y,x)) else: visited[z,y,x] = True return cell.get_vertices(), cell.get_faces(), cell.get_normals(), cell.get_values() cdef float compute_edge_vote(float[:] g1, float[:] g2, float dir_z, float dir_y, float dir_x): """ Computes the edge vote Assumes that one and only one among dir_z, dir_y and dir_x is not zero """ cdef float result = 0.0 cdef float dir_sum = dir_z + dir_y + dir_x cdef float proj_g1 cdef float proj_g2 if dir_z != 0: proj_g1 = g1[0] proj_g2 = g2[0] elif dir_y != 0: proj_g1 = g1[1] proj_g2 = g2[1] else: proj_g1 = g1[2] proj_g2 = g2[2] if dir_sum > 0: if proj_g2 > 0 and proj_g1 < 0: result = 1.0 else: result = dot3(g1, g2) else: if proj_g2 < 0 and proj_g1 > 0: result = 1.0 else: result = dot3(g1, g2) return result cdef float my_sign(float a): if a > 0: return 1. if a < 0: return -1. if a == 0: return 0. cdef int non_zero_norm(float[:] a): """ Returns True if the sum of absolute values > 0 """ return (abs(a[0]) + abs(a[1]) + abs(a[2])) > 0 # return abs(a[0]) > 0 or abs(a[1]) > 0 or abs(a[2]) > 0 #faster? cdef float avg_cube(float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8): """ Return the average value of v_i's """ return 0.125 * (v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8) cdef float max_cube(float v1, float v2, float v3, float v4, float v5, float v6, float v7, float v8): """ Return the max value of v_i's """ return max(v1, max( v2, max( v3, max( v4, max( v5, max( v6, max( v7, v8))))))) cdef float dot3(float[:] a, float[:] b): return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] cdef bint the_big_switch(LutProvider luts, Cell cell, int case, int config): """ The big switch (i.e. if-statement) that I meticulously ported from the source code provided by Lewiner et. al. Together with all the look-up tables, this is where the magic is ... """ cdef int subconfig = 0 cdef bint result = False # Sinatures for tests #test_face(cell, luts.TESTX.get1(config)): #test_internal(cell, luts, case, config, subconfig, luts.TESTX.get1(config)): #cell.add_triangles(luts.TILINGX, config, N) if case == 1: result = cell.add_triangles(luts.TILING1, config, 1) elif case == 2: result = cell.add_triangles(luts.TILING2, config, 2) elif case == 3: if test_face(cell, luts.TEST3.get1(config)): result = cell.add_triangles(luts.TILING3_2, config, 4) else: result = cell.add_triangles(luts.TILING3_1, config, 2) elif case == 4 : if test_internal(cell, luts, case, config, subconfig, luts.TEST4.get1(config)): result = cell.add_triangles(luts.TILING4_1, config, 2) else: result = cell.add_triangles(luts.TILING4_2, config, 6) elif case == 5 : result = cell.add_triangles(luts.TILING5, config, 3) elif case == 6 : if test_face(cell, luts.TEST6.get2(config,0)): result = cell.add_triangles(luts.TILING6_2, config, 5) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST6.get2(config,1)): result = cell.add_triangles(luts.TILING6_1_1, config, 3) else: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles(luts.TILING6_1_2, config, 9) elif case == 7 : # Get subconfig if test_face(cell, luts.TEST7.get2(config,0)): subconfig += 1 if test_face(cell, luts.TEST7.get2(config,1)): subconfig += 2 if test_face(cell, luts.TEST7.get2(config,2)): subconfig += 4 # Behavior depends on subconfig if subconfig == 0: result = cell.add_triangles(luts.TILING7_1, config, 3) elif subconfig == 1: result = cell.add_triangles2(luts.TILING7_2, config, 0, 5) elif subconfig == 2: result = cell.add_triangles2(luts.TILING7_2, config, 1, 5) elif subconfig == 3: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING7_3, config, 0, 9) elif subconfig == 4: result = cell.add_triangles2(luts.TILING7_2, config, 2, 5) elif subconfig == 5: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING7_3, config, 1, 9) elif subconfig == 6: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING7_3, config, 2, 9) elif subconfig == 7: if test_internal(cell, luts, case, config, subconfig, luts.TEST7.get2(config,3)): result = cell.add_triangles(luts.TILING7_4_2, config, 9) else: result = cell.add_triangles(luts.TILING7_4_1, config, 5) elif case == 8 : result = cell.add_triangles(luts.TILING8, config, 2) elif case == 9 : result = cell.add_triangles(luts.TILING9, config, 4) elif case == 10 : if test_face(cell, luts.TEST10.get2(config,0)): if test_face(cell, luts.TEST10.get2(config,1)): result = cell.add_triangles(luts.TILING10_1_1_, config, 4) else: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles(luts.TILING10_2, config, 8) else: if test_face(cell, luts.TEST10.get2(config,1)): #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles(luts.TILING10_2_, config, 8) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST10.get2(config,2)): result = cell.add_triangles(luts.TILING10_1_1, config, 4) else: result = cell.add_triangles(luts.TILING10_1_2, config, 8) elif case == 11 : result = cell.add_triangles(luts.TILING11, config, 4) elif case == 12 : if test_face(cell, luts.TEST12.get2(config,0)): if test_face(cell, luts.TEST12.get2(config,1)): result = cell.add_triangles(luts.TILING12_1_1_, config, 4) else: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles(luts.TILING12_2, config, 8) else: if test_face(cell, luts.TEST12.get2(config,1)): #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles(luts.TILING12_2_, config, 8) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST12.get2(config,2)): result = cell.add_triangles(luts.TILING12_1_1, config, 4) else: result = cell.add_triangles(luts.TILING12_1_2, config, 8) elif case == 13 : # Calculate subconfig if test_face(cell, luts.TEST13.get2(config,0)): subconfig += 1 if test_face(cell, luts.TEST13.get2(config,1)): subconfig += 2 if test_face(cell, luts.TEST13.get2(config,2)): subconfig += 4 if test_face(cell, luts.TEST13.get2(config,3)): subconfig += 8 if test_face(cell, luts.TEST13.get2(config,4)): subconfig += 16 if test_face(cell, luts.TEST13.get2(config,5)): subconfig += 32 # Map via LUT subconfig = luts.SUBCONFIG13.get1(subconfig) # Behavior depends on subconfig if subconfig==0: result = cell.add_triangles(luts.TILING13_1, config, 4) elif subconfig==1: result = cell.add_triangles2(luts.TILING13_2, config, 0, 6) elif subconfig==2: result = cell.add_triangles2(luts.TILING13_2, config, 1, 6) elif subconfig==3: result = cell.add_triangles2(luts.TILING13_2, config, 2, 6) elif subconfig==4: result = cell.add_triangles2(luts.TILING13_2, config, 3, 6) elif subconfig==5: result = cell.add_triangles2(luts.TILING13_2, config, 4, 6) elif subconfig==6: result = cell.add_triangles2(luts.TILING13_2, config, 5, 6) # elif subconfig==7: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 0, 10) elif subconfig==8: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 1, 10) elif subconfig==9: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 2, 10) elif subconfig==10: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 3, 10) elif subconfig==11: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 4, 10) elif subconfig==12: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 5, 10) elif subconfig==13: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 6, 10) elif subconfig==14: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 7, 10) elif subconfig==15: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 8, 10) elif subconfig==16: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 9, 10) elif subconfig==17: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 10, 10) elif subconfig==18: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3, config, 11, 10) # elif subconfig==19: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_4, config, 0, 12) elif subconfig==20: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_4, config, 1, 12) elif subconfig==21: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_4, config, 2, 12) elif subconfig==22: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_4, config, 3, 12) # elif subconfig==23: subconfig = 0 # Note: the original source code sets the subconfig, without apparent reason if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.add_triangles2(luts.TILING13_5_1, config, 0, 6) else: result = cell.add_triangles2(luts.TILING13_5_2, config, 0, 10) elif subconfig==24: subconfig = 1 if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.add_triangles2(luts.TILING13_5_1, config, 1, 6) else: result = cell.add_triangles2(luts.TILING13_5_2, config, 1, 10) elif subconfig==25: subconfig = 2 ; if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.add_triangles2(luts.TILING13_5_1, config, 2, 6) else: result = cell.add_triangles2(luts.TILING13_5_2, config, 2, 10) elif subconfig==26: subconfig = 3 ; if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.add_triangles2(luts.TILING13_5_1, config, 3, 6) else: result = cell.add_triangles2(luts.TILING13_5_2, config, 3, 10) # elif subconfig==27: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 0, 10) elif subconfig==28: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 1, 10) elif subconfig==29: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 2, 10) elif subconfig==30: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 3, 10) elif subconfig==31: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 4, 10) elif subconfig==32: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 5, 10) elif subconfig==33: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config,6, 10) elif subconfig==34: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 7, 10) elif subconfig==35: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 8, 10) elif subconfig==36: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 9, 10) elif subconfig==37: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 10, 10) elif subconfig==38: #cell.calculate_center_vertex() # v12 needed result = cell.add_triangles2(luts.TILING13_3_, config, 11, 10) # elif subconfig==39: result = cell.add_triangles2(luts.TILING13_2_, config, 0, 6) elif subconfig==40: result = cell.add_triangles2(luts.TILING13_2_, config, 1, 6) elif subconfig==41: result = cell.add_triangles2(luts.TILING13_2_, config, 2, 6) elif subconfig==42: result = cell.add_triangles2(luts.TILING13_2_, config, 3, 6) elif subconfig==43: result = cell.add_triangles2(luts.TILING13_2_, config, 4, 6) elif subconfig==44: result = cell.add_triangles2(luts.TILING13_2_, config, 5, 6) # elif subconfig==45: result = cell.add_triangles(luts.TILING13_1_, config, 4) # else: print("Marching Cubes: Impossible case 13?" ) elif case == 14 : result = cell.add_triangles(luts.TILING14, config, 4) return result cdef int check_the_big_switch(LutProvider luts, Cell cell, int case, int config): """ CHECK The big switch (i.e. if-statement) that I meticulously ported from the source code provided by Lewiner et. al. Together with all the look-up tables, this is where the magic is ... """ cdef int subconfig = 0 cdef int result = 0 # Sinatures for tests #test_face(cell, luts.TESTX.get1(config)): #test_internal(cell, luts, case, config, subconfig, luts.TESTX.get1(config)): #cell.check_triangles(luts.TILINGX, config, N) if case == 1: result = cell.check_triangles(luts.TILING1, config, 1) elif case == 2: result = cell.check_triangles(luts.TILING2, config, 2) elif case == 3: if test_face(cell, luts.TEST3.get1(config)): result = cell.check_triangles(luts.TILING3_2, config, 4) else: result = cell.check_triangles(luts.TILING3_1, config, 2) elif case == 4 : if test_internal(cell, luts, case, config, subconfig, luts.TEST4.get1(config)): result = cell.check_triangles(luts.TILING4_1, config, 2) else: result = cell.check_triangles(luts.TILING4_2, config, 6) elif case == 5 : result = cell.check_triangles(luts.TILING5, config, 3) elif case == 6 : if test_face(cell, luts.TEST6.get2(config,0)): result = cell.check_triangles(luts.TILING6_2, config, 5) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST6.get2(config,1)): result = cell.check_triangles(luts.TILING6_1_1, config, 3) else: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles(luts.TILING6_1_2, config, 9) elif case == 7 : # Get subconfig if test_face(cell, luts.TEST7.get2(config,0)): subconfig += 1 if test_face(cell, luts.TEST7.get2(config,1)): subconfig += 2 if test_face(cell, luts.TEST7.get2(config,2)): subconfig += 4 # Behavior depends on subconfig if subconfig == 0: result = cell.check_triangles(luts.TILING7_1, config, 3) elif subconfig == 1: result = cell.check_triangles2(luts.TILING7_2, config, 0, 5) elif subconfig == 2: result = cell.check_triangles2(luts.TILING7_2, config, 1, 5) elif subconfig == 3: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING7_3, config, 0, 9) elif subconfig == 4: result = cell.check_triangles2(luts.TILING7_2, config, 2, 5) elif subconfig == 5: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING7_3, config, 1, 9) elif subconfig == 6: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING7_3, config, 2, 9) elif subconfig == 7: if test_internal(cell, luts, case, config, subconfig, luts.TEST7.get2(config,3)): result = cell.check_triangles(luts.TILING7_4_2, config, 9) else: result = cell.check_triangles(luts.TILING7_4_1, config, 5) elif case == 8 : result = cell.check_triangles(luts.TILING8, config, 2) elif case == 9 : result = cell.check_triangles(luts.TILING9, config, 4) elif case == 10 : if test_face(cell, luts.TEST10.get2(config,0)): if test_face(cell, luts.TEST10.get2(config,1)): result = cell.check_triangles(luts.TILING10_1_1_, config, 4) else: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles(luts.TILING10_2, config, 8) else: if test_face(cell, luts.TEST10.get2(config,1)): #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles(luts.TILING10_2_, config, 8) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST10.get2(config,2)): result = cell.check_triangles(luts.TILING10_1_1, config, 4) else: result = cell.check_triangles(luts.TILING10_1_2, config, 8) elif case == 11 : result = cell.check_triangles(luts.TILING11, config, 4) elif case == 12 : if test_face(cell, luts.TEST12.get2(config,0)): if test_face(cell, luts.TEST12.get2(config,1)): result = cell.check_triangles(luts.TILING12_1_1_, config, 4) else: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles(luts.TILING12_2, config, 8) else: if test_face(cell, luts.TEST12.get2(config,1)): #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles(luts.TILING12_2_, config, 8) else: if test_internal(cell, luts, case, config, subconfig, luts.TEST12.get2(config,2)): result = cell.check_triangles(luts.TILING12_1_1, config, 4) else: result = cell.check_triangles(luts.TILING12_1_2, config, 8) elif case == 13 : # Calculate subconfig if test_face(cell, luts.TEST13.get2(config,0)): subconfig += 1 if test_face(cell, luts.TEST13.get2(config,1)): subconfig += 2 if test_face(cell, luts.TEST13.get2(config,2)): subconfig += 4 if test_face(cell, luts.TEST13.get2(config,3)): subconfig += 8 if test_face(cell, luts.TEST13.get2(config,4)): subconfig += 16 if test_face(cell, luts.TEST13.get2(config,5)): subconfig += 32 # Map via LUT subconfig = luts.SUBCONFIG13.get1(subconfig) # Behavior depends on subconfig if subconfig==0: result = cell.check_triangles(luts.TILING13_1, config, 4) elif subconfig==1: result = cell.check_triangles2(luts.TILING13_2, config, 0, 6) elif subconfig==2: result = cell.check_triangles2(luts.TILING13_2, config, 1, 6) elif subconfig==3: result = cell.check_triangles2(luts.TILING13_2, config, 2, 6) elif subconfig==4: result = cell.check_triangles2(luts.TILING13_2, config, 3, 6) elif subconfig==5: result = cell.check_triangles2(luts.TILING13_2, config, 4, 6) elif subconfig==6: result = cell.check_triangles2(luts.TILING13_2, config, 5, 6) # elif subconfig==7: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 0, 10) elif subconfig==8: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 1, 10) elif subconfig==9: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 2, 10) elif subconfig==10: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 3, 10) elif subconfig==11: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 4, 10) elif subconfig==12: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 5, 10) elif subconfig==13: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 6, 10) elif subconfig==14: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 7, 10) elif subconfig==15: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 8, 10) elif subconfig==16: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 9, 10) elif subconfig==17: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 10, 10) elif subconfig==18: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3, config, 11, 10) # elif subconfig==19: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_4, config, 0, 12) elif subconfig==20: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_4, config, 1, 12) elif subconfig==21: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_4, config, 2, 12) elif subconfig==22: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_4, config, 3, 12) # elif subconfig==23: subconfig = 0 # Note: the original source code sets the subconfig, without apparent reason if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.check_triangles2(luts.TILING13_5_1, config, 0, 6) else: result = cell.check_triangles2(luts.TILING13_5_2, config, 0, 10) elif subconfig==24: subconfig = 1 if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.check_triangles2(luts.TILING13_5_1, config, 1, 6) else: result = cell.check_triangles2(luts.TILING13_5_2, config, 1, 10) elif subconfig==25: subconfig = 2 ; if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.check_triangles2(luts.TILING13_5_1, config, 2, 6) else: result = cell.check_triangles2(luts.TILING13_5_2, config, 2, 10) elif subconfig==26: subconfig = 3 ; if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)): result = cell.check_triangles2(luts.TILING13_5_1, config, 3, 6) else: result = cell.check_triangles2(luts.TILING13_5_2, config, 3, 10) # elif subconfig==27: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 0, 10) elif subconfig==28: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 1, 10) elif subconfig==29: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 2, 10) elif subconfig==30: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 3, 10) elif subconfig==31: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 4, 10) elif subconfig==32: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 5, 10) elif subconfig==33: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config,6, 10) elif subconfig==34: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 7, 10) elif subconfig==35: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 8, 10) elif subconfig==36: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 9, 10) elif subconfig==37: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 10, 10) elif subconfig==38: #cell.calculate_center_vertex() # v12 needed result = cell.check_triangles2(luts.TILING13_3_, config, 11, 10) # elif subconfig==39: result = cell.check_triangles2(luts.TILING13_2_, config, 0, 6) elif subconfig==40: result = cell.check_triangles2(luts.TILING13_2_, config, 1, 6) elif subconfig==41: result = cell.check_triangles2(luts.TILING13_2_, config, 2, 6) elif subconfig==42: result = cell.check_triangles2(luts.TILING13_2_, config, 3, 6) elif subconfig==43: result = cell.check_triangles2(luts.TILING13_2_, config, 4, 6) elif subconfig==44: result = cell.check_triangles2(luts.TILING13_2_, config, 5, 6) # elif subconfig==45: result = cell.check_triangles(luts.TILING13_1_, config, 4) # else: print("Marching Cubes: Impossible case 13?" ) elif case == 14 : result = cell.check_triangles(luts.TILING14, config, 4) return result cdef int test_face(Cell cell, int face): """ Return True of the face contains part of the surface. """ # Get face absolute value cdef int absFace = face if face < 0: absFace *= -1 # Get values of corners A B C D cdef double A, B, C, D if absFace == 1: A, B, C, D = cell.v0, cell.v4, cell.v5, cell.v1 elif absFace == 2: A, B, C, D = cell.v1, cell.v5, cell.v6, cell.v2 elif absFace == 3: A, B, C, D = cell.v2, cell.v6, cell.v7, cell.v3 elif absFace == 4: A, B, C, D = cell.v3, cell.v7, cell.v4, cell.v0 elif absFace == 5: A, B, C, D = cell.v0, cell.v3, cell.v2, cell.v1 elif absFace == 6: A, B, C, D = cell.v4, cell.v7, cell.v6, cell.v5 # Return sign cdef double AC_BD = A*C - B*D if AC_BD > - FLT_EPSILON and AC_BD < FLT_EPSILON: return face >= 0 else: return face * A * AC_BD >= 0; # face and A invert signs cdef int test_internal(Cell cell, LutProvider luts, int case, int config, int subconfig, int s): """ Return True of the face contains part of the surface. """ # Typedefs cdef double t, At, Bt, Ct, Dt, a, b cdef int test = 0 cdef int edge = -1 # reference edge of the triangulation # Calculate At Bt Ct Dt a b # Select case 4, 10, 7, 12, 13 At, Bt, Ct, Dt = 0.0, 0.0, 0.0, 0.0 if case==4 or case==10: a = ( cell.v4 - cell.v0 ) * ( cell.v6 - cell.v2 ) - ( cell.v7 - cell.v3 ) * ( cell.v5 - cell.v1 ) b = cell.v2 * ( cell.v4 - cell.v0 ) + cell.v0 * ( cell.v6 - cell.v2 ) - cell.v1 * ( cell.v7 - cell.v3 ) - cell.v3 * ( cell.v5 - cell.v1 ) t = - b / (2*a + FLT_EPSILON) if t<0 or t>1: return s>0 ; At = cell.v0 + ( cell.v4 - cell.v0 ) * t Bt = cell.v3 + ( cell.v7 - cell.v3 ) * t Ct = cell.v2 + ( cell.v6 - cell.v2 ) * t Dt = cell.v1 + ( cell.v5 - cell.v1 ) * t elif case==6 or case==7 or case==12 or case==13: # Define edge if case == 6: edge = luts.TEST6.get2(config, 2) elif case == 7: edge = luts.TEST7.get2(config, 4) elif case == 12: edge = luts.TEST12.get2(config, 3) elif case == 13: edge = luts.TILING13_5_1.get3(config, subconfig, 0) if edge==0: t = cell.v0 / ( cell.v0 - cell.v1 + FLT_EPSILON ) At = 0 Bt = cell.v3 + ( cell.v2 - cell.v3 ) * t Ct = cell.v7 + ( cell.v6 - cell.v7 ) * t Dt = cell.v4 + ( cell.v5 - cell.v4 ) * t elif edge==1: t = cell.v1 / ( cell.v1 - cell.v2 + FLT_EPSILON ) At = 0 Bt = cell.v0 + ( cell.v3 - cell.v0 ) * t Ct = cell.v4 + ( cell.v7 - cell.v4 ) * t Dt = cell.v5 + ( cell.v6 - cell.v5 ) * t elif edge==2: t = cell.v2 / ( cell.v2 - cell.v3 + FLT_EPSILON ) At = 0 Bt = cell.v1 + ( cell.v0 - cell.v1 ) * t Ct = cell.v5 + ( cell.v4 - cell.v5 ) * t Dt = cell.v6 + ( cell.v7 - cell.v6 ) * t elif edge==3: t = cell.v3 / ( cell.v3 - cell.v0 + FLT_EPSILON ) At = 0 Bt = cell.v2 + ( cell.v1 - cell.v2 ) * t Ct = cell.v6 + ( cell.v5 - cell.v6 ) * t Dt = cell.v7 + ( cell.v4 - cell.v7 ) * t elif edge==4: t = cell.v4 / ( cell.v4 - cell.v5 + FLT_EPSILON ) At = 0 Bt = cell.v7 + ( cell.v6 - cell.v7 ) * t Ct = cell.v3 + ( cell.v2 - cell.v3 ) * t Dt = cell.v0 + ( cell.v1 - cell.v0 ) * t elif edge==5: t = cell.v5 / ( cell.v5 - cell.v6 + FLT_EPSILON ) At = 0 Bt = cell.v4 + ( cell.v7 - cell.v4 ) * t Ct = cell.v0 + ( cell.v3 - cell.v0 ) * t Dt = cell.v1 + ( cell.v2 - cell.v1 ) * t elif edge==6: t = cell.v6 / ( cell.v6 - cell.v7 + FLT_EPSILON ) At = 0 Bt = cell.v5 + ( cell.v4 - cell.v5 ) * t Ct = cell.v1 + ( cell.v0 - cell.v1 ) * t Dt = cell.v2 + ( cell.v3 - cell.v2 ) * t elif edge==7: t = cell.v7 / ( cell.v7 - cell.v4 + FLT_EPSILON ) At = 0 Bt = cell.v6 + ( cell.v5 - cell.v6 ) * t Ct = cell.v2 + ( cell.v1 - cell.v2 ) * t Dt = cell.v3 + ( cell.v0 - cell.v3 ) * t elif edge==8: t = cell.v0 / ( cell.v0 - cell.v4 + FLT_EPSILON ) At = 0 Bt = cell.v3 + ( cell.v7 - cell.v3 ) * t Ct = cell.v2 + ( cell.v6 - cell.v2 ) * t Dt = cell.v1 + ( cell.v5 - cell.v1 ) * t elif edge==9: t = cell.v1 / ( cell.v1 - cell.v5 + FLT_EPSILON ) At = 0 Bt = cell.v0 + ( cell.v4 - cell.v0 ) * t Ct = cell.v3 + ( cell.v7 - cell.v3 ) * t Dt = cell.v2 + ( cell.v6 - cell.v2 ) * t elif edge==10: t = cell.v2 / ( cell.v2 - cell.v6 + FLT_EPSILON ) At = 0 Bt = cell.v1 + ( cell.v5 - cell.v1 ) * t Ct = cell.v0 + ( cell.v4 - cell.v0 ) * t Dt = cell.v3 + ( cell.v7 - cell.v3 ) * t elif edge==11: t = cell.v3 / ( cell.v3 - cell.v7 + FLT_EPSILON ) At = 0 Bt = cell.v2 + ( cell.v6 - cell.v2 ) * t Ct = cell.v1 + ( cell.v5 - cell.v1 ) * t Dt = cell.v0 + ( cell.v4 - cell.v0 ) * t else: print( "Invalid edge %i." % edge ) else: print( "Invalid ambiguous case %i." % case ) # Process results if At >= 0: test += 1 if Bt >= 0: test += 2 if Ct >= 0: test += 4 if Dt >= 0: test += 8 # Determine what to return if test==0: return s>0 elif test==1: return s>0 elif test==2: return s>0 elif test==3: return s>0 elif test==4: return s>0 elif test==5: if At * Ct - Bt * Dt < FLT_EPSILON: return s>0 elif test==6: return s>0 elif test==7: return s<0 elif test==8: return s>0 elif test==9: return s>0 elif test==10: if At * Ct - Bt * Dt >= FLT_EPSILON: return s>0 elif test==11: return s<0 elif test==12: return s>0 elif test==13: return s<0 elif test==14: return s<0 elif test==15: return s<0 else: return s<0 ================================================ FILE: meshudf/_marching_cubes_lewiner_luts.py ================================================ # -*- coding: utf-8 -*- # This file was auto-generated from `mc_meta/LookUpTable.h` by # `mc_meta/createluts.py`. #static const char casesClassic[256][16] CASESCLASSIC = (256, 16), """ /////////////////////wAIA/////////////////8AAQn/////////////////AQgDCQgB//// /////////wECCv////////////////8ACAMBAgr/////////////CQIKAAIJ/////////////wII AwIKCAoJCP////////8DCwL/////////////////AAsCCAsA/////////////wEJAAIDC/////// //////8BCwIBCQsJCAv/////////AwoBCwoD/////////////wAKAQAICggLCv////////8DCQAD CwkLCgn/////////CQgKCggL/////////////wQHCP////////////////8EAwAHAwT///////// ////AAEJCAQH/////////////wQBCQQHAQcDAf////////8BAgoIBAf/////////////AwQHAwAE AQIK/////////wkCCgkAAggEB/////////8CCgkCCQcCBwMHCQT/////CAQHAwsC//////////// /wsEBwsCBAIABP////////8JAAEIBAcCAwv/////////BAcLCQQLCQsCCQIB/////wMKAQMLCgcI BP////////8BCwoBBAsBAAQHCwT/////BAcICQALCQsKCwAD/////wQHCwQLCQkLCv////////8J BQT/////////////////CQUEAAgD/////////////wAFBAEFAP////////////8IBQQIAwUDAQX/ ////////AQIKCQUE/////////////wMACAECCgQJBf////////8FAgoFBAIEAAL/////////AgoF AwIFAwUEAwQI/////wkFBAIDC/////////////8ACwIACAsECQX/////////AAUEAAEFAgML//// /////wIBBQIFCAIICwQIBf////8KAwsKAQMJBQT/////////BAkFAAgBCAoBCAsK/////wUEAAUA CwULCgsAA/////8FBAgFCAoKCAv/////////CQcIBQcJ/////////////wkDAAkFAwUHA/////// //8ABwgAAQcBBQf/////////AQUDAwUH/////////////wkHCAkFBwoBAv////////8KAQIJBQAF AwAFBwP/////CAACCAIFCAUHCgUC/////wIKBQIFAwMFB/////////8HCQUHCAkDCwL///////// CQUHCQcCCQIAAgcL/////wIDCwABCAEHCAEFB/////8LAgELAQcHAQX/////////CQUICAUHCgED CgML/////wUHAAUACQcLAAEACgsKAP8LCgALAAMKBQAIAAcFBwD/CwoFBwsF/////////////woG Bf////////////////8ACAMFCgb/////////////CQABBQoG/////////////wEIAwEJCAUKBv// //////8BBgUCBgH/////////////AQYFAQIGAwAI/////////wkGBQkABgACBv////////8FCQgF CAIFAgYDAgj/////AgMLCgYF/////////////wsACAsCAAoGBf////////8AAQkCAwsFCgb///// ////BQoGAQkCCQsCCQgL/////wYDCwYFAwUBA/////////8ACAsACwUABQEFCwb/////AwsGAAMG AAYFAAUJ/////wYFCQYJCwsJCP////////8FCgYEBwj/////////////BAMABAcDBgUK//////// /wEJAAUKBggEB/////////8KBgUBCQcBBwMHCQT/////BgECBgUBBAcI/////////wECBQUCBgMA BAMEB/////8IBAcJAAUABgUAAgb/////BwMJBwkEAwIJBQkGAgYJ/wMLAgcIBAoGBf////////8F CgYEBwIEAgACBwv/////AAEJBAcIAgMLBQoG/////wkCAQkLAgkECwcLBAUKBv8IBAcDCwUDBQEF Cwb/////BQELBQsGAQALBwsEAAQL/wAFCQAGBQADBgsGAwgEB/8GBQkGCQsEBwkHCwn/////CgQJ BgQK/////////////wQKBgQJCgAIA/////////8KAAEKBgAGBAD/////////CAMBCAEGCAYEBgEK /////wEECQECBAIGBP////////8DAAgBAgkCBAkCBgT/////AAIEBAIG/////////////wgDAggC BAQCBv////////8KBAkKBgQLAgP/////////AAgCAggLBAkKBAoG/////wMLAgABBgAGBAYBCv// //8GBAEGAQoECAECAQsICwH/CQYECQMGCQEDCwYD/////wgLAQgBAAsGAQkBBAYEAf8DCwYDBgAA BgT/////////BgQICwYI/////////////wcKBgcICggJCv////////8ABwMACgcACQoGBwr///// CgYHAQoHAQcIAQgA/////woGBwoHAQEHA/////////8BAgYBBggBCAkIBgf/////AgYJAgkBBgcJ AAkDBwMJ/wcIAAcABgYAAv////////8HAwIGBwL/////////////AgMLCgYICggJCAYH/////wIA BwIHCwAJBwYHCgkKB/8BCAABBwgBCgcGBwoCAwv/CwIBCwEHCgYBBgcB/////wgJBggGBwkBBgsG AwEDBv8ACQELBgf/////////////BwgABwAGAwsACwYA/////wcLBv////////////////8HBgv/ ////////////////AwAICwcG/////////////wABCQsHBv////////////8IAQkIAwELBwb///// ////CgECBgsH/////////////wECCgMACAYLB/////////8CCQACCgkGCwf/////////BgsHAgoD CggDCgkI/////wcCAwYCB/////////////8HAAgHBgAGAgD/////////AgcGAgMHAAEJ//////// /wEGAgEIBgEJCAgHBv////8KBwYKAQcBAwf/////////CgcGAQcKAQgHAQAI/////wADBwAHCgAK CQYKB/////8HBgoHCggICgn/////////BggECwgG/////////////wMGCwMABgAEBv////////8I BgsIBAYJAAH/////////CQQGCQYDCQMBCwMG/////wYIBAYLCAIKAf////////8BAgoDAAsABgsA BAb/////BAsIBAYLAAIJAgoJ/////woJAwoDAgkEAwsDBgQGA/8IAgMIBAIEBgL/////////AAQC BAYC/////////////wEJAAIDBAIEBgQDCP////8BCQQBBAICBAb/////////CAEDCAYBCAQGBgoB /////woBAAoABgYABP////////8EBgMEAwgGCgMAAwkKCQP/CgkEBgoE/////////////wQJBQcG C/////////////8ACAMECQULBwb/////////BQABBQQABwYL/////////wsHBggDBAMFBAMBBf// //8JBQQKAQIHBgv/////////BgsHAQIKAAgDBAkF/////wcGCwUECgQCCgQAAv////8DBAgDBQQD AgUKBQILBwb/BwIDBwYCBQQJ/////////wkFBAAIBgAGAgYIB/////8DBgIDBwYBBQAFBAD///// BgIIBggHAgEIBAgFAQUI/wkFBAoBBgEHBgEDB/////8BBgoBBwYBAAcIBwAJBQT/BAAKBAoFAAMK BgoHAwcK/wcGCgcKCAUECgQICv////8GCQUGCwkLCAn/////////AwYLAAYDAAUGAAkF/////wAL CAAFCwABBQUGC/////8GCwMGAwUFAwH/////////AQIKCQULCQsICwUG/////wALAwAGCwAJBgUG CQECCv8LCAULBQYIAAUKBQIAAgX/BgsDBgMFAgoDCgUD/////wUICQUCCAUGAgMIAv////8JBQYJ BgAABgL/////////AQUIAQgABQYIAwgCBgII/wEFBgIBBv////////////8BAwYBBgoDCAYFBgkI CQb/CgEACgAGCQUABQYA/////wADCAUGCv////////////8KBQb/////////////////CwUKBwUL /////////////wsFCgsHBQgDAP////////8FCwcFCgsBCQD/////////CgcFCgsHCQgBCAMB//// /wsBAgsHAQcFAf////////8ACAMBAgcBBwUHAgv/////CQcFCQIHCQACAgsH/////wcFAgcCCwUJ AgMCCAkIAv8CBQoCAwUDBwX/////////CAIACAUCCAcFCgIF/////wkAAQUKAwUDBwMKAv////8J CAIJAgEIBwIKAgUHBQL/AQMFAwcF/////////////wAIBwAHAQEHBf////////8JAAMJAwUFAwf/ ////////CQgHBQkH/////////////wUIBAUKCAoLCP////////8FAAQFCwAFCgsLAwD/////AAEJ CAQKCAoLCgQF/////woLBAoEBQsDBAkEAQMBBP8CBQECCAUCCwgEBQj/////AAQLAAsDBAULAgsB BQEL/wACBQAFCQILBQQFCAsIBf8JBAUCCwP/////////////AgUKAwUCAwQFAwgE/////wUKAgUC BAQCAP////////8DCgIDBQoDCAUEBQgAAQn/BQoCBQIEAQkCCQQC/////wgEBQgFAwMFAf////// //8ABAUBAAX/////////////CAQFCAUDCQAFAAMF/////wkEBf////////////////8ECwcECQsJ Cgv/////////AAgDBAkHCQsHCQoL/////wEKCwELBAEEAAcEC/////8DAQQDBAgBCgQHBAsKCwT/ BAsHCQsECQILCQEC/////wkHBAkLBwkBCwILAQAIA/8LBwQLBAICBAD/////////CwcECwQCCAME AwIE/////wIJCgIHCQIDBwcECf////8JCgcJBwQKAgcIBwACAAf/AwcKAwoCBwQKAQoABAAK/wEK AggHBP////////////8ECQEEAQcHAQP/////////BAkBBAEHAAgBCAcB/////wQAAwcEA/////// //////8ECAf/////////////////CQoICgsI/////////////wMACQMJCwsJCv////////8AAQoA CggICgv/////////AwEKCwMK/////////////wECCwELCQkLCP////////8DAAkDCQsBAgkCCwn/ ////AAILCAAL/////////////wMCC/////////////////8CAwgCCAoKCAn/////////CQoCAAkC /////////////wIDCAIICgABCAEKCP////8BCgL/////////////////AQMICQEI//////////// /wAJAf////////////////8AAwj//////////////////////////////////////w== """ #static const char cases[256][2] CASES = (256, 2), """ AP8BAAEBAgABAgMAAgMFAAEDAgEDAwUBAgUFBAUJCAABBAICAwQFAgQCBgIGCQsAAwgFBQcDCQEG EA4DDAwFGAEFAwECBAUDAwYHAAUKCQAEAwYEBgsOAQYRDAQLBgUZAggFBwUMCAEGEgwFDgcFHAYV CwQMDwUeCgUGIAYnAgwBBgQAAwUGAAIGBgMFCw4AAwkGBQcEDAEFDgsDCQQFGgMKBgYHBQwCBhMK AQwNBhgHBwwJDQEHCQwUBiEHDQMMAgoGBwUNCwIFEAwHCAMFHQYWCgIMEQYbDgkGIgUnAg4FFA4F CQUFIAsKBiMFKQIQDBcGJQcOAxAGLgQGAxUBCAEHAwIEAQYBAwcHAQYKDAACBwUGBgwLAQUPCQIO BgUbAgkFCAYNDgIGFAwGCgMGGQUSCAIMEAUfCwkFIgYoAg0DCwcCBg4MAwcGDQAMDgcIBhcMCgoE BhwMFQcKBikDDQUVCQMLCAUhDBYHCwYqAw4OCwUkBiwCEQYvAxIEBwEJAgsGCAYPCgAFEQwICwcG GgUTDgQMEgYdCAQFIwUoAg8FFgsFDBMGHg4KBiQGKwQECQcFJQcPAxEFLAITAxYBCgUXDAsOCAYf CQYHDAUqAw8LCwYmBi0EBQUtAxMCFQELCAUFJgUrAhIFLgMUAhYBDAUvAhQDFwENAhcBDgEPAP8= """ #static const char tiling1[16][3] TILING1 = (16, 3), """ AAgDAAEJAQIKAwsCBAcICQUECgYFBwYLBwsGCgUGCQQFBAgHAwILAQoCAAkBAAMI """ #static const char tiling2[24][6] TILING2 = (24, 6), """ AQgDCQgBAAsCCAsABAMABwMECQIKAAIJAAUEAQUAAwoBCwoDAQYFAgYBBwIDBgIHCQcIBQcJBggE CwgGCgQJBgQKCwUKBwULCwoFBwsFCgkEBgoEBgQICwYICQgHBQkHBwMCBgcCAQUGAgEGAwEKCwMK AAQFAQAFCQoCAAkCBAADBwQDAAILCAALAQMICQEI """ #static const char tiling3_1[24][6] TILING3_1 = (24, 6), """ AAgDAQIKCQUEAAgDAwAICwcGAQkAAgMLAAEJCAQHCQABBQoGAQIKCQUECgECBgsHCAQHAwsCAgML CgYFBQoGBAcIBAkFBwYLBQkECwYHBgoFCAcECwMCBQYKBwQIAgsDAgEKBwsGCgIBBAUJAQAJBgoF CQEABwQIAAkBCwMCCAADBgcLBAUJAwgAAwgACgIB """ #static const char tiling3_2[24][12] TILING3_2 = (24, 12), """ CgMCCggDCgEACAoAAwQIAwUEAwAJBQMJBggHBgAIBgsDAAYDCwADCwkACwIBCQsBBwkEBwEJBwgA AQcABgEKBgABCQAGCQYFBAoFBAIKBAkBAgQBBwILBwECBwYKAQcKAgcLAgQHAgMIBAIIBQsGBQML BQoCAwUCCAYHCAoGCAQFCggFCwUGCwkFCwcECQsEBgULBQkLBAcLBAsJBwYIBgoIBQQIBQgKBgsF CwMFAgoFAgUDCwcCBwQCCAMCCAIECwIHAgEHCgYHCgcBBQoECgIEAQkEAQQCCgEGAQAGBgAJBQYJ BAkHCQEHAAgHAAcBAwALAAkLAQILAQsJBwgGCAAGAwsGAwYACAQDBAUDCQADCQMFAgMKAwgKAAEK AAoI """ #static const char tiling4_1[8][6] TILING4_1 = (8, 6), """ AAgDBQoGAAEJCwcGAQIKCAQHCQUEAgMLBAUJCwMCCgIBBwQICQEABgcLAwgABgoF """ #static const char tiling4_2[8][18] TILING4_2 = (8, 18), """ CAUABQgGAwYIBgMKAAoDCgAFCQYBBgkHAAcJBwALAQsACwEGCgcCBwoEAQQKBAEIAggBCAIHCwQD BAsFAgULBQIJAwkCCQMEAwQLBQsECwUCCQIFAgkDBAMJAgcKBAoHCgQBCAEEAQgCBwIIAQYJBwkG CQcACwAHAAsBBgELAAUIBggFCAYDCgMGAwoABQAK """ #static const char tiling5[48][9] TILING5 = (48, 9), """ AggDAgoICgkIAQsCAQkLCQgLBAEJBAcBBwMBCAUECAMFAwEFAAoBAAgKCAsKCwQHCwIEAgAEBwAI BwYABgIACQMACQUDBQcDAwYLAwAGAAQGAwkAAwsJCwoJBQIKBQQCBAACCQYFCQAGAAIGAAcIAAEH AQUHCgABCgYABgQABgMLBgUDBQEDCgcGCgEHAQMHAQQJAQIEAgYECwECCwcBBwUBCAIDCAQCBAYC AgUKAgMFAwcFBwoGBwgKCAkKBgkFBgsJCwgJBQgEBQoICgsIBAsHBAkLCQoLBAcLBAsJCQsKBQQI BQgKCggLBgUJBgkLCwkIBwYKBwoICAoJAgoFAgUDAwUHCAMCCAIEBAIGCwIBCwEHBwEFAQkEAQQC AgQGCgYHCgcBAQcDBgsDBgMFBQMBCgEACgAGBgAEAAgHAAcBAQcFCQUGCQYAAAYCBQoCBQIEBAIA AwAJAwkLCwkKAwsGAwYAAAYECQADCQMFBQMHBwgABwAGBgACCwcECwQCAgQAAAEKAAoICAoLCAQF CAUDAwUBBAkBBAEHBwEDAQILAQsJCQsIAgMIAggKCggJ """ #static const char tiling6_1_1[48][9] TILING6_1_1 = (48, 9), """ BgUKAwEICQgBCwcGCQMBAwkIAQIKBwAEAAcDAwAIBQIGAgUBBQQJAgALCAsACgYFCAIAAggLCgYF AAQDBwMEAwAIBgQKCQoECAMACgcFBwoLCAQHCgACAAoJBwYLAAIJCgkCAgMLBAEFAQQAAAEJBgMH AwYCCQABCwQGBAsICwcGAQUABAAFAAEJBwULCgsFBAcIAQMKCwoDCQUECwEDAQsKCgECCAUHBQgJ CAQHAgYBBQEGAQIKBAYICwgGAgMLBQcJCAkHCwIDCQYEBgkKCQUEAwcCBgIHBAUJAgcDBwIGAwIL BAYJCgkGCwMCCQcFBwkICgIBCAYEBggLBwQIAQYCBgEFAgEKBwUICQgFBAUJAwELCgsBCAcECgMB AwoLCQEACwUHBQsKBgcLAAUBBQAEAQAJBgQLCAsECQEABwMGAgYDCwMCBQEEAAQBCwYHCQIAAgkK BwQIAgAKCQoAAAMIBQcKCwoHCAADCgQGBAoJBQYKAwQABAMHBQYKAAIICwgCCQQFCwACAAsICAAD BgIFAQUCCgIBBAAHAwcABgcLAQMJCAkDCgUGCAEDAQgJ """ #static const char tiling6_1_2[48][27] TILING6_1_2 = (48, 27), """ AQwDDAoDBgMKAwYIBQgGCAUMDAkIAQkMDAUKAQwDAQsMCwEGCQYBBgkHDAcJCQgMDAgDCwcMBAwA BAEMAQQKBwoECgcCDAIHBwMMDAMAAQIMBgwCBgMMAwYIBQgGCAUADAAFBQEMDAECAwAMAAwCDAkC BQIJAgULBAsFCwQMDAgLAAgMDAQJAAwCAAoMCgAFCAUABQgGDAYICAsMDAsCCgYMBAwADAUACgAF AAoDBgMKAwYMDAcDBAcMDAYFBAwGDAgGAwYIBgMKAAoDCgAMDAkKBAkMDAAIBQwHBQgMCAUACgAF AAoDDAMKCgsMDAsHCAMMAgwAAggMCAIHCgcCBwoEDAQKCgkMDAkACAQMAgwADAsABwALAAcJBgkH CQYMDAoJAgoMDAYLBQwBBQIMAgULBAsFCwQDDAMEBAAMDAABAgMMBwwDBwAMAAcJBgkHCQYBDAEG BgIMDAIDAAEMBgwEBgkMCQYBCwEGAQsADAALCwgMDAgECQAMBQwBDAYBCwEGAQsABwALAAcMDAQA BQQMDAcGBQwHDAkHAAcJBwALAQsACwEMDAoLBQoMDAEJAwwBDAgBBAEIAQQKBwoECgcMDAsKAwsM DAcIAwwBAwkMCQMECwQDBAsFDAULCwoMDAoBCQUMBwwFBwoMCgcCCAIHAggBDAEICAkMDAkFCgEM BgwCDAcCCAIHAggBBAEIAQQMDAUBBgUMDAQHBgwEDAoEAQQKBAEIAggBCAIMDAsIBgsMDAIKBwwF DAsFAgULBQIJAwkCCQMMDAgJBwgMDAMLBAwGBAsMCwQDCQMEAwkCDAIJCQoMDAoGCwIMBwwDDAQD CQMEAwkCBQIJAgUMDAYCBwYMDAUEAwwHAwQMBAMJAgkDCQIFDAUCAgYMDAYHBAUMBgwEDAsEAwQL BAMJAgkDCQIMDAoJBgoMDAILBQwHBQsMCwUCCQIFAgkDDAMJCQgMDAgHCwMMBAwGBAoMCgQBCAEE AQgCDAIICAsMDAsGCgIMAgwGAgcMBwIIAQgCCAEEDAQBAQUMDAUGBwQMBQwHDAoHAgcKBwIIAQgC CAEMDAkIBQkMDAEKAQwDDAkDBAMJAwQLBQsECwUMDAoLAQoMDAUJAQwDAQgMCAEECgQBBAoHDAcK CgsMDAsDCAcMBwwFBwkMCQcACwAHAAsBDAELCwoMDAoFCQEMAQwFAQYMBgELAAsBCwAHDAcAAAQM DAQFBgcMBAwGDAkGAQYJBgELAAsBCwAMDAgLBAgMDAAJAwwHDAAHCQcABwkGAQYJBgEMDAIGAwIM DAEAAQwFDAIFCwUCBQsEAwQLBAMMDAAEAQAMDAMCAAwCAAsMCwAHCQcABwkGDAYJCQoMDAoCCwYM AAwCDAgCBwIIAgcKBAoHCgQMDAkKAAkMDAQIBwwFDAgFAAUIBQAKAwoACgMMDAsKBwsMDAMIBgwE BggMCAYDCgMGAwoADAAKCgkMDAkECAAMAAwEAAUMBQAKAwoACgMGDAYDAwcMDAcEBQYMAgwADAoA BQAKAAUIBggFCAYMDAsIAgsMDAYKAgwAAgkMCQIFCwUCBQsEDAQLCwgMDAgACQQMAgwGDAMGCAYD BggFAAUIBQAMDAEFAgEMDAADAAwEDAEECgQBBAoHAgcKBwIMDAMHAAMMDAIBAwwBDAsBBgELAQYJ BwkGCQcMDAgJAwgMDAcLAwwBAwoMCgMGCAYDBggFDAUICAkMDAkBCgUM """ #static const char tiling6_2[48][15] TILING6_2 = (48, 15), """ AQoDBgMKAwYIBQgGCAUJAQsDCwEGCQYBBgkHCAcJBAEAAQQKBwoECgcCAwIHBgMCAwYIBQgGCAUA AQAFAAkCBQIJAgULBAsFCwQIAAoCCgAFCAUABQgGCwYIBAUACgAFAAoDBgMKAwYHBAgGAwYIBgMK AAoDCgAJBQgHCAUACgAFAAoDCwMKAggACAIHCgcCBwoECQQKAgsABwALAAcJBgkHCQYKBQIBAgUL BAsFCwQDAAMEBwADAAcJBgkHCQYBAgEGBgkECQYBCwEGAQsACAALBQYBCwEGAQsABwALAAcEBQkH AAcJBwALAQsACwEKAwgBBAEIAQQKBwoECgcLAwkBCQMECwQDBAsFCgULBwoFCgcCCAIHAggBCQEI BgcCCAIHAggBBAEIAQQFBgoEAQQKBAEIAggBCAILBwsFAgULBQIJAwkCCQMIBAsGCwQDCQMEAwkC CgIJBwQDCQMEAwkCBQIJAgUGAwQHBAMJAgkDCQIFBgUCBgsEAwQLBAMJAgkDCQIKBQsHCwUCCQIF AgkDCAMJBAoGCgQBCAEEAQgCCwIIAgcGBwIIAQgCCAEEBQQBBQoHAgcKBwIIAQgCCAEJAQkDBAMJ AwQLBQsECwUKAQgDCAEECgQBBAoHCwcKBwkFCQcACwAHAAsBCgELAQYFBgELAAsBCwAHBAcABAkG AQYJBgELAAsBCwAIAwAHCQcABwkGAQYJBgECAQIFCwUCBQsEAwQLBAMAAAsCCwAHCQcABwkGCgYJ AAgCBwIIAgcKBAoHCgQJBwgFAAUIBQAKAwoACgMLBggECAYDCgMGAwoACQAKAAUEBQAKAwoACgMG BwYDAgoABQAKAAUIBggFCAYLAgkACQIFCwUCBQsECAQLAgMGCAYDBggFAAUIBQABAAEECgQBBAoH AgcKBwIDAwsBBgELAQYJBwkGCQcIAwoBCgMGCAYDBggFCQUI """ #static const char tiling7_1[16][9] TILING7_1 = (16, 9), """ CQUECgECCAMACwcGCAMACgECAwAIBQQJBwYLCAQHCQABCwIDCgYFCwIDCQABAAEJBgUKBAcIAQIK BwYLBQQJAgMLBAcIBgUKCwMCCAcECgUGCgIBCwYHCQQFCQEACgUGCAcEBQYKAwILAQAJBwQIAQAJ AwILCAADCQQFCwYHBgcLAAMIAgEKBAUJAgEKAAMI """ #static const char tiling7_2[16][3][15] TILING7_2 = (16, 3, 15), """ AQIKAwQIBAMFAAUDBQAJAwAICQEEAgQBBAIFCgUCCQUEAAoBCgAICggCAwIIAwAIAQYKBgEHAgcB BwILAQIKCwMGAAYDBgAHCAcACwcGAggDCAIKCAoAAQAKCQUECwMGAAYDBgAHCAcACwcGAwQIBAMF AAUDBQAJAwAIBAkHCwcJBQsJCwUGAAEJAgcLBwIEAwQCBAMIAgMLCAAHAQcABwEECQQBCAQHAwkA CQMLCQsBAgELAgMLAAUJBQAGAQYABgEKAAEJCgIFAwUCBQMGCwYDBgUKAQsCCwEJCwkDAAMJBgUK CAAHAQcABwEECQQBCAQHAAUJBQAGAQYABgEKAAEJBQoECAQKBggKCAYHCwcGCQEEAgQBBAIFCgUC CQUEAQYKBgEHAgcBBwILAQIKBgsFCQULBwkLCQcECAQHCgIFAwUCBQMGCwYDBgUKAgcLBwIEAwQC BAMIAgMLBwgGCgYIBAoICgQFBwQIBQIKAgUDBgMFAwYLCgUGCwcCBAIHAgQDCAMECwMCBggHCAYK CAoEBQQKBgcLBAEJAQQCBQIEAgUKBAUJCgYBBwEGAQcCCwIHCgIBBQsGCwUJCwkHBAcJCgUGBwAI AAcBBAEHAQQJBwQICQUABgAFAAYBCgEGCQEABAoFCgQICggGBwYICwMCCQUABgAFAAYBCgEGCQEA BQIKAgUDBgMFAwYLCgUGAgsBCQELAwkLCQMACQEACwcCBAIHAgQDCAMECwMCBwAIAAcBBAEHAQQJ BwQIAAkDCwMJAQsJCwECBAUJBgMLAwYABwAGAAcIBgcLCAQDBQMEAwUACQAFCAADBwkECQcLCQsF BgULCAADCgYBBwEGAQcCCwIHCgIBBgMLAwYABwAGAAcIBgcLAwgCCgIIAAoICgABCgIBCAQDBQME AwUACQAFCAADBAEJAQQCBQIEAgUKBAUJAQoACAAKAggKCAID """ #static const char tiling7_3[16][3][27] TILING7_3 = (16, 3, 27), """ DAIKDAoFDAUEDAQIDAgDDAMADAAJDAkBDAECDAUEDAQIDAgDDAMCDAIKDAoBDAEADAAJDAkFBQQM CgUMAgoMAwIMCAMMAAgMAQAMCQEMBAkMDAAIDAgHDAcGDAYKDAoBDAECDAILDAsDDAMADAcGDAYK DAoBDAEADAAIDAgDDAMCDAILDAsHBwYMCAcMAAgMAQAMCgEMAgoMAwIMCwMMBgsMCQUMAAkMAwAM CwMMBgsMBwYMCAcMBAgMBQQMAwAMCwMMBgsMBQYMCQUMBAkMBwQMCAcMAAgMDAMADAAJDAkFDAUG DAYLDAsHDAcEDAQIDAgDDAEJDAkEDAQHDAcLDAsCDAIDDAMIDAgADAABDAQHDAcLDAsCDAIBDAEJ DAkADAADDAMIDAgEBAcMCQQMAQkMAgEMCwIMAwsMAAMMCAAMBwgMDAMLDAsGDAYFDAUJDAkADAAB DAEKDAoCDAIDDAYFDAUJDAkADAADDAMLDAsCDAIBDAEKDAoGBgUMCwYMAwsMAAMMCQAMAQkMAgEM CgIMBQoMCgYMAQoMAAEMCAAMBwgMBAcMCQQMBQkMBgUMAAEMCAAMBwgMBgcMCgYMBQoMBAUMCQQM AQkMDAABDAEKDAoGDAYHDAcIDAgEDAQFDAUJDAkACwcMAgsMAQIMCQEMBAkMBQQMCgUMBgoMBwYM AQIMCQEMBAkMBwQMCwcMBgsMBQYMCgUMAgoMDAECDAILDAsHDAcEDAQJDAkFDAUGDAYKDAoBCAQM AwgMAgMMCgIMBQoMBgUMCwYMBwsMBAcMAgMMCgIMBQoMBAUMCAQMBwgMBgcMCwYMAwsMDAIDDAMI DAgEDAQFDAUKDAoGDAYHDAcLDAsCDAQIDAgDDAMCDAIKDAoFDAUGDAYLDAsHDAcEDAMCDAIKDAoF DAUEDAQIDAgHDAcGDAYLDAsDAwIMCAMMBAgMBQQMCgUMBgoMBwYMCwcMAgsMDAcLDAsCDAIBDAEJ DAkEDAQFDAUKDAoGDAYHDAIBDAEJDAkEDAQHDAcLDAsGDAYFDAUKDAoCAgEMCwIMBwsMBAcMCQQM BQkMBgUMCgYMAQoMDAYKDAoBDAEADAAIDAgHDAcEDAQJDAkFDAUGDAEADAAIDAgHDAcGDAYKDAoF DAUEDAQJDAkBAQAMCgEMBgoMBwYMCAcMBAgMBQQMCQUMAAkMCwMMBgsMBQYMCQUMAAkMAQAMCgEM AgoMAwIMBQYMCQUMAAkMAwAMCwMMAgsMAQIMCgEMBgoMDAUGDAYLDAsDDAMADAAJDAkBDAECDAIK DAoFCQEMBAkMBwQMCwcMAgsMAwIMCAMMAAgMAQAMBwQMCwcMAgsMAQIMCQEMAAkMAwAMCAMMBAgM DAcEDAQJDAkBDAECDAILDAsDDAMADAAIDAgHDAUJDAkADAADDAMLDAsGDAYHDAcIDAgEDAQFDAAD DAMLDAsGDAYFDAUJDAkEDAQHDAcIDAgAAAMMCQAMBQkMBgUMCwYMBwsMBAcMCAQMAwgMCAAMBwgM BgcMCgYMAQoMAgEMCwIMAwsMAAMMBgcMCgYMAQoMAAEMCAAMAwgMAgMMCwIMBwsMDAYHDAcIDAgA DAABDAEKDAoCDAIDDAMLDAsGCgIMBQoMBAUMCAQMAwgMAAMMCQAMAQkMAgEMBAUMCAQMAwgMAgMM CgIMAQoMAAEMCQAMBQkMDAQFDAUKDAoCDAIDDAMIDAgADAABDAEJDAkE """ #static const char tiling7_4_1[16][15] TILING7_4_1 = (16, 15), """ AwQIBAMKAgoDBAoFCQEAAQYKBgEIAAgBBggHCwMCCwMGCQYDBgkFAAkDBwQIAgcLBwIJAQkCBwkE CAADAAUJBQALAwsABQsGCgIBCAAHCgcABwoGAQoABAUJCQEECwQBBAsHAgsBBQYKCgIFCAUCBQgE AwgCBgcLBQIKAgUIBAgFAggDCwcGBAEJAQQLBwsEAQsCCgYFBwAIAAcKBgoHAAoBCQUECQUACwAF AAsDBgsFAQIKCwcCCQIHAgkBBAkHAwAIBgMLAwYJBQkGAwkACAQHCgYBCAEGAQgABwgGAgMLCAQD CgMEAwoCBQoEAAEJ """ #static const char tiling7_4_2[16][27] TILING7_4_2 = (16, 27), """ CQQIBAkFCgUJAQoJCgECAAIBAgADCAMACQgACwYKBgsHCAcLAwgLCAMAAgADAAIBCgECCwoCCwMI AAgDCAAJCAkEBQQJBAUHBgcFBwYLBwsICAcLBwgECQQIAAkICQABAwEAAQMCCwIDCAsDCgUJBQoG CwYKAgsKCwIDAQMCAwEACQABCgkBCAAJAQkACQEKCQoFBgUKBQYEBwQGBAcIBAgJCQEKAgoBCgIL CgsGBwYLBgcFBAUHBQQJBQkKCgILAwsCCwMICwgHBAcIBwQGBQYEBgUKBgoLCwIKAgsDCAMLBwgL CAcEBgQHBAYFCgUGCwoGCgEJAQoCCwIKBgsKCwYHBQcGBwUECQQFCgkFCQAIAAkBCgEJBQoJCgUG BAYFBgQHCAcECQgECQUKBgoFCgYLCgsCAwILAgMBAAEDAQAJAQkKCwcIBAgHCAQJCAkAAQAJAAED AgMBAwILAwsICAMLAwgACQAIBAkICQQFBwUEBQcGCwYHCAsHCgYLBwsGCwcICwgDAAMIAwACAQIA AgEKAgoLCAQJBQkECQUKCQoBAgEKAQIAAwACAAMIAAgJ """ #static const char tiling8[6][6] TILING8 = (6, 6), """ CQgKCggLAQUDAwUHAAQCBAYCAAIEBAIGAQMFAwcFCQoICgsI """ #static const char tiling9[8][12] TILING9 = (8, 12), """ AgoFAwIFAwUEAwQIBAcLCQQLCQsCCQIBCgcGAQcKAQgHAQAIAwYLAAYDAAUGAAkFAwsGAAMGAAYF AAUJCgYHAQoHAQcIAQgABAsHCQsECQILCQECAgUKAwUCAwQFAwgE """ #static const char tiling10_1_1[6][12] TILING10_1_1 = (6, 12), """ BQoHCwcKCAEJAQgDAQIFBgUCBAMAAwQHCwAIAAsCBAkGCgYJCQAKAgoABggECAYLBwIDAgcGAAEE BQQBBwkFCQcICgELAwsB """ #static const char tiling10_1_1_[6][12] TILING10_1_1_ = (6, 12), """ BQkHCAcJCwEKAQsDAwIHBgcCBAEAAQQFCgAJAAoCBAgGCwYICAALAgsABgkECQYKBQIBAgUGAAME BwQDBwoFCgcLCQEIAwgB """ #static const char tiling10_1_2[6][24] TILING10_1_2 = (6, 24), """ AwsHAwcICQgHBQkHCQUKCQoBAwEKCwMKBwYFBwUEAAQFAQAFAAECAAIDBwMCBgcCCwIKBgsKCwYE CwQIAAgECQAEAAkKAAoCCwIKCwoGBAYKCQQKBAkABAAICwgAAgsABwYFBAcFBwQABwADAgMAAQIA AgEFAgUGBwgDCwcDBwsKBwoFCQUKAQkKCQEDCQMI """ #static const char tiling10_2[6][24] TILING10_2 = (6, 24), """ DAUJDAkIDAgDDAMBDAEKDAoLDAsHDAcFDAEADAAEDAQHDAcDDAMCDAIGDAYFDAUBBAgMBgQMCgYM CQoMAAkMAgAMCwIMCAsMDAkEDAQGDAYLDAsIDAgADAACDAIKDAoJAAMMBAAMBQQMAQUMAgEMBgIM BwYMAwcMCgUMCwoMAwsMAQMMCQEMCAkMBwgMBQcM """ #static const char tiling10_2_[6][24] TILING10_2_ = (6, 24), """ CAcMCQgMAQkMAwEMCwMMCgsMBQoMBwUMBAUMAAQMAwAMBwMMBgcMAgYMAQIMBQEMDAsGDAYEDAQJ DAkKDAoCDAIADAAIDAgLBgoMBAYMCAQMCwgMAgsMAAIMCQAMCgkMDAcEDAQADAABDAEFDAUGDAYC DAIDDAMHDAcLDAsKDAoBDAEDDAMIDAgJDAkFDAUH """ #static const char tiling11[12][12] TILING11 = (12, 12), """ AgoJAgkHAgcDBwkEAQYCAQgGAQkICAcGCAMBCAEGCAYEBgEKAAgLAAsFAAUBBQsGCQUHCQcCCQIA AgcLBQAEBQsABQoLCwMABQQABQALBQsKCwADCQcFCQIHCQACAgsHAAsIAAULAAEFBQYLCAEDCAYB CAQGBgoBAQIGAQYIAQgJCAYHAgkKAgcJAgMHBwQJ """ #static const char tiling12_1_1[24][12] TILING12_1_1 = (24, 12), """ BwYLCgMCAwoICQgKBgUKCQIBAgkLCAsJCgYFBwkECQcBAwEHBwYLBAgFAwUIBQMBBQQJCAEAAQgK CwoIAQIKAAkDBQMJAwUHCgECAAsDCwAGBAYACAMAAgkBCQIEBgQCAwAIAgsBBwELAQcFBgUKBwsE AgQLBAIACQUEBggHCAYAAgAGCAMABwQLCQsECwkKBAcICwADAAsJCgkLBAcIBQkGAAYJBgACCwcG BAoFCgQCAAIECwIDAQgACAEHBQcBAAEJAwgCBAIIAgQGAgMLAQoABgAKAAYECQABAwoCCgMFBwUD CQABBAUICggFCAoLCAQHBQsGCwUDAQMFBQQJBgoHAQcKBwEDCgECBQYJCwkGCQsICwIDBgcKCAoH CggJ """ #static const char tiling12_1_1_[24][12] TILING12_1_1_ = (24, 12), """ AwILCgcGBwoICQgKAgEKCQYFBgkLCAsJCQQFBwoGCgcBAwEHBwQIBgsFAwULBQMBAQAJCAUEBQgK CwoIAQAJAgoDBQMKAwUHCwMCAAoBCgAGBAYACQEAAggDCAIEBgQCAwILAAgBBwEIAQcFBgcLBQoE AgQKBAIACAcEBgkFCQYAAgAGCAcEAwALCQsACwkKAAMICwQHBAsJCgkLBAUJBwgGAAYIBgACCgUG BAsHCwQCAAIECAADAQsCCwEHBQcBAAMIAQkCBAIJAgQGAgEKAwsABgALAAYECgIBAwkACQMFBwUD CQQFAAEICggBCAoLCwYHBQgECAUDAQMFBQYKBAkHAQcJBwEDCgUGAQIJCwkCCQsICwYHAgMKCAoD CggJ """ #static const char tiling12_1_2[24][24] TILING12_1_2 = (24, 24), """ BwMLAwcICQgHBgkHCQYKAgoGCwIGAgsDBgIKAgYLCAsGBQgGCAUJAQkFCgEFAQoCCgkFCQoBAwEK BgMKAwYHBAcGBQQGBAUJBwgLAwsICwMBCwEGBQYBBgUEBgQHCAcEBQEJAQUKCwoFBAsFCwQIAAgE CQAEAAkBAQkKBQoJCgUHCgcCAwIHAgMAAgABCQEACgsCCwoGBAYKAQQKBAEAAwABAgMBAwILCAkA CQgEBgQIAwYIBgMCAQIDAAEDAQAJAwsIBwgLCAcFCAUAAQAFAAECAAIDCwMCBgsKAgoLCgIACgAF BAUABQQHBQcGCwYHCQgECAkAAgAJBQIJAgUGBwYFBAcFBwQICAQACQAEAAkKAAoDCwMKAwsHAwcI BAgHBAAIAAQJCgkEBwoECgcLAwsHCAMHAwgABAkIAAgJCAACCAIHBgcCBwYFBwUECQQFCwoGCgsC AAILBwALAAcEBQQHBgUHBQYKCwgDCAsHBQcLAgULBQIBAAECAwACAAMIAAgJBAkICQQGCQYBAgEG AQIDAQMACAADAgoLBgsKCwYECwQDAAMEAwABAwECCgIBCQoBCgkFBwUJAAcJBwADAgMAAQIAAgEK CQUBCgEFAQoLAQsACAALAAgEAAQJBQkECAsHCwgDAQMIBAEIAQQFBgUEBwYEBgcLBQoJAQkKCQED CQMEBwQDBAcGBAYFCgUGCgYCCwIGAgsIAggBCQEIAQkFAQUKBgoFCwcDCAMHAwgJAwkCCgIJAgoG AgYLBwsG """ #static const char tiling12_2[24][24] TILING12_2 = (24, 24), """ CQgMCgkMAgoMAwIMCwMMBgsMBwYMCAcMCAsMCQgMAQkMAgEMCgIMBQoMBgUMCwYMAwEMBwMMBAcM CQQMBQkMBgUMCgYMAQoMDAMBDAEFDAUGDAYLDAsHDAcEDAQIDAgDCwoMCAsMAAgMAQAMCQEMBAkM BQQMCgUMDAUHDAcDDAMCDAIKDAoBDAEADAAJDAkFBAYMAAQMAQAMCgEMAgoMAwIMCwMMBgsMBgQM AgYMAwIMCAMMAAgMAQAMCQEMBAkMDAcFDAUBDAEADAAIDAgDDAMCDAILDAsHDAIADAAEDAQFDAUK DAoGDAYHDAcLDAsCAgAMBgIMBwYMCAcMBAgMBQQMCQUMAAkMDAkKDAoLDAsHDAcEDAQIDAgDDAMA DAAJCgkMCwoMBwsMBAcMCAQMAwgMAAMMCQAMDAACDAIGDAYHDAcIDAgEDAQFDAUJDAkAAAIMBAAM BQQMCgUMBgoMBwYMCwcMAgsMBQcMAQUMAAEMCAAMAwgMAgMMCwIMBwsMDAQGDAYCDAIDDAMIDAgA DAABDAEJDAkEDAYEDAQADAABDAEKDAoCDAIDDAMLDAsGBwUMAwcMAgMMCgIMAQoMAAEMCQAMBQkM DAoLDAsIDAgADAABDAEJDAkEDAQFDAUKAQMMBQEMBgUMCwYMBwsMBAcMCAQMAwgMDAEDDAMHDAcE DAQJDAkFDAUGDAYKDAoBDAsIDAgJDAkBDAECDAIKDAoFDAUGDAYLDAgJDAkKDAoCDAIDDAMLDAsG DAYHDAcI """ #static const char tiling12_2_[24][24] TILING12_2_ = (24, 24), """ DAILDAsHDAcGDAYKDAoJDAkIDAgDDAMCDAEKDAoGDAYFDAUJDAkIDAgLDAsCDAIBDAQFDAUKDAoG DAYHDAcDDAMBDAEJDAkEBwYMCAcMBAgMBQQMAQUMAwEMCwMMBgsMDAAJDAkFDAUEDAQIDAgLDAsK DAoBDAEAAQIMCQEMAAkMAwAMBwMMBQcMCgUMAgoMDAECDAILDAsDDAMADAAEDAQGDAYKDAoBDAMA DAAJDAkBDAECDAIGDAYEDAQIDAgDAwAMCwMMAgsMAQIMBQEMBwUMCAcMAAgMBgUMCwYMBwsMBAcM AAQMAgAMCgIMBQoMDAcEDAQJDAkFDAUGDAYCDAIADAAIDAgHCAcMAAgMAwAMCwMMCgsMCQoMBAkM BwQMDAcIDAgADAADDAMLDAsKDAoJDAkEDAQHBAcMCQQMBQkMBgUMAgYMAAIMCAAMBwgMDAUGDAYL DAsHDAcEDAQADAACDAIKDAoFDAADDAMLDAsCDAIBDAEFDAUHDAcIDAgAAAMMCQAMAQkMAgEMBgIM BAYMCAQMAwgMAgEMCwIMAwsMAAMMBAAMBgQMCgYMAQoMDAIBDAEJDAkADAADDAMHDAcFDAUKDAoC CQAMBQkMBAUMCAQMCwgMCgsMAQoMAAEMDAYHDAcIDAgEDAQFDAUBDAEDDAMLDAsGBQQMCgUMBgoM BwYMAwcMAQMMCQEMBAkMCgEMBgoMBQYMCQUMCAkMCwgMAgsMAQIMCwIMBwsMBgcMCgYMCQoMCAkM AwgMAgMM """ #static const char tiling13_1[2][12] TILING13_1 = (2, 12), """ CwcGAQIKCAMACQUECAQHAgMLCQABCgYF """ #static const char tiling13_1_[2][12] TILING13_1_ = (2, 12), """ BwQICwMCAQAJBQYKBgcLCgIBAAMIBAUJ """ #static const char tiling13_2[2][6][18] TILING13_2 = (2, 6, 18), """ AQIKCwcGAwQIBAMFAAUDBQAJCAMACwcGCQEEAgQBBAIFCgUCCQUECAMAAQYKBgEHAgcBBwILCQUE AQIKCwMGAAYDBgAHCAcACQUECwcGAAoBCgAICggCAwIIAQIKAwAIBAkHCwcJBQsJCwUGAgMLCAQH AAUJBQAGAQYABgEKCQABCAQHCgIFAwUCBQMGCwYDBgUKCQABAgcLBwIEAwQCBAMIBgUKAgMLCAAH AQcABwEECQQBBgUKCAQHAQsCCwEJCwkDAAMJAgMLAAEJBQoECAQKBggKCAYH """ #static const char tiling13_2_[2][6][18] TILING13_2_ = (2, 6, 18), """ CgUGCwMCBwAIAAcBBAEHAQQJCwMCBwQICQUABgAFAAYBCgEGAQAJBwQIBQIKAgUDBgMFAwYLCgUG AQAJCwcCBAIHAgQDCAMECgUGBwQIAgsBCQELAwkLCQMACwMCCQEABAoFCgQICggGBwYIBgcLCAAD BAEJAQQCBQIEAgUKCAADBAUJCgYBBwEGAQcCCwIHAgEKBAUJBgMLAwYABwAGAAcIBgcLAgEKCAQD BQMEAwUACQAFBgcLBAUJAwgCCgIIAAoICgABCAADCgIBBQsGCwUJCwkHBAcJ """ #static const char tiling13_3[2][12][30] TILING13_3 = (2, 12, 30), """ CwcGDAIKDAoFDAUEDAQIDAgDDAMADAAJDAkBDAECAQIKCQUMAAkMAwAMCwMMBgsMBwYMCAcMBAgM BQQMCwcGDAUEDAQIDAgDDAMCDAIKDAoBDAEADAAJDAkFAQIKDAMADAAJDAkFDAUGDAYLDAsHDAcE DAQIDAgDCAMACwcMAgsMAQIMCQEMBAkMBQQMCgUMBgoMBwYMCwcGBQQMCgUMAgoMAwIMCAMMAAgM AQAMCQEMBAkMCAMAAQIMCQEMBAkMBwQMCwcMBgsMBQYMCgUMAgoMCQUEDAAIDAgHDAcGDAYKDAoB DAECDAILDAsDDAMACQUEDAcGDAYKDAoBDAEADAAIDAgDDAMCDAILDAsHCAMADAECDAILDAsHDAcE DAQJDAkFDAUGDAYKDAoBCQUEBwYMCAcMAAgMAQAMCgEMAgoMAwIMCwMMBgsMAQIKAwAMCwMMBgsM BQYMCQUMBAkMBwQMCAcMAAgMCAQHDAMLDAsGDAYFDAUJDAkADAABDAEKDAoCDAIDAgMLCgYMAQoM AAEMCAAMBwgMBAcMCQQMBQkMBgUMCAQHDAYFDAUJDAkADAADDAMLDAsCDAIBDAEKDAoGAgMLDAAB DAEKDAoGDAYHDAcIDAgEDAQFDAUJDAkAAAEJCAQMAwgMAgMMCgIMBQoMBgUMCwYMBwsMBAcMCAQH BgUMCwYMAwsMAAMMCQAMAQkMAgEMCgIMBQoMCQABAgMMCgIMBQoMBAUMCAQMBwgMBgcMCwYMAwsM BgUKDAEJDAkEDAQHDAcLDAsCDAIDDAMIDAgADAABBgUKDAQHDAcLDAsCDAIBDAEJDAkADAADDAMI DAgECQABDAIDDAMIDAgEDAQFDAUKDAoGDAYHDAcLDAsCBgUKBAcMCQQMAQkMAgEMCwIMAwsMAAMM CAAMBwgMAgMLAAEMCAAMBwgMBgcMCgYMBQoMBAUMCQQMAQkM """ #static const char tiling13_3_[2][12][30] TILING13_3_ = (2, 12, 30), """ AwILCAcMAAgMAQAMCgEMBgoMBQYMCQUMBAkMBwQMBQYKDAILDAsHDAcEDAQJDAkBDAEADAAIDAgD DAMCCgUGDAcEDAQJDAkBDAECDAILDAsDDAMADAAIDAgHCwMCDAEADAAIDAgHDAcGDAYKDAoFDAUE DAQJDAkBBwQICwMMBgsMBQYMCQUMAAkMAQAMCgEMAgoMAwIMBwQIBQYMCQUMAAkMAwAMCwMMAgsM AQIMCgEMBgoMCwMCAQAMCgEMBgoMBwYMCAcMBAgMBQQMCQUMAAkMAQAJDAQIDAgDDAMCDAIKDAoF DAUGDAYLDAsHDAcEBwQIDAUGDAYLDAsDDAMADAAJDAkBDAECDAIKDAoFAQAJDAMCDAIKDAoFDAUE DAQIDAgHDAcGDAYLDAsDCgUGBwQMCwcMAgsMAQIMCQEMAAkMAwAMCAMMBAgMCQEAAwIMCAMMBAgM BQQMCgUMBgoMBwYMCwcMAgsMAAMICQQMAQkMAgEMCwIMBwsMBgcMCgYMBQoMBAUMCwYHDAMIDAgE DAQFDAUKDAoCDAIBDAEJDAkADAADBgcLDAQFDAUKDAoCDAIDDAMIDAgADAABDAEJDAkECAADDAIB DAEJDAkEDAQHDAcLDAsGDAYFDAUKDAoCBAUJCAAMBwgMBgcMCgYMAQoMAgEMCwIMAwsMAAMMBAUJ BgcMCgYMAQoMAAEMCAAMAwgMAgMMCwIMBwsMCAADAgEMCwIMBwsMBAcMCQQMBQkMBgUMCgYMAQoM AgEKDAUJDAkADAADDAMLDAsGDAYHDAcIDAgEDAQFBAUJDAYHDAcIDAgADAABDAEKDAoCDAIDDAML DAsGAgEKDAADDAMLDAsGDAYFDAUJDAkEDAQHDAcIDAgABgcLBAUMCAQMAwgMAgMMCgIMAQoMAAEM CQAMBQkMCgIBAAMMCQAMBQkMBgUMCwYMBwsMBAcMCAQMAwgM """ #static const char tiling13_4[2][4][36] TILING13_4 = (2, 4, 36), """ DAIKDAoFDAUGDAYLDAsHDAcEDAQIDAgDDAMADAAJDAkBDAECCwMMBgsMBwYMCAcMBAgMBQQMCQUM AAkMAQAMCgEMAgoMAwIMCQEMBAkMBQQMCgUMBgoMBwYMCwcMAgsMAwIMCAMMAAgMAQAMDAAIDAgH DAcEDAQJDAkFDAUGDAYKDAoBDAECDAILDAsDDAMADAMLDAsGDAYHDAcIDAgEDAQFDAUJDAkADAAB DAEKDAoCDAIDCAAMBwgMBAcMCQQMBQkMBgUMCgYMAQoMAgEMCwIMAwsMAAMMCgIMBQoMBgUMCwYM BwsMBAcMCAQMAwgMAAMMCQAMAQkMAgEMDAEJDAkEDAQFDAUKDAoGDAYHDAcLDAsCDAIDDAMIDAgA DAAB """ #static const char tiling13_5_1[2][4][18] TILING13_5_1 = (2, 4, 18), """ BwYLAQAJCgMCAwoFAwUIBAgFAQIKBwQIAwALBgsACQYABgkFAwAIBQYKAQIJBAkCCwQCBAsHBQQJ AwILCAEAAQgHAQcKBgoHBAcIAgEKCwADAAsGAAYJBQkGAgMLBAUJAAEIBwgBCgcBBwoGAAEJBgcL AgMKBQoDCAUDBQgEBgUKAAMICQIBAgkEAgQLBwsE """ #static const char tiling13_5_2[2][4][30] TILING13_5_2 = (2, 4, 30), """ AQAJBwQIBwgDBwMLAgsDCwIKCwoGBQYKBgUHBAcFBwQICwMCBgsCCgYCBgoFCQUKAQkKCQEAAgAB AAIDBQYKCQEABAkACAQABAgHCwcIAwsICwMCAAIDAgABAwILBQYKBQoBBQEJAAkBCQAICQgEBAgH BAcFBgUHAgEKBAUJBAkABAAIAwgACAMLCAsHBgcLBwYEBQQGBAUJCAADBwgDCwcDBwsGCgYLAgoL CgIBAwECAQMABgcLCgIBBQoBCQUBBQkECAQJAAgJCAADAQMAAwECAAMIBgcLBgsCBgIKAQoCCgEJ CgkFBQkEBQQGBwYE """ #static const char tiling14[12][12] TILING14 = (12, 12), """ BQkIBQgCBQIGAwIIAgEFAgUIAggLBAgFCQQGCQYDCQMBCwMGAQsKAQQLAQAEBwsECAIACAUCCAcF CgIFAAcDAAoHAAkKBgcKAAMHAAcKAAoJBgoHCAACCAIFCAUHCgUCAQoLAQsEAQQABwQLCQYECQMG CQEDCwYDAgUBAggFAgsIBAUIBQgJBQIIBQYCAwgC """ #static const char test3[24] TEST3 = (24,), """ BQEEBQECAgMEAwYG+vr9/P3+/v/7/P/7 """ #static const char test4[8] TEST4 = (8,), """ BwcHB/n5+fk= """ #static const char test6[48][3] TEST6 = (48, 3), """ AgcKBAcLBQcBBQcDAQcJAwcKBgcFAQcIBAcIAQcIAwcLBQcCBQcAAQcJBgcGAgcJBAcIAgcJAgcK BgcHAwcKBAcLAwcLBgcE+vkE/fkL/PkL/fkK+vkH/vkK/vkJ/PkI/vkJ+vkG//kJ+/kA+/kC/fkL //kI/PkI//kI+vkF/fkK//kJ+/kD+/kB/PkL/vkK """ #static const char test7[16][5] TEST7 = (16, 5), """ AQIFBwEDBAUHAwQBBgcEBAEFBwACAwUHAgECBgcFAgMGBwYDBAYHB/38+vkH/v36+Qb//vr5Bf79 +/kC/P/7+QD8//r5BP38+/kD//77+QE= """ #static const char test10[6][3] TEST10 = (6, 3), """ AgQHBQYHAQMHAQMHBQYHAgQH """ #static const char test12[24][4] TEST12 = (24, 4), """ BAMHCwMCBwoCBgcFBgQHBwIBBwkFAgcBBQMHAgUBBwAFBAcDBgMHBgEGBwQBBAcIBAEHCAYBBwQD BgcGBAUHAwEFBwADBQcCAgUHAQECBwkEBgcHBgIHBQIDBwoDBAcL """ #static const char test13[2][7] TEST13 = (2, 7), """ AQIDBAUGBwIDBAEFBgc= """ #static const char subconfig13[64] SUBCONFIG13 = (64,), """ AAECBwP/C/8ECP//Dv///wUJDBcP/xUmERT/JBohHiwGCg0TEP8ZJRIY/yMWIB0r////Iv//HCr/ H/8pGygnLQ== """ ================================================ FILE: meshudf/meshudf.py ================================================ """ Meshing algorithm for UDFs from "Meshudf: Fast and differentiable meshing of unsigned distance field networks." Guillard, Benoit, Federico Stella, and Pascal Fua. ECCV 2022. Original implementation: https://github.com/cvlab-epfl/MeshUDF """ import math from collections import defaultdict from typing import Callable, Tuple import numpy as np import torch import torch.nn.functional as F import trimesh from scipy.sparse import coo_matrix from torch import Tensor from meshudf._marching_cubes_lewiner import udf_mc_lewiner class GridFiller: """ Coarse to fine method for querying an SDF network, using cached grids. # We start by evaluating the field on a low resolution grid, and then iteratively subdivide each voxel and re-evaluate the field only where needed until we reach a desired grid resolution. We subdivide voxels if the field absolute value on any of the voxel corners is smaller than the voxel diagonal √2∆x, where ∆x denotes voxel size. # In practice the coarsest level is here hardcoded to be 32**3. """ def __init__( self, final_resolution: int, voxel_origin: Tuple[int, int, int] = (-1, -1, -1), cube_side_length: float = 2.0, ): # Save attributes self.N_max = final_resolution self.num_samples = final_resolution**3 self.N_levels = [32 * (2**i) for i in range(int(math.log2(self.N_max) - 4))] self.voxel_origin = voxel_origin self.cube_side_length = cube_side_length # Construct grid, and precompute sparse masks, from 32 (coarsest grid) to final_resolution """ Create one empty grid (N,N,N,7) where the 7 channels are (x,y,z, UDF, +3 for gradients). """ voxel_size = self.cube_side_length / (self.N_max - 1) self.voxel_size = voxel_size overall_index = torch.arange(0, self.N_max**3, 1, out=torch.LongTensor()) samples = torch.zeros(self.N_max**3, 7) # Transform the first 3 columns to be the x, y, z indices. samples[:, 2] = overall_index % self.N_max samples[:, 1] = ( torch.div(overall_index, self.N_max, rounding_mode="floor") % self.N_max ) samples[:, 0] = ( torch.div( torch.div(overall_index, self.N_max, rounding_mode="floor"), self.N_max, rounding_mode="floor", ) % self.N_max ) # Then transform the first 3 columns to be the x, y, z coordinates. samples[:, 0] = (samples[:, 0] * voxel_size) + voxel_origin[2] samples[:, 1] = (samples[:, 1] * voxel_size) + voxel_origin[1] samples[:, 2] = (samples[:, 2] * voxel_size) + voxel_origin[0] samples.requires_grad = False #samples.pin_memory() self.samples = samples.cuda() """ Precompute binary masks for adressing the above grid at different resolutions. """ mask = torch.zeros(self.N_max**3).bool() mask = mask.reshape(self.N_max, self.N_max, self.N_max) # Fill dictionaries with precomputed masks. self.masks_coarse = {} self.masks_coarse_no_recompute = {} self.idxs_coarse_neighbors_blocks = {} for i, N in enumerate(self.N_levels): #### 1: Subsample coarsely. mask_coarse = mask.clone() mask_coarse[ :: self.N_max // N, :: self.N_max // N, :: self.N_max // N ] = True # (N_max**3) array, with True only for indices of the coarse sampling (N**3 locations): mask_coarse = mask_coarse.reshape(-1) self.masks_coarse[i] = mask_coarse.clone().cuda() #### 2: Compute the indices of neighboring blocks. neighbors_block_coarse = mask.clone() neighbors_block_coarse[ : self.N_max // N, : self.N_max // N, : self.N_max // N ] = True neighbors_block_coarse = neighbors_block_coarse.reshape(-1) # Shape (N**3 / 64, 64): idxs_coarse_neighbors_blocks[i] represents the (N_max // N)**3 indices covered by coarse point i. idxs_coarse_neighbors_blocks = torch.where(mask_coarse)[0].reshape( -1, 1 ) + torch.where(neighbors_block_coarse)[0].reshape(1, -1) self.idxs_coarse_neighbors_blocks[ i ] = idxs_coarse_neighbors_blocks.clone().cuda() #### 3: For levels finer than the coarsest one, do not recompute already queried SDFs. if i > 0: mask_coarse_no_recompute = mask_coarse.clone() mask_coarse_no_recompute[self.masks_coarse[i - 1]] = False self.masks_coarse_no_recompute[ i ] = mask_coarse_no_recompute.clone().cuda() def fill_grid( self, udf_func: Callable[[Tensor], Tensor], max_batch: int ) -> Tuple[Tensor, Tensor]: with torch.no_grad(): samples = self.samples.clone() close_surface_masks = {} idxs_coarse_neighbors_blocks_LOCAL = {} for level, N in enumerate(self.N_levels): """Prepare masks based on previous levels""" if level == 0: mask_coarse = self.masks_coarse[level] idxs_coarse_neighbors_blocks = self.idxs_coarse_neighbors_blocks[ level ].clone() mask_coarse_no_recompute = self.masks_coarse[level] else: # Mask using previous queries: binary mask. mask_coarse = self.masks_coarse[level].clone() for l in range(level): mask_coarse[ idxs_coarse_neighbors_blocks_LOCAL[l][ ~close_surface_masks[l] ] ] = False # Compute the corresponding indices tensor. if N < self.N_max: idxs_coarse_neighbors_blocks = ( self.idxs_coarse_neighbors_blocks[level].clone() ) idxs_coarse_neighbors_blocks = idxs_coarse_neighbors_blocks[ mask_coarse[self.masks_coarse[level]] ] else: idxs_coarse_neighbors_blocks = ( self.idxs_coarse_neighbors_blocks[level] ) # The no_recompute version does not query the decoder for nodes that have # already been computed at coarser levels. mask_coarse_no_recompute = self.masks_coarse_no_recompute[ level ].clone() for l in range(level): mask_coarse_no_recompute[ idxs_coarse_neighbors_blocks_LOCAL[l][ ~close_surface_masks[l] ] ] = False idxs_coarse_neighbors_blocks_LOCAL[level] = idxs_coarse_neighbors_blocks """ Query the network """ xyz = samples[mask_coarse_no_recompute, 0:3].cuda() # Query and fill grid. samples[mask_coarse_no_recompute, 3] = sample_udf( udf_func, xyz, max_batch=max_batch ) """ Prepare next levels queries """ if N < self.N_max: ## Which samples are close to the surface? step_size = 2.0 / N close_surface_mask = ( torch.abs(samples[mask_coarse, 3]) < 1.5 * 1.7 * step_size ) close_surface_masks[level] = close_surface_mask # For those far of the surface, we can ignore them for the future and copy the high value to their neighbors samples[ idxs_coarse_neighbors_blocks[~close_surface_mask], 3 ] = samples[mask_coarse, 3][~close_surface_mask].unsqueeze(-1) udf_values = samples[:, 3] udf_values = udf_values.reshape(self.N_max, self.N_max, self.N_max) # Compute gradients only where the predicted udf value is small. mask_gradients = samples[:, 3] < (2.5 * self.cube_side_length / self.N_max) samples[mask_gradients, 4:] = sample_grads( udf_func, samples[mask_gradients, :3], max_batch=max_batch ) gradients = samples[:, 4:] gradients = gradients.reshape(self.N_max, self.N_max, self.N_max, 3) return udf_values, gradients def sample_udf( udf_func: Callable[[Tensor], Tensor], coords: Tensor, max_batch: int, grad: bool = False, ) -> Tensor: udf = torch.zeros(coords.shape[0]).cuda() start = 0 while start < coords.shape[0]: end = min(start + max_batch, coords.shape[0]) p = coords[start:end] if grad: udf[start:end] = udf_func(p) else: with torch.no_grad(): udf[start:end] = udf_func(p) start = end return udf def sample_grads( udf_func: Callable[[Tensor], Tensor], coords: Tensor, max_batch: int, ) -> Tensor: grads = torch.zeros(coords.shape[0], 3).cuda() start = 0 while start < coords.shape[0]: end = min(start + max_batch, coords.shape[0]) p = coords[start:end].detach().clone() p.requires_grad = True udf = udf_func(p) udf.sum().backward() g = p.grad # norms = torch.norm(g, dim=-1) # g[norms < 0.5] = torch.zeros(1, 3).cuda() grads[start:end] = -F.normalize(g, dim=1) start = end return grads def get_udf_and_grads( udf_func: Callable[[Tensor], Tensor], coords_range: Tuple[float, float], max_dist: float, N: int, max_batch: int, ) -> Tuple[Tensor, Tensor]: """ Fills a dense N*N*N regular grid by querying the given function. Args: udf_func: Function to call to get the udf values. coords_range: The udf coordinates range. max_dist: The udf clipping distance. N: Grid resolution. max_batch: The maximum number of points that we can evaluate simultaneously. Returns: - (N, N, N) tensor representing udf values on the grid. - (N, N, N, 3) tensor representing gradients values on the grid. """ # compute origin of the volume and voxel size origin = [coords_range[0]] * 3 spacing = (coords_range[1] - coords_range[0]) / (N - 1) # prepare grid coordinates, each axis goes from 0 to (N - 1) x = torch.arange(0, N) coords_x, coords_y, coords_z = torch.meshgrid(x, x, x, indexing="ij") coords = torch.stack((coords_x, coords_y, coords_z), dim=-1).float() # scale and shift coordinates so that each axis goes from coords_range[0] to coords_range[1] coords *= spacing coords += torch.tensor(origin) coords = coords.reshape(N**3, 3) # comput udf for every corner of the grid zeros = torch.zeros(coords.shape[0], 4) samples = torch.cat([coords, zeros], dim=-1).cuda() samples[:, 3] = sample_udf(udf_func, samples[:, :3], max_batch) # compute gradients only where the predicted udf value is small mask = samples[:, 3] < (max_dist - 1e-3) samples[mask, 4:] = sample_grads(udf_func, samples[mask, :3], max_batch // 4) # separate values in udf and gradients udf = samples[:, 3] udf = udf.reshape(N, N, N) grads = samples[:, 4:] grads = grads.reshape(N, N, N, 3) return udf, grads def get_mesh_from_udf( udf_func: Callable[[Tensor], Tensor], coords_range: Tuple[float, float], max_dist: float, N: int = 128, smooth_borders: bool = True, differentiable: bool = True, max_batch: int = 2**12, use_fast_grid_filler: bool = True, ) -> Tuple[Tensor, Tensor]: """ Computes a triangulated mesh from udf. Args: udf_func: Function to call to get the udf values. coords_range: The udf coordinates range. max_dist: The udf clipping distance. N: Grid resolution. smooth_borders: Do we smooth borders with a Laplacian? differentiable: Do we need the mesh to be differentiable wrt the UDF? max_batch: The maximum number of points that we can evaluate simultaneously. use_fast_grid_filler: Use coarse to fine UDF grid evaluator, with cached coordinates. Returns: - Vertices of the mesh. - Faces of the mesh. """ # sample udf grid if not use_fast_grid_filler: udf, gradients = get_udf_and_grads( udf_func, coords_range, max_dist, N, max_batch ) else: fast_grid_filler = GridFiller(N) udf, gradients = fast_grid_filler.fill_grid(udf_func, max_batch) udf[udf < 0] = 0 # run custom marching cubes on it N = udf.shape[0] spacing = (coords_range[1] - coords_range[0]) / (N - 1) udf = udf.cpu().detach().numpy() gradients = gradients.cpu().detach().numpy() vertices, faces, _, _ = udf_mc_lewiner(udf, gradients, spacing=[spacing] * 3) # shift vertices according to the given range vertices += coords_range[0] mesh = trimesh.Trimesh(vertices, faces, process=False) # remove faces whose vertices feature big udf values # check not only vertices but also points in the middle of edges points = np.vstack( ( mesh.vertices[mesh.edges[:, 0]], mesh.vertices[mesh.edges[:, 1]], (mesh.vertices[mesh.edges[:, 0]] + mesh.vertices[mesh.edges[:, 1]]) / 2, ) ) face_idxs = np.hstack([mesh.edges_face] * 3) points = torch.from_numpy(points).float().cuda() udf = sample_udf(udf_func, points, max_batch) udf = udf.cpu().numpy() # th_dist is the threshold udf to consider a point on the surface. th_dist = 1 / N mask = udf > th_dist face_idxs_to_remove = np.unique(face_idxs[mask]) face_mask = np.full(mesh.faces.shape[0], True) face_mask[face_idxs_to_remove] = False filtered_faces = mesh.faces[face_mask] mesh = trimesh.Trimesh(mesh.vertices, filtered_faces) # remove NaNs, flat triangles, duplicate faces mesh = mesh.process(validate=False) mesh.remove_duplicate_faces() mesh.remove_degenerate_faces() # fill single triangle holes mesh.fill_holes() # re-process the mesh until it is stable: mesh_2 = trimesh.Trimesh(mesh.vertices, mesh.faces) n_verts, n_faces, n_iter = 0, 0, 0 while (n_verts, n_faces) != ( len(mesh_2.vertices), len(mesh_2.faces), ) and n_iter < 10: mesh_2 = mesh_2.process(validate=False) mesh_2.remove_duplicate_faces() mesh_2.remove_degenerate_faces() (n_verts, n_faces) = (len(mesh_2.vertices), len(mesh_2.faces)) n_iter += 1 mesh_2 = trimesh.Trimesh(mesh_2.vertices, mesh_2.faces) mesh = trimesh.Trimesh(mesh_2.vertices, mesh_2.faces) if smooth_borders: # identify borders: those appearing only once border_edges = trimesh.grouping.group_rows(mesh.edges_sorted, require_count=1) # build a dictionnary of (u,l): l is the list of vertices that are adjacent to u neighbours = defaultdict(lambda: []) for u, v in mesh.edges_sorted[border_edges]: neighbours[u].append(v) neighbours[v].append(u) border_vertices = np.array(list(neighbours.keys())) # build a sparse matrix for computing laplacian pos_i, pos_j = [], [] for k, ns in enumerate(neighbours.values()): for j in ns: pos_i.append(k) pos_j.append(j) sparse = coo_matrix( (np.ones(len(pos_i)), (pos_i, pos_j)), # put ones at these locations shape=(len(border_vertices), len(mesh.vertices)), ) # smoothing operation: lambda_ = 0.3 for _ in range(20): border_neighbouring_averages = sparse @ mesh.vertices / sparse.sum(axis=1) laplacian = border_neighbouring_averages - mesh.vertices[border_vertices] mesh.vertices[border_vertices] = ( mesh.vertices[border_vertices] + lambda_ * laplacian ) final_verts = torch.tensor(mesh.vertices).float().cuda() final_faces = torch.tensor(mesh.faces).long().cuda() if differentiable: # use the mesh to compute normals normals = trimesh.geometry.weighted_vertex_normals( vertex_count=len(mesh.vertices), faces=mesh.faces, face_normals=mesh.face_normals, face_angles=mesh.face_angles, ) # evaluate the udf around each vertex, based on normals normals = torch.tensor(normals).float().cuda() verts = torch.tensor(mesh.vertices).float().cuda() xyz_s1 = verts + th_dist * normals xyz_s2 = verts - th_dist * normals s1 = sample_udf(udf_func, xyz_s1, max_batch, True).unsqueeze(-1) s2 = sample_udf(udf_func, xyz_s2, max_batch, True).unsqueeze(-1) # re-plug differentiability here, by this rewriting trick z1 = th_dist * s1 * normals - th_dist * s2 * normals z2 = (th_dist * s1 * normals - th_dist * s2 * normals).detach() new_verts = verts - z1 + z2 # identify borders border_edges = trimesh.grouping.group_rows(mesh.edges_sorted, require_count=1) # build a dictionnary of (u,v) edges, such that each vertex on the border # gets associated to exactly one border edge border_edges_dict = {} for u, v in mesh.edges_sorted[border_edges]: border_edges_dict[u] = v border_edges_dict[v] = u u_v_border = np.array(list(border_edges_dict.items())) u_border = u_v_border[:, 0] # split border edges (u,v) into u and v arrays v_border = u_v_border[:, 1] # for each vertex on the border, take the cross product between # its normal and the border's edge normals_border = normals[u_border] edge_border = mesh.vertices[v_border] - mesh.vertices[u_border] edge_border = torch.tensor(edge_border).float().cuda() out_vec = torch.cross(edge_border, normals_border, dim=1) out_vec = out_vec / ( torch.norm(out_vec, dim=1, keepdim=True) + 1e-6 ) # make it unit length # then we need to orient the out_vec such that they point outwards # to do so, we evaluate at +- their offset, and take the corresponding max udf value border_verts = torch.tensor(mesh.vertices[u_border]).float().cuda() xyz_s1_border = border_verts + 3 * th_dist * out_vec xyz_s2_border = border_verts - 3 * th_dist * out_vec s1_border = sample_udf(udf_func, xyz_s1_border, max_batch, True).unsqueeze(-1) s2_border = sample_udf(udf_func, xyz_s2_border, max_batch, True).unsqueeze(-1) s1s2 = torch.stack((s1_border, s2_border)) sign_out_vec = -torch.argmax(s1s2, dim=0) * 2 + 1 out_vec = sign_out_vec * out_vec # filter out the verts borders for which a displacement of out_vec still present # a udf < th_dist, i.e. verts classified as borders which are not really so mask = ((s1_border + s2_border)[:, 0] > th_dist).detach().cpu().numpy() u_border_filtered = u_border[mask] out_vec_filtered = out_vec[(s1_border + s2_border)[:, 0] > th_dist] out_df_filtered = torch.max(s1_border, s2_border)[ (s1_border + s2_border) > th_dist ] # plug gradients to verts positions (fake zero, just to pass grads) s_border = (th_dist * (out_df_filtered - out_df_filtered.detach())).unsqueeze( -1 ) new_verts[u_border_filtered] = ( new_verts[u_border_filtered] - s_border * out_vec_filtered ) final_verts = new_verts final_faces = torch.tensor(mesh.faces).long().cuda() return final_verts, final_faces ================================================ FILE: meshudf/setup.py ================================================ # python setup.py build_ext --inplace from setuptools import setup from Cython.Build import cythonize import numpy as np import os includes_numpy = '-I ' + np.get_include() + ' ' os.environ['CFLAGS'] = includes_numpy + (os.environ['CFLAGS'] if 'CFLAGS' in os.environ else '') setup( name="My MC", ext_modules=cythonize("_marching_cubes_lewiner_cy.pyx", include_path=[np.get_include()], language="c++"), ) ================================================ FILE: meshudf/setup.sh ================================================ python3 setup.py build_ext --inplace ================================================ FILE: models/cfg_sampler.py ================================================ import numpy as np import torch import torch.nn as nn from copy import deepcopy # A wrapper model for Classifier-free guidance **SAMPLING** only # https://arxiv.org/abs/2207.12598 class ClassifierFreeSampleModel(nn.Module): def __init__(self, model): super().__init__() self.model = model # model is the actual model to run #assert self.model.cond_mask_prob > 0, 'Cannot run a guided diffusion on a model that has not been trained with no conditions' self.cond_mode = self.model.cond_mode self.clip_version = self.model.clip_version def forward(self, x, timesteps, y=None): cond_mode = self.model.cond_mode assert cond_mode in ['text', 'action'] y_uncond = deepcopy(y) y_uncond['uncond'] = True out = self.model(x, timesteps, y) out_uncond = self.model(x, timesteps, y_uncond) return out_uncond + (y['scale'].view(-1, 1, 1) * (out - out_uncond)) ================================================ FILE: models/mdm.py ================================================ import torch import torch.nn as nn import clip import torch import torch.nn as nn from models.openaimodel import UNetModel class MDM(nn.Module): def __init__(self, modeltype, num_actions, dropout=0.1, activation="gelu", legacy=False, dataset='deepfasion3d', clip_dim=512, arch='OpenUNet', clip_version=None, **kargs): super().__init__() self.legacy = legacy self.modeltype = modeltype self.num_actions = num_actions self.dataset = dataset self.dropout = dropout self.activation = activation self.clip_dim = clip_dim self.cond_mode = kargs.get('cond_mode', 'no_cond') self.cond_mask_prob = kargs.get('cond_mask_prob', 0.) self.arch = arch if self.arch == 'OpenUNet': num_classes=None if 'category' in self.cond_mode: num_classes = self.num_actions self.Unet = UNetModel( in_channels=1, model_channels=224, out_channels=1, num_res_blocks=2, attention_resolutions=[ 4, 2, 1 ], dropout=0, channel_mult=(1, 2, 4, 4), conv_resample=True, dims=1, num_classes=num_classes, use_checkpoint=True, use_fp16=False, num_heads=8, num_head_channels=-1, num_heads_upsample=-1, use_scale_shift_norm=False, resblock_updown=False, use_new_attention_order=False, use_spatial_transformer=False, # custom transformer support transformer_depth=1, # custom transformer support context_dim=clip_dim, # custom transformer support n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model legacy=False,) self.clip_version = clip_version if self.cond_mode != 'no_cond': if 'text' in self.cond_mode: #self.embed_text = nn.Linear(self.clip_dim, self.latent_dim) print('EMBED TEXT') print('Loading CLIP...') self.clip_version = clip_version self.clip_model = self.load_and_freeze_clip(clip_version) if 'sketch' in self.cond_mode: self.clip_version = clip_version def parameters_wo_clip(self): return [p for name, p in self.named_parameters() if not name.startswith('clip_model.')] def load_and_freeze_clip(self, clip_version): clip_model, _ = clip.load(clip_version, device='cpu', jit=False) # Must set jit=False for training # Freeze CLIP weights clip_model.eval() for p in clip_model.parameters(): p.requires_grad = False return clip_model def encode_text(self, raw_text): device = next(self.parameters()).device texts = clip.tokenize(raw_text, truncate=True).to(device) return self.clip_model.encode_text(texts).float() def forward(self, x, timesteps, y=None): """ x: [batch_size, njoints, nfeats, max_frames], denoted x_t in the paper timesteps: [batch_size] (int) """ if 'text' in self.cond_mode: enc_text = self.encode_text(y['text']) if 'sketch' in self.cond_mode or 'img' in self.cond_mode: context = y['context'] output = self.Unet(x, timesteps=timesteps, context=context) elif self.cond_mode == 'no_cond': output = self.Unet(x, timesteps=timesteps, y=None) elif 'text' in self.cond_mode: output = self.Unet(x, timesteps=timesteps, context=enc_text) else: output = self.Unet(x, timesteps=timesteps, y=y['action_text']) return output def train(self, *args, **kwargs): super().train(*args, **kwargs) ================================================ FILE: models/models.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F from einops import rearrange class LinearAttention(nn.Module): def __init__(self, dim, heads=4, dim_head=32): super().__init__() self.heads = heads hidden_dim = dim_head * heads self.to_qkv = nn.Conv3d(dim, hidden_dim * 3, 1, bias = False) self.to_out = nn.Conv3d(hidden_dim, dim, 1) def forward(self, x): b, c, d, h, w = x.shape qkv = self.to_qkv(x) q, k, v = rearrange(qkv, 'b (qkv heads c) h w -> qkv b heads c (h w)', heads = self.heads, qkv=3) k = k.softmax(dim=-1) context = torch.einsum('bhdn,bhen->bhde', k, v) out = torch.einsum('bhde,bhdn->bhen', context, q) out = rearrange(out, 'b heads c (h w) -> b (heads c) h w', heads=self.heads, h=h, w=w) return self.to_out(out) class LinAttnBlock(LinearAttention): """to match AttnBlock usage""" def __init__(self, in_channels): super().__init__(dim=in_channels, heads=1, dim_head=in_channels) class Downsample(nn.Module): def __init__(self, in_channels, with_conv): super().__init__() self.with_conv = with_conv if self.with_conv: # no asymmetric padding in torch conv, must do it ourselves self.conv = torch.nn.Conv3d(in_channels, in_channels, kernel_size=3, stride=2, padding=0) def forward(self, x): if self.with_conv: pad = (0,1,0,1,0,1) x = torch.nn.functional.pad(x, pad, mode="constant", value=0) x = self.conv(x) else: x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2) return x class Upsample(nn.Module): def __init__(self, in_channels, with_conv): super().__init__() self.with_conv = with_conv if self.with_conv: self.conv = torch.nn.Conv3d(in_channels, in_channels, kernel_size=3, stride=1, padding=1) def forward(self, x): x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode="trilinear") if self.with_conv: x = self.conv(x) return x class AttnBlock(nn.Module): def __init__(self, in_channels): super().__init__() self.in_channels = in_channels self.norm = Normalize(in_channels) self.q = torch.nn.Conv3d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.k = torch.nn.Conv3d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.v = torch.nn.Conv3d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.proj_out = torch.nn.Conv3d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) def forward(self, x): h_ = x h_ = self.norm(h_) q = self.q(h_) k = self.k(h_) v = self.v(h_) # compute attention b,c,d,h,w = q.shape q = q.reshape(b,c,h*w*d) q = q.permute(0,2,1) # b,hw,c k = k.reshape(b,c,h*w*d) # b,c,hw w_ = torch.bmm(q,k) # b,hw,hw w[b,i,j]=sum_c q[b,i,c]k[b,c,j] w_ = w_ * (int(c)**(-0.5)) w_ = torch.nn.functional.softmax(w_, dim=2) # attend to values v = v.reshape(b,c,h*w*d) w_ = w_.permute(0,2,1) # b,hw,hw (first hw of k, second of q) h_ = torch.bmm(v,w_) # b, c,hw (hw of q) h_[b,c,j] = sum_i v[b,c,i] w_[b,i,j] h_ = h_.reshape(b,c,d,h,w) h_ = self.proj_out(h_) return x+h_ def make_attn(in_channels, attn_type="vanilla"): assert attn_type in ["vanilla", "linear", "none"], f'attn_type {attn_type} unknown' print(f"making attention of type '{attn_type}' with {in_channels} in_channels") if attn_type == "vanilla": return AttnBlock(in_channels) elif attn_type == "none": return nn.Identity(in_channels) else: return LinAttnBlock(in_channels) def Normalize(in_channels, num_groups=4): return torch.nn.GroupNorm(num_groups=num_groups, num_channels=in_channels, eps=1e-6, affine=True) def nonlinearity(x): # swish #return x*torch.sigmoid(x) return F.relu(x) ##test abs z class ResnetBlock(nn.Module): def __init__(self, *, in_channels, out_channels=None, conv_shortcut=False, dropout, temb_channels=512): super().__init__() self.in_channels = in_channels out_channels = in_channels if out_channels is None else out_channels self.out_channels = out_channels self.use_conv_shortcut = conv_shortcut self.norm1 = Normalize(in_channels) self.conv1 = torch.nn.Conv3d(in_channels, out_channels, kernel_size=3, stride=1, padding=1) if temb_channels > 0: self.temb_proj = torch.nn.Linear(temb_channels, out_channels) self.norm2 = Normalize(out_channels) self.dropout = torch.nn.Dropout(dropout) self.conv2 = torch.nn.Conv3d(out_channels, out_channels, kernel_size=3, stride=1, padding=1) if self.in_channels != self.out_channels: if self.use_conv_shortcut: self.conv_shortcut = torch.nn.Conv3d(in_channels, out_channels, kernel_size=3, stride=1, padding=1) else: self.nin_shortcut = torch.nn.Conv3d(in_channels, out_channels, kernel_size=1, stride=1, padding=0) def forward(self, x, temb): h = x h = self.norm1(h) h = nonlinearity(h) h = self.conv1(h) if temb is not None: h = h + self.temb_proj(nonlinearity(temb))[:,:,None,None] h = self.norm2(h) h = nonlinearity(h) h = self.dropout(h) h = self.conv2(h) if self.in_channels != self.out_channels: if self.use_conv_shortcut: x = self.conv_shortcut(x) else: x = self.nin_shortcut(x) return x+h ### #Old version of auto encoder ### class DoubleConv(nn.Module): """(convolution => [BN] => ReLU) * 2""" def __init__(self, in_channels, out_channels, conv_type=nn.Conv3d, mid_channels=None): super(DoubleConv, self).__init__() if not mid_channels: mid_channels = out_channels #print('debug') self.double_conv = nn.Sequential( conv_type(in_channels, mid_channels, kernel_size=3, padding=1), nn.BatchNorm3d(mid_channels), nn.ReLU(inplace=True), conv_type(mid_channels, out_channels, kernel_size=3, padding=1), nn.BatchNorm3d(out_channels), nn.ReLU(inplace=True) ) def forward(self, x): return self.double_conv(x) class Down(nn.Module): """Downscaling with maxpool then double conv""" def __init__(self, in_channels, out_channels, conv_type=nn.Conv3d): super(Down, self).__init__() self.maxpool_conv = nn.Sequential( nn.MaxPool3d(2), DoubleConv(in_channels, out_channels, conv_type=conv_type) ) def forward(self, x): return self.maxpool_conv(x) class Up(nn.Module): """Upscaling then double conv""" def __init__(self, in_channels, out_channels, trilinear=True): super(Up, self).__init__() # if trilinear, use the normal convolutions to reduce the number of channels if trilinear: self.up = nn.Upsample(scale_factor=2, mode='trilinear', align_corners=True) self.conv = DoubleConv(in_channels, out_channels, mid_channels=in_channels // 2) else: self.up = nn.ConvTranspose3d(in_channels, in_channels // 2, kernel_size=2, stride=2) self.conv = DoubleConv(in_channels, out_channels) def forward(self, x1): x = self.up(x1) # input is CHW # diffY = x2.size()[2] - x1.size()[2] # diffX = x2.size()[3] - x1.size()[3] # x1 = F.pad(x1, [diffX // 2, diffX - diffX // 2, # diffY // 2, diffY - diffY // 2]) # if you have padding issues, see # https://github.com/HaiyongJiang/U-Net-Pytorch-Unstructured-Buggy/commit/0e854509c2cea854e247a9c615f175f76fbb2e3a # https://github.com/xiaopeng-liao/Pytorch-UNet/commit/8ebac70e633bac59fc22bb5195e513d5832fb3bd #x = torch.cat([x2, x1], dim=1) return self.conv(x) class DepthwiseSeparableConv3d(nn.Module): def __init__(self, nin, nout, kernel_size, padding, kernels_per_layer=1): super(DepthwiseSeparableConv3d, self).__init__() self.depthwise = nn.Conv3d(nin, nin * kernels_per_layer, kernel_size=kernel_size, padding=padding, groups=nin) self.pointwise = nn.Conv3d(nin * kernels_per_layer, nout, kernel_size=1) def forward(self, x): out = self.depthwise(x) out = self.pointwise(out) return out class Autoencoder_Old(nn.Module): def __init__(self, n_channels=1, width_multiplier=1, trilinear=True, use_ds_conv=False) -> None: super(Autoencoder_Old, self).__init__() # _channels = (32, 64, 128, 256, 512) _channels = (32, 64, 128, 256) #_channels = (64, 128, 256, 512) self.n_channels = n_channels self.channels = [int(c*width_multiplier) for c in _channels] self.trilinear = trilinear self.convtype = DepthwiseSeparableConv3d if use_ds_conv else nn.Conv3d self.inc = DoubleConv(n_channels, self.channels[0], conv_type=self.convtype) self.down1 = Down(self.channels[0], self.channels[1], conv_type=self.convtype) self.down2 = Down(self.channels[1], self.channels[2], conv_type=self.convtype) factor = 2 if trilinear else 1 self.down3 = Down(self.channels[2], self.channels[3], conv_type=self.convtype) self.up1 = Up(self.channels[3], self.channels[2], trilinear) self.up2 = Up(self.channels[2], self.channels[1], trilinear) self.up3 = Up(self.channels[1], n_channels, trilinear) def encode(self, x): x1 = self.inc(x) x2 = self.down1(x1) x3 = self.down2(x2) x4 = self.down3(x3) return x4 def decode(self, z): x = self.up1(z) x = self.up2(x) x = self.up3(x) return x def forward(self, input): z = self.encode(input) dec = self.decode(z) return dec ================================================ FILE: models/openaimodel.py ================================================ from abc import abstractmethod from functools import partial import math from typing import Iterable import numpy as np import torch as th import torch.nn as nn import torch.nn.functional as F from utils.ldm_utils import ( checkpoint, conv_nd, linear, avg_pool_nd, zero_module, normalization, timestep_embedding, ) from modules.attention import SpatialTransformer # dummy replace def convert_module_to_f16(x): pass def convert_module_to_f32(x): pass ## go class AttentionPool2d(nn.Module): """ Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py """ def __init__( self, spacial_dim: int, embed_dim: int, num_heads_channels: int, output_dim: int = None, ): super().__init__() self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5) self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1) self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1) self.num_heads = embed_dim // num_heads_channels self.attention = QKVAttention(self.num_heads) def forward(self, x): b, c, *_spatial = x.shape x = x.reshape(b, c, -1) # NC(HW) x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1) # NC(HW+1) x = x + self.positional_embedding[None, :, :].to(x.dtype) # NC(HW+1) x = self.qkv_proj(x) x = self.attention(x) x = self.c_proj(x) return x[:, :, 0] class TimestepBlock(nn.Module): """ Any module where forward() takes timestep embeddings as a second argument. """ @abstractmethod def forward(self, x, emb): """ Apply the module to `x` given `emb` timestep embeddings. """ class TimestepEmbedSequential(nn.Sequential, TimestepBlock): """ A sequential module that passes timestep embeddings to the children that support it as an extra input. """ def forward(self, x, emb, context=None): for layer in self: if isinstance(layer, TimestepBlock): x = layer(x, emb) elif isinstance(layer, SpatialTransformer): x = layer(x, context) else: x = layer(x) return x class Upsample(nn.Module): """ An upsampling layer with an optional convolution. :param channels: channels in the inputs and outputs. :param use_conv: a bool determining if a convolution is applied. :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then upsampling occurs in the inner-two dimensions. """ def __init__(self, channels, use_conv, dims=3, out_channels=None, padding=1): super().__init__() self.channels = channels self.out_channels = out_channels or channels self.use_conv = use_conv self.dims = dims if use_conv: self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding) def forward(self, x): assert x.shape[1] == self.channels if self.dims == 3: x = F.interpolate( x, (x.shape[2] * 2, x.shape[3] * 2, x.shape[4] * 2), mode="nearest" ) else: x = F.interpolate(x, scale_factor=2, mode="nearest") if self.use_conv: x = self.conv(x) return x class TransposedUpsample(nn.Module): 'Learned 2x upsampling without padding' def __init__(self, channels, out_channels=None, ks=5): super().__init__() self.channels = channels self.out_channels = out_channels or channels self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2) def forward(self,x): return self.up(x) class Downsample(nn.Module): """ A downsampling layer with an optional convolution. :param channels: channels in the inputs and outputs. :param use_conv: a bool determining if a convolution is applied. :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then downsampling occurs in the inner-two dimensions. """ def __init__(self, channels, use_conv, dims=3, out_channels=None,padding=1): super().__init__() self.channels = channels self.out_channels = out_channels or channels self.use_conv = use_conv self.dims = dims stride = 2 if dims != 3 else (2, 2, 2) if use_conv: self.op = conv_nd( dims, self.channels, self.out_channels, 3, stride=stride, padding=padding ) else: assert self.channels == self.out_channels self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride) def forward(self, x): assert x.shape[1] == self.channels return self.op(x) class ResBlock(TimestepBlock): """ A residual block that can optionally change the number of channels. :param channels: the number of input channels. :param emb_channels: the number of timestep embedding channels. :param dropout: the rate of dropout. :param out_channels: if specified, the number of out channels. :param use_conv: if True and out_channels is specified, use a spatial convolution instead of a smaller 1x1 convolution to change the channels in the skip connection. :param dims: determines if the signal is 1D, 2D, or 3D. :param use_checkpoint: if True, use gradient checkpointing on this module. :param up: if True, use this block for upsampling. :param down: if True, use this block for downsampling. """ def __init__( self, channels, emb_channels, dropout, out_channels=None, use_conv=False, use_scale_shift_norm=False, dims=3, use_checkpoint=False, up=False, down=False, ): super().__init__() self.channels = channels self.emb_channels = emb_channels self.dropout = dropout self.out_channels = out_channels or channels self.use_conv = use_conv self.use_checkpoint = use_checkpoint self.use_scale_shift_norm = use_scale_shift_norm self.in_layers = nn.Sequential( normalization(channels), nn.SiLU(), conv_nd(dims, channels, self.out_channels, 3, padding=1), ) self.updown = up or down if up: self.h_upd = Upsample(channels, False, dims) self.x_upd = Upsample(channels, False, dims) elif down: self.h_upd = Downsample(channels, False, dims) self.x_upd = Downsample(channels, False, dims) else: self.h_upd = self.x_upd = nn.Identity() self.emb_layers = nn.Sequential( nn.SiLU(), linear( emb_channels, 2 * self.out_channels if use_scale_shift_norm else self.out_channels, ), ) self.out_layers = nn.Sequential( normalization(self.out_channels), nn.SiLU(), nn.Dropout(p=dropout), zero_module( conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1) ), ) if self.out_channels == channels: self.skip_connection = nn.Identity() elif use_conv: self.skip_connection = conv_nd( dims, channels, self.out_channels, 3, padding=1 ) else: self.skip_connection = conv_nd(dims, channels, self.out_channels, 1) def forward(self, x, emb): """ Apply the block to a Tensor, conditioned on a timestep embedding. :param x: an [N x C x ...] Tensor of features. :param emb: an [N x emb_channels] Tensor of timestep embeddings. :return: an [N x C x ...] Tensor of outputs. """ return checkpoint( self._forward, (x, emb), self.parameters(), self.use_checkpoint ) def _forward(self, x, emb): if self.updown: in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1] h = in_rest(x) h = self.h_upd(h) x = self.x_upd(x) h = in_conv(h) else: h = self.in_layers(x) emb_out = self.emb_layers(emb).type(h.dtype) while len(emb_out.shape) < len(h.shape): emb_out = emb_out[..., None] if self.use_scale_shift_norm: out_norm, out_rest = self.out_layers[0], self.out_layers[1:] scale, shift = th.chunk(emb_out, 2, dim=1) h = out_norm(h) * (1 + scale) + shift h = out_rest(h) else: h = h + emb_out h = self.out_layers(h) return self.skip_connection(x) + h class AttentionBlock(nn.Module): """ An attention block that allows spatial positions to attend to each other. Originally ported from here, but adapted to the N-d case. https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66. """ def __init__( self, channels, num_heads=1, num_head_channels=-1, use_checkpoint=False, use_new_attention_order=False, ): super().__init__() self.channels = channels if num_head_channels == -1: self.num_heads = num_heads else: assert ( channels % num_head_channels == 0 ), f"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}" self.num_heads = channels // num_head_channels self.use_checkpoint = use_checkpoint self.norm = normalization(channels) self.qkv = conv_nd(1, channels, channels * 3, 1) if use_new_attention_order: # split qkv before split heads self.attention = QKVAttention(self.num_heads) else: # split heads before split qkv self.attention = QKVAttentionLegacy(self.num_heads) self.proj_out = zero_module(conv_nd(1, channels, channels, 1)) def forward(self, x): return checkpoint(self._forward, (x,), self.parameters(), True) # TODO: check checkpoint usage, is True # TODO: fix the .half call!!! #return pt_checkpoint(self._forward, x) # pytorch def _forward(self, x): b, c, *spatial = x.shape x = x.reshape(b, c, -1) qkv = self.qkv(self.norm(x)) h = self.attention(qkv) h = self.proj_out(h) return (x + h).reshape(b, c, *spatial) def count_flops_attn(model, _x, y): """ A counter for the `thop` package to count the operations in an attention operation. Meant to be used like: macs, params = thop.profile( model, inputs=(inputs, timestamps), custom_ops={QKVAttention: QKVAttention.count_flops}, ) """ b, c, *spatial = y[0].shape num_spatial = int(np.prod(spatial)) # We perform two matmuls with the same number of ops. # The first computes the weight matrix, the second computes # the combination of the value vectors. matmul_ops = 2 * b * (num_spatial ** 2) * c model.total_ops += th.DoubleTensor([matmul_ops]) class QKVAttentionLegacy(nn.Module): """ A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping """ def __init__(self, n_heads): super().__init__() self.n_heads = n_heads def forward(self, qkv): """ Apply QKV attention. :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs. :return: an [N x (H * C) x T] tensor after attention. """ bs, width, length = qkv.shape assert width % (3 * self.n_heads) == 0 ch = width // (3 * self.n_heads) q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1) scale = 1 / math.sqrt(math.sqrt(ch)) weight = th.einsum( "bct,bcs->bts", q * scale, k * scale ) # More stable with f16 than dividing afterwards weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) a = th.einsum("bts,bcs->bct", weight, v) return a.reshape(bs, -1, length) @staticmethod def count_flops(model, _x, y): return count_flops_attn(model, _x, y) class QKVAttention(nn.Module): """ A module which performs QKV attention and splits in a different order. """ def __init__(self, n_heads): super().__init__() self.n_heads = n_heads def forward(self, qkv): """ Apply QKV attention. :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs. :return: an [N x (H * C) x T] tensor after attention. """ bs, width, length = qkv.shape assert width % (3 * self.n_heads) == 0 ch = width // (3 * self.n_heads) q, k, v = qkv.chunk(3, dim=1) scale = 1 / math.sqrt(math.sqrt(ch)) weight = th.einsum( "bct,bcs->bts", (q * scale).view(bs * self.n_heads, ch, length), (k * scale).view(bs * self.n_heads, ch, length), ) # More stable with f16 than dividing afterwards weight = th.softmax(weight.float(), dim=-1).type(weight.dtype) a = th.einsum("bts,bcs->bct", weight, v.reshape(bs * self.n_heads, ch, length)) return a.reshape(bs, -1, length) @staticmethod def count_flops(model, _x, y): return count_flops_attn(model, _x, y) class UNetModel(nn.Module): """ The full UNet model with attention and timestep embedding. :param in_channels: channels in the input Tensor. :param model_channels: base channel count for the model. :param out_channels: channels in the output Tensor. :param num_res_blocks: number of residual blocks per downsample. :param attention_resolutions: a collection of downsample rates at which attention will take place. May be a set, list, or tuple. For example, if this contains 4, then at 4x downsampling, attention will be used. :param dropout: the dropout probability. :param channel_mult: channel multiplier for each level of the UNet. :param conv_resample: if True, use learned convolutions for upsampling and downsampling. :param dims: determines if the signal is 1D, 2D, or 3D. :param num_classes: if specified (as an int), then this model will be class-conditional with `num_classes` classes. :param use_checkpoint: use gradient checkpointing to reduce memory usage. :param num_heads: the number of attention heads in each attention layer. :param num_heads_channels: if specified, ignore num_heads and instead use a fixed channel width per attention head. :param num_heads_upsample: works with num_heads to set a different number of heads for upsampling. Deprecated. :param use_scale_shift_norm: use a FiLM-like conditioning mechanism. :param resblock_updown: use residual blocks for up/downsampling. :param use_new_attention_order: use a different attention pattern for potentially increased efficiency. """ def __init__( self, in_channels, model_channels, out_channels, num_res_blocks, attention_resolutions, dropout=0, channel_mult=(1, 2, 4, 8), conv_resample=True, dims=3, num_classes=None, use_checkpoint=False, use_fp16=False, num_heads=-1, num_head_channels=-1, num_heads_upsample=-1, use_scale_shift_norm=False, resblock_updown=False, use_new_attention_order=False, use_spatial_transformer=False, # custom transformer support transformer_depth=1, # custom transformer support context_dim=None, # custom transformer support n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model legacy=True, ): super().__init__() # if use_spatial_transformer: # assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...' # if context_dim is not None: # assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...' # from omegaconf.listconfig import ListConfig # if type(context_dim) == ListConfig: # context_dim = list(context_dim) if num_heads_upsample == -1: num_heads_upsample = num_heads if num_heads == -1: assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set' if num_head_channels == -1: assert num_heads != -1, 'Either num_heads or num_head_channels has to be set' self.in_channels = in_channels self.model_channels = model_channels self.out_channels = out_channels self.num_res_blocks = num_res_blocks self.attention_resolutions = attention_resolutions self.dropout = dropout self.channel_mult = channel_mult self.conv_resample = conv_resample self.num_classes = num_classes self.use_checkpoint = use_checkpoint self.dtype = th.float16 if use_fp16 else th.float32 self.num_heads = num_heads self.num_head_channels = num_head_channels self.num_heads_upsample = num_heads_upsample self.predict_codebook_ids = n_embed is not None time_embed_dim = model_channels * 4 self.time_embed = nn.Sequential( linear(model_channels, time_embed_dim), nn.SiLU(), linear(time_embed_dim, time_embed_dim), ) if self.num_classes is not None: self.label_emb = nn.Embedding(num_classes, time_embed_dim) if context_dim is not None: #print(context_dim) self.sketch_emb = nn.Linear(context_dim, time_embed_dim) self.input_blocks = nn.ModuleList( [ TimestepEmbedSequential( conv_nd(dims, in_channels, model_channels, 3, padding=1) ) ] ) self._feature_size = model_channels input_block_chans = [model_channels] ch = model_channels ds = 1 for level, mult in enumerate(channel_mult): for _ in range(num_res_blocks): layers = [ ResBlock( ch, time_embed_dim, dropout, out_channels=mult * model_channels, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ) ] ch = mult * model_channels if ds in attention_resolutions: if num_head_channels == -1: dim_head = ch // num_heads else: num_heads = ch // num_head_channels dim_head = num_head_channels if legacy: #num_heads = 1 dim_head = ch // num_heads if use_spatial_transformer else num_head_channels layers.append( AttentionBlock( ch, use_checkpoint=use_checkpoint, num_heads=num_heads, num_head_channels=dim_head, use_new_attention_order=use_new_attention_order, ) if not use_spatial_transformer else SpatialTransformer( ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim ) ) self.input_blocks.append(TimestepEmbedSequential(*layers)) self._feature_size += ch input_block_chans.append(ch) if level != len(channel_mult) - 1: out_ch = ch self.input_blocks.append( TimestepEmbedSequential( ResBlock( ch, time_embed_dim, dropout, out_channels=out_ch, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, down=True, ) if resblock_updown else Downsample( ch, conv_resample, dims=dims, out_channels=out_ch ) ) ) ch = out_ch input_block_chans.append(ch) ds *= 2 self._feature_size += ch if num_head_channels == -1: dim_head = ch // num_heads else: num_heads = ch // num_head_channels dim_head = num_head_channels if legacy: #num_heads = 1 dim_head = ch // num_heads if use_spatial_transformer else num_head_channels self.middle_block = TimestepEmbedSequential( ResBlock( ch, time_embed_dim, dropout, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ), AttentionBlock( ch, use_checkpoint=use_checkpoint, num_heads=num_heads, num_head_channels=dim_head, use_new_attention_order=use_new_attention_order, ) if not use_spatial_transformer else SpatialTransformer( ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim ), ResBlock( ch, time_embed_dim, dropout, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ), ) self._feature_size += ch self.output_blocks = nn.ModuleList([]) for level, mult in list(enumerate(channel_mult))[::-1]: for i in range(num_res_blocks + 1): ich = input_block_chans.pop() layers = [ ResBlock( ch + ich, time_embed_dim, dropout, out_channels=model_channels * mult, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ) ] ch = model_channels * mult if ds in attention_resolutions: if num_head_channels == -1: dim_head = ch // num_heads else: num_heads = ch // num_head_channels dim_head = num_head_channels if legacy: #num_heads = 1 dim_head = ch // num_heads if use_spatial_transformer else num_head_channels layers.append( AttentionBlock( ch, use_checkpoint=use_checkpoint, num_heads=num_heads_upsample, num_head_channels=dim_head, use_new_attention_order=use_new_attention_order, ) if not use_spatial_transformer else SpatialTransformer( ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim ) ) if level and i == num_res_blocks: out_ch = ch layers.append( ResBlock( ch, time_embed_dim, dropout, out_channels=out_ch, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, up=True, ) if resblock_updown else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch) ) ds //= 2 self.output_blocks.append(TimestepEmbedSequential(*layers)) self._feature_size += ch self.out = nn.Sequential( normalization(ch), nn.SiLU(), zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)), ) if self.predict_codebook_ids: self.id_predictor = nn.Sequential( normalization(ch), conv_nd(dims, model_channels, n_embed, 1), #nn.LogSoftmax(dim=1) # change to cross_entropy and produce non-normalized logits ) def convert_to_fp16(self): """ Convert the torso of the model to float16. """ self.input_blocks.apply(convert_module_to_f16) self.middle_block.apply(convert_module_to_f16) self.output_blocks.apply(convert_module_to_f16) def convert_to_fp32(self): """ Convert the torso of the model to float32. """ self.input_blocks.apply(convert_module_to_f32) self.middle_block.apply(convert_module_to_f32) self.output_blocks.apply(convert_module_to_f32) def forward(self, x, timesteps=None, context=None, y=None, **kwargs): """ Apply the model to an input batch. :param x: an [N x C x ...] Tensor of inputs. :param timesteps: a 1-D batch of timesteps. :param context: conditioning plugged in via crossattn :param y: an [N] Tensor of labels, if class-conditional. :return: an [N x C x ...] Tensor of outputs. """ # print(x.shape) assert (y is not None) == ( self.num_classes is not None ), "must specify y if and only if the model is class-conditional" hs = [] t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False) emb = self.time_embed(t_emb) if self.num_classes is not None: #print('test_shape', y.shape, (x.shape[0],)) assert y.shape == (x.shape[0],) emb = emb + self.label_emb(y) if context is not None: #print(context.shape, x.shape) assert context.shape[0] == x.shape[0] #print(context.dtype, self.sketch_emb.weight.dtype) emb = emb + self.sketch_emb(context) h = x.type(self.dtype) for module in self.input_blocks: h = module(h, emb, context) hs.append(h) h = self.middle_block(h, emb, context) for module in self.output_blocks: h = th.cat([h, hs.pop()], dim=1) h = module(h, emb, context) h = h.type(x.dtype) if self.predict_codebook_ids: return self.id_predictor(h) else: return self.out(h) class EncoderUNetModel(nn.Module): """ The half UNet model with attention and timestep embedding. For usage, see UNet. """ def __init__( self, image_size, in_channels, model_channels, out_channels, num_res_blocks, attention_resolutions, dropout=0, channel_mult=(1, 2, 4, 8), conv_resample=True, dims=3, use_checkpoint=False, use_fp16=False, num_heads=1, num_head_channels=-1, num_heads_upsample=-1, use_scale_shift_norm=False, resblock_updown=False, use_new_attention_order=False, pool="adaptive", *args, **kwargs ): super().__init__() if num_heads_upsample == -1: num_heads_upsample = num_heads self.in_channels = in_channels self.model_channels = model_channels self.out_channels = out_channels self.num_res_blocks = num_res_blocks self.attention_resolutions = attention_resolutions self.dropout = dropout self.channel_mult = channel_mult self.conv_resample = conv_resample self.use_checkpoint = use_checkpoint self.dtype = th.float16 if use_fp16 else th.float32 self.num_heads = num_heads self.num_head_channels = num_head_channels self.num_heads_upsample = num_heads_upsample time_embed_dim = model_channels * 4 self.time_embed = nn.Sequential( linear(model_channels, time_embed_dim), nn.SiLU(), linear(time_embed_dim, time_embed_dim), ) self.input_blocks = nn.ModuleList( [ TimestepEmbedSequential( conv_nd(dims, in_channels, model_channels, 3, padding=1) ) ] ) self._feature_size = model_channels input_block_chans = [model_channels] ch = model_channels ds = 1 for level, mult in enumerate(channel_mult): for _ in range(num_res_blocks): layers = [ ResBlock( ch, time_embed_dim, dropout, out_channels=mult * model_channels, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ) ] ch = mult * model_channels if ds in attention_resolutions: layers.append( AttentionBlock( ch, use_checkpoint=use_checkpoint, num_heads=num_heads, num_head_channels=num_head_channels, use_new_attention_order=use_new_attention_order, ) ) self.input_blocks.append(TimestepEmbedSequential(*layers)) self._feature_size += ch input_block_chans.append(ch) if level != len(channel_mult) - 1: out_ch = ch self.input_blocks.append( TimestepEmbedSequential( ResBlock( ch, time_embed_dim, dropout, out_channels=out_ch, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, down=True, ) if resblock_updown else Downsample( ch, conv_resample, dims=dims, out_channels=out_ch ) ) ) ch = out_ch input_block_chans.append(ch) ds *= 2 self._feature_size += ch self.middle_block = TimestepEmbedSequential( ResBlock( ch, time_embed_dim, dropout, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ), AttentionBlock( ch, use_checkpoint=use_checkpoint, num_heads=num_heads, num_head_channels=num_head_channels, use_new_attention_order=use_new_attention_order, ), ResBlock( ch, time_embed_dim, dropout, dims=dims, use_checkpoint=use_checkpoint, use_scale_shift_norm=use_scale_shift_norm, ), ) self._feature_size += ch self.pool = pool if pool == "adaptive": self.out = nn.Sequential( normalization(ch), nn.SiLU(), nn.AdaptiveAvgPool2d((1, 1)), zero_module(conv_nd(dims, ch, out_channels, 1)), nn.Flatten(), ) elif pool == "attention": assert num_head_channels != -1 self.out = nn.Sequential( normalization(ch), nn.SiLU(), AttentionPool2d( (image_size // ds), ch, num_head_channels, out_channels ), ) elif pool == "spatial": self.out = nn.Sequential( nn.Linear(self._feature_size, 2048), nn.ReLU(), nn.Linear(2048, self.out_channels), ) elif pool == "spatial_v2": self.out = nn.Sequential( nn.Linear(self._feature_size, 2048), normalization(2048), nn.SiLU(), nn.Linear(2048, self.out_channels), ) else: raise NotImplementedError(f"Unexpected {pool} pooling") def convert_to_fp16(self): """ Convert the torso of the model to float16. """ self.input_blocks.apply(convert_module_to_f16) self.middle_block.apply(convert_module_to_f16) def convert_to_fp32(self): """ Convert the torso of the model to float32. """ self.input_blocks.apply(convert_module_to_f32) self.middle_block.apply(convert_module_to_f32) def forward(self, x, timesteps): """ Apply the model to an input batch. :param x: an [N x C x ...] Tensor of inputs. :param timesteps: a 1-D batch of timesteps. :return: an [N x K] Tensor of outputs. """ emb = self.time_embed(timestep_embedding(timesteps, self.model_channels)) results = [] h = x.type(self.dtype) for module in self.input_blocks: h = module(h, emb) if self.pool.startswith("spatial"): results.append(h.type(x.dtype).mean(dim=(2, 3))) h = self.middle_block(h, emb) if self.pool.startswith("spatial"): results.append(h.type(x.dtype).mean(dim=(2, 3))) h = th.cat(results, axis=-1) return self.out(h) else: h = h.type(x.dtype) return self.out(h) ================================================ FILE: modules/attention.py ================================================ from inspect import isfunction import math import torch import torch.nn.functional as F from torch import nn, einsum from einops import rearrange, repeat from utils.ldm_utils import checkpoint def exists(val): return val is not None def uniq(arr): return{el: True for el in arr}.keys() def default(val, d): if exists(val): return val return d() if isfunction(d) else d def max_neg_value(t): return -torch.finfo(t.dtype).max def init_(tensor): dim = tensor.shape[-1] std = 1 / math.sqrt(dim) tensor.uniform_(-std, std) return tensor # feedforward class GEGLU(nn.Module): def __init__(self, dim_in, dim_out): super().__init__() self.proj = nn.Linear(dim_in, dim_out * 2) def forward(self, x): x, gate = self.proj(x).chunk(2, dim=-1) return x * F.gelu(gate) class FeedForward(nn.Module): def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.): super().__init__() inner_dim = int(dim * mult) dim_out = default(dim_out, dim) project_in = nn.Sequential( nn.Linear(dim, inner_dim), nn.GELU() ) if not glu else GEGLU(dim, inner_dim) self.net = nn.Sequential( project_in, nn.Dropout(dropout), nn.Linear(inner_dim, dim_out) ) def forward(self, x): return self.net(x) def zero_module(module): """ Zero out the parameters of a module and return it. """ for p in module.parameters(): p.detach().zero_() return module def Normalize(in_channels): return torch.nn.GroupNorm(num_groups=32, num_channels=in_channels, eps=1e-6, affine=True) class LinearAttention(nn.Module): def __init__(self, dim, heads=4, dim_head=32): super().__init__() self.heads = heads hidden_dim = dim_head * heads self.to_qkv = nn.Conv2d(dim, hidden_dim * 3, 1, bias = False) self.to_out = nn.Conv2d(hidden_dim, dim, 1) def forward(self, x): b, c, h, w = x.shape qkv = self.to_qkv(x) q, k, v = rearrange(qkv, 'b (qkv heads c) h w -> qkv b heads c (h w)', heads = self.heads, qkv=3) k = k.softmax(dim=-1) context = torch.einsum('bhdn,bhen->bhde', k, v) out = torch.einsum('bhde,bhdn->bhen', context, q) out = rearrange(out, 'b heads c (h w) -> b (heads c) h w', heads=self.heads, h=h, w=w) return self.to_out(out) class SpatialSelfAttention(nn.Module): def __init__(self, in_channels): super().__init__() self.in_channels = in_channels self.norm = Normalize(in_channels) self.q = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.k = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.v = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) self.proj_out = torch.nn.Conv2d(in_channels, in_channels, kernel_size=1, stride=1, padding=0) def forward(self, x): h_ = x h_ = self.norm(h_) q = self.q(h_) k = self.k(h_) v = self.v(h_) # compute attention b,c,h,w = q.shape q = rearrange(q, 'b c h w -> b (h w) c') k = rearrange(k, 'b c h w -> b c (h w)') w_ = torch.einsum('bij,bjk->bik', q, k) w_ = w_ * (int(c)**(-0.5)) w_ = torch.nn.functional.softmax(w_, dim=2) # attend to values v = rearrange(v, 'b c h w -> b c (h w)') w_ = rearrange(w_, 'b i j -> b j i') h_ = torch.einsum('bij,bjk->bik', v, w_) h_ = rearrange(h_, 'b c (h w) -> b c h w', h=h) h_ = self.proj_out(h_) return x+h_ class CrossAttention(nn.Module): def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.): super().__init__() inner_dim = dim_head * heads context_dim = default(context_dim, query_dim) self.scale = dim_head ** -0.5 self.heads = heads self.to_q = nn.Linear(query_dim, inner_dim, bias=False) self.to_k = nn.Linear(context_dim, inner_dim, bias=False) self.to_v = nn.Linear(context_dim, inner_dim, bias=False) self.to_out = nn.Sequential( nn.Linear(inner_dim, query_dim), nn.Dropout(dropout) ) def forward(self, x, context=None, mask=None): h = self.heads q = self.to_q(x) context = default(context, x) k = self.to_k(context) v = self.to_v(context) q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> (b h) n d', h=h), (q, k, v)) sim = einsum('b i d, b j d -> b i j', q, k) * self.scale if exists(mask): mask = rearrange(mask, 'b ... -> b (...)') max_neg_value = -torch.finfo(sim.dtype).max mask = repeat(mask, 'b j -> (b h) () j', h=h) sim.masked_fill_(~mask, max_neg_value) # attention, what we cannot get enough of attn = sim.softmax(dim=-1) out = einsum('b i j, b j d -> b i d', attn, v) out = rearrange(out, '(b h) n d -> b n (h d)', h=h) return self.to_out(out) class BasicTransformerBlock(nn.Module): def __init__(self, dim, n_heads, d_head, dropout=0., context_dim=None, gated_ff=True, checkpoint=True): super().__init__() self.attn1 = CrossAttention(query_dim=dim, heads=n_heads, dim_head=d_head, dropout=dropout) # is a self-attention self.ff = FeedForward(dim, dropout=dropout, glu=gated_ff) self.attn2 = CrossAttention(query_dim=dim, context_dim=context_dim, heads=n_heads, dim_head=d_head, dropout=dropout) # is self-attn if context is none self.norm1 = nn.LayerNorm(dim) self.norm2 = nn.LayerNorm(dim) self.norm3 = nn.LayerNorm(dim) self.checkpoint = checkpoint def forward(self, x, context=None): return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint) def _forward(self, x, context=None): x = self.attn1(self.norm1(x)) + x x = self.attn2(self.norm2(x), context=context) + x x = self.ff(self.norm3(x)) + x return x class SpatialTransformer(nn.Module): """ Transformer block for image-like data. First, project the input (aka embedding) and reshape to b, t, d. Then apply standard transformer action. Finally, reshape to image """ def __init__(self, in_channels, n_heads, d_head, depth=1, dropout=0., context_dim=None): super().__init__() self.in_channels = in_channels inner_dim = n_heads * d_head self.norm = Normalize(in_channels) self.proj_in = nn.Conv2d(in_channels, inner_dim, kernel_size=1, stride=1, padding=0) self.transformer_blocks = nn.ModuleList( [BasicTransformerBlock(inner_dim, n_heads, d_head, dropout=dropout, context_dim=context_dim) for d in range(depth)] ) self.proj_out = zero_module(nn.Conv2d(inner_dim, in_channels, kernel_size=1, stride=1, padding=0)) def forward(self, x, context=None): # note: if no context is given, cross-attention defaults to self-attention b, c, h, w = x.shape x_in = x x = self.norm(x) x = self.proj_in(x) x = rearrange(x, 'b c h w -> b (h w) c') for block in self.transformer_blocks: x = block(x, context=context) x = rearrange(x, 'b (h w) c -> b c h w', h=h, w=w) x = self.proj_out(x) return x + x_in ================================================ FILE: sample/generate_cat.py ================================================ from utils.fixseed import fixseed import os import torch from utils.parser_util import generate_args from utils.model_util import create_model_and_diffusion, load_model_wo_clip from utils import dist_util from models.cfg_sampler import ClassifierFreeSampleModel from AutoEncoder.models.coordsenc import CoordsEncoder from AutoEncoder.models.cbndec import CbnDecoder from meshudf.meshudf import get_mesh_from_udf from utils.utils import get_o3d_mesh_from_tensors import open3d as o3d from torch import Tensor import pymeshlab as ml cat2name = {0: 'long_sleeve_upper', 1: 'short_sleeve_upper', 2: 'no_sleeve_upper', 3: 'long_sleeve_dress', 4: 'short_sleeve_dress', 5: 'no_sleeve_dress', 8: 'dress', 6: 'long_pants', 7: 'short_pants'} def main(): args = generate_args() out_path = args.output_dir os.makedirs(out_path, exist_ok=True) dist_util.setup_dist(args.device) print("Creating model and diffusion...") model, diffusion = create_model_and_diffusion(args) print(f"Loading checkpoints from [{args.model_path}]...") state_dict = torch.load(args.model_path, map_location='cpu') load_model_wo_clip(model, state_dict) if args.guidance_param != 1: model = ClassifierFreeSampleModel(model) # wrapping model with the classifier-free sampler model.to(dist_util.dev()) model.eval() # disable random masking cond = {} cond["y"] = {} category = [args.category]*args.num_samples cond['y']['action'] = torch.tensor(category, dtype=torch.float).cuda() cond['y']['action_text'] = torch.tensor(category, dtype=torch.int64).cuda() print("You are running coditional generaion") print("Conidtion: ", cond['y']['action'] ) print(cond['y']['action'].shape) ckpt = torch.load(args.ae_dir) print(f'Load Drape From: {args.ae_dir}') latent_size = 32 coords_encoder = CoordsEncoder() hidden_dim = 512 num_hidden_layers = 5 decoder = CbnDecoder( coords_encoder.out_dim, latent_size, hidden_dim, num_hidden_layers, ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() for param in decoder.parameters(): param.requires_grad = False args.batch_size = args.num_samples sample_fn = diffusion.p_sample_loop sample = sample_fn( model, ( args.batch_size, 1, latent_size), # torch.Size([1, 1, 128, 128, 128]) clip_denoised=False, model_kwargs=cond, skip_timesteps=0, # 0 is the default value - i.e. don't skip any step init_image=None, progress=True, dump_steps=None, noise=None, const_noise=False, ) udf_max_dist = 0.1 for k in range(args.batch_size): lat = sample[k] def udf_func(c: Tensor) -> Tensor: c = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p v, t = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=args.resolution, max_batch=2**16, differentiable=False, ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) mesh_path = os.path.join(out_path, cat2name[args.category], f'{k}.obj') os.makedirs(os.path.dirname(mesh_path), exist_ok=True) o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d) print(f'saved results to {mesh_path}') ms = ml.MeshSet() ms.set_verbosity(False) ms.load_new_mesh(mesh_path) ms.apply_coord_laplacian_smoothing() ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500) ms.save_current_mesh(mesh_path) if __name__ == "__main__": main() ================================================ FILE: sample/generate_image.py ================================================ import sys from utils.fixseed import fixseed import os import time import numpy as np import torch from utils.parser_util import generate_args from utils.model_util import create_model_and_diffusion, load_model_wo_clip from utils import dist_util from models.cfg_sampler import ClassifierFreeSampleModel from AutoEncoder.models.coordsenc import CoordsEncoder from AutoEncoder.models.cbndec import CbnDecoder from meshudf.meshudf import get_mesh_from_udf from utils.utils import get_o3d_mesh_from_tensors from data_loaders.dataset import mask2bbox, crop_square, _convert_image_to_rgb, _transform_rgb import trimesh import open3d as o3d from PIL import Image from torch import Tensor from utils.utils import GridFiller import pymeshlab as ml from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize try: from torchvision.transforms import InterpolationMode BICUBIC = InterpolationMode.BICUBIC except ImportError: BICUBIC = Image.BICUBIC import clip def load_and_freeze_clip(clip_version): clip_model, _ = clip.load(clip_version, device='cpu', jit=False) # Must set jit=False for training # clip.model.convert_weights( # clip_model) # Actually this line is unnecessary since clip by default already on float16 # Freeze CLIP weights clip_model.eval() for p in clip_model.parameters(): p.requires_grad = False return clip_model def main(): args = generate_args() os.makedirs(args.output_dir, exist_ok=True) dist_util.setup_dist(args.device) print("Creating model and diffusion...") model, diffusion = create_model_and_diffusion(args) print(f"Loading checkpoints from [{args.model_path}]...") state_dict = torch.load(args.model_path, map_location='cpu') load_model_wo_clip(model, state_dict) if args.guidance_param != 1: model = ClassifierFreeSampleModel(model) # wrapping model with the classifier-free sampler model.to(dist_util.dev()) model.eval() # disable random masking clip_version = 'ViT-B/32' clip_model = load_and_freeze_clip(clip_version) clip_preprocess = _transform_rgb(224) ckpt = torch.load(args.ae_dir) print(f'Load AutoEncoder From: {args.ae_dir}') latent_size = 64 coords_encoder = CoordsEncoder() hidden_dim = 512 num_hidden_layers = 5 decoder = CbnDecoder( coords_encoder.out_dim, latent_size, hidden_dim, num_hidden_layers, ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() for param in decoder.parameters(): param.requires_grad = False img_path = args.image_path img_name = img_path.split('/')[-1] img_id = img_name.split('.')[0] mask_path = args.mask_path img_np = np.array(Image.open(img_path).convert('RGB')) mask_np = np.array(Image.open(mask_path).convert('1')) # get bbox from mask x0, y0, x1, y1 = mask2bbox(mask_np) bbox = [x0, y0, x1, y1] r = 0.7 img_comp = img_np * mask_np[:, :, None] + (1 - mask_np[:, :, None]) * (r*255 + (1 - r) * img_np) img_comp = crop_square(img_comp.astype(np.uint8), bbox) img_clean = img_np * mask_np[:, :, None] img_clean = crop_square(img_clean.astype(np.uint8), bbox) img = clip_preprocess(img_clean).unsqueeze(0) cond = {} cond["y"] = {} cond['y']['context'] = clip_model.encode_image(img).cuda() print("You are running conditional generaion") print("Conidtion: image, Image path: ", img_path, mask_path) args.batch_size = 1 sample_fn = diffusion.p_sample_loop sample = sample_fn( model, ( args.batch_size, 1, latent_size), clip_denoised=False, model_kwargs=cond, skip_timesteps=0, # 0 is the default value - i.e. don't skip any step init_image=None, progress=True, dump_steps=None, noise=None, const_noise=False, ) udf_max_dist = 0.1 lat = sample[0] def udf_func(c: Tensor) -> Tensor: c = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p mesh_path = os.path.join(args.output_dir, f'{img_id}.obj') os.makedirs(os.path.dirname(mesh_path), exist_ok=True) if args.watertight: size = args.resolution fast_grid_filler = GridFiller(size) udf, _ = fast_grid_filler.fill_grid(udf_func, max_batch=2**16) udf[udf < 0] = 0 # keep the max component of the extracted mesh import mcubes vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01) mesh = trimesh.Trimesh(vertices, faces) components = mesh.split(only_watertight=False) bbox = [] for k, c in enumerate(components): bbmin = c.vertices.min(0) bbmax = c.vertices.max(0) bbox.append((bbmax - bbmin).max()) max_component = np.argmax(bbox) mesh = components[max_component] mesh.vertices = mesh.vertices * (2.0 / size) - 1.0 # normalize it to [-1, 1] os.makedirs(os.path.dirname(mesh_path), exist_ok=True) trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path) else: v, t = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=args.resolution, max_batch=2**16, differentiable=False, ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d) ms = ml.MeshSet() ms.set_verbosity(False) ms.load_new_mesh(mesh_path) ms.apply_coord_laplacian_smoothing() ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500) ms.save_current_mesh(mesh_path) print(f'saved results to {mesh_path}') if __name__ == "__main__": main() ================================================ FILE: sample/generate_sketch.py ================================================ from utils.fixseed import fixseed import os import torch from utils.parser_util import generate_args from utils.model_util import create_model_and_diffusion, load_model_wo_clip from utils import dist_util from models.cfg_sampler import ClassifierFreeSampleModel from AutoEncoder.models.coordsenc import CoordsEncoder from AutoEncoder.models.cbndec import CbnDecoder from meshudf.meshudf import get_mesh_from_udf from utils.utils import get_o3d_mesh_from_tensors from data_loaders.dataset import _convert_image_to_rgb import open3d as o3d from PIL import Image from torch import Tensor import pymeshlab as ml from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize try: from torchvision.transforms import InterpolationMode BICUBIC = InterpolationMode.BICUBIC except ImportError: BICUBIC = Image.BICUBIC import clip def _transform(n_px): return Compose([ Resize(n_px, interpolation=BICUBIC), CenterCrop(n_px), _convert_image_to_rgb, ToTensor(), Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), ]) def load_and_freeze_clip(clip_version): clip_model, _ = clip.load(clip_version, device='cpu', jit=False) # Must set jit=False for training # Freeze CLIP weights clip_model.eval() for p in clip_model.parameters(): p.requires_grad = False return clip_model def main(): args = generate_args() out_path = args.output_dir os.makedirs(out_path, exist_ok=True) dist_util.setup_dist(args.device) args.batch_size = 1 print("Creating model and diffusion...") model, diffusion = create_model_and_diffusion(args) print(f"Loading checkpoints from [{args.model_path}]...") state_dict = torch.load(args.model_path, map_location='cpu') load_model_wo_clip(model, state_dict) if args.guidance_param != 1: model = ClassifierFreeSampleModel(model) # wrapping model with the classifier-free sampler model.to(dist_util.dev()) model.eval() # disable random masking print(f'using sketch: {args.sketch_path}') clip_version = 'ViT-B/32' img = Image.open(args.sketch_path) clip_preprocess = _transform(224) img = clip_preprocess(img).unsqueeze(0) clip_model = load_and_freeze_clip(clip_version) cond = {} cond["y"] = {} cond['y']['context'] = clip_model.encode_image(img).cuda() print("You are running conditional generaion") print("Conidtion: sketch image, Image path: ", args.sketch_path) ckpt = torch.load(args.ae_dir) print(f'Load AutoEncoder From: {args.ae_dir}') coords_encoder = CoordsEncoder() hidden_dim = 512 num_hidden_layers = 5 decoder = CbnDecoder( coords_encoder.out_dim, 32, hidden_dim, num_hidden_layers, ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() for param in decoder.parameters(): param.requires_grad = False sample_fn = diffusion.p_sample_loop sample = sample_fn( model, ( args.batch_size, 1, 32), clip_denoised=False, model_kwargs=cond, skip_timesteps=0, # 0 is the default value - i.e. don't skip any step init_image=None, progress=True, dump_steps=None, noise=None, const_noise=False, ) udf_max_dist = 0.1 if args.sketch_path is not None: id = args.sketch_path.split('/')[-1][:-4] lat = sample[0] def udf_func(c: Tensor) -> Tensor: c = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p v, t = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=args.resolution, max_batch=2**16, differentiable=False, ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) mesh_path = os.path.join(args.output_dir, f'sketch_{id}.obj') os.makedirs(os.path.dirname(mesh_path), exist_ok=True) o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d) ms = ml.MeshSet() ms.set_verbosity(False) ms.load_new_mesh(mesh_path) ms.apply_coord_laplacian_smoothing() ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500) ms.save_current_mesh(mesh_path) if __name__ == "__main__": main() ================================================ FILE: sample/generate_text.py ================================================ import os import numpy as np import torch from utils.parser_util import generate_args from utils.model_util import create_model_and_diffusion, load_model_wo_clip from utils import dist_util from models.cfg_sampler import ClassifierFreeSampleModel from AutoEncoder.models.coordsenc import CoordsEncoder from AutoEncoder.models.cbndec import CbnDecoder from meshudf.meshudf import get_mesh_from_udf from utils.utils import get_o3d_mesh_from_tensors import trimesh import open3d as o3d from PIL import Image from torch import Tensor from utils.utils import GridFiller import pymeshlab as ml from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize try: from torchvision.transforms import InterpolationMode BICUBIC = InterpolationMode.BICUBIC except ImportError: BICUBIC = Image.BICUBIC import clip def load_and_freeze_clip(clip_version): clip_model, _ = clip.load(clip_version, device='cpu', jit=False) # Must set jit=False for training # clip.model.convert_weights( # clip_model) # Actually this line is unnecessary since clip by default already on float16 # Freeze CLIP weights clip_model.eval() for p in clip_model.parameters(): p.requires_grad = False return clip_model def main(): args = generate_args() out_path = args.output_dir os.makedirs(out_path, exist_ok=True) args.batch_size = args.num_samples # Sampling a single batch from the testset, with exactly args.num_samples print("Creating model and diffusion...") model, diffusion = create_model_and_diffusion(args) print(args.guidance_param) if args.guidance_param != 1: ## 3 for text model = ClassifierFreeSampleModel(model) # wrapping model with the classifier-free sampler print(f"Loading checkpoints from [{args.model_path}]...") state_dict = torch.load(args.model_path, map_location='cpu') load_model_wo_clip(model, state_dict) model.to(dist_util.dev()) model.eval() # disable random masking print("You are running conditional generaion") import csv text2name = {} cond = {} cond['y'] = {} ckpt = torch.load(args.ae_dir) print(f'Load AutoEncoder From: {args.ae_dir}') latent_size = 64 coords_encoder = CoordsEncoder() hidden_dim = 512 num_hidden_layers = 5 decoder = CbnDecoder( coords_encoder.out_dim, latent_size, hidden_dim, num_hidden_layers, ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() for param in decoder.parameters(): param.requires_grad = False cond['y']['text'] = [args.prompt]*args.batch_size # for name in names: print("You are running conditional generaion") print("Conidtion sample: ", cond['y']['text'][0]) args.batch_size = len(cond['y']['text']) sample_fn = diffusion.p_sample_loop sample = sample_fn( model, ( args.batch_size, 1, latent_size), clip_denoised=False, model_kwargs=cond, skip_timesteps=0, # 0 is the default value - i.e. don't skip any step init_image=None, progress=True, dump_steps=None, noise=None, const_noise=False, ) bs = len(cond['y']['text']) udf_max_dist = 0.1 for k in range(bs): id = k lat = sample[k] def udf_func(c: Tensor) -> Tensor: c = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p mesh_path = os.path.join(args.output_dir, cond['y']['text'][k].replace(" ", "-").replace(".", "")[:100]+f'_{id}.obj') if args.watertight: size = args.resolution fast_grid_filler = GridFiller(size) udf, _ = fast_grid_filler.fill_grid(udf_func, max_batch=2**16) udf[udf < 0] = 0 # keep the max component of the extracted mesh import mcubes vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01) mesh = trimesh.Trimesh(vertices, faces) components = mesh.split(only_watertight=False) bbox = [] for k, c in enumerate(components): bbmin = c.vertices.min(0) bbmax = c.vertices.max(0) bbox.append((bbmax - bbmin).max()) max_component = np.argmax(bbox) mesh = components[max_component] mesh.vertices = mesh.vertices * (2.0 / size) - 1.0 # normalize it to [-1, 1] os.makedirs(os.path.dirname(mesh_path), exist_ok=True) trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path) ms = ml.MeshSet() ms.set_verbosity(False) ms.load_new_mesh(mesh_path) ms.meshing_remove_connected_component_by_face_number(mincomponentsize=5000) ms.save_current_mesh(mesh_path) else: v, t = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=args.resolution, max_batch=2**16, differentiable=False, ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) os.makedirs(os.path.dirname(mesh_path), exist_ok=True) o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d) print(f"saved to: {args.output_dir}") if __name__ == "__main__": main() ================================================ FILE: sample/generate_uncond.py ================================================ from utils.fixseed import fixseed import os import torch from utils.parser_util import generate_args from utils.model_util import create_model_and_diffusion, load_model_wo_clip from utils import dist_util from models.cfg_sampler import ClassifierFreeSampleModel from AutoEncoder.models.coordsenc import CoordsEncoder from AutoEncoder.models.cbndec import CbnDecoder from meshudf.meshudf import get_mesh_from_udf from utils.utils import get_o3d_mesh_from_tensors import open3d as o3d from torch import Tensor import pymeshlab as ml import torch.nn.functional as F def main(): args = generate_args() out_path = args.output_dir os.makedirs(out_path, exist_ok=True) dist_util.setup_dist(args.device) assert args.num_samples <= args.batch_size, \ f'Please either increase batch_size({args.batch_size}) or reduce num_samples({args.num_samples})' args.batch_size = args.num_samples # Sampling a single batch from the testset, with exactly args.num_samples print("Creating model and diffusion...") model, diffusion = create_model_and_diffusion(args) print(f"Loading checkpoints from [{args.model_path}]...") state_dict = torch.load(args.model_path, map_location='cpu') load_model_wo_clip(model, state_dict) if args.guidance_param != 1: model = ClassifierFreeSampleModel(model) # wrapping model with the classifier-free sampler model.to(dist_util.dev()) model.eval() # disable random masking cond = {} cond["y"] = {} print("You are running unconditional generaion") ckpt = torch.load(args.ae_dir) print(f'Load AutoEncoder From: {args.ae_dir}') latent_size = 32 coords_encoder = CoordsEncoder() hidden_dim = 512 num_hidden_layers = 5 decoder = CbnDecoder( coords_encoder.out_dim, latent_size, hidden_dim, num_hidden_layers, ) decoder.load_state_dict(ckpt["decoder"], strict=True) decoder = decoder.cuda() decoder.eval() for param in decoder.parameters(): param.requires_grad = False sample_fn = diffusion.p_sample_loop sample = sample_fn( model, ( args.batch_size, 1, latent_size), # torch.Size([1, 1, 128, 128, 128]) clip_denoised=False, model_kwargs=cond, skip_timesteps=0, # 0 is the default value - i.e. don't skip any step init_image=None, progress=True, dump_steps=None, noise=None, const_noise=False, ) bs = args.batch_size udf_max_dist = 0.1 for k in range(bs): id = k lat = sample[k] def udf_func(c: Tensor) -> Tensor: c = coords_encoder.encode(c.unsqueeze(0)) p = decoder(c, lat).squeeze(0) p = torch.sigmoid(p) p = (1 - p) * udf_max_dist return p v, t = get_mesh_from_udf( udf_func, coords_range=(-1, 1), max_dist=udf_max_dist, N=args.resolution, max_batch=2**16, differentiable=False, ) pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t) mesh_path = os.path.join(args.output_dir, f'{id}.obj') os.makedirs(os.path.dirname(mesh_path), exist_ok=True) o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d) ms = ml.MeshSet() ms.set_verbosity(False) ms.load_new_mesh(mesh_path) ms.apply_coord_laplacian_smoothing() ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500) ms.save_current_mesh(mesh_path) print(f'saved results to {mesh_path}') if __name__ == "__main__": main() ================================================ FILE: train_diffcloth.py ================================================ # This code is based on https://github.com/openai/guided-diffusion """ Train a diffusion model on images. """ import os import json from utils.fixseed import fixseed from utils.parser_util import train_args from utils import dist_util from utils.logger import setup_logger from utils.comm import synchronize, is_main_process, get_rank, get_world_size, all_gather from utils.miscellaneous import mkdir, set_seed from training_loop_single import TrainLoop from models.cfg_sampler import ClassifierFreeSampleModel from utils.model_util import create_model_and_diffusion from data_loaders.dataset import UDFs3d import os import torch import numpy as np class TrainPlatform: def __init__(self, save_dir): pass def report_scalar(self, name, value, iteration, group_name=None): pass def report_args(self, args, name): pass def close(self): pass class TensorboardPlatform(TrainPlatform): def __init__(self, save_dir): from torch.utils.tensorboard import SummaryWriter self.writer = SummaryWriter(log_dir=save_dir) def report_scalar(self, name, value, iteration, group_name=None): self.writer.add_scalar(f'{group_name}/{name}', value, iteration) def close(self): self.writer.close() class NoPlatform(TrainPlatform): def __init__(self, save_dir): pass def make_data_sampler(dataset, shuffle, distributed): if distributed: return torch.utils.data.distributed.DistributedSampler(dataset, shuffle=shuffle) if shuffle: sampler = torch.utils.data.sampler.RandomSampler(dataset) else: sampler = torch.utils.data.sampler.SequentialSampler(dataset) return sampler class IterationBasedBatchSampler(torch.utils.data.sampler.BatchSampler): """ Wraps a BatchSampler, resampling from it until a specified number of iterations have been sampled """ def __init__(self, batch_sampler, num_iterations, start_iter=0): self.batch_sampler = batch_sampler self.num_iterations = num_iterations self.start_iter = start_iter def __iter__(self): iteration = self.start_iter while iteration <= self.num_iterations: # if the underlying sampler has a set_epoch method, like # DistributedSampler, used for making each process see # a different split of the dataset, then set it if hasattr(self.batch_sampler.sampler, "set_epoch"): self.batch_sampler.sampler.set_epoch(iteration) for batch in self.batch_sampler: iteration += 1 if iteration > self.num_iterations: break yield batch def __len__(self): return self.num_iterations def make_batch_data_sampler(sampler, images_per_gpu, num_iters=None, start_iter=0): batch_sampler = torch.utils.data.sampler.BatchSampler( sampler, images_per_gpu, drop_last=False ) return batch_sampler def main(): global logger args = train_args() fixseed(args.seed) os.makedirs(args.save_dir, exist_ok=True) args.num_gpus = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1 args.distributed = args.num_gpus > 1 args.device = torch.device(args.device) if args.distributed: print("Init distributed training on local rank {} ({}), world size {}".format(args.local_rank, int(os.environ["LOCAL_RANK"]), args.num_gpus)) torch.cuda.set_device(args.local_rank) torch.distributed.init_process_group( backend='nccl', init_method='env://' ) args.local_rank = int(os.environ["LOCAL_RANK"]) synchronize() logger = setup_logger("Diffcloth", args.save_dir, get_rank()) if args.save_dir is None: raise FileNotFoundError('save_dir was not specified.') elif os.path.exists(args.save_dir) and not args.overwrite: raise FileExistsError('save_dir [{}] already exists.'.format(args.save_dir)) elif not os.path.exists(args.save_dir): os.makedirs(args.save_dir) args_path = os.path.join(args.save_dir, 'args.json') with open(args_path, 'w') as fw: args4print = args args4print.device = str(args4print.device) json.dump(vars(args4print), fw, indent=4, sort_keys=True) logger.info("Using {} GPUs".format(args.num_gpus)) logger.info("creating data loader...") name = args.dataset dset_root = args.data_dir dset_category = 'train' dataset_train = UDFs3d(name, dset_root, dset_category, args.cond_mode) shuffle = True args.batch_size = 2 #4 images_per_gpu = args.batch_size images_per_batch = images_per_gpu * get_world_size() iters_per_batch = len(dataset_train) // images_per_batch num_iters = args.num_steps start_iter = 0 logger.info("Train with {} images per GPU.".format(images_per_gpu)) logger.info("Total batch size {}".format(images_per_batch)) logger.info("Total training steps {}".format(num_iters)) sampler = make_data_sampler(dataset_train, shuffle, args.distributed) batch_sampler = make_batch_data_sampler( sampler, images_per_gpu, num_iters, start_iter ) dataloader_train = torch.utils.data.DataLoader( dataset_train, args.batch_size, shuffle=True, num_workers=6, pin_memory=True, ) if args.unconstrained: args.num_actions = None logger.info("creating model and diffusion...") diff_model, diffusion = create_model_and_diffusion(args) if args.guidance_param != 1: print('classifier free') diff_model = ClassifierFreeSampleModel(diff_model) # wrapping model with the classifier-free sampler print(args.guidance_param) if args.distributed: args.gpu = args.local_rank args.world_size = torch.distributed.get_world_size() diff_model = diff_model.to(args.local_rank) diff_model = torch.nn.parallel.DistributedDataParallel( diff_model, device_ids=[args.local_rank], output_device=args.local_rank, find_unused_parameters=True, ) else: diff_model = diff_model.cuda() inds = np.random.choice(100000, 10000, replace=False) TrainLoop(args, diff_model, diffusion, dataloader_train, logger).run_loop(inds=inds) if __name__ == "__main__": main() ================================================ FILE: training_loop_single.py ================================================ import functools import os import time import numpy as np import blobfile as bf import torch from torch.optim import AdamW from diffusion import logger from utils import dist_util from diffusion.fp16_util import MixedPrecisionTrainer from diffusion.resample import LossAwareSampler from utils.comm import is_main_process from diffusion.resample import create_named_schedule_sampler from torch.utils.tensorboard import SummaryWriter from utils.utils import random_point_sampling from AutoEncoder.models.dgcnn import Dgcnn import clip # For ImageNet experiments, this was a good default value. # We found that the lg_loss_scale quickly climbed to # 20-21 within the first ~1K steps of training. INITIAL_LOG_LOSS_SCALE = 20.0 class TrainLoop: def __init__(self, args, model, diffusion, data, logger=None): self.args = args self.dataset = args.dataset self.data_dir = args.data_dir self.grid_size = args.grid_size self.logger = logger print(args.clip_value) print("Apply clip: ", args.clip_value) self.model = model self.diffusion = diffusion if args.distributed: self.cond_mode = model.module.cond_mode self.clip_version = model.module.clip_version else: self.clip_version = model.clip_version self.cond_mode = model.cond_mode self.data = data self.batch_size = args.batch_size self.microbatch = args.batch_size # deprecating this option self.lr = args.lr self.log_interval = args.log_interval self.save_interval = args.save_interval self.resume_checkpoint = args.resume_checkpoint self.use_fp16 = False # deprecating this option self.fp16_scale_growth = 1e-3 # deprecating this option self.weight_decay = args.weight_decay self.lr_anneal_steps = args.lr_anneal_steps self.step = 0 self.resume_step = 0 self.global_batch = self.batch_size # * dist.get_world_size() self.num_steps = args.num_steps print('num_actions: ', args.num_actions) print('dataloader length: ', len(self.data)) self.num_epochs = self.num_steps // len(self.data) + 1 self.sync_cuda = torch.cuda.is_available() print("batch_size:", self.batch_size) self._load_and_sync_parameters() self.mp_trainer = MixedPrecisionTrainer( model=self.model, use_fp16=self.use_fp16, fp16_scale_growth=self.fp16_scale_growth, ) self.save_dir = args.save_dir self.overwrite = args.overwrite self.opt = AdamW( self.mp_trainer.master_params, lr=self.lr, weight_decay=self.weight_decay ) self.device = torch.device("cpu") if torch.cuda.is_available() and dist_util.dev() != 'cpu': self.device = torch.device(dist_util.dev()) self.schedule_sampler_type = 'uniform' self.schedule_sampler = create_named_schedule_sampler(self.schedule_sampler_type, diffusion) self.eval_wrapper, self.eval_data, self.eval_gt_data = None, None, None self.use_ddp = False self.ddp_model = self.model self.log_writer = SummaryWriter(self.save_dir+"/logs") # added. if 'text' or 'img' in args.cond_mode: latent_size = 64 else: latent_size = 32 encoder = Dgcnn(latent_size) self.encoder = encoder.eval() ckpt = torch.load(args.ae_dir) self.encoder.load_state_dict(ckpt["encoder"], strict=True) for param in self.encoder.parameters(): param.requires_grad = False if args.distributed: self.local_rank = int(os.environ["LOCAL_RANK"]) self.vqvae = self.vqvae.to(device=self.local_rank) self.device = self.local_rank else: self.encoder = self.encoder.to(device=self.args.device) if 'sketch' in self.cond_mode or 'img' in self.cond_mode: print('EMBED SKETCH IMAGE') print('Loading CLIP...') self.clip_model = self.load_and_freeze_clip(self.clip_version) def _load_and_sync_parameters(self): resume_checkpoint = find_resume_checkpoint() or self.resume_checkpoint if resume_checkpoint: self.resume_step = parse_resume_step_from_filename(resume_checkpoint) self.logger.info(f"loading model from checkpoint: {resume_checkpoint}...") sd = dist_util.load_state_dict( resume_checkpoint, map_location="cpu" ) self.model.load_state_dict({k:v for k, v in sd.items()}, strict=False ) def load_and_freeze_clip(self, clip_version): clip_model, _ = clip.load(clip_version, device='cpu', jit=False) # Must set jit=False for training # Freeze CLIP weights clip_model.eval() for p in clip_model.parameters(): p.requires_grad = False return clip_model def worker_init_fn(self, worker_id): np.random.seed(int(time.time() * 10000000) % 10000000 + worker_id) def _load_optimizer_state(self): main_checkpoint = find_resume_checkpoint() or self.resume_checkpoint opt_checkpoint = bf.join( bf.dirname(main_checkpoint), f"opt{self.resume_step:09}.pt" ) if bf.exists(opt_checkpoint): self.logger.log(f"loading optimizer state from checkpoint: {opt_checkpoint}") state_dict = dist_util.load_state_dict( opt_checkpoint, map_location=dist_util.dev() ) self.opt.load_state_dict(state_dict) def randbool(self, *size): return torch.randint(2, size) == torch.randint(2, size) def run_loop(self, inds=None): loss_L1 = torch.nn.L1Loss().cuda(self.device) for epoch in range(self.num_epochs): print(f'Starting epoch {epoch}') for i, batch in enumerate(self.data): if 'sketch' in self.cond_mode or 'img' in self.cond_mode: _, _, pcds, coords, gt_udf, gt_grad, img = batch elif 'text' in self.cond_mode: _, _, pcds, coords, gt_udf, gt_grad, text = batch elif 'category' in self.cond_mode: _, _, pcds, coords, gt_udf, gt_grad, label = batch else: _, _, pcds, coords, gt_udf, gt_grad = batch loss_args = {} pcds = pcds.cuda() num_points_pcd = 10000 pcds = random_point_sampling(pcds, num_points_pcd, inds=inds) latent_codes = self.encoder(pcds).unsqueeze(1) if not (not self.lr_anneal_steps or self.step + self.resume_step < self.lr_anneal_steps): break cond = {} cond["y"] = {} if self.cond_mode == "no_cond": cond['y']['mask'] = torch.ones(latent_codes.shape, dtype=torch.bool).cuda() elif self.cond_mode == "category": cond['y']['action'] = torch.tensor(label, dtype=torch.float).cuda() cond['y']['action_text'] = torch.tensor(label, dtype=torch.int64).cuda() elif self.cond_mode == 'sketch' or self.cond_mode == 'img': cond['y']['context'] = self.clip_model.encode_image(img).cuda() elif self.cond_mode == 'text': cond['y']['text'] = text cond['y']['scale'] = self.args.guidance_param * torch.ones((len(text),1)).cuda() self.run_step(latent_codes, cond, loss_L1) if (self.step % self.log_interval == 0) and ((self.args.distributed and is_main_process()==True) or not self.args.distributed): info_dict = logger.get_current().name2val for k,v in info_dict.items(): if k == 'loss': log_str = 'step[{}]: loss[{:0.5f}]'.format(self.step+self.resume_step, v) self.logger.info(log_str) self.log_writer.add_scalar('Loss/loss', float(info_dict['loss']), self.step+self.resume_step) if k in ['step', 'samples'] or '_q' in k: continue if self.step % self.save_interval == 0: if self.args.distributed: if is_main_process()==True: self.save_distributed() else: self.save() self.model.eval() self.evaluate() self.model.train() # Run for a finite amount of time in integration tests. if os.environ.get("DIFFUSION_TRAINING_TEST", "") and self.step > 0: return self.step += 1 if not (not self.lr_anneal_steps or self.step + self.resume_step < self.lr_anneal_steps): break # Save the last checkpoint if it wasn't already saved. if (self.step - 1) % self.save_interval != 0: if is_main_process()==True: self.save() self.evaluate() def evaluate(self): return def run_step(self, batch, cond, loss_L1, loss_args=None): self.forward_backward(batch, cond, loss_L1, loss_args=loss_args) self.mp_trainer.optimize(self.opt) self._anneal_lr() self.log_step() def forward_backward(self, batch, cond, loss_L1, loss_args=None): self.mp_trainer.zero_grad() for i in range(0, batch.shape[0], self.microbatch): # Eliminates the microbatch feature assert i == 0 assert self.microbatch == self.batch_size micro = batch micro_cond = cond t, weights = self.schedule_sampler.sample(micro.shape[0], self.device) compute_losses = functools.partial( self.diffusion.training_losses, self.ddp_model, micro, # [bs, ch, image_size, image_size] t, # [bs](int) sampled timesteps loss_L1, model_kwargs=micro_cond, dataset=self.data.dataset, loss_args=loss_args ) losses = compute_losses() if isinstance(self.schedule_sampler, LossAwareSampler): self.schedule_sampler.update_with_local_losses( t, losses["loss"].detach() ) weights = weights.to(losses["loss"].device) loss = losses["loss"] log_loss_dict( self.diffusion, t, {k: v for k, v in losses.items()} ) self.mp_trainer.backward(loss) def _anneal_lr(self, gama=0.9): if self.step == 0: return if (self.step) % 1000 == 0: if self.lr <= 1e-7: return lr = self.lr * gama self.lr = lr for param_group in self.opt.param_groups: param_group["lr"] = lr print(f'adjust_lr:{lr}') def log_step(self): logger.logkv("step", self.step + self.resume_step) logger.logkv("samples", (self.step + self.resume_step + 1) * self.global_batch) def ckpt_file_name(self): return f"model{(self.step+self.resume_step):09d}.pt" def save_distributed(self): print("main thread saving state dict.") model_to_save = self.model.module if hasattr(self.model, 'module') else self.model state_dict = model_to_save.state_dict() def save_checkpoint_dis(state_dict): # Do not save CLIP weights clip_weights = [e for e in state_dict.keys() if e.startswith('clip_model.')] for e in clip_weights: del state_dict[e] logger.log(f"saving model...") filename = self.ckpt_file_name() with bf.BlobFile(bf.join(self.save_dir, filename), "wb") as f: torch.save(state_dict, f) save_checkpoint_dis(state_dict) def save(self): def save_checkpoint(params): state_dict = self.mp_trainer.master_params_to_state_dict(params) # Do not save CLIP weights clip_weights = [e for e in state_dict.keys() if e.startswith('clip_model.')] for e in clip_weights: del state_dict[e] logger.log(f"saving model...") filename = self.ckpt_file_name() with bf.BlobFile(bf.join(self.save_dir, filename), "wb") as f: torch.save(state_dict, f) save_checkpoint(self.mp_trainer.master_params) def parse_resume_step_from_filename(filename): """ Parse filenames of the form path/to/modelNNNNNN.pt, where NNNNNN is the checkpoint's number of steps. """ split = filename.split("model") if len(split) < 2: return 0 split1 = split[-1].split(".")[0] try: return int(split1) except ValueError: return 0 def get_blob_logdir(): # You can change this to be a separate path to save checkpoints to # a blobstore or some external drive. return logger.get_dir() def find_resume_checkpoint(): # On your infrastructure, you may want to override this to automatically # discover the latest checkpoint on your blob storage, etc. return None def log_loss_dict(diffusion, ts, losses): for key, values in losses.items(): logger.logkv_mean(key, values.item()) ================================================ FILE: utils/PYTORCH3D_LICENSE ================================================ BSD License For PyTorch3D software Copyright (c) Facebook, Inc. and its affiliates. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: utils/__init__.py ================================================ from .logger import * ================================================ FILE: utils/comm.py ================================================ """ Copyright (c) Microsoft Corporation. Licensed under the MIT license. This file contains primitives for multi-gpu communication. This is useful when doing distributed training. """ import pickle import time import torch import torch.distributed as dist def get_world_size(): if not dist.is_available(): return 1 if not dist.is_initialized(): return 1 return dist.get_world_size() def get_rank(): if not dist.is_available(): return 0 if not dist.is_initialized(): return 0 return dist.get_rank() def is_main_process(): return get_rank() == 0 def synchronize(): """ Helper function to synchronize (barrier) among all processes when using distributed training """ if not dist.is_available(): return if not dist.is_initialized(): return world_size = dist.get_world_size() if world_size == 1: return dist.barrier() def gather_on_master(data): """Same as all_gather, but gathers data on master process only, using CPU. Thus, this does not work with NCCL backend unless they add CPU support. The memory consumption of this function is ~ 3x of data size. While in principal, it should be ~2x, it's not easy to force Python to release memory immediately and thus, peak memory usage could be up to 3x. """ world_size = get_world_size() if world_size == 1: return [data] # serialized to a Tensor buffer = pickle.dumps(data) # trying to optimize memory, but in fact, it's not guaranteed to be released del data storage = torch.ByteStorage.from_buffer(buffer) del buffer tensor = torch.ByteTensor(storage) # obtain Tensor size of each rank local_size = torch.LongTensor([tensor.numel()]) size_list = [torch.LongTensor([0]) for _ in range(world_size)] dist.all_gather(size_list, local_size) size_list = [int(size.item()) for size in size_list] max_size = max(size_list) if local_size != max_size: padding = torch.ByteTensor(size=(max_size - local_size,)) tensor = torch.cat((tensor, padding), dim=0) del padding if is_main_process(): tensor_list = [] for _ in size_list: tensor_list.append(torch.ByteTensor(size=(max_size,))) dist.gather(tensor, gather_list=tensor_list, dst=0) del tensor else: dist.gather(tensor, gather_list=[], dst=0) del tensor return data_list = [] for tensor in tensor_list: buffer = tensor.cpu().numpy().tobytes() del tensor data_list.append(pickle.loads(buffer)) del buffer return data_list def all_gather(data): """ Run all_gather on arbitrary picklable data (not necessarily tensors) Args: data: any picklable object Returns: list[data]: list of data gathered from each rank """ world_size = get_world_size() if world_size == 1: return [data] # serialized to a Tensor buffer = pickle.dumps(data) storage = torch.ByteStorage.from_buffer(buffer) tensor = torch.ByteTensor(storage).to("cuda") # obtain Tensor size of each rank local_size = torch.LongTensor([tensor.numel()]).to("cuda") size_list = [torch.LongTensor([0]).to("cuda") for _ in range(world_size)] dist.all_gather(size_list, local_size) size_list = [int(size.item()) for size in size_list] max_size = max(size_list) # receiving Tensor from all ranks # we pad the tensor because torch all_gather does not support # gathering tensors of different shapes tensor_list = [] for _ in size_list: tensor_list.append(torch.ByteTensor(size=(max_size,)).to("cuda")) if local_size != max_size: padding = torch.ByteTensor(size=(max_size - local_size,)).to("cuda") tensor = torch.cat((tensor, padding), dim=0) dist.all_gather(tensor_list, tensor) data_list = [] for size, tensor in zip(size_list, tensor_list): buffer = tensor.cpu().numpy().tobytes()[:size] data_list.append(pickle.loads(buffer)) return data_list def reduce_dict(input_dict, average=True): """ Args: input_dict (dict): all the values will be reduced average (bool): whether to do average or sum Reduce the values in the dictionary from all processes so that process with rank 0 has the averaged results. Returns a dict with the same fields as input_dict, after reduction. """ world_size = get_world_size() if world_size < 2: return input_dict with torch.no_grad(): names = [] values = [] # sort the keys so that they are consistent across processes for k in sorted(input_dict.keys()): names.append(k) values.append(input_dict[k]) values = torch.stack(values, dim=0) dist.reduce(values, dst=0) if dist.get_rank() == 0 and average: # only main process gets accumulated, so only divide by # world_size in this case values /= world_size reduced_dict = {k: v for k, v in zip(names, values)} return reduced_dict ================================================ FILE: utils/dist_util.py ================================================ """ Helpers for distributed training. """ import socket import torch as th import torch.distributed as dist # Change this to reflect your cluster layout. # The GPU for a given rank is (rank % GPUS_PER_NODE). GPUS_PER_NODE = 8 SETUP_RETRY_COUNT = 3 used_device = 0 def setup_dist(device=0): """ Setup a distributed process group. """ global used_device used_device = device if dist.is_initialized(): return # os.environ["CUDA_VISIBLE_DEVICES"] = str(device) # f"{MPI.COMM_WORLD.Get_rank() % GPUS_PER_NODE}" # comm = MPI.COMM_WORLD # backend = "gloo" if not th.cuda.is_available() else "nccl" # if backend == "gloo": # hostname = "localhost" # else: # hostname = socket.gethostbyname(socket.getfqdn()) # os.environ["MASTER_ADDR"] = comm.bcast(hostname, root=0) # os.environ["RANK"] = str(comm.rank) # os.environ["WORLD_SIZE"] = str(comm.size) # port = comm.bcast(_find_free_port(), root=used_device) # os.environ["MASTER_PORT"] = str(port) # dist.init_process_group(backend=backend, init_method="env://") def dev(): """ Get the device to use for torch.distributed. """ global used_device if th.cuda.is_available() and used_device>=0: return th.device(f"cuda:{used_device}") return th.device("cpu") def load_state_dict(path, **kwargs): """ Load a PyTorch file without redundant fetches across MPI ranks. """ return th.load(path, **kwargs) def sync_params(params): """ Synchronize a sequence of Tensors across ranks from rank 0. """ for p in params: with th.no_grad(): dist.broadcast(p, 0) def _find_free_port(): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("", 0)) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) return s.getsockname()[1] finally: s.close() ================================================ FILE: utils/fixseed.py ================================================ import numpy as np import torch import random def fixseed(seed): print(f'setting seed: {seed}') torch.backends.cudnn.benchmark = False random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.random.manual_seed(seed) ================================================ FILE: utils/ldm_utils.py ================================================ # adopted from # https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py # and # https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py # and # https://github.com/openai/guided-diffusion/blob/0ba878e517b276c45d1195eb29f6f5f72659a05b/guided_diffusion/nn.py # # thanks! import os import math import torch import torch.nn as nn import numpy as np from einops import repeat import importlib def instantiate_from_config(config): if not "target" in config: if config == '__is_first_stage__': return None elif config == "__is_unconditional__": return None raise KeyError("Expected key `target` to instantiate.") return get_obj_from_str(config["target"])(**config.get("params", dict())) def get_obj_from_str(string, reload=False): module, cls = string.rsplit(".", 1) if reload: module_imp = importlib.import_module(module) importlib.reload(module_imp) return getattr(importlib.import_module(module, package=None), cls) def make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3): if schedule == "linear": betas = ( torch.linspace(linear_start ** 0.5, linear_end ** 0.5, n_timestep, dtype=torch.float64) ** 2 ) elif schedule == "cosine": timesteps = ( torch.arange(n_timestep + 1, dtype=torch.float64) / n_timestep + cosine_s ) alphas = timesteps / (1 + cosine_s) * np.pi / 2 alphas = torch.cos(alphas).pow(2) alphas = alphas / alphas[0] betas = 1 - alphas[1:] / alphas[:-1] betas = np.clip(betas, a_min=0, a_max=0.999) elif schedule == "sqrt_linear": betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) elif schedule == "sqrt": betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) ** 0.5 else: raise ValueError(f"schedule '{schedule}' unknown.") return betas.numpy() def make_ddim_timesteps(ddim_discr_method, num_ddim_timesteps, num_ddpm_timesteps, verbose=True): if ddim_discr_method == 'uniform': c = num_ddpm_timesteps // num_ddim_timesteps ddim_timesteps = np.asarray(list(range(0, num_ddpm_timesteps, c))) elif ddim_discr_method == 'quad': ddim_timesteps = ((np.linspace(0, np.sqrt(num_ddpm_timesteps * .8), num_ddim_timesteps)) ** 2).astype(int) else: raise NotImplementedError(f'There is no ddim discretization method called "{ddim_discr_method}"') # assert ddim_timesteps.shape[0] == num_ddim_timesteps # add one to get the final alpha values right (the ones from first scale to data during sampling) steps_out = ddim_timesteps + 1 if verbose: print(f'Selected timesteps for ddim sampler: {steps_out}') return steps_out def make_ddim_sampling_parameters(alphacums, ddim_timesteps, eta, verbose=True): # select alphas for computing the variance schedule alphas = alphacums[ddim_timesteps] alphas_prev = np.asarray([alphacums[0]] + alphacums[ddim_timesteps[:-1]].tolist()) # according the the formula provided in https://arxiv.org/abs/2010.02502 sigmas = eta * np.sqrt((1 - alphas_prev) / (1 - alphas) * (1 - alphas / alphas_prev)) if verbose: print(f'Selected alphas for ddim sampler: a_t: {alphas}; a_(t-1): {alphas_prev}') print(f'For the chosen value of eta, which is {eta}, ' f'this results in the following sigma_t schedule for ddim sampler {sigmas}') return sigmas, alphas, alphas_prev def betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999): """ Create a beta schedule that discretizes the given alpha_t_bar function, which defines the cumulative product of (1-beta) over time from t = [0,1]. :param num_diffusion_timesteps: the number of betas to produce. :param alpha_bar: a lambda that takes an argument t from 0 to 1 and produces the cumulative product of (1-beta) up to that part of the diffusion process. :param max_beta: the maximum beta to use; use values lower than 1 to prevent singularities. """ betas = [] for i in range(num_diffusion_timesteps): t1 = i / num_diffusion_timesteps t2 = (i + 1) / num_diffusion_timesteps betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta)) return np.array(betas) def extract_into_tensor(a, t, x_shape): b, *_ = t.shape out = a.gather(-1, t) return out.reshape(b, *((1,) * (len(x_shape) - 1))) def checkpoint(func, inputs, params, flag): """ Evaluate a function without caching intermediate activations, allowing for reduced memory at the expense of extra compute in the backward pass. :param func: the function to evaluate. :param inputs: the argument sequence to pass to `func`. :param params: a sequence of parameters `func` depends on but does not explicitly take as arguments. :param flag: if False, disable gradient checkpointing. """ if flag: args = tuple(inputs) + tuple(params) return CheckpointFunction.apply(func, len(inputs), *args) else: return func(*inputs) class CheckpointFunction(torch.autograd.Function): @staticmethod def forward(ctx, run_function, length, *args): ctx.run_function = run_function ctx.input_tensors = list(args[:length]) ctx.input_params = list(args[length:]) with torch.no_grad(): output_tensors = ctx.run_function(*ctx.input_tensors) return output_tensors @staticmethod def backward(ctx, *output_grads): ctx.input_tensors = [x.detach().requires_grad_(True) for x in ctx.input_tensors] with torch.enable_grad(): # Fixes a bug where the first op in run_function modifies the # Tensor storage in place, which is not allowed for detach()'d # Tensors. shallow_copies = [x.view_as(x) for x in ctx.input_tensors] output_tensors = ctx.run_function(*shallow_copies) input_grads = torch.autograd.grad( output_tensors, ctx.input_tensors + ctx.input_params, output_grads, allow_unused=True, ) del ctx.input_tensors del ctx.input_params del output_tensors return (None, None) + input_grads def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False): """ Create sinusoidal timestep embeddings. :param timesteps: a 1-D Tensor of N indices, one per batch element. These may be fractional. :param dim: the dimension of the output. :param max_period: controls the minimum frequency of the embeddings. :return: an [N x dim] Tensor of positional embeddings. """ if not repeat_only: half = dim // 2 freqs = torch.exp( -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half ).to(device=timesteps.device) args = timesteps[:, None].float() * freqs[None] embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1) if dim % 2: embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1) else: embedding = repeat(timesteps, 'b -> b d', d=dim) return embedding def zero_module(module): """ Zero out the parameters of a module and return it. """ for p in module.parameters(): p.detach().zero_() return module def scale_module(module, scale): """ Scale the parameters of a module and return it. """ for p in module.parameters(): p.detach().mul_(scale) return module def mean_flat(tensor): """ Take the mean over all non-batch dimensions. """ return tensor.mean(dim=list(range(1, len(tensor.shape)))) def normalization(channels): """ Make a standard normalization layer. :param channels: number of input channels. :return: an nn.Module for normalization. """ return GroupNorm32(32, channels) # PyTorch 1.7 has SiLU, but we support PyTorch 1.5. class SiLU(nn.Module): def forward(self, x): return x * torch.sigmoid(x) class GroupNorm32(nn.GroupNorm): def forward(self, x): return super().forward(x.float()).type(x.dtype) def conv_nd(dims, *args, **kwargs): """ Create a 1D, 2D, or 3D convolution module. """ if dims == 1: return nn.Conv1d(*args, **kwargs) elif dims == 2: return nn.Conv2d(*args, **kwargs) elif dims == 3: return nn.Conv3d(*args, **kwargs) raise ValueError(f"unsupported dimensions: {dims}") def linear(*args, **kwargs): """ Create a linear module. """ return nn.Linear(*args, **kwargs) def avg_pool_nd(dims, *args, **kwargs): """ Create a 1D, 2D, or 3D average pooling module. """ if dims == 1: return nn.AvgPool1d(*args, **kwargs) elif dims == 2: return nn.AvgPool2d(*args, **kwargs) elif dims == 3: return nn.AvgPool3d(*args, **kwargs) raise ValueError(f"unsupported dimensions: {dims}") class HybridConditioner(nn.Module): def __init__(self, c_concat_config, c_crossattn_config): super().__init__() self.concat_conditioner = instantiate_from_config(c_concat_config) self.crossattn_conditioner = instantiate_from_config(c_crossattn_config) def forward(self, c_concat, c_crossattn): c_concat = self.concat_conditioner(c_concat) c_crossattn = self.crossattn_conditioner(c_crossattn) return {'c_concat': [c_concat], 'c_crossattn': [c_crossattn]} def noise_like(shape, device, repeat=False): repeat_noise = lambda: torch.randn((1, *shape[1:]), device=device).repeat(shape[0], *((1,) * (len(shape) - 1))) noise = lambda: torch.randn(shape, device=device) return repeat_noise() if repeat else noise() ================================================ FILE: utils/logger.py ================================================ # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. import logging import os import sys from logging import StreamHandler, Handler, getLevelName # this class is a copy of logging.FileHandler except we end self.close() # at the end of each emit. While closing file and reopening file after each # write is not efficient, it allows us to see partial logs when writing to # fused Azure blobs, which is very convenient class FileHandler(StreamHandler): """ A handler class which writes formatted logging records to disk files. """ def __init__(self, filename, mode='a', encoding=None, delay=False): """ Open the specified file and use it as the stream for logging. """ # Issue #27493: add support for Path objects to be passed in filename = os.fspath(filename) #keep the absolute path, otherwise derived classes which use this #may come a cropper when the current directory changes self.baseFilename = os.path.abspath(filename) self.mode = mode self.encoding = encoding self.delay = delay if delay: #We don't open the stream, but we still need to call the #Handler constructor to set level, formatter, lock etc. Handler.__init__(self) self.stream = None else: StreamHandler.__init__(self, self._open()) def close(self): """ Closes the stream. """ self.acquire() try: try: if self.stream: try: self.flush() finally: stream = self.stream self.stream = None if hasattr(stream, "close"): stream.close() finally: # Issue #19523: call unconditionally to # prevent a handler leak when delay is set StreamHandler.close(self) finally: self.release() def _open(self): """ Open the current base file with the (original) mode and encoding. Return the resulting stream. """ return open(self.baseFilename, self.mode, encoding=self.encoding) def emit(self, record): """ Emit a record. If the stream was not opened because 'delay' was specified in the constructor, open it before calling the superclass's emit. """ if self.stream is None: self.stream = self._open() StreamHandler.emit(self, record) self.close() def __repr__(self): level = getLevelName(self.level) return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level) def setup_logger(name, save_dir, distributed_rank, filename="log.txt"): logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) # don't log results for the non-master process if distributed_rank > 0: return logger ch = logging.StreamHandler(stream=sys.stdout) ch.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s: %(message)s") ch.setFormatter(formatter) logger.addHandler(ch) if save_dir: fh = FileHandler(os.path.join(save_dir, filename)) fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) return logger ================================================ FILE: utils/misc.py ================================================ import torch def to_numpy(tensor): if torch.is_tensor(tensor): return tensor.cpu().numpy() elif type(tensor).__module__ != 'numpy': raise ValueError("Cannot convert {} to numpy array".format( type(tensor))) return tensor def to_torch(ndarray): if type(ndarray).__module__ == 'numpy': return torch.from_numpy(ndarray) elif not torch.is_tensor(ndarray): raise ValueError("Cannot convert {} to torch tensor".format( type(ndarray))) return ndarray def cleanexit(): import sys import os try: sys.exit(0) except SystemExit: os._exit(0) def load_model_wo_clip(model, state_dict): missing_keys, unexpected_keys = model.load_state_dict(state_dict, strict=False) assert len(unexpected_keys) == 0 assert all([k.startswith('clip_model.') for k in missing_keys]) def freeze_joints(x, joints_to_freeze): # Freezes selected joint *rotations* as they appear in the first frame # x [bs, [root+n_joints], joint_dim(6), seqlen] frozen = x.detach().clone() frozen[:, joints_to_freeze, :, :] = frozen[:, joints_to_freeze, :, :1] return frozen ================================================ FILE: utils/miscellaneous.py ================================================ # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. import errno import os import os.path as op import re import logging import numpy as np import torch import random import shutil from .comm import is_main_process import yaml def mkdir(path): # if it is the current folder, skip. # otherwise the original code will raise FileNotFoundError if path == '': return try: os.makedirs(path) except OSError as e: if e.errno != errno.EEXIST: raise def save_config(cfg, path): if is_main_process(): with open(path, 'w') as f: f.write(cfg.dump()) def config_iteration(output_dir, max_iter): save_file = os.path.join(output_dir, 'last_checkpoint') iteration = -1 if os.path.exists(save_file): with open(save_file, 'r') as f: fname = f.read().strip() model_name = os.path.basename(fname) model_path = os.path.dirname(fname) if model_name.startswith('model_') and len(model_name) == 17: iteration = int(model_name[-11:-4]) elif model_name == "model_final": iteration = max_iter elif model_path.startswith('checkpoint-') and len(model_path) == 18: iteration = int(model_path.split('-')[-1]) return iteration def get_matching_parameters(model, regexp, none_on_empty=True): """Returns parameters matching regular expression""" if not regexp: if none_on_empty: return {} else: return dict(model.named_parameters()) compiled_pattern = re.compile(regexp) params = {} for weight_name, weight in model.named_parameters(): if compiled_pattern.match(weight_name): params[weight_name] = weight return params def freeze_weights(model, regexp): """Freeze weights based on regular expression.""" logger = logging.getLogger("maskrcnn_benchmark.trainer") for weight_name, weight in get_matching_parameters(model, regexp).items(): weight.requires_grad = False logger.info("Disabled training of {}".format(weight_name)) def unfreeze_weights(model, regexp, backbone_freeze_at=-1, is_distributed=False): """Unfreeze weights based on regular expression. This is helpful during training to unfreeze freezed weights after other unfreezed weights have been trained for some iterations. """ logger = logging.getLogger("maskrcnn_benchmark.trainer") for weight_name, weight in get_matching_parameters(model, regexp).items(): weight.requires_grad = True logger.info("Enabled training of {}".format(weight_name)) if backbone_freeze_at >= 0: logger.info("Freeze backbone at stage: {}".format(backbone_freeze_at)) if is_distributed: model.module.backbone.body._freeze_backbone(backbone_freeze_at) else: model.backbone.body._freeze_backbone(backbone_freeze_at) def delete_tsv_files(tsvs): for t in tsvs: if op.isfile(t): try_delete(t) line = op.splitext(t)[0] + '.lineidx' if op.isfile(line): try_delete(line) def concat_files(ins, out): mkdir(op.dirname(out)) out_tmp = out + '.tmp' with open(out_tmp, 'wb') as fp_out: for i, f in enumerate(ins): logging.info('concating {}/{} - {}'.format(i, len(ins), f)) with open(f, 'rb') as fp_in: shutil.copyfileobj(fp_in, fp_out, 1024*1024*10) os.rename(out_tmp, out) def concat_tsv_files(tsvs, out_tsv): concat_files(tsvs, out_tsv) sizes = [os.stat(t).st_size for t in tsvs] sizes = np.cumsum(sizes) all_idx = [] for i, t in enumerate(tsvs): for idx in load_list_file(op.splitext(t)[0] + '.lineidx'): if i == 0: all_idx.append(idx) else: all_idx.append(str(int(idx) + sizes[i - 1])) with open(op.splitext(out_tsv)[0] + '.lineidx', 'w') as f: f.write('\n'.join(all_idx)) def load_list_file(fname): with open(fname, 'r') as fp: lines = fp.readlines() result = [line.strip() for line in lines] if len(result) > 0 and result[-1] == '': result = result[:-1] return result def try_once(func): def func_wrapper(*args, **kwargs): try: return func(*args, **kwargs) except Exception as e: logging.info('ignore error \n{}'.format(str(e))) return func_wrapper @try_once def try_delete(f): os.remove(f) def set_seed(seed, n_gpu): random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) if n_gpu > 0: torch.cuda.manual_seed_all(seed) def print_and_run_cmd(cmd): print(cmd) os.system(cmd) def write_to_yaml_file(context, file_name): with open(file_name, 'w') as fp: yaml.dump(context, fp, encoding='utf-8') def load_from_yaml_file(yaml_file): with open(yaml_file, 'r') as fp: return yaml.load(fp, Loader=yaml.CLoader) ================================================ FILE: utils/model_util.py ================================================ from models.mdm import MDM from diffusion import gaussian_diffusion as gd from diffusion.respace import SpacedDiffusion, space_timesteps def load_model_wo_clip(model, state_dict): missing_keys, _ = model.load_state_dict(state_dict, strict=False) assert all([k.startswith('clip_model.') for k in missing_keys]) def create_model_and_diffusion(args): model = MDM(**get_model_args(args)) diffusion = create_gaussian_diffusion(args) return model, diffusion def get_model_args(args): ''' we do not set action number here. ''' # default args clip_version = 'ViT-B/32' cond_mode = args.cond_mode return {'modeltype': '', 'num_actions': args.num_actions, 'dropout': 0.1, 'activation': "gelu", 'cond_mode': cond_mode, 'arch': args.arch, 'clip_version': clip_version, 'dataset': args.dataset} def create_gaussian_diffusion(args): # # default params predict_xstart = True # we always predict x_start (a.k.a. x0), that's our deal! steps = 1000 scale_beta = 1. # no scaling timestep_respacing = '' # can be used for ddim sampling, we don't use it. learn_sigma = False rescale_timesteps = False betas = gd.get_named_beta_schedule(args.noise_schedule, steps, scale_beta) loss_type = gd.LossType.MSE if not timestep_respacing: timestep_respacing = [steps] return SpacedDiffusion( use_timesteps=space_timesteps(steps, timestep_respacing), betas=betas, model_mean_type=( gd.ModelMeanType.EPSILON if not predict_xstart else gd.ModelMeanType.START_X ), model_var_type=( ( gd.ModelVarType.FIXED_LARGE if not args.sigma_small else gd.ModelVarType.FIXED_SMALL ) if not learn_sigma else gd.ModelVarType.LEARNED_RANGE ), loss_type=loss_type, rescale_timesteps=rescale_timesteps, args = args, ) ================================================ FILE: utils/parser_util.py ================================================ from argparse import ArgumentParser import argparse import os import json def parse_and_load_from_model(parser): # args according to the loaded model # do not try to specify them from cmd line since they will be overwritten add_data_options(parser) add_model_options(parser) add_diffusion_options(parser) args = parser.parse_args() args_to_overwrite = [] for group_name in ['dataset', 'model', 'diffusion']: args_to_overwrite += get_args_per_group_name(parser, args, group_name) if args.cond_mask_prob == 0: args.guidance_param = 1 return args def get_args_per_group_name(parser, args, group_name): for group in parser._action_groups: if group.title == group_name: group_dict = {a.dest: getattr(args, a.dest, None) for a in group._group_actions} return list(argparse.Namespace(**group_dict).__dict__.keys()) return ValueError('group_name was not found.') def get_model_path_from_args(): try: dummy_parser = ArgumentParser() dummy_parser.add_argument('model_path') dummy_args, _ = dummy_parser.parse_known_args() return dummy_args.model_path except: raise ValueError('model_path argument must be specified.') def add_base_options(parser): group = parser.add_argument_group('base') group.add_argument("--num_actions", default=9, type=int, help="num_classes.") group.add_argument("--cuda", default=True, type=bool, help="Use cuda device, otherwise use CPU.") group.add_argument("--device", default=0, type=int, help="Device id to use.") group.add_argument("--seed", default=10, type=int, help="For fixing random seed.") group.add_argument("--batch_size", default=64, type=int, help="Batch size during training.") group.add_argument("--distributed", default=False, type=bool, help="Use ddp to train model") def add_diffusion_options(parser): group = parser.add_argument_group('diffusion') group.add_argument("--noise_schedule", default='cosine', choices=['linear', 'cosine'], type=str, help="Noise schedule type") group.add_argument("--diffusion_steps", default=1000, type=int, help="Number of diffusion steps (denoted T in the paper)") group.add_argument("--sigma_small", default=True, type=bool, help="Use smaller sigma values.") def add_model_options(parser): group = parser.add_argument_group('model') group.add_argument("--arch", default='OpenUNet', choices=['OpenUNet'], type=str, help="Architecture types as reported in the paper.") group.add_argument("--cond_mask_prob", default=0, type=float, help="The probability of masking the condition during training." " For classifier-free guidance learning.") group.add_argument("--unconstrained", action='store_true', help="Model is trained unconditionally. That is, it is constrained by neither text nor action.") group.add_argument("--cond_mode", choices=['no_cond', 'text', 'sketch', 'category', 'img'], type=str,required=True, help="condition type") def add_data_options(parser): group = parser.add_argument_group('dataset') group.add_argument("--dataset", default='deepfashion3d', choices=['deepfashion3d', 'text2shape', 'pix3d', 'kcars' ], type=str, help="Dataset name (choose from list).") group.add_argument("--data_dir", default="", type=str, help="If empty, will use defaults according to the specified dataset.") def add_training_options(parser): group = parser.add_argument_group('training') group.add_argument("--save_dir", required=True, type=str, help="Path to save checkpoints and results.") group.add_argument("--ae_dir", required=False, type=str, help="Path to save checkpoints and results.") group.add_argument("--num_workers", default=4, type=int, help="num_workers.") group.add_argument("--grid_size", default=128, type=int, help="grid size.") group.add_argument("--overwrite", action='store_true', help="If True, will enable to use an already existing save_dir.") group.add_argument("--lr", default=1e-4, type=float, help="Learning rate.") group.add_argument("--weight_decay", default=0.0, type=float, help="Optimizer weight decay.") group.add_argument("--lr_anneal_steps", default=0, type=int, help="Number of learning rate anneal steps.") group.add_argument("--log_interval", default=10, type=int, help="Log losses each N steps") group.add_argument("--save_interval", default=50_000, type=int, help="Save checkpoints and run evaluation each N steps") group.add_argument("--num_steps", default=600000, type=int, help="Training will stop after the specified number of steps.") group.add_argument("--resume_checkpoint", default="", type=str, help="If not empty, will start from the specified checkpoint (path to model###.pt file).") group.add_argument("--clip_value", default=0.1, type=float, help="max_clipping value (0-max).") group.add_argument("--guidance_param", default=1.0, type=float, help="Classifier Free Guidance")#3.0 def add_sampling_options(parser): group = parser.add_argument_group('sampling') group.add_argument("--model_path", required=True, type=str, help="Path to model####.pt file to be sampled.") group.add_argument("--output_dir", default='', type=str, help="Path to results dir (auto created by the script). " "If empty, will create dir in parallel to checkpoint.") group.add_argument("--num_samples", default=1, type=int, help="Maximal number of prompts to sample, " "if loading dataset from file, this field will be ignored.") group.add_argument("--guidance_param", default=1.0, type=float, help="For classifier-free sampling - specifies the s parameter, as defined in the paper.") group.add_argument("--if_clip", action='store_true', help="If True, will run evaluation during training.") group.add_argument("--clip_value", default=0.1, type=float, help="max_clipping value (0-max).") def add_generate_options(parser): group = parser.add_argument_group('generate') group.add_argument("--grid_size", default=128, type=int, help="grid size.") group.add_argument("--category", default=0, type=int, required=False, help="Condition category.") group.add_argument("--sketch_path", default=None, type=str, required=False, help="Path to the condition sketch image.") group.add_argument("--image_path", default=None, type=str, required=False, help="Path to the condition image.") group.add_argument("--mask_path", default=None, type=str, required=False, help="Path to the condition mask.") group.add_argument("--prompt", default=None, type=str, required=False, help="text prompt for generation.") group.add_argument("--watertight", action='store_true', help="mesh attributes.") group.add_argument("--resolution", default=512, type=int, required=False, help="mesh resolution.") group.add_argument("--ae_dir", default=None, type=str, help="Path to ae") def train_args(): parser = ArgumentParser() add_base_options(parser) add_data_options(parser) add_model_options(parser) add_diffusion_options(parser) add_training_options(parser) parser.add_argument("--local_rank", type=int) return parser.parse_args() def generate_args(): parser = ArgumentParser() # args specified by the user: (all other will be loaded from the model) add_base_options(parser) add_sampling_options(parser) add_generate_options(parser) return parse_and_load_from_model(parser) def evaluation_parser(): parser = ArgumentParser() # args specified by the user: (all other will be loaded from the model) add_base_options(parser) return parse_and_load_from_model(parser) ================================================ FILE: utils/utils.py ================================================ import torch from typing import Iterable, List, Tuple, Union, Callable from torch import Tensor import open3d as o3d import numpy as np import math def batchify(inputs: List[Tensor], required_dim: int) -> Tuple[bool, List[Tensor]]: """Batchify input tensors if needed. All the input tensors with a number of dimensions smaller than required_dim will be expanded with a leading batch dimension. Args: inputs: The tensors to batchify. required_dim: The required number of dimensions. Returns: - A flag that indicates wether one of the inputs has been batchified. - The batchified tensors. """ results: List[Tensor] = [] has_changed = False for t in inputs: has_changed = len(t.shape) < required_dim or has_changed batched_t = torch.unsqueeze(t, dim=0) if has_changed else t results.append(batched_t) return has_changed, results def unbatchify(inputs: List[Tensor]) -> List[Tensor]: """Remove batch dimension from input tensors. Args: inputs: The tensors to unbatchify. Returns: The unbatchified tensors. """ results: List[Tensor] = [] for t in inputs: unbatched_t = torch.squeeze(t, dim=0) results.append(unbatched_t) return results def random_point_sampling(pcd: Tensor, num_points: int, inds=None) -> Tensor: """Sample the requested number of points from the given point cloud(s). Points are sampled randomly. If num_points is greater than NUM_POINTS, then points are sampled with replacement. Args: pcd: The input point cloud(s) with shape ([B,] NUM_POINTS, D). num_points: The number of points to sample. Returns: The sampled points with shape ([B,] NUM_SAMPLED_POINTS, D). """ #print(pcd.shape) batched, [pcd] = batchify([pcd], 3) batch_size, original_num_points, _ = pcd.shape #print(batch_size, original_num_points) #torch.random.manual_seed(10) if inds is None: #print(original_num_points, num_points) weights = torch.ones((batch_size, original_num_points), dtype=torch.float) weights = weights.to(pcd.device) replacement = original_num_points < num_points indices_to_sample = torch.multinomial(weights, num_points, replacement=replacement) else: #print(original_num_points, num_points) indices_to_sample = inds #print(indices_to_sample) batch_indices = torch.arange(batch_size).reshape(batch_size, 1) sampled_points = pcd[batch_indices, indices_to_sample] if batched: [sampled_points] = unbatchify([sampled_points]) return sampled_points def get_o3d_mesh_from_tensors( vertices: Union[Tensor, np.ndarray], triangles: Union[Tensor, np.ndarray], ) -> o3d.geometry.TriangleMesh: """Get open3d mesh from either numpy arrays or torch tensors. The input vertices must have shape (NUM_VERTICES, D), where D can be 3 (only X,Y,Z), 6 (X,Y,Z and normals) or 9 (X,Y,Z, normals and colors). The input triangles must have shape (NUM_TRIANGLES, D), where D can be 3 (only vertex indices) or 6 (vertex indices and normals). Args: vertices: The numpy array or torch tensor with vertices with shape (NUM_VERTICES, D). triangles: The numpy array or torch tensor with triangles with shape (NUM_TRIANGLES, D). Returns: The open3d mesh. """ mesh_o3d = o3d.geometry.TriangleMesh() if isinstance(vertices, Tensor): v = vertices.clone().detach().cpu().numpy() else: v = np.copy(vertices) if isinstance(triangles, Tensor): t = triangles.clone().detach().cpu().numpy() else: t = np.copy(triangles) mesh_o3d.vertices = o3d.utility.Vector3dVector(v[:, :3]) if v.shape[1] == 6: mesh_o3d.vertex_normals = o3d.utility.Vector3dVector(v[:, 3:6]) if v.shape[1] == 9: mesh_o3d.vertex_colors = o3d.utility.Vector3dVector(v[:, 6:9]) mesh_o3d.triangles = o3d.utility.Vector3iVector(t[:, :3]) if t.shape[1] == 6: mesh_o3d.triangle_normals = o3d.utility.Vector3dVector(t[:, 3:6]) return mesh_o3d def compute_gradients(x: Tensor, y: Tensor) -> Tensor: grad_outputs = torch.ones_like(y) grads = torch.autograd.grad(y, x, grad_outputs=grad_outputs, create_graph=True)[0] return grads def sample_udf( udf_func: Callable[[Tensor], Tensor], coords: Tensor, max_batch: int, grad: bool = False, ) -> Tensor: udf = torch.zeros(coords.shape[0]).cuda() start = 0 while start < coords.shape[0]: end = min(start + max_batch, coords.shape[0]) p = coords[start:end] if grad: udf[start:end] = udf_func(p) else: with torch.no_grad(): udf[start:end] = udf_func(p) start = end return udf class GridFiller: """ Coarse to fine method for querying an SDF network, using cached grids. # We start by evaluating the field on a low resolution grid, and then iteratively subdivide each voxel and re-evaluate the field only where needed until we reach a desired grid resolution. We subdivide voxels if the field absolute value on any of the voxel corners is smaller than the voxel diagonal √2∆x, where ∆x denotes voxel size. # In practice the coarsest level is here hardcoded to be 32**3. """ def __init__( self, final_resolution: int, voxel_origin: Tuple[int, int, int] = (-1, -1, -1), cube_side_length: float = 2.0, ): # Save attributes self.N_max = final_resolution self.num_samples = final_resolution**3 self.N_levels = [32 * (2**i) for i in range(int(math.log2(self.N_max) - 4))] self.voxel_origin = voxel_origin self.cube_side_length = cube_side_length # Construct grid, and precompute sparse masks, from 32 (coarsest grid) to final_resolution """ Create one empty grid (N,N,N,7) where the 7 channels are (x,y,z, UDF, +3 for gradients). """ voxel_size = self.cube_side_length / (self.N_max - 1) self.voxel_size = voxel_size overall_index = torch.arange(0, self.N_max**3, 1, out=torch.LongTensor()) samples = torch.zeros(self.N_max**3, 7) # Transform the first 3 columns to be the x, y, z indices. samples[:, 2] = overall_index % self.N_max samples[:, 1] = ( torch.div(overall_index, self.N_max, rounding_mode="floor") % self.N_max ) samples[:, 0] = ( torch.div( torch.div(overall_index, self.N_max, rounding_mode="floor"), self.N_max, rounding_mode="floor", ) % self.N_max ) # Then transform the first 3 columns to be the x, y, z coordinates. samples[:, 0] = (samples[:, 0] * voxel_size) + voxel_origin[2] samples[:, 1] = (samples[:, 1] * voxel_size) + voxel_origin[1] samples[:, 2] = (samples[:, 2] * voxel_size) + voxel_origin[0] samples.requires_grad = False #samples.pin_memory() #self.samples = samples.cuda() self.samples = samples """ Precompute binary masks for adressing the above grid at different resolutions. """ mask = torch.zeros(self.N_max**3).bool() mask = mask.reshape(self.N_max, self.N_max, self.N_max) # Fill dictionaries with precomputed masks. self.masks_coarse = {} self.masks_coarse_no_recompute = {} self.idxs_coarse_neighbors_blocks = {} for i, N in enumerate(self.N_levels): #### 1: Subsample coarsely. mask_coarse = mask.clone() mask_coarse[ :: self.N_max // N, :: self.N_max // N, :: self.N_max // N ] = True # (N_max**3) array, with True only for indices of the coarse sampling (N**3 locations): mask_coarse = mask_coarse.reshape(-1) self.masks_coarse[i] = mask_coarse.clone().cuda() #### 2: Compute the indices of neighboring blocks. neighbors_block_coarse = mask.clone() neighbors_block_coarse[ : self.N_max // N, : self.N_max // N, : self.N_max // N ] = True neighbors_block_coarse = neighbors_block_coarse.reshape(-1) # Shape (N**3 / 64, 64): idxs_coarse_neighbors_blocks[i] represents the (N_max // N)**3 indices covered by coarse point i. idxs_coarse_neighbors_blocks = torch.where(mask_coarse)[0].reshape( -1, 1 ) + torch.where(neighbors_block_coarse)[0].reshape(1, -1) self.idxs_coarse_neighbors_blocks[ i ] = idxs_coarse_neighbors_blocks.clone().cuda() #### 3: For levels finer than the coarsest one, do not recompute already queried SDFs. if i > 0: mask_coarse_no_recompute = mask_coarse.clone() mask_coarse_no_recompute[self.masks_coarse[i - 1]] = False self.masks_coarse_no_recompute[ i ] = mask_coarse_no_recompute.clone().cuda() def fill_grid( self, udf_func: Callable[[Tensor], Tensor], max_batch: int ) -> Tuple[Tensor, Tensor]: with torch.no_grad(): samples = self.samples.clone() close_surface_masks = {} idxs_coarse_neighbors_blocks_LOCAL = {} for level, N in enumerate(self.N_levels): """Prepare masks based on previous levels""" if level == 0: mask_coarse = self.masks_coarse[level] idxs_coarse_neighbors_blocks = self.idxs_coarse_neighbors_blocks[ level ].clone() mask_coarse_no_recompute = self.masks_coarse[level] else: # Mask using previous queries: binary mask. mask_coarse = self.masks_coarse[level].clone() for l in range(level): mask_coarse[ idxs_coarse_neighbors_blocks_LOCAL[l][ ~close_surface_masks[l] ] ] = False # Compute the corresponding indices tensor. if N < self.N_max: idxs_coarse_neighbors_blocks = ( self.idxs_coarse_neighbors_blocks[level].clone() ) idxs_coarse_neighbors_blocks = idxs_coarse_neighbors_blocks[ mask_coarse[self.masks_coarse[level]] ] else: idxs_coarse_neighbors_blocks = ( self.idxs_coarse_neighbors_blocks[level] ) # The no_recompute version does not query the decoder for nodes that have # already been computed at coarser levels. mask_coarse_no_recompute = self.masks_coarse_no_recompute[ level ].clone() for l in range(level): mask_coarse_no_recompute[ idxs_coarse_neighbors_blocks_LOCAL[l][ ~close_surface_masks[l] ] ] = False idxs_coarse_neighbors_blocks_LOCAL[level] = idxs_coarse_neighbors_blocks """ Query the network """ xyz = samples[mask_coarse_no_recompute, 0:3].cuda() # Query and fill grid. samples[mask_coarse_no_recompute, 3] = sample_udf( udf_func, xyz, max_batch=max_batch ).cpu() """ Prepare next levels queries """ if N < self.N_max: ## Which samples are close to the surface? step_size = 2.0 / N close_surface_mask = ( torch.abs(samples[mask_coarse, 3]) < 1.5 * 1.7 * step_size ) close_surface_masks[level] = close_surface_mask # For those far of the surface, we can ignore them for the future and copy the high value to their neighbors samples[ idxs_coarse_neighbors_blocks[~close_surface_mask], 3 ] = samples[mask_coarse, 3][~close_surface_mask].unsqueeze(-1) udf_values = samples[:, 3] udf_values = udf_values.reshape(self.N_max, self.N_max, self.N_max) #torch.cuda.empty_cache() # Compute gradients only where the predicted udf value is small. # mask_gradients = samples[:, 3] < (2.5 * self.cube_side_length / self.N_max) # samples[mask_gradients, 4:] = sample_grads( # udf_func, samples[mask_gradients, :3].cuda(), max_batch=max_batch # ).cpu() # gradients = samples[:, 4:] # gradients = gradients.reshape(self.N_max, self.N_max, self.N_max, 3) gradients = None del samples torch.cuda.empty_cache() return udf_values, gradients