Spaces:
				
			
			
	
			
			
		Running
		
			on 
			
			Zero
	
	
	
			
			
	
	
	
	
		
		
		Running
		
			on 
			
			Zero
	first commit
Browse filesThis view is limited to 50 files because it contains too many changes.  
							See raw diff
- LICENSE +35 -0
 - README.md +3 -0
 - app.py +141 -0
 - basicsr/.DS_Store +0 -0
 - basicsr/__init__.py +4 -0
 - basicsr/data/.DS_Store +0 -0
 - basicsr/data/__init__.py +101 -0
 - basicsr/data/__pycache__/__init__.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/__init__.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/data_util.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/data_util.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/degradations.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/degradations.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/ffhq_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/ffhq_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/paired_image_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/paired_image_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/prefetch_dataloader.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/prefetch_dataloader.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/realesrgan_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/realesrgan_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/realesrgan_paired_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/realesrgan_paired_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/reds_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/reds_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/single_image_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/single_image_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/transforms.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/transforms.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/video_test_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/video_test_dataset.cpython-38.pyc +0 -0
 - basicsr/data/__pycache__/vimeo90k_dataset.cpython-310.pyc +0 -0
 - basicsr/data/__pycache__/vimeo90k_dataset.cpython-38.pyc +0 -0
 - basicsr/data/data_sampler.py +48 -0
 - basicsr/data/data_util.py +315 -0
 - basicsr/data/degradations.py +765 -0
 - basicsr/data/ffhq_dataset.py +80 -0
 - basicsr/data/meta_info/meta_info_DIV2K800sub_GT.txt +0 -0
 - basicsr/data/meta_info/meta_info_REDS4_test_GT.txt +4 -0
 - basicsr/data/meta_info/meta_info_REDS_GT.txt +270 -0
 - basicsr/data/meta_info/meta_info_REDSofficial4_test_GT.txt +4 -0
 - basicsr/data/meta_info/meta_info_REDSval_official_test_GT.txt +30 -0
 - basicsr/data/meta_info/meta_info_Vimeo90K_test_GT.txt +0 -0
 - basicsr/data/meta_info/meta_info_Vimeo90K_test_fast_GT.txt +1225 -0
 - basicsr/data/meta_info/meta_info_Vimeo90K_test_medium_GT.txt +0 -0
 - basicsr/data/meta_info/meta_info_Vimeo90K_test_slow_GT.txt +1613 -0
 - basicsr/data/meta_info/meta_info_Vimeo90K_train_GT.txt +0 -0
 - basicsr/data/paired_image_dataset.py +106 -0
 - basicsr/data/prefetch_dataloader.py +122 -0
 - basicsr/data/realesrgan_dataset.py +384 -0
 
    	
        LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            S-Lab License 1.0
         
     | 
| 2 | 
         
            +
             
     | 
| 3 | 
         
            +
            Copyright 2024 S-Lab
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            Redistribution and use for non-commercial purpose in source and 
         
     | 
| 6 | 
         
            +
            binary forms, with or without modification, are permitted provided 
         
     | 
| 7 | 
         
            +
            that the following conditions are met:
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
            1. Redistributions of source code must retain the above copyright 
         
     | 
| 10 | 
         
            +
               notice, this list of conditions and the following disclaimer.
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            2. Redistributions in binary form must reproduce the above copyright 
         
     | 
| 13 | 
         
            +
               notice, this list of conditions and the following disclaimer in 
         
     | 
| 14 | 
         
            +
               the documentation and/or other materials provided with the 
         
     | 
| 15 | 
         
            +
               distribution.
         
     | 
| 16 | 
         
            +
             
     | 
| 17 | 
         
            +
            3. Neither the name of the copyright holder nor the names of its 
         
     | 
| 18 | 
         
            +
               contributors may be used to endorse or promote products derived 
         
     | 
| 19 | 
         
            +
               from this software without specific prior written permission.
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
         
     | 
| 22 | 
         
            +
            "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
         
     | 
| 23 | 
         
            +
            LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
         
     | 
| 24 | 
         
            +
            A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
         
     | 
| 25 | 
         
            +
            HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
         
     | 
| 26 | 
         
            +
            SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
         
     | 
| 27 | 
         
            +
            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
         
     | 
| 28 | 
         
            +
            DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
         
     | 
| 29 | 
         
            +
            THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
         
     | 
| 30 | 
         
            +
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
         
     | 
| 31 | 
         
            +
            OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
| 32 | 
         
            +
             
     | 
| 33 | 
         
            +
            In the event that redistribution and/or use for commercial purpose in 
         
     | 
| 34 | 
         
            +
            source or binary forms, with or without modification is required, 
         
     | 
| 35 | 
         
            +
            please contact the contributor(s) of the work.
         
     | 
    	
        README.md
    CHANGED
    
    | 
         @@ -5,6 +5,9 @@ colorFrom: green 
     | 
|
| 5 | 
         
             
            colorTo: purple
         
     | 
| 6 | 
         
             
            sdk: gradio
         
     | 
| 7 | 
         
             
            sdk_version: 5.8.0
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 8 | 
         
             
            app_file: app.py
         
     | 
| 9 | 
         
             
            pinned: false
         
     | 
| 10 | 
         
             
            license: other
         
     | 
| 
         | 
|
| 5 | 
         
             
            colorTo: purple
         
     | 
| 6 | 
         
             
            sdk: gradio
         
     | 
| 7 | 
         
             
            sdk_version: 5.8.0
         
     | 
| 8 | 
         
            +
            python_version: 3.10
         
     | 
| 9 | 
         
            +
            suggested_storage: small
         
     | 
| 10 | 
         
            +
            models: OAOA/InvSR
         
     | 
| 11 | 
         
             
            app_file: app.py
         
     | 
| 12 | 
         
             
            pinned: false
         
     | 
| 13 | 
         
             
            license: other
         
     | 
    	
        app.py
    ADDED
    
    | 
         @@ -0,0 +1,141 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            #!/usr/bin/env python
         
     | 
| 2 | 
         
            +
            # -*- coding:utf-8 -*-
         
     | 
| 3 | 
         
            +
            # Power by Zongsheng Yue 2024-12-11 17:17:41
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
            import spaces
         
     | 
| 6 | 
         
            +
            import warnings
         
     | 
| 7 | 
         
            +
            warnings.filterwarnings("ignore")
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
            import argparse
         
     | 
| 10 | 
         
            +
            import numpy as np
         
     | 
| 11 | 
         
            +
            import gradio as gr
         
     | 
| 12 | 
         
            +
            from pathlib import Path
         
     | 
| 13 | 
         
            +
            from omegaconf import OmegaConf
         
     | 
| 14 | 
         
            +
            from sampler_invsr import InvSamplerSR
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
            from utils import util_common
         
     | 
| 17 | 
         
            +
            from utils import util_image
         
     | 
| 18 | 
         
            +
            from basicsr.utils.download_util import load_file_from_url
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
            def get_configs(num_steps=1, chopping_size=128, seed=12345):
         
     | 
| 21 | 
         
            +
                configs = OmegaConf.load("./configs/sample-sd-turbo.yaml")
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
                if num_steps == 1:
         
     | 
| 24 | 
         
            +
                    configs.timesteps = [200,]
         
     | 
| 25 | 
         
            +
                elif num_steps == 2:
         
     | 
| 26 | 
         
            +
                    configs.timesteps = [200, 100]
         
     | 
| 27 | 
         
            +
                elif num_steps == 3:
         
     | 
| 28 | 
         
            +
                    configs.timesteps = [200, 100, 50]
         
     | 
| 29 | 
         
            +
                elif num_steps == 4:
         
     | 
| 30 | 
         
            +
                    configs.timesteps = [200, 150, 100, 50]
         
     | 
| 31 | 
         
            +
                elif num_steps == 5:
         
     | 
| 32 | 
         
            +
                    configs.timesteps = [250, 200, 150, 100, 50]
         
     | 
| 33 | 
         
            +
                else:
         
     | 
| 34 | 
         
            +
                    assert num_steps <= 250
         
     | 
| 35 | 
         
            +
                    configs.timesteps = np.linspace(
         
     | 
| 36 | 
         
            +
                        start=250, stop=0, num=num_steps, endpoint=False, dtype=np.int64()
         
     | 
| 37 | 
         
            +
                    ).tolist()
         
     | 
| 38 | 
         
            +
                print(f'Setting timesteps for inference: {configs.timesteps}')
         
     | 
| 39 | 
         
            +
             
     | 
| 40 | 
         
            +
                # path to save noise predictor
         
     | 
| 41 | 
         
            +
                started_ckpt_path = "noise_predictor_sd_turbo_v5.pth"
         
     | 
| 42 | 
         
            +
                # started_ckpt_dir = "./weights"
         
     | 
| 43 | 
         
            +
                # util_common.mkdir(started_ckpt_dir, delete=False, parents=True)
         
     | 
| 44 | 
         
            +
                # started_ckpt_path = Path(started_ckpt_dir) / started_ckpt_name
         
     | 
| 45 | 
         
            +
                # if not started_ckpt_path.exists():
         
     | 
| 46 | 
         
            +
                    # load_file_from_url(
         
     | 
| 47 | 
         
            +
                        # url="https://huggingface.co/OAOA/InvSR/resolve/main/noise_predictor_sd_turbo_v5.pth",
         
     | 
| 48 | 
         
            +
                        # model_dir=started_ckpt_dir,
         
     | 
| 49 | 
         
            +
                        # progress=True,
         
     | 
| 50 | 
         
            +
                        # file_name=started_ckpt_name,
         
     | 
| 51 | 
         
            +
                    # )
         
     | 
| 52 | 
         
            +
                configs.model_start.ckpt_path = started_ckpt_path
         
     | 
| 53 | 
         
            +
             
     | 
| 54 | 
         
            +
                configs.bs = 1
         
     | 
| 55 | 
         
            +
                configs.seed = 12345
         
     | 
| 56 | 
         
            +
                configs.basesr.chopping.pch_size = chopping_size
         
     | 
| 57 | 
         
            +
             
     | 
| 58 | 
         
            +
                return configs
         
     | 
| 59 | 
         
            +
             
     | 
| 60 | 
         
            +
            @spaces.GPU
         
     | 
| 61 | 
         
            +
            def predict(in_path, num_steps=1, chopping_size=128, seed=12345):
         
     | 
| 62 | 
         
            +
                configs = get_configs(num_steps=num_steps, chopping_size=chopping_size, seed=12345)
         
     | 
| 63 | 
         
            +
             
     | 
| 64 | 
         
            +
                sampler = InvSamplerSR(configs)
         
     | 
| 65 | 
         
            +
             
     | 
| 66 | 
         
            +
                out_dir = Path('invsr_output')
         
     | 
| 67 | 
         
            +
                if not out_dir.exists():
         
     | 
| 68 | 
         
            +
                    out_dir.mkdir()
         
     | 
| 69 | 
         
            +
                sampler.inference(in_path, out_path=out_dir, bs=1)
         
     | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
            +
                out_path = out_dir / f"{Path(in_path).stem}.png"
         
     | 
| 72 | 
         
            +
                assert out_path.exists(), 'Super-resolution failed!'
         
     | 
| 73 | 
         
            +
                im_sr = util_image.imread(out_path, chn="rgb", dtype="uint8")
         
     | 
| 74 | 
         
            +
             
     | 
| 75 | 
         
            +
                return im_sr, str(out_path)
         
     | 
| 76 | 
         
            +
             
     | 
| 77 | 
         
            +
            title = "Arbitrary-steps Image Super-resolution via Diffusion Inversion"
         
     | 
| 78 | 
         
            +
            description = r"""
         
     | 
| 79 | 
         
            +
            <b>Official Gradio demo</b> for <a href='https://github.com/zsyOAOA/InvSR' target='_blank'><b>Arbitrary-steps Image Super-resolution via Diffuion Inversion</b></a>.<br>
         
     | 
| 80 | 
         
            +
            🔥 InvSR is an image super-resolution method via Diffusion Inversion, supporting arbitrary sampling steps.<br>
         
     | 
| 81 | 
         
            +
            """
         
     | 
| 82 | 
         
            +
            article = r"""
         
     | 
| 83 | 
         
            +
            If you've found InvSR useful for your research or projects, please show your support by ⭐ the <a href='https://github.com/zsyOAOA/InvSR' target='_blank'>Github Repo</a>. Thanks!
         
     | 
| 84 | 
         
            +
            [](https://github.com/zsyOAOA/InvSR)
         
     | 
| 85 | 
         
            +
             
     | 
| 86 | 
         
            +
            ---
         
     | 
| 87 | 
         
            +
            If our work is useful for your research, please consider citing:
         
     | 
| 88 | 
         
            +
            ```bibtex
         
     | 
| 89 | 
         
            +
            @article{yue2024InvSR,
         
     | 
| 90 | 
         
            +
              title={Arbitrary-steps Image Super-resolution via Diffusion Inversion},
         
     | 
| 91 | 
         
            +
              author={Yue, Zongsheng and Kang, Liao and Loy, Chen Change},
         
     | 
| 92 | 
         
            +
              journal = {arXiv preprint arXiv:2412.09013},
         
     | 
| 93 | 
         
            +
              year={2024},
         
     | 
| 94 | 
         
            +
            }
         
     | 
| 95 | 
         
            +
            ```
         
     | 
| 96 | 
         
            +
             
     | 
| 97 | 
         
            +
            📋 **License**
         
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
            This project is licensed under <a rel="license" href="https://github.com/zsyOAOA/InvSR/blob/master/LICENSE">S-Lab License 1.0</a>.
         
     | 
| 100 | 
         
            +
            Redistribution and use for non-commercial purposes should follow this license.
         
     | 
| 101 | 
         
            +
             
     | 
| 102 | 
         
            +
            📧 **Contact**
         
     | 
| 103 | 
         
            +
             
     | 
| 104 | 
         
            +
            If you have any questions, please feel free to contact me via <b>zsyzam@gmail.com</b>.
         
     | 
| 105 | 
         
            +
            
         
     | 
| 106 | 
         
            +
            """
         
     | 
| 107 | 
         
            +
            demo = gr.Interface(
         
     | 
| 108 | 
         
            +
                fn=predict,
         
     | 
| 109 | 
         
            +
                inputs=[
         
     | 
| 110 | 
         
            +
                    gr.Image(type="filepath", label="Input: Low Quality Image"),
         
     | 
| 111 | 
         
            +
                    gr.Dropdown(
         
     | 
| 112 | 
         
            +
                        choices=[1,2,3,4,5],
         
     | 
| 113 | 
         
            +
                        value=1,
         
     | 
| 114 | 
         
            +
                        label="Number of steps",
         
     | 
| 115 | 
         
            +
                        ),
         
     | 
| 116 | 
         
            +
                    gr.Dropdown(
         
     | 
| 117 | 
         
            +
                        choices=[128, 256],
         
     | 
| 118 | 
         
            +
                        value=128,
         
     | 
| 119 | 
         
            +
                        label="Chopping size",
         
     | 
| 120 | 
         
            +
                        ),
         
     | 
| 121 | 
         
            +
                    gr.Number(value=12345, precision=0, label="Ranom seed")
         
     | 
| 122 | 
         
            +
                ],
         
     | 
| 123 | 
         
            +
                outputs=[
         
     | 
| 124 | 
         
            +
                    gr.Image(type="numpy", label="Output: High Quality Image"),
         
     | 
| 125 | 
         
            +
                    gr.File(label="Download the output")
         
     | 
| 126 | 
         
            +
                ],
         
     | 
| 127 | 
         
            +
                title=title,
         
     | 
| 128 | 
         
            +
                description=description,
         
     | 
| 129 | 
         
            +
                article=article,
         
     | 
| 130 | 
         
            +
                examples=[
         
     | 
| 131 | 
         
            +
                    ['./testdata/RealSet80/29.jpg',  3, 128, 12345],
         
     | 
| 132 | 
         
            +
                    ['./testdata/RealSet80/32.jpg',  1, 128, 12345],
         
     | 
| 133 | 
         
            +
                    ['./testdata/RealSet80/0030.jpg',  1, 128, 12345],
         
     | 
| 134 | 
         
            +
                    ['./testdata/RealSet80/2684538-PH.jpg', 1, 128, 12345],
         
     | 
| 135 | 
         
            +
                    ['./testdata/RealSet80/oldphoto6.png', 1, 128, 12345],
         
     | 
| 136 | 
         
            +
                  ]
         
     | 
| 137 | 
         
            +
                )
         
     | 
| 138 | 
         
            +
             
     | 
| 139 | 
         
            +
            demo.queue(max_size=5)
         
     | 
| 140 | 
         
            +
            demo.launch(share=True)
         
     | 
| 141 | 
         
            +
             
     | 
    	
        basicsr/.DS_Store
    ADDED
    
    | 
         Binary file (6.15 kB). View file 
     | 
| 
         | 
    	
        basicsr/__init__.py
    ADDED
    
    | 
         @@ -0,0 +1,4 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            # https://github.com/xinntao/BasicSR
         
     | 
| 2 | 
         
            +
            # flake8: noqa
         
     | 
| 3 | 
         
            +
            from .data import *
         
     | 
| 4 | 
         
            +
            from .utils import *
         
     | 
    	
        basicsr/data/.DS_Store
    ADDED
    
    | 
         Binary file (6.15 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__init__.py
    ADDED
    
    | 
         @@ -0,0 +1,101 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import importlib
         
     | 
| 2 | 
         
            +
            import numpy as np
         
     | 
| 3 | 
         
            +
            import random
         
     | 
| 4 | 
         
            +
            import torch
         
     | 
| 5 | 
         
            +
            import torch.utils.data
         
     | 
| 6 | 
         
            +
            from copy import deepcopy
         
     | 
| 7 | 
         
            +
            from functools import partial
         
     | 
| 8 | 
         
            +
            from os import path as osp
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            from basicsr.data.prefetch_dataloader import PrefetchDataLoader
         
     | 
| 11 | 
         
            +
            from basicsr.utils import get_root_logger, scandir
         
     | 
| 12 | 
         
            +
            from basicsr.utils.dist_util import get_dist_info
         
     | 
| 13 | 
         
            +
            from basicsr.utils.registry import DATASET_REGISTRY
         
     | 
| 14 | 
         
            +
             
     | 
| 15 | 
         
            +
            __all__ = ['build_dataset', 'build_dataloader']
         
     | 
| 16 | 
         
            +
             
     | 
| 17 | 
         
            +
            # automatically scan and import dataset modules for registry
         
     | 
| 18 | 
         
            +
            # scan all the files under the data folder with '_dataset' in file names
         
     | 
| 19 | 
         
            +
            data_folder = osp.dirname(osp.abspath(__file__))
         
     | 
| 20 | 
         
            +
            dataset_filenames = [osp.splitext(osp.basename(v))[0] for v in scandir(data_folder) if v.endswith('_dataset.py')]
         
     | 
| 21 | 
         
            +
            # import all the dataset modules
         
     | 
| 22 | 
         
            +
            _dataset_modules = [importlib.import_module(f'basicsr.data.{file_name}') for file_name in dataset_filenames]
         
     | 
| 23 | 
         
            +
             
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
            def build_dataset(dataset_opt):
         
     | 
| 26 | 
         
            +
                """Build dataset from options.
         
     | 
| 27 | 
         
            +
             
     | 
| 28 | 
         
            +
                Args:
         
     | 
| 29 | 
         
            +
                    dataset_opt (dict): Configuration for dataset. It must contain:
         
     | 
| 30 | 
         
            +
                        name (str): Dataset name.
         
     | 
| 31 | 
         
            +
                        type (str): Dataset type.
         
     | 
| 32 | 
         
            +
                """
         
     | 
| 33 | 
         
            +
                dataset_opt = deepcopy(dataset_opt)
         
     | 
| 34 | 
         
            +
                dataset = DATASET_REGISTRY.get(dataset_opt['type'])(dataset_opt)
         
     | 
| 35 | 
         
            +
                logger = get_root_logger()
         
     | 
| 36 | 
         
            +
                logger.info(f'Dataset [{dataset.__class__.__name__}] - {dataset_opt["name"]} is built.')
         
     | 
| 37 | 
         
            +
                return dataset
         
     | 
| 38 | 
         
            +
             
     | 
| 39 | 
         
            +
             
     | 
| 40 | 
         
            +
            def build_dataloader(dataset, dataset_opt, num_gpu=1, dist=False, sampler=None, seed=None):
         
     | 
| 41 | 
         
            +
                """Build dataloader.
         
     | 
| 42 | 
         
            +
             
     | 
| 43 | 
         
            +
                Args:
         
     | 
| 44 | 
         
            +
                    dataset (torch.utils.data.Dataset): Dataset.
         
     | 
| 45 | 
         
            +
                    dataset_opt (dict): Dataset options. It contains the following keys:
         
     | 
| 46 | 
         
            +
                        phase (str): 'train' or 'val'.
         
     | 
| 47 | 
         
            +
                        num_worker_per_gpu (int): Number of workers for each GPU.
         
     | 
| 48 | 
         
            +
                        batch_size_per_gpu (int): Training batch size for each GPU.
         
     | 
| 49 | 
         
            +
                    num_gpu (int): Number of GPUs. Used only in the train phase.
         
     | 
| 50 | 
         
            +
                        Default: 1.
         
     | 
| 51 | 
         
            +
                    dist (bool): Whether in distributed training. Used only in the train
         
     | 
| 52 | 
         
            +
                        phase. Default: False.
         
     | 
| 53 | 
         
            +
                    sampler (torch.utils.data.sampler): Data sampler. Default: None.
         
     | 
| 54 | 
         
            +
                    seed (int | None): Seed. Default: None
         
     | 
| 55 | 
         
            +
                """
         
     | 
| 56 | 
         
            +
                phase = dataset_opt['phase']
         
     | 
| 57 | 
         
            +
                rank, _ = get_dist_info()
         
     | 
| 58 | 
         
            +
                if phase == 'train':
         
     | 
| 59 | 
         
            +
                    if dist:  # distributed training
         
     | 
| 60 | 
         
            +
                        batch_size = dataset_opt['batch_size_per_gpu']
         
     | 
| 61 | 
         
            +
                        num_workers = dataset_opt['num_worker_per_gpu']
         
     | 
| 62 | 
         
            +
                    else:  # non-distributed training
         
     | 
| 63 | 
         
            +
                        multiplier = 1 if num_gpu == 0 else num_gpu
         
     | 
| 64 | 
         
            +
                        batch_size = dataset_opt['batch_size_per_gpu'] * multiplier
         
     | 
| 65 | 
         
            +
                        num_workers = dataset_opt['num_worker_per_gpu'] * multiplier
         
     | 
| 66 | 
         
            +
                    dataloader_args = dict(
         
     | 
| 67 | 
         
            +
                        dataset=dataset,
         
     | 
| 68 | 
         
            +
                        batch_size=batch_size,
         
     | 
| 69 | 
         
            +
                        shuffle=False,
         
     | 
| 70 | 
         
            +
                        num_workers=num_workers,
         
     | 
| 71 | 
         
            +
                        sampler=sampler,
         
     | 
| 72 | 
         
            +
                        drop_last=True)
         
     | 
| 73 | 
         
            +
                    if sampler is None:
         
     | 
| 74 | 
         
            +
                        dataloader_args['shuffle'] = True
         
     | 
| 75 | 
         
            +
                    dataloader_args['worker_init_fn'] = partial(
         
     | 
| 76 | 
         
            +
                        worker_init_fn, num_workers=num_workers, rank=rank, seed=seed) if seed is not None else None
         
     | 
| 77 | 
         
            +
                elif phase in ['val', 'test']:  # validation
         
     | 
| 78 | 
         
            +
                    dataloader_args = dict(dataset=dataset, batch_size=1, shuffle=False, num_workers=0)
         
     | 
| 79 | 
         
            +
                else:
         
     | 
| 80 | 
         
            +
                    raise ValueError(f"Wrong dataset phase: {phase}. Supported ones are 'train', 'val' and 'test'.")
         
     | 
| 81 | 
         
            +
             
     | 
| 82 | 
         
            +
                dataloader_args['pin_memory'] = dataset_opt.get('pin_memory', False)
         
     | 
| 83 | 
         
            +
                dataloader_args['persistent_workers'] = dataset_opt.get('persistent_workers', False)
         
     | 
| 84 | 
         
            +
             
     | 
| 85 | 
         
            +
                prefetch_mode = dataset_opt.get('prefetch_mode')
         
     | 
| 86 | 
         
            +
                if prefetch_mode == 'cpu':  # CPUPrefetcher
         
     | 
| 87 | 
         
            +
                    num_prefetch_queue = dataset_opt.get('num_prefetch_queue', 1)
         
     | 
| 88 | 
         
            +
                    logger = get_root_logger()
         
     | 
| 89 | 
         
            +
                    logger.info(f'Use {prefetch_mode} prefetch dataloader: num_prefetch_queue = {num_prefetch_queue}')
         
     | 
| 90 | 
         
            +
                    return PrefetchDataLoader(num_prefetch_queue=num_prefetch_queue, **dataloader_args)
         
     | 
| 91 | 
         
            +
                else:
         
     | 
| 92 | 
         
            +
                    # prefetch_mode=None: Normal dataloader
         
     | 
| 93 | 
         
            +
                    # prefetch_mode='cuda': dataloader for CUDAPrefetcher
         
     | 
| 94 | 
         
            +
                    return torch.utils.data.DataLoader(**dataloader_args)
         
     | 
| 95 | 
         
            +
             
     | 
| 96 | 
         
            +
             
     | 
| 97 | 
         
            +
            def worker_init_fn(worker_id, num_workers, rank, seed):
         
     | 
| 98 | 
         
            +
                # Set the worker seed to num_workers * rank + worker_id + seed
         
     | 
| 99 | 
         
            +
                worker_seed = num_workers * rank + worker_id + seed
         
     | 
| 100 | 
         
            +
                np.random.seed(worker_seed)
         
     | 
| 101 | 
         
            +
                random.seed(worker_seed)
         
     | 
    	
        basicsr/data/__pycache__/__init__.cpython-310.pyc
    ADDED
    
    | 
         Binary file (3.58 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/__init__.cpython-38.pyc
    ADDED
    
    | 
         Binary file (3.59 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/data_util.cpython-310.pyc
    ADDED
    
    | 
         Binary file (11.2 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/data_util.cpython-38.pyc
    ADDED
    
    | 
         Binary file (11.2 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/degradations.cpython-310.pyc
    ADDED
    
    | 
         Binary file (20.3 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/degradations.cpython-38.pyc
    ADDED
    
    | 
         Binary file (21.7 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/ffhq_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (3.08 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/ffhq_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (3.02 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/paired_image_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (3.88 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/paired_image_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (3.88 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/prefetch_dataloader.cpython-310.pyc
    ADDED
    
    | 
         Binary file (4.36 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/prefetch_dataloader.cpython-38.pyc
    ADDED
    
    | 
         Binary file (4.37 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/realesrgan_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (9.39 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/realesrgan_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (5.1 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/realesrgan_paired_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (4.06 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/realesrgan_paired_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (4.03 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/reds_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (10.6 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/reds_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (10.7 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/single_image_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (2.85 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/single_image_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (2.82 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/transforms.cpython-310.pyc
    ADDED
    
    | 
         Binary file (6 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/transforms.cpython-38.pyc
    ADDED
    
    | 
         Binary file (6.04 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/video_test_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (10.1 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/video_test_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (10.3 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/vimeo90k_dataset.cpython-310.pyc
    ADDED
    
    | 
         Binary file (5.8 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/__pycache__/vimeo90k_dataset.cpython-38.pyc
    ADDED
    
    | 
         Binary file (5.79 kB). View file 
     | 
| 
         | 
    	
        basicsr/data/data_sampler.py
    ADDED
    
    | 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import math
         
     | 
| 2 | 
         
            +
            import torch
         
     | 
| 3 | 
         
            +
            from torch.utils.data.sampler import Sampler
         
     | 
| 4 | 
         
            +
             
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            class EnlargedSampler(Sampler):
         
     | 
| 7 | 
         
            +
                """Sampler that restricts data loading to a subset of the dataset.
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
                Modified from torch.utils.data.distributed.DistributedSampler
         
     | 
| 10 | 
         
            +
                Support enlarging the dataset for iteration-based training, for saving
         
     | 
| 11 | 
         
            +
                time when restart the dataloader after each epoch
         
     | 
| 12 | 
         
            +
             
     | 
| 13 | 
         
            +
                Args:
         
     | 
| 14 | 
         
            +
                    dataset (torch.utils.data.Dataset): Dataset used for sampling.
         
     | 
| 15 | 
         
            +
                    num_replicas (int | None): Number of processes participating in
         
     | 
| 16 | 
         
            +
                        the training. It is usually the world_size.
         
     | 
| 17 | 
         
            +
                    rank (int | None): Rank of the current process within num_replicas.
         
     | 
| 18 | 
         
            +
                    ratio (int): Enlarging ratio. Default: 1.
         
     | 
| 19 | 
         
            +
                """
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
                def __init__(self, dataset, num_replicas, rank, ratio=1):
         
     | 
| 22 | 
         
            +
                    self.dataset = dataset
         
     | 
| 23 | 
         
            +
                    self.num_replicas = num_replicas
         
     | 
| 24 | 
         
            +
                    self.rank = rank
         
     | 
| 25 | 
         
            +
                    self.epoch = 0
         
     | 
| 26 | 
         
            +
                    self.num_samples = math.ceil(len(self.dataset) * ratio / self.num_replicas)
         
     | 
| 27 | 
         
            +
                    self.total_size = self.num_samples * self.num_replicas
         
     | 
| 28 | 
         
            +
             
     | 
| 29 | 
         
            +
                def __iter__(self):
         
     | 
| 30 | 
         
            +
                    # deterministically shuffle based on epoch
         
     | 
| 31 | 
         
            +
                    g = torch.Generator()
         
     | 
| 32 | 
         
            +
                    g.manual_seed(self.epoch)
         
     | 
| 33 | 
         
            +
                    indices = torch.randperm(self.total_size, generator=g).tolist()
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
                    dataset_size = len(self.dataset)
         
     | 
| 36 | 
         
            +
                    indices = [v % dataset_size for v in indices]
         
     | 
| 37 | 
         
            +
             
     | 
| 38 | 
         
            +
                    # subsample
         
     | 
| 39 | 
         
            +
                    indices = indices[self.rank:self.total_size:self.num_replicas]
         
     | 
| 40 | 
         
            +
                    assert len(indices) == self.num_samples
         
     | 
| 41 | 
         
            +
             
     | 
| 42 | 
         
            +
                    return iter(indices)
         
     | 
| 43 | 
         
            +
             
     | 
| 44 | 
         
            +
                def __len__(self):
         
     | 
| 45 | 
         
            +
                    return self.num_samples
         
     | 
| 46 | 
         
            +
             
     | 
| 47 | 
         
            +
                def set_epoch(self, epoch):
         
     | 
| 48 | 
         
            +
                    self.epoch = epoch
         
     | 
    	
        basicsr/data/data_util.py
    ADDED
    
    | 
         @@ -0,0 +1,315 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import cv2
         
     | 
| 2 | 
         
            +
            import numpy as np
         
     | 
| 3 | 
         
            +
            import torch
         
     | 
| 4 | 
         
            +
            from os import path as osp
         
     | 
| 5 | 
         
            +
            from torch.nn import functional as F
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            from basicsr.data.transforms import mod_crop
         
     | 
| 8 | 
         
            +
            from basicsr.utils import img2tensor, scandir
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
             
     | 
| 11 | 
         
            +
            def read_img_seq(path, require_mod_crop=False, scale=1, return_imgname=False):
         
     | 
| 12 | 
         
            +
                """Read a sequence of images from a given folder path.
         
     | 
| 13 | 
         
            +
             
     | 
| 14 | 
         
            +
                Args:
         
     | 
| 15 | 
         
            +
                    path (list[str] | str): List of image paths or image folder path.
         
     | 
| 16 | 
         
            +
                    require_mod_crop (bool): Require mod crop for each image.
         
     | 
| 17 | 
         
            +
                        Default: False.
         
     | 
| 18 | 
         
            +
                    scale (int): Scale factor for mod_crop. Default: 1.
         
     | 
| 19 | 
         
            +
                    return_imgname(bool): Whether return image names. Default False.
         
     | 
| 20 | 
         
            +
             
     | 
| 21 | 
         
            +
                Returns:
         
     | 
| 22 | 
         
            +
                    Tensor: size (t, c, h, w), RGB, [0, 1].
         
     | 
| 23 | 
         
            +
                    list[str]: Returned image name list.
         
     | 
| 24 | 
         
            +
                """
         
     | 
| 25 | 
         
            +
                if isinstance(path, list):
         
     | 
| 26 | 
         
            +
                    img_paths = path
         
     | 
| 27 | 
         
            +
                else:
         
     | 
| 28 | 
         
            +
                    img_paths = sorted(list(scandir(path, full_path=True)))
         
     | 
| 29 | 
         
            +
                imgs = [cv2.imread(v).astype(np.float32) / 255. for v in img_paths]
         
     | 
| 30 | 
         
            +
             
     | 
| 31 | 
         
            +
                if require_mod_crop:
         
     | 
| 32 | 
         
            +
                    imgs = [mod_crop(img, scale) for img in imgs]
         
     | 
| 33 | 
         
            +
                imgs = img2tensor(imgs, bgr2rgb=True, float32=True)
         
     | 
| 34 | 
         
            +
                imgs = torch.stack(imgs, dim=0)
         
     | 
| 35 | 
         
            +
             
     | 
| 36 | 
         
            +
                if return_imgname:
         
     | 
| 37 | 
         
            +
                    imgnames = [osp.splitext(osp.basename(path))[0] for path in img_paths]
         
     | 
| 38 | 
         
            +
                    return imgs, imgnames
         
     | 
| 39 | 
         
            +
                else:
         
     | 
| 40 | 
         
            +
                    return imgs
         
     | 
| 41 | 
         
            +
             
     | 
| 42 | 
         
            +
             
     | 
| 43 | 
         
            +
            def generate_frame_indices(crt_idx, max_frame_num, num_frames, padding='reflection'):
         
     | 
| 44 | 
         
            +
                """Generate an index list for reading `num_frames` frames from a sequence
         
     | 
| 45 | 
         
            +
                of images.
         
     | 
| 46 | 
         
            +
             
     | 
| 47 | 
         
            +
                Args:
         
     | 
| 48 | 
         
            +
                    crt_idx (int): Current center index.
         
     | 
| 49 | 
         
            +
                    max_frame_num (int): Max number of the sequence of images (from 1).
         
     | 
| 50 | 
         
            +
                    num_frames (int): Reading num_frames frames.
         
     | 
| 51 | 
         
            +
                    padding (str): Padding mode, one of
         
     | 
| 52 | 
         
            +
                        'replicate' | 'reflection' | 'reflection_circle' | 'circle'
         
     | 
| 53 | 
         
            +
                        Examples: current_idx = 0, num_frames = 5
         
     | 
| 54 | 
         
            +
                        The generated frame indices under different padding mode:
         
     | 
| 55 | 
         
            +
                        replicate: [0, 0, 0, 1, 2]
         
     | 
| 56 | 
         
            +
                        reflection: [2, 1, 0, 1, 2]
         
     | 
| 57 | 
         
            +
                        reflection_circle: [4, 3, 0, 1, 2]
         
     | 
| 58 | 
         
            +
                        circle: [3, 4, 0, 1, 2]
         
     | 
| 59 | 
         
            +
             
     | 
| 60 | 
         
            +
                Returns:
         
     | 
| 61 | 
         
            +
                    list[int]: A list of indices.
         
     | 
| 62 | 
         
            +
                """
         
     | 
| 63 | 
         
            +
                assert num_frames % 2 == 1, 'num_frames should be an odd number.'
         
     | 
| 64 | 
         
            +
                assert padding in ('replicate', 'reflection', 'reflection_circle', 'circle'), f'Wrong padding mode: {padding}.'
         
     | 
| 65 | 
         
            +
             
     | 
| 66 | 
         
            +
                max_frame_num = max_frame_num - 1  # start from 0
         
     | 
| 67 | 
         
            +
                num_pad = num_frames // 2
         
     | 
| 68 | 
         
            +
             
     | 
| 69 | 
         
            +
                indices = []
         
     | 
| 70 | 
         
            +
                for i in range(crt_idx - num_pad, crt_idx + num_pad + 1):
         
     | 
| 71 | 
         
            +
                    if i < 0:
         
     | 
| 72 | 
         
            +
                        if padding == 'replicate':
         
     | 
| 73 | 
         
            +
                            pad_idx = 0
         
     | 
| 74 | 
         
            +
                        elif padding == 'reflection':
         
     | 
| 75 | 
         
            +
                            pad_idx = -i
         
     | 
| 76 | 
         
            +
                        elif padding == 'reflection_circle':
         
     | 
| 77 | 
         
            +
                            pad_idx = crt_idx + num_pad - i
         
     | 
| 78 | 
         
            +
                        else:
         
     | 
| 79 | 
         
            +
                            pad_idx = num_frames + i
         
     | 
| 80 | 
         
            +
                    elif i > max_frame_num:
         
     | 
| 81 | 
         
            +
                        if padding == 'replicate':
         
     | 
| 82 | 
         
            +
                            pad_idx = max_frame_num
         
     | 
| 83 | 
         
            +
                        elif padding == 'reflection':
         
     | 
| 84 | 
         
            +
                            pad_idx = max_frame_num * 2 - i
         
     | 
| 85 | 
         
            +
                        elif padding == 'reflection_circle':
         
     | 
| 86 | 
         
            +
                            pad_idx = (crt_idx - num_pad) - (i - max_frame_num)
         
     | 
| 87 | 
         
            +
                        else:
         
     | 
| 88 | 
         
            +
                            pad_idx = i - num_frames
         
     | 
| 89 | 
         
            +
                    else:
         
     | 
| 90 | 
         
            +
                        pad_idx = i
         
     | 
| 91 | 
         
            +
                    indices.append(pad_idx)
         
     | 
| 92 | 
         
            +
                return indices
         
     | 
| 93 | 
         
            +
             
     | 
| 94 | 
         
            +
             
     | 
| 95 | 
         
            +
            def paired_paths_from_lmdb(folders, keys):
         
     | 
| 96 | 
         
            +
                """Generate paired paths from lmdb files.
         
     | 
| 97 | 
         
            +
             
     | 
| 98 | 
         
            +
                Contents of lmdb. Taking the `lq.lmdb` for example, the file structure is:
         
     | 
| 99 | 
         
            +
             
     | 
| 100 | 
         
            +
                ::
         
     | 
| 101 | 
         
            +
             
     | 
| 102 | 
         
            +
                    lq.lmdb
         
     | 
| 103 | 
         
            +
                    ├── data.mdb
         
     | 
| 104 | 
         
            +
                    ├── lock.mdb
         
     | 
| 105 | 
         
            +
                    ├── meta_info.txt
         
     | 
| 106 | 
         
            +
             
     | 
| 107 | 
         
            +
                The data.mdb and lock.mdb are standard lmdb files and you can refer to
         
     | 
| 108 | 
         
            +
                https://lmdb.readthedocs.io/en/release/ for more details.
         
     | 
| 109 | 
         
            +
             
     | 
| 110 | 
         
            +
                The meta_info.txt is a specified txt file to record the meta information
         
     | 
| 111 | 
         
            +
                of our datasets. It will be automatically created when preparing
         
     | 
| 112 | 
         
            +
                datasets by our provided dataset tools.
         
     | 
| 113 | 
         
            +
                Each line in the txt file records
         
     | 
| 114 | 
         
            +
                1)image name (with extension),
         
     | 
| 115 | 
         
            +
                2)image shape,
         
     | 
| 116 | 
         
            +
                3)compression level, separated by a white space.
         
     | 
| 117 | 
         
            +
                Example: `baboon.png (120,125,3) 1`
         
     | 
| 118 | 
         
            +
             
     | 
| 119 | 
         
            +
                We use the image name without extension as the lmdb key.
         
     | 
| 120 | 
         
            +
                Note that we use the same key for the corresponding lq and gt images.
         
     | 
| 121 | 
         
            +
             
     | 
| 122 | 
         
            +
                Args:
         
     | 
| 123 | 
         
            +
                    folders (list[str]): A list of folder path. The order of list should
         
     | 
| 124 | 
         
            +
                        be [input_folder, gt_folder].
         
     | 
| 125 | 
         
            +
                    keys (list[str]): A list of keys identifying folders. The order should
         
     | 
| 126 | 
         
            +
                        be in consistent with folders, e.g., ['lq', 'gt'].
         
     | 
| 127 | 
         
            +
                        Note that this key is different from lmdb keys.
         
     | 
| 128 | 
         
            +
             
     | 
| 129 | 
         
            +
                Returns:
         
     | 
| 130 | 
         
            +
                    list[str]: Returned path list.
         
     | 
| 131 | 
         
            +
                """
         
     | 
| 132 | 
         
            +
                assert len(folders) == 2, ('The len of folders should be 2 with [input_folder, gt_folder]. '
         
     | 
| 133 | 
         
            +
                                           f'But got {len(folders)}')
         
     | 
| 134 | 
         
            +
                assert len(keys) == 2, f'The len of keys should be 2 with [input_key, gt_key]. But got {len(keys)}'
         
     | 
| 135 | 
         
            +
                input_folder, gt_folder = folders
         
     | 
| 136 | 
         
            +
                input_key, gt_key = keys
         
     | 
| 137 | 
         
            +
             
     | 
| 138 | 
         
            +
                if not (input_folder.endswith('.lmdb') and gt_folder.endswith('.lmdb')):
         
     | 
| 139 | 
         
            +
                    raise ValueError(f'{input_key} folder and {gt_key} folder should both in lmdb '
         
     | 
| 140 | 
         
            +
                                     f'formats. But received {input_key}: {input_folder}; '
         
     | 
| 141 | 
         
            +
                                     f'{gt_key}: {gt_folder}')
         
     | 
| 142 | 
         
            +
                # ensure that the two meta_info files are the same
         
     | 
| 143 | 
         
            +
                with open(osp.join(input_folder, 'meta_info.txt')) as fin:
         
     | 
| 144 | 
         
            +
                    input_lmdb_keys = [line.split('.')[0] for line in fin]
         
     | 
| 145 | 
         
            +
                with open(osp.join(gt_folder, 'meta_info.txt')) as fin:
         
     | 
| 146 | 
         
            +
                    gt_lmdb_keys = [line.split('.')[0] for line in fin]
         
     | 
| 147 | 
         
            +
                if set(input_lmdb_keys) != set(gt_lmdb_keys):
         
     | 
| 148 | 
         
            +
                    raise ValueError(f'Keys in {input_key}_folder and {gt_key}_folder are different.')
         
     | 
| 149 | 
         
            +
                else:
         
     | 
| 150 | 
         
            +
                    paths = []
         
     | 
| 151 | 
         
            +
                    for lmdb_key in sorted(input_lmdb_keys):
         
     | 
| 152 | 
         
            +
                        paths.append(dict([(f'{input_key}_path', lmdb_key), (f'{gt_key}_path', lmdb_key)]))
         
     | 
| 153 | 
         
            +
                    return paths
         
     | 
| 154 | 
         
            +
             
     | 
| 155 | 
         
            +
             
     | 
| 156 | 
         
            +
            def paired_paths_from_meta_info_file(folders, keys, meta_info_file, filename_tmpl):
         
     | 
| 157 | 
         
            +
                """Generate paired paths from an meta information file.
         
     | 
| 158 | 
         
            +
             
     | 
| 159 | 
         
            +
                Each line in the meta information file contains the image names and
         
     | 
| 160 | 
         
            +
                image shape (usually for gt), separated by a white space.
         
     | 
| 161 | 
         
            +
             
     | 
| 162 | 
         
            +
                Example of an meta information file:
         
     | 
| 163 | 
         
            +
                ```
         
     | 
| 164 | 
         
            +
                0001_s001.png (480,480,3)
         
     | 
| 165 | 
         
            +
                0001_s002.png (480,480,3)
         
     | 
| 166 | 
         
            +
                ```
         
     | 
| 167 | 
         
            +
             
     | 
| 168 | 
         
            +
                Args:
         
     | 
| 169 | 
         
            +
                    folders (list[str]): A list of folder path. The order of list should
         
     | 
| 170 | 
         
            +
                        be [input_folder, gt_folder].
         
     | 
| 171 | 
         
            +
                    keys (list[str]): A list of keys identifying folders. The order should
         
     | 
| 172 | 
         
            +
                        be in consistent with folders, e.g., ['lq', 'gt'].
         
     | 
| 173 | 
         
            +
                    meta_info_file (str): Path to the meta information file.
         
     | 
| 174 | 
         
            +
                    filename_tmpl (str): Template for each filename. Note that the
         
     | 
| 175 | 
         
            +
                        template excludes the file extension. Usually the filename_tmpl is
         
     | 
| 176 | 
         
            +
                        for files in the input folder.
         
     | 
| 177 | 
         
            +
             
     | 
| 178 | 
         
            +
                Returns:
         
     | 
| 179 | 
         
            +
                    list[str]: Returned path list.
         
     | 
| 180 | 
         
            +
                """
         
     | 
| 181 | 
         
            +
                assert len(folders) == 2, ('The len of folders should be 2 with [input_folder, gt_folder]. '
         
     | 
| 182 | 
         
            +
                                           f'But got {len(folders)}')
         
     | 
| 183 | 
         
            +
                assert len(keys) == 2, f'The len of keys should be 2 with [input_key, gt_key]. But got {len(keys)}'
         
     | 
| 184 | 
         
            +
                input_folder, gt_folder = folders
         
     | 
| 185 | 
         
            +
                input_key, gt_key = keys
         
     | 
| 186 | 
         
            +
             
     | 
| 187 | 
         
            +
                with open(meta_info_file, 'r') as fin:
         
     | 
| 188 | 
         
            +
                    gt_names = [line.strip().split(' ')[0] for line in fin]
         
     | 
| 189 | 
         
            +
             
     | 
| 190 | 
         
            +
                paths = []
         
     | 
| 191 | 
         
            +
                for gt_name in gt_names:
         
     | 
| 192 | 
         
            +
                    basename, ext = osp.splitext(osp.basename(gt_name))
         
     | 
| 193 | 
         
            +
                    input_name = f'{filename_tmpl.format(basename)}{ext}'
         
     | 
| 194 | 
         
            +
                    input_path = osp.join(input_folder, input_name)
         
     | 
| 195 | 
         
            +
                    gt_path = osp.join(gt_folder, gt_name)
         
     | 
| 196 | 
         
            +
                    paths.append(dict([(f'{input_key}_path', input_path), (f'{gt_key}_path', gt_path)]))
         
     | 
| 197 | 
         
            +
                return paths
         
     | 
| 198 | 
         
            +
             
     | 
| 199 | 
         
            +
             
     | 
| 200 | 
         
            +
            def paired_paths_from_folder(folders, keys, filename_tmpl):
         
     | 
| 201 | 
         
            +
                """Generate paired paths from folders.
         
     | 
| 202 | 
         
            +
             
     | 
| 203 | 
         
            +
                Args:
         
     | 
| 204 | 
         
            +
                    folders (list[str]): A list of folder path. The order of list should
         
     | 
| 205 | 
         
            +
                        be [input_folder, gt_folder].
         
     | 
| 206 | 
         
            +
                    keys (list[str]): A list of keys identifying folders. The order should
         
     | 
| 207 | 
         
            +
                        be in consistent with folders, e.g., ['lq', 'gt'].
         
     | 
| 208 | 
         
            +
                    filename_tmpl (str): Template for each filename. Note that the
         
     | 
| 209 | 
         
            +
                        template excludes the file extension. Usually the filename_tmpl is
         
     | 
| 210 | 
         
            +
                        for files in the input folder.
         
     | 
| 211 | 
         
            +
             
     | 
| 212 | 
         
            +
                Returns:
         
     | 
| 213 | 
         
            +
                    list[str]: Returned path list.
         
     | 
| 214 | 
         
            +
                """
         
     | 
| 215 | 
         
            +
                assert len(folders) == 2, ('The len of folders should be 2 with [input_folder, gt_folder]. '
         
     | 
| 216 | 
         
            +
                                           f'But got {len(folders)}')
         
     | 
| 217 | 
         
            +
                assert len(keys) == 2, f'The len of keys should be 2 with [input_key, gt_key]. But got {len(keys)}'
         
     | 
| 218 | 
         
            +
                input_folder, gt_folder = folders
         
     | 
| 219 | 
         
            +
                input_key, gt_key = keys
         
     | 
| 220 | 
         
            +
             
     | 
| 221 | 
         
            +
                input_paths = list(scandir(input_folder))
         
     | 
| 222 | 
         
            +
                gt_paths = list(scandir(gt_folder))
         
     | 
| 223 | 
         
            +
                assert len(input_paths) == len(gt_paths), (f'{input_key} and {gt_key} datasets have different number of images: '
         
     | 
| 224 | 
         
            +
                                                           f'{len(input_paths)}, {len(gt_paths)}.')
         
     | 
| 225 | 
         
            +
                paths = []
         
     | 
| 226 | 
         
            +
                for gt_path in gt_paths:
         
     | 
| 227 | 
         
            +
                    basename, ext = osp.splitext(osp.basename(gt_path))
         
     | 
| 228 | 
         
            +
                    input_name = f'{filename_tmpl.format(basename)}{ext}'
         
     | 
| 229 | 
         
            +
                    input_path = osp.join(input_folder, input_name)
         
     | 
| 230 | 
         
            +
                    assert input_name in input_paths, f'{input_name} is not in {input_key}_paths.'
         
     | 
| 231 | 
         
            +
                    gt_path = osp.join(gt_folder, gt_path)
         
     | 
| 232 | 
         
            +
                    paths.append(dict([(f'{input_key}_path', input_path), (f'{gt_key}_path', gt_path)]))
         
     | 
| 233 | 
         
            +
                return paths
         
     | 
| 234 | 
         
            +
             
     | 
| 235 | 
         
            +
             
     | 
| 236 | 
         
            +
            def paths_from_folder(folder):
         
     | 
| 237 | 
         
            +
                """Generate paths from folder.
         
     | 
| 238 | 
         
            +
             
     | 
| 239 | 
         
            +
                Args:
         
     | 
| 240 | 
         
            +
                    folder (str): Folder path.
         
     | 
| 241 | 
         
            +
             
     | 
| 242 | 
         
            +
                Returns:
         
     | 
| 243 | 
         
            +
                    list[str]: Returned path list.
         
     | 
| 244 | 
         
            +
                """
         
     | 
| 245 | 
         
            +
             
     | 
| 246 | 
         
            +
                paths = list(scandir(folder))
         
     | 
| 247 | 
         
            +
                paths = [osp.join(folder, path) for path in paths]
         
     | 
| 248 | 
         
            +
                return paths
         
     | 
| 249 | 
         
            +
             
     | 
| 250 | 
         
            +
             
     | 
| 251 | 
         
            +
            def paths_from_lmdb(folder):
         
     | 
| 252 | 
         
            +
                """Generate paths from lmdb.
         
     | 
| 253 | 
         
            +
             
     | 
| 254 | 
         
            +
                Args:
         
     | 
| 255 | 
         
            +
                    folder (str): Folder path.
         
     | 
| 256 | 
         
            +
             
     | 
| 257 | 
         
            +
                Returns:
         
     | 
| 258 | 
         
            +
                    list[str]: Returned path list.
         
     | 
| 259 | 
         
            +
                """
         
     | 
| 260 | 
         
            +
                if not folder.endswith('.lmdb'):
         
     | 
| 261 | 
         
            +
                    raise ValueError(f'Folder {folder}folder should in lmdb format.')
         
     | 
| 262 | 
         
            +
                with open(osp.join(folder, 'meta_info.txt')) as fin:
         
     | 
| 263 | 
         
            +
                    paths = [line.split('.')[0] for line in fin]
         
     | 
| 264 | 
         
            +
                return paths
         
     | 
| 265 | 
         
            +
             
     | 
| 266 | 
         
            +
             
     | 
| 267 | 
         
            +
            def generate_gaussian_kernel(kernel_size=13, sigma=1.6):
         
     | 
| 268 | 
         
            +
                """Generate Gaussian kernel used in `duf_downsample`.
         
     | 
| 269 | 
         
            +
             
     | 
| 270 | 
         
            +
                Args:
         
     | 
| 271 | 
         
            +
                    kernel_size (int): Kernel size. Default: 13.
         
     | 
| 272 | 
         
            +
                    sigma (float): Sigma of the Gaussian kernel. Default: 1.6.
         
     | 
| 273 | 
         
            +
             
     | 
| 274 | 
         
            +
                Returns:
         
     | 
| 275 | 
         
            +
                    np.array: The Gaussian kernel.
         
     | 
| 276 | 
         
            +
                """
         
     | 
| 277 | 
         
            +
                from scipy.ndimage import filters as filters
         
     | 
| 278 | 
         
            +
                kernel = np.zeros((kernel_size, kernel_size))
         
     | 
| 279 | 
         
            +
                # set element at the middle to one, a dirac delta
         
     | 
| 280 | 
         
            +
                kernel[kernel_size // 2, kernel_size // 2] = 1
         
     | 
| 281 | 
         
            +
                # gaussian-smooth the dirac, resulting in a gaussian filter
         
     | 
| 282 | 
         
            +
                return filters.gaussian_filter(kernel, sigma)
         
     | 
| 283 | 
         
            +
             
     | 
| 284 | 
         
            +
             
     | 
| 285 | 
         
            +
            def duf_downsample(x, kernel_size=13, scale=4):
         
     | 
| 286 | 
         
            +
                """Downsamping with Gaussian kernel used in the DUF official code.
         
     | 
| 287 | 
         
            +
             
     | 
| 288 | 
         
            +
                Args:
         
     | 
| 289 | 
         
            +
                    x (Tensor): Frames to be downsampled, with shape (b, t, c, h, w).
         
     | 
| 290 | 
         
            +
                    kernel_size (int): Kernel size. Default: 13.
         
     | 
| 291 | 
         
            +
                    scale (int): Downsampling factor. Supported scale: (2, 3, 4).
         
     | 
| 292 | 
         
            +
                        Default: 4.
         
     | 
| 293 | 
         
            +
             
     | 
| 294 | 
         
            +
                Returns:
         
     | 
| 295 | 
         
            +
                    Tensor: DUF downsampled frames.
         
     | 
| 296 | 
         
            +
                """
         
     | 
| 297 | 
         
            +
                assert scale in (2, 3, 4), f'Only support scale (2, 3, 4), but got {scale}.'
         
     | 
| 298 | 
         
            +
             
     | 
| 299 | 
         
            +
                squeeze_flag = False
         
     | 
| 300 | 
         
            +
                if x.ndim == 4:
         
     | 
| 301 | 
         
            +
                    squeeze_flag = True
         
     | 
| 302 | 
         
            +
                    x = x.unsqueeze(0)
         
     | 
| 303 | 
         
            +
                b, t, c, h, w = x.size()
         
     | 
| 304 | 
         
            +
                x = x.view(-1, 1, h, w)
         
     | 
| 305 | 
         
            +
                pad_w, pad_h = kernel_size // 2 + scale * 2, kernel_size // 2 + scale * 2
         
     | 
| 306 | 
         
            +
                x = F.pad(x, (pad_w, pad_w, pad_h, pad_h), 'reflect')
         
     | 
| 307 | 
         
            +
             
     | 
| 308 | 
         
            +
                gaussian_filter = generate_gaussian_kernel(kernel_size, 0.4 * scale)
         
     | 
| 309 | 
         
            +
                gaussian_filter = torch.from_numpy(gaussian_filter).type_as(x).unsqueeze(0).unsqueeze(0)
         
     | 
| 310 | 
         
            +
                x = F.conv2d(x, gaussian_filter, stride=scale)
         
     | 
| 311 | 
         
            +
                x = x[:, :, 2:-2, 2:-2]
         
     | 
| 312 | 
         
            +
                x = x.view(b, t, c, x.size(2), x.size(3))
         
     | 
| 313 | 
         
            +
                if squeeze_flag:
         
     | 
| 314 | 
         
            +
                    x = x.squeeze(0)
         
     | 
| 315 | 
         
            +
                return x
         
     | 
    	
        basicsr/data/degradations.py
    ADDED
    
    | 
         @@ -0,0 +1,765 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import cv2
         
     | 
| 2 | 
         
            +
            import math
         
     | 
| 3 | 
         
            +
            import numpy as np
         
     | 
| 4 | 
         
            +
            import random
         
     | 
| 5 | 
         
            +
            import torch
         
     | 
| 6 | 
         
            +
            from scipy import special
         
     | 
| 7 | 
         
            +
            from scipy.stats import multivariate_normal
         
     | 
| 8 | 
         
            +
            # from torchvision.transforms.functional_tensor import rgb_to_grayscale
         
     | 
| 9 | 
         
            +
            from torchvision.transforms.functional import rgb_to_grayscale
         
     | 
| 10 | 
         
            +
             
     | 
| 11 | 
         
            +
            # -------------------------------------------------------------------- #
         
     | 
| 12 | 
         
            +
            # --------------------------- blur kernels --------------------------- #
         
     | 
| 13 | 
         
            +
            # -------------------------------------------------------------------- #
         
     | 
| 14 | 
         
            +
             
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
            # --------------------------- util functions --------------------------- #
         
     | 
| 17 | 
         
            +
            def sigma_matrix2(sig_x, sig_y, theta):
         
     | 
| 18 | 
         
            +
                """Calculate the rotated sigma matrix (two dimensional matrix).
         
     | 
| 19 | 
         
            +
             
     | 
| 20 | 
         
            +
                Args:
         
     | 
| 21 | 
         
            +
                    sig_x (float):
         
     | 
| 22 | 
         
            +
                    sig_y (float):
         
     | 
| 23 | 
         
            +
                    theta (float): Radian measurement.
         
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
                Returns:
         
     | 
| 26 | 
         
            +
                    ndarray: Rotated sigma matrix.
         
     | 
| 27 | 
         
            +
                """
         
     | 
| 28 | 
         
            +
                d_matrix = np.array([[sig_x**2, 0], [0, sig_y**2]])
         
     | 
| 29 | 
         
            +
                u_matrix = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
         
     | 
| 30 | 
         
            +
                return np.dot(u_matrix, np.dot(d_matrix, u_matrix.T))
         
     | 
| 31 | 
         
            +
             
     | 
| 32 | 
         
            +
             
     | 
| 33 | 
         
            +
            def mesh_grid(kernel_size):
         
     | 
| 34 | 
         
            +
                """Generate the mesh grid, centering at zero.
         
     | 
| 35 | 
         
            +
             
     | 
| 36 | 
         
            +
                Args:
         
     | 
| 37 | 
         
            +
                    kernel_size (int):
         
     | 
| 38 | 
         
            +
             
     | 
| 39 | 
         
            +
                Returns:
         
     | 
| 40 | 
         
            +
                    xy (ndarray): with the shape (kernel_size, kernel_size, 2)
         
     | 
| 41 | 
         
            +
                    xx (ndarray): with the shape (kernel_size, kernel_size)
         
     | 
| 42 | 
         
            +
                    yy (ndarray): with the shape (kernel_size, kernel_size)
         
     | 
| 43 | 
         
            +
                """
         
     | 
| 44 | 
         
            +
                ax = np.arange(-kernel_size // 2 + 1., kernel_size // 2 + 1.)
         
     | 
| 45 | 
         
            +
                xx, yy = np.meshgrid(ax, ax)
         
     | 
| 46 | 
         
            +
                xy = np.hstack((xx.reshape((kernel_size * kernel_size, 1)), yy.reshape(kernel_size * kernel_size,
         
     | 
| 47 | 
         
            +
                                                                                       1))).reshape(kernel_size, kernel_size, 2)
         
     | 
| 48 | 
         
            +
                return xy, xx, yy
         
     | 
| 49 | 
         
            +
             
     | 
| 50 | 
         
            +
             
     | 
| 51 | 
         
            +
            def pdf2(sigma_matrix, grid):
         
     | 
| 52 | 
         
            +
                """Calculate PDF of the bivariate Gaussian distribution.
         
     | 
| 53 | 
         
            +
             
     | 
| 54 | 
         
            +
                Args:
         
     | 
| 55 | 
         
            +
                    sigma_matrix (ndarray): with the shape (2, 2)
         
     | 
| 56 | 
         
            +
                    grid (ndarray): generated by :func:`mesh_grid`,
         
     | 
| 57 | 
         
            +
                        with the shape (K, K, 2), K is the kernel size.
         
     | 
| 58 | 
         
            +
             
     | 
| 59 | 
         
            +
                Returns:
         
     | 
| 60 | 
         
            +
                    kernel (ndarrray): un-normalized kernel.
         
     | 
| 61 | 
         
            +
                """
         
     | 
| 62 | 
         
            +
                inverse_sigma = np.linalg.inv(sigma_matrix)
         
     | 
| 63 | 
         
            +
                kernel = np.exp(-0.5 * np.sum(np.dot(grid, inverse_sigma) * grid, 2))
         
     | 
| 64 | 
         
            +
                return kernel
         
     | 
| 65 | 
         
            +
             
     | 
| 66 | 
         
            +
             
     | 
| 67 | 
         
            +
            def cdf2(d_matrix, grid):
         
     | 
| 68 | 
         
            +
                """Calculate the CDF of the standard bivariate Gaussian distribution.
         
     | 
| 69 | 
         
            +
                    Used in skewed Gaussian distribution.
         
     | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
            +
                Args:
         
     | 
| 72 | 
         
            +
                    d_matrix (ndarrasy): skew matrix.
         
     | 
| 73 | 
         
            +
                    grid (ndarray): generated by :func:`mesh_grid`,
         
     | 
| 74 | 
         
            +
                        with the shape (K, K, 2), K is the kernel size.
         
     | 
| 75 | 
         
            +
             
     | 
| 76 | 
         
            +
                Returns:
         
     | 
| 77 | 
         
            +
                    cdf (ndarray): skewed cdf.
         
     | 
| 78 | 
         
            +
                """
         
     | 
| 79 | 
         
            +
                rv = multivariate_normal([0, 0], [[1, 0], [0, 1]])
         
     | 
| 80 | 
         
            +
                grid = np.dot(grid, d_matrix)
         
     | 
| 81 | 
         
            +
                cdf = rv.cdf(grid)
         
     | 
| 82 | 
         
            +
                return cdf
         
     | 
| 83 | 
         
            +
             
     | 
| 84 | 
         
            +
             
     | 
| 85 | 
         
            +
            def bivariate_Gaussian(kernel_size, sig_x, sig_y, theta, grid=None, isotropic=True):
         
     | 
| 86 | 
         
            +
                """Generate a bivariate isotropic or anisotropic Gaussian kernel.
         
     | 
| 87 | 
         
            +
             
     | 
| 88 | 
         
            +
                In the isotropic mode, only `sig_x` is used. `sig_y` and `theta` is ignored.
         
     | 
| 89 | 
         
            +
             
     | 
| 90 | 
         
            +
                Args:
         
     | 
| 91 | 
         
            +
                    kernel_size (int):
         
     | 
| 92 | 
         
            +
                    sig_x (float):
         
     | 
| 93 | 
         
            +
                    sig_y (float):
         
     | 
| 94 | 
         
            +
                    theta (float): Radian measurement.
         
     | 
| 95 | 
         
            +
                    grid (ndarray, optional): generated by :func:`mesh_grid`,
         
     | 
| 96 | 
         
            +
                        with the shape (K, K, 2), K is the kernel size. Default: None
         
     | 
| 97 | 
         
            +
                    isotropic (bool):
         
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
                Returns:
         
     | 
| 100 | 
         
            +
                    kernel (ndarray): normalized kernel.
         
     | 
| 101 | 
         
            +
                """
         
     | 
| 102 | 
         
            +
                if grid is None:
         
     | 
| 103 | 
         
            +
                    grid, _, _ = mesh_grid(kernel_size)
         
     | 
| 104 | 
         
            +
                if isotropic:
         
     | 
| 105 | 
         
            +
                    sigma_matrix = np.array([[sig_x**2, 0], [0, sig_x**2]])
         
     | 
| 106 | 
         
            +
                else:
         
     | 
| 107 | 
         
            +
                    sigma_matrix = sigma_matrix2(sig_x, sig_y, theta)
         
     | 
| 108 | 
         
            +
                kernel = pdf2(sigma_matrix, grid)
         
     | 
| 109 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 110 | 
         
            +
                return kernel
         
     | 
| 111 | 
         
            +
             
     | 
| 112 | 
         
            +
             
     | 
| 113 | 
         
            +
            def bivariate_generalized_Gaussian(kernel_size, sig_x, sig_y, theta, beta, grid=None, isotropic=True):
         
     | 
| 114 | 
         
            +
                """Generate a bivariate generalized Gaussian kernel.
         
     | 
| 115 | 
         
            +
             
     | 
| 116 | 
         
            +
                ``Paper: Parameter Estimation For Multivariate Generalized Gaussian Distributions``
         
     | 
| 117 | 
         
            +
             
     | 
| 118 | 
         
            +
                In the isotropic mode, only `sig_x` is used. `sig_y` and `theta` is ignored.
         
     | 
| 119 | 
         
            +
             
     | 
| 120 | 
         
            +
                Args:
         
     | 
| 121 | 
         
            +
                    kernel_size (int):
         
     | 
| 122 | 
         
            +
                    sig_x (float):
         
     | 
| 123 | 
         
            +
                    sig_y (float):
         
     | 
| 124 | 
         
            +
                    theta (float): Radian measurement.
         
     | 
| 125 | 
         
            +
                    beta (float): shape parameter, beta = 1 is the normal distribution.
         
     | 
| 126 | 
         
            +
                    grid (ndarray, optional): generated by :func:`mesh_grid`,
         
     | 
| 127 | 
         
            +
                        with the shape (K, K, 2), K is the kernel size. Default: None
         
     | 
| 128 | 
         
            +
             
     | 
| 129 | 
         
            +
                Returns:
         
     | 
| 130 | 
         
            +
                    kernel (ndarray): normalized kernel.
         
     | 
| 131 | 
         
            +
                """
         
     | 
| 132 | 
         
            +
                if grid is None:
         
     | 
| 133 | 
         
            +
                    grid, _, _ = mesh_grid(kernel_size)
         
     | 
| 134 | 
         
            +
                if isotropic:
         
     | 
| 135 | 
         
            +
                    sigma_matrix = np.array([[sig_x**2, 0], [0, sig_x**2]])
         
     | 
| 136 | 
         
            +
                else:
         
     | 
| 137 | 
         
            +
                    sigma_matrix = sigma_matrix2(sig_x, sig_y, theta)
         
     | 
| 138 | 
         
            +
                inverse_sigma = np.linalg.inv(sigma_matrix)
         
     | 
| 139 | 
         
            +
                kernel = np.exp(-0.5 * np.power(np.sum(np.dot(grid, inverse_sigma) * grid, 2), beta))
         
     | 
| 140 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 141 | 
         
            +
                return kernel
         
     | 
| 142 | 
         
            +
             
     | 
| 143 | 
         
            +
             
     | 
| 144 | 
         
            +
            def bivariate_plateau(kernel_size, sig_x, sig_y, theta, beta, grid=None, isotropic=True):
         
     | 
| 145 | 
         
            +
                """Generate a plateau-like anisotropic kernel.
         
     | 
| 146 | 
         
            +
             
     | 
| 147 | 
         
            +
                1 / (1+x^(beta))
         
     | 
| 148 | 
         
            +
             
     | 
| 149 | 
         
            +
                Reference: https://stats.stackexchange.com/questions/203629/is-there-a-plateau-shaped-distribution
         
     | 
| 150 | 
         
            +
             
     | 
| 151 | 
         
            +
                In the isotropic mode, only `sig_x` is used. `sig_y` and `theta` is ignored.
         
     | 
| 152 | 
         
            +
             
     | 
| 153 | 
         
            +
                Args:
         
     | 
| 154 | 
         
            +
                    kernel_size (int):
         
     | 
| 155 | 
         
            +
                    sig_x (float):
         
     | 
| 156 | 
         
            +
                    sig_y (float):
         
     | 
| 157 | 
         
            +
                    theta (float): Radian measurement.
         
     | 
| 158 | 
         
            +
                    beta (float): shape parameter, beta = 1 is the normal distribution.
         
     | 
| 159 | 
         
            +
                    grid (ndarray, optional): generated by :func:`mesh_grid`,
         
     | 
| 160 | 
         
            +
                        with the shape (K, K, 2), K is the kernel size. Default: None
         
     | 
| 161 | 
         
            +
             
     | 
| 162 | 
         
            +
                Returns:
         
     | 
| 163 | 
         
            +
                    kernel (ndarray): normalized kernel.
         
     | 
| 164 | 
         
            +
                """
         
     | 
| 165 | 
         
            +
                if grid is None:
         
     | 
| 166 | 
         
            +
                    grid, _, _ = mesh_grid(kernel_size)
         
     | 
| 167 | 
         
            +
                if isotropic:
         
     | 
| 168 | 
         
            +
                    sigma_matrix = np.array([[sig_x**2, 0], [0, sig_x**2]])
         
     | 
| 169 | 
         
            +
                else:
         
     | 
| 170 | 
         
            +
                    sigma_matrix = sigma_matrix2(sig_x, sig_y, theta)
         
     | 
| 171 | 
         
            +
                inverse_sigma = np.linalg.inv(sigma_matrix)
         
     | 
| 172 | 
         
            +
                kernel = np.reciprocal(np.power(np.sum(np.dot(grid, inverse_sigma) * grid, 2), beta) + 1)
         
     | 
| 173 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 174 | 
         
            +
                return kernel
         
     | 
| 175 | 
         
            +
             
     | 
| 176 | 
         
            +
             
     | 
| 177 | 
         
            +
            def random_bivariate_Gaussian(kernel_size,
         
     | 
| 178 | 
         
            +
                                          sigma_x_range,
         
     | 
| 179 | 
         
            +
                                          sigma_y_range,
         
     | 
| 180 | 
         
            +
                                          rotation_range,
         
     | 
| 181 | 
         
            +
                                          noise_range=None,
         
     | 
| 182 | 
         
            +
                                          isotropic=True):
         
     | 
| 183 | 
         
            +
                """Randomly generate bivariate isotropic or anisotropic Gaussian kernels.
         
     | 
| 184 | 
         
            +
             
     | 
| 185 | 
         
            +
                In the isotropic mode, only `sigma_x_range` is used. `sigma_y_range` and `rotation_range` is ignored.
         
     | 
| 186 | 
         
            +
             
     | 
| 187 | 
         
            +
                Args:
         
     | 
| 188 | 
         
            +
                    kernel_size (int):
         
     | 
| 189 | 
         
            +
                    sigma_x_range (tuple): [0.6, 5]
         
     | 
| 190 | 
         
            +
                    sigma_y_range (tuple): [0.6, 5]
         
     | 
| 191 | 
         
            +
                    rotation range (tuple): [-math.pi, math.pi]
         
     | 
| 192 | 
         
            +
                    noise_range(tuple, optional): multiplicative kernel noise,
         
     | 
| 193 | 
         
            +
                        [0.75, 1.25]. Default: None
         
     | 
| 194 | 
         
            +
             
     | 
| 195 | 
         
            +
                Returns:
         
     | 
| 196 | 
         
            +
                    kernel (ndarray):
         
     | 
| 197 | 
         
            +
                """
         
     | 
| 198 | 
         
            +
                assert kernel_size % 2 == 1, 'Kernel size must be an odd number.'
         
     | 
| 199 | 
         
            +
                assert sigma_x_range[0] < sigma_x_range[1], 'Wrong sigma_x_range.'
         
     | 
| 200 | 
         
            +
                sigma_x = np.random.uniform(sigma_x_range[0], sigma_x_range[1])
         
     | 
| 201 | 
         
            +
                if isotropic is False:
         
     | 
| 202 | 
         
            +
                    assert sigma_y_range[0] < sigma_y_range[1], 'Wrong sigma_y_range.'
         
     | 
| 203 | 
         
            +
                    assert rotation_range[0] < rotation_range[1], 'Wrong rotation_range.'
         
     | 
| 204 | 
         
            +
                    sigma_y = np.random.uniform(sigma_y_range[0], sigma_y_range[1])
         
     | 
| 205 | 
         
            +
                    rotation = np.random.uniform(rotation_range[0], rotation_range[1])
         
     | 
| 206 | 
         
            +
                else:
         
     | 
| 207 | 
         
            +
                    sigma_y = sigma_x
         
     | 
| 208 | 
         
            +
                    rotation = 0
         
     | 
| 209 | 
         
            +
             
     | 
| 210 | 
         
            +
                kernel = bivariate_Gaussian(kernel_size, sigma_x, sigma_y, rotation, isotropic=isotropic)
         
     | 
| 211 | 
         
            +
             
     | 
| 212 | 
         
            +
                # add multiplicative noise
         
     | 
| 213 | 
         
            +
                if noise_range is not None:
         
     | 
| 214 | 
         
            +
                    assert noise_range[0] < noise_range[1], 'Wrong noise range.'
         
     | 
| 215 | 
         
            +
                    noise = np.random.uniform(noise_range[0], noise_range[1], size=kernel.shape)
         
     | 
| 216 | 
         
            +
                    kernel = kernel * noise
         
     | 
| 217 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 218 | 
         
            +
                return kernel
         
     | 
| 219 | 
         
            +
             
     | 
| 220 | 
         
            +
             
     | 
| 221 | 
         
            +
            def random_bivariate_generalized_Gaussian(kernel_size,
         
     | 
| 222 | 
         
            +
                                                      sigma_x_range,
         
     | 
| 223 | 
         
            +
                                                      sigma_y_range,
         
     | 
| 224 | 
         
            +
                                                      rotation_range,
         
     | 
| 225 | 
         
            +
                                                      beta_range,
         
     | 
| 226 | 
         
            +
                                                      noise_range=None,
         
     | 
| 227 | 
         
            +
                                                      isotropic=True):
         
     | 
| 228 | 
         
            +
                """Randomly generate bivariate generalized Gaussian kernels.
         
     | 
| 229 | 
         
            +
             
     | 
| 230 | 
         
            +
                In the isotropic mode, only `sigma_x_range` is used. `sigma_y_range` and `rotation_range` is ignored.
         
     | 
| 231 | 
         
            +
             
     | 
| 232 | 
         
            +
                Args:
         
     | 
| 233 | 
         
            +
                    kernel_size (int):
         
     | 
| 234 | 
         
            +
                    sigma_x_range (tuple): [0.6, 5]
         
     | 
| 235 | 
         
            +
                    sigma_y_range (tuple): [0.6, 5]
         
     | 
| 236 | 
         
            +
                    rotation range (tuple): [-math.pi, math.pi]
         
     | 
| 237 | 
         
            +
                    beta_range (tuple): [0.5, 8]
         
     | 
| 238 | 
         
            +
                    noise_range(tuple, optional): multiplicative kernel noise,
         
     | 
| 239 | 
         
            +
                        [0.75, 1.25]. Default: None
         
     | 
| 240 | 
         
            +
             
     | 
| 241 | 
         
            +
                Returns:
         
     | 
| 242 | 
         
            +
                    kernel (ndarray):
         
     | 
| 243 | 
         
            +
                """
         
     | 
| 244 | 
         
            +
                assert kernel_size % 2 == 1, 'Kernel size must be an odd number.'
         
     | 
| 245 | 
         
            +
                assert sigma_x_range[0] < sigma_x_range[1], 'Wrong sigma_x_range.'
         
     | 
| 246 | 
         
            +
                sigma_x = np.random.uniform(sigma_x_range[0], sigma_x_range[1])
         
     | 
| 247 | 
         
            +
                if isotropic is False:
         
     | 
| 248 | 
         
            +
                    assert sigma_y_range[0] < sigma_y_range[1], 'Wrong sigma_y_range.'
         
     | 
| 249 | 
         
            +
                    assert rotation_range[0] < rotation_range[1], 'Wrong rotation_range.'
         
     | 
| 250 | 
         
            +
                    sigma_y = np.random.uniform(sigma_y_range[0], sigma_y_range[1])
         
     | 
| 251 | 
         
            +
                    rotation = np.random.uniform(rotation_range[0], rotation_range[1])
         
     | 
| 252 | 
         
            +
                else:
         
     | 
| 253 | 
         
            +
                    sigma_y = sigma_x
         
     | 
| 254 | 
         
            +
                    rotation = 0
         
     | 
| 255 | 
         
            +
             
     | 
| 256 | 
         
            +
                # assume beta_range[0] < 1 < beta_range[1]
         
     | 
| 257 | 
         
            +
                if np.random.uniform() < 0.5:
         
     | 
| 258 | 
         
            +
                    beta = np.random.uniform(beta_range[0], 1)
         
     | 
| 259 | 
         
            +
                else:
         
     | 
| 260 | 
         
            +
                    beta = np.random.uniform(1, beta_range[1])
         
     | 
| 261 | 
         
            +
             
     | 
| 262 | 
         
            +
                kernel = bivariate_generalized_Gaussian(kernel_size, sigma_x, sigma_y, rotation, beta, isotropic=isotropic)
         
     | 
| 263 | 
         
            +
             
     | 
| 264 | 
         
            +
                # add multiplicative noise
         
     | 
| 265 | 
         
            +
                if noise_range is not None:
         
     | 
| 266 | 
         
            +
                    assert noise_range[0] < noise_range[1], 'Wrong noise range.'
         
     | 
| 267 | 
         
            +
                    noise = np.random.uniform(noise_range[0], noise_range[1], size=kernel.shape)
         
     | 
| 268 | 
         
            +
                    kernel = kernel * noise
         
     | 
| 269 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 270 | 
         
            +
                return kernel
         
     | 
| 271 | 
         
            +
             
     | 
| 272 | 
         
            +
             
     | 
| 273 | 
         
            +
            def random_bivariate_plateau(kernel_size,
         
     | 
| 274 | 
         
            +
                                         sigma_x_range,
         
     | 
| 275 | 
         
            +
                                         sigma_y_range,
         
     | 
| 276 | 
         
            +
                                         rotation_range,
         
     | 
| 277 | 
         
            +
                                         beta_range,
         
     | 
| 278 | 
         
            +
                                         noise_range=None,
         
     | 
| 279 | 
         
            +
                                         isotropic=True):
         
     | 
| 280 | 
         
            +
                """Randomly generate bivariate plateau kernels.
         
     | 
| 281 | 
         
            +
             
     | 
| 282 | 
         
            +
                In the isotropic mode, only `sigma_x_range` is used. `sigma_y_range` and `rotation_range` is ignored.
         
     | 
| 283 | 
         
            +
             
     | 
| 284 | 
         
            +
                Args:
         
     | 
| 285 | 
         
            +
                    kernel_size (int):
         
     | 
| 286 | 
         
            +
                    sigma_x_range (tuple): [0.6, 5]
         
     | 
| 287 | 
         
            +
                    sigma_y_range (tuple): [0.6, 5]
         
     | 
| 288 | 
         
            +
                    rotation range (tuple): [-math.pi/2, math.pi/2]
         
     | 
| 289 | 
         
            +
                    beta_range (tuple): [1, 4]
         
     | 
| 290 | 
         
            +
                    noise_range(tuple, optional): multiplicative kernel noise,
         
     | 
| 291 | 
         
            +
                        [0.75, 1.25]. Default: None
         
     | 
| 292 | 
         
            +
             
     | 
| 293 | 
         
            +
                Returns:
         
     | 
| 294 | 
         
            +
                    kernel (ndarray):
         
     | 
| 295 | 
         
            +
                """
         
     | 
| 296 | 
         
            +
                assert kernel_size % 2 == 1, 'Kernel size must be an odd number.'
         
     | 
| 297 | 
         
            +
                assert sigma_x_range[0] < sigma_x_range[1], 'Wrong sigma_x_range.'
         
     | 
| 298 | 
         
            +
                sigma_x = np.random.uniform(sigma_x_range[0], sigma_x_range[1])
         
     | 
| 299 | 
         
            +
                if isotropic is False:
         
     | 
| 300 | 
         
            +
                    assert sigma_y_range[0] < sigma_y_range[1], 'Wrong sigma_y_range.'
         
     | 
| 301 | 
         
            +
                    assert rotation_range[0] < rotation_range[1], 'Wrong rotation_range.'
         
     | 
| 302 | 
         
            +
                    sigma_y = np.random.uniform(sigma_y_range[0], sigma_y_range[1])
         
     | 
| 303 | 
         
            +
                    rotation = np.random.uniform(rotation_range[0], rotation_range[1])
         
     | 
| 304 | 
         
            +
                else:
         
     | 
| 305 | 
         
            +
                    sigma_y = sigma_x
         
     | 
| 306 | 
         
            +
                    rotation = 0
         
     | 
| 307 | 
         
            +
             
     | 
| 308 | 
         
            +
                # TODO: this may be not proper
         
     | 
| 309 | 
         
            +
                if np.random.uniform() < 0.5:
         
     | 
| 310 | 
         
            +
                    beta = np.random.uniform(beta_range[0], 1)
         
     | 
| 311 | 
         
            +
                else:
         
     | 
| 312 | 
         
            +
                    beta = np.random.uniform(1, beta_range[1])
         
     | 
| 313 | 
         
            +
             
     | 
| 314 | 
         
            +
                kernel = bivariate_plateau(kernel_size, sigma_x, sigma_y, rotation, beta, isotropic=isotropic)
         
     | 
| 315 | 
         
            +
                # add multiplicative noise
         
     | 
| 316 | 
         
            +
                if noise_range is not None:
         
     | 
| 317 | 
         
            +
                    assert noise_range[0] < noise_range[1], 'Wrong noise range.'
         
     | 
| 318 | 
         
            +
                    noise = np.random.uniform(noise_range[0], noise_range[1], size=kernel.shape)
         
     | 
| 319 | 
         
            +
                    kernel = kernel * noise
         
     | 
| 320 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 321 | 
         
            +
             
     | 
| 322 | 
         
            +
                return kernel
         
     | 
| 323 | 
         
            +
             
     | 
| 324 | 
         
            +
             
     | 
| 325 | 
         
            +
            def random_mixed_kernels(kernel_list,
         
     | 
| 326 | 
         
            +
                                     kernel_prob,
         
     | 
| 327 | 
         
            +
                                     kernel_size=21,
         
     | 
| 328 | 
         
            +
                                     sigma_x_range=(0.6, 5),
         
     | 
| 329 | 
         
            +
                                     sigma_y_range=(0.6, 5),
         
     | 
| 330 | 
         
            +
                                     rotation_range=(-math.pi, math.pi),
         
     | 
| 331 | 
         
            +
                                     betag_range=(0.5, 8),
         
     | 
| 332 | 
         
            +
                                     betap_range=(0.5, 8),
         
     | 
| 333 | 
         
            +
                                     noise_range=None):
         
     | 
| 334 | 
         
            +
                """Randomly generate mixed kernels.
         
     | 
| 335 | 
         
            +
             
     | 
| 336 | 
         
            +
                Args:
         
     | 
| 337 | 
         
            +
                    kernel_list (tuple): a list name of kernel types,
         
     | 
| 338 | 
         
            +
                        support ['iso', 'aniso', 'skew', 'generalized', 'plateau_iso',
         
     | 
| 339 | 
         
            +
                        'plateau_aniso']
         
     | 
| 340 | 
         
            +
                    kernel_prob (tuple): corresponding kernel probability for each
         
     | 
| 341 | 
         
            +
                        kernel type
         
     | 
| 342 | 
         
            +
                    kernel_size (int):
         
     | 
| 343 | 
         
            +
                    sigma_x_range (tuple): [0.6, 5]
         
     | 
| 344 | 
         
            +
                    sigma_y_range (tuple): [0.6, 5]
         
     | 
| 345 | 
         
            +
                    rotation range (tuple): [-math.pi, math.pi]
         
     | 
| 346 | 
         
            +
                    beta_range (tuple): [0.5, 8]
         
     | 
| 347 | 
         
            +
                    noise_range(tuple, optional): multiplicative kernel noise,
         
     | 
| 348 | 
         
            +
                        [0.75, 1.25]. Default: None
         
     | 
| 349 | 
         
            +
             
     | 
| 350 | 
         
            +
                Returns:
         
     | 
| 351 | 
         
            +
                    kernel (ndarray):
         
     | 
| 352 | 
         
            +
                """
         
     | 
| 353 | 
         
            +
                kernel_type = random.choices(kernel_list, kernel_prob)[0]
         
     | 
| 354 | 
         
            +
                if kernel_type == 'iso':
         
     | 
| 355 | 
         
            +
                    kernel = random_bivariate_Gaussian(
         
     | 
| 356 | 
         
            +
                        kernel_size, sigma_x_range, sigma_y_range, rotation_range, noise_range=noise_range, isotropic=True)
         
     | 
| 357 | 
         
            +
                elif kernel_type == 'aniso':
         
     | 
| 358 | 
         
            +
                    kernel = random_bivariate_Gaussian(
         
     | 
| 359 | 
         
            +
                        kernel_size, sigma_x_range, sigma_y_range, rotation_range, noise_range=noise_range, isotropic=False)
         
     | 
| 360 | 
         
            +
                elif kernel_type == 'generalized_iso':
         
     | 
| 361 | 
         
            +
                    kernel = random_bivariate_generalized_Gaussian(
         
     | 
| 362 | 
         
            +
                        kernel_size,
         
     | 
| 363 | 
         
            +
                        sigma_x_range,
         
     | 
| 364 | 
         
            +
                        sigma_y_range,
         
     | 
| 365 | 
         
            +
                        rotation_range,
         
     | 
| 366 | 
         
            +
                        betag_range,
         
     | 
| 367 | 
         
            +
                        noise_range=noise_range,
         
     | 
| 368 | 
         
            +
                        isotropic=True)
         
     | 
| 369 | 
         
            +
                elif kernel_type == 'generalized_aniso':
         
     | 
| 370 | 
         
            +
                    kernel = random_bivariate_generalized_Gaussian(
         
     | 
| 371 | 
         
            +
                        kernel_size,
         
     | 
| 372 | 
         
            +
                        sigma_x_range,
         
     | 
| 373 | 
         
            +
                        sigma_y_range,
         
     | 
| 374 | 
         
            +
                        rotation_range,
         
     | 
| 375 | 
         
            +
                        betag_range,
         
     | 
| 376 | 
         
            +
                        noise_range=noise_range,
         
     | 
| 377 | 
         
            +
                        isotropic=False)
         
     | 
| 378 | 
         
            +
                elif kernel_type == 'plateau_iso':
         
     | 
| 379 | 
         
            +
                    kernel = random_bivariate_plateau(
         
     | 
| 380 | 
         
            +
                        kernel_size, sigma_x_range, sigma_y_range, rotation_range, betap_range, noise_range=None, isotropic=True)
         
     | 
| 381 | 
         
            +
                elif kernel_type == 'plateau_aniso':
         
     | 
| 382 | 
         
            +
                    kernel = random_bivariate_plateau(
         
     | 
| 383 | 
         
            +
                        kernel_size, sigma_x_range, sigma_y_range, rotation_range, betap_range, noise_range=None, isotropic=False)
         
     | 
| 384 | 
         
            +
                return kernel
         
     | 
| 385 | 
         
            +
             
     | 
| 386 | 
         
            +
             
     | 
| 387 | 
         
            +
            np.seterr(divide='ignore', invalid='ignore')
         
     | 
| 388 | 
         
            +
             
     | 
| 389 | 
         
            +
             
     | 
| 390 | 
         
            +
            def circular_lowpass_kernel(cutoff, kernel_size, pad_to=0):
         
     | 
| 391 | 
         
            +
                """2D sinc filter
         
     | 
| 392 | 
         
            +
             
     | 
| 393 | 
         
            +
                Reference: https://dsp.stackexchange.com/questions/58301/2-d-circularly-symmetric-low-pass-filter
         
     | 
| 394 | 
         
            +
             
     | 
| 395 | 
         
            +
                Args:
         
     | 
| 396 | 
         
            +
                    cutoff (float): cutoff frequency in radians (pi is max)
         
     | 
| 397 | 
         
            +
                    kernel_size (int): horizontal and vertical size, must be odd.
         
     | 
| 398 | 
         
            +
                    pad_to (int): pad kernel size to desired size, must be odd or zero.
         
     | 
| 399 | 
         
            +
                """
         
     | 
| 400 | 
         
            +
                assert kernel_size % 2 == 1, 'Kernel size must be an odd number.'
         
     | 
| 401 | 
         
            +
                kernel = np.fromfunction(
         
     | 
| 402 | 
         
            +
                    lambda x, y: cutoff * special.j1(cutoff * np.sqrt(
         
     | 
| 403 | 
         
            +
                        (x - (kernel_size - 1) / 2)**2 + (y - (kernel_size - 1) / 2)**2)) / (2 * np.pi * np.sqrt(
         
     | 
| 404 | 
         
            +
                            (x - (kernel_size - 1) / 2)**2 + (y - (kernel_size - 1) / 2)**2)), [kernel_size, kernel_size])
         
     | 
| 405 | 
         
            +
                kernel[(kernel_size - 1) // 2, (kernel_size - 1) // 2] = cutoff**2 / (4 * np.pi)
         
     | 
| 406 | 
         
            +
                kernel = kernel / np.sum(kernel)
         
     | 
| 407 | 
         
            +
                if pad_to > kernel_size:
         
     | 
| 408 | 
         
            +
                    pad_size = (pad_to - kernel_size) // 2
         
     | 
| 409 | 
         
            +
                    kernel = np.pad(kernel, ((pad_size, pad_size), (pad_size, pad_size)))
         
     | 
| 410 | 
         
            +
                return kernel
         
     | 
| 411 | 
         
            +
             
     | 
| 412 | 
         
            +
             
     | 
| 413 | 
         
            +
            # ------------------------------------------------------------- #
         
     | 
| 414 | 
         
            +
            # --------------------------- noise --------------------------- #
         
     | 
| 415 | 
         
            +
            # ------------------------------------------------------------- #
         
     | 
| 416 | 
         
            +
             
     | 
| 417 | 
         
            +
            # ----------------------- Gaussian Noise ----------------------- #
         
     | 
| 418 | 
         
            +
             
     | 
| 419 | 
         
            +
             
     | 
| 420 | 
         
            +
            def generate_gaussian_noise(img, sigma=10, gray_noise=False):
         
     | 
| 421 | 
         
            +
                """Generate Gaussian noise.
         
     | 
| 422 | 
         
            +
             
     | 
| 423 | 
         
            +
                Args:
         
     | 
| 424 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 425 | 
         
            +
                    sigma (float): Noise scale (measured in range 255). Default: 10.
         
     | 
| 426 | 
         
            +
             
     | 
| 427 | 
         
            +
                Returns:
         
     | 
| 428 | 
         
            +
                    (Numpy array): Returned noisy image, shape (h, w, c), range[0, 1],
         
     | 
| 429 | 
         
            +
                        float32.
         
     | 
| 430 | 
         
            +
                """
         
     | 
| 431 | 
         
            +
                if gray_noise:
         
     | 
| 432 | 
         
            +
                    noise = np.float32(np.random.randn(*(img.shape[0:2]))) * sigma / 255.
         
     | 
| 433 | 
         
            +
                    noise = np.expand_dims(noise, axis=2).repeat(3, axis=2)
         
     | 
| 434 | 
         
            +
                else:
         
     | 
| 435 | 
         
            +
                    noise = np.float32(np.random.randn(*(img.shape))) * sigma / 255.
         
     | 
| 436 | 
         
            +
                return noise
         
     | 
| 437 | 
         
            +
             
     | 
| 438 | 
         
            +
             
     | 
| 439 | 
         
            +
            def add_gaussian_noise(img, sigma=10, clip=True, rounds=False, gray_noise=False):
         
     | 
| 440 | 
         
            +
                """Add Gaussian noise.
         
     | 
| 441 | 
         
            +
             
     | 
| 442 | 
         
            +
                Args:
         
     | 
| 443 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 444 | 
         
            +
                    sigma (float): Noise scale (measured in range 255). Default: 10.
         
     | 
| 445 | 
         
            +
             
     | 
| 446 | 
         
            +
                Returns:
         
     | 
| 447 | 
         
            +
                    (Numpy array): Returned noisy image, shape (h, w, c), range[0, 1],
         
     | 
| 448 | 
         
            +
                        float32.
         
     | 
| 449 | 
         
            +
                """
         
     | 
| 450 | 
         
            +
                noise = generate_gaussian_noise(img, sigma, gray_noise)
         
     | 
| 451 | 
         
            +
                out = img + noise
         
     | 
| 452 | 
         
            +
                if clip and rounds:
         
     | 
| 453 | 
         
            +
                    out = np.clip((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 454 | 
         
            +
                elif clip:
         
     | 
| 455 | 
         
            +
                    out = np.clip(out, 0, 1)
         
     | 
| 456 | 
         
            +
                elif rounds:
         
     | 
| 457 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 458 | 
         
            +
                return out
         
     | 
| 459 | 
         
            +
             
     | 
| 460 | 
         
            +
             
     | 
| 461 | 
         
            +
            def generate_gaussian_noise_pt(img, sigma=10, gray_noise=0):
         
     | 
| 462 | 
         
            +
                """Add Gaussian noise (PyTorch version).
         
     | 
| 463 | 
         
            +
             
     | 
| 464 | 
         
            +
                Args:
         
     | 
| 465 | 
         
            +
                    img (Tensor): Shape (b, c, h, w), range[0, 1], float32.
         
     | 
| 466 | 
         
            +
                    scale (float | Tensor): Noise scale. Default: 1.0.
         
     | 
| 467 | 
         
            +
             
     | 
| 468 | 
         
            +
                Returns:
         
     | 
| 469 | 
         
            +
                    (Tensor): Returned noisy image, shape (b, c, h, w), range[0, 1],
         
     | 
| 470 | 
         
            +
                        float32.
         
     | 
| 471 | 
         
            +
                """
         
     | 
| 472 | 
         
            +
                b, _, h, w = img.size()
         
     | 
| 473 | 
         
            +
                if not isinstance(sigma, (float, int)):
         
     | 
| 474 | 
         
            +
                    sigma = sigma.view(img.size(0), 1, 1, 1)
         
     | 
| 475 | 
         
            +
                if isinstance(gray_noise, (float, int)):
         
     | 
| 476 | 
         
            +
                    cal_gray_noise = gray_noise > 0
         
     | 
| 477 | 
         
            +
                else:
         
     | 
| 478 | 
         
            +
                    gray_noise = gray_noise.view(b, 1, 1, 1)
         
     | 
| 479 | 
         
            +
                    cal_gray_noise = torch.sum(gray_noise) > 0
         
     | 
| 480 | 
         
            +
             
     | 
| 481 | 
         
            +
                if cal_gray_noise:
         
     | 
| 482 | 
         
            +
                    noise_gray = torch.randn(*img.size()[2:4], dtype=img.dtype, device=img.device) * sigma / 255.
         
     | 
| 483 | 
         
            +
                    noise_gray = noise_gray.view(b, 1, h, w)
         
     | 
| 484 | 
         
            +
             
     | 
| 485 | 
         
            +
                # always calculate color noise
         
     | 
| 486 | 
         
            +
                noise = torch.randn(*img.size(), dtype=img.dtype, device=img.device) * sigma / 255.
         
     | 
| 487 | 
         
            +
             
     | 
| 488 | 
         
            +
                if cal_gray_noise:
         
     | 
| 489 | 
         
            +
                    noise = noise * (1 - gray_noise) + noise_gray * gray_noise
         
     | 
| 490 | 
         
            +
                return noise
         
     | 
| 491 | 
         
            +
             
     | 
| 492 | 
         
            +
             
     | 
| 493 | 
         
            +
            def add_gaussian_noise_pt(img, sigma=10, gray_noise=0, clip=True, rounds=False):
         
     | 
| 494 | 
         
            +
                """Add Gaussian noise (PyTorch version).
         
     | 
| 495 | 
         
            +
             
     | 
| 496 | 
         
            +
                Args:
         
     | 
| 497 | 
         
            +
                    img (Tensor): Shape (b, c, h, w), range[0, 1], float32.
         
     | 
| 498 | 
         
            +
                    scale (float | Tensor): Noise scale. Default: 1.0.
         
     | 
| 499 | 
         
            +
             
     | 
| 500 | 
         
            +
                Returns:
         
     | 
| 501 | 
         
            +
                    (Tensor): Returned noisy image, shape (b, c, h, w), range[0, 1],
         
     | 
| 502 | 
         
            +
                        float32.
         
     | 
| 503 | 
         
            +
                """
         
     | 
| 504 | 
         
            +
                noise = generate_gaussian_noise_pt(img, sigma, gray_noise)
         
     | 
| 505 | 
         
            +
                out = img + noise
         
     | 
| 506 | 
         
            +
                if clip and rounds:
         
     | 
| 507 | 
         
            +
                    out = torch.clamp((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 508 | 
         
            +
                elif clip:
         
     | 
| 509 | 
         
            +
                    out = torch.clamp(out, 0, 1)
         
     | 
| 510 | 
         
            +
                elif rounds:
         
     | 
| 511 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 512 | 
         
            +
                return out
         
     | 
| 513 | 
         
            +
             
     | 
| 514 | 
         
            +
             
     | 
| 515 | 
         
            +
            # ----------------------- Random Gaussian Noise ----------------------- #
         
     | 
| 516 | 
         
            +
            def random_generate_gaussian_noise(img, sigma_range=(0, 10), gray_prob=0):
         
     | 
| 517 | 
         
            +
                sigma = np.random.uniform(sigma_range[0], sigma_range[1])
         
     | 
| 518 | 
         
            +
                if np.random.uniform() < gray_prob:
         
     | 
| 519 | 
         
            +
                    gray_noise = True
         
     | 
| 520 | 
         
            +
                else:
         
     | 
| 521 | 
         
            +
                    gray_noise = False
         
     | 
| 522 | 
         
            +
                return generate_gaussian_noise(img, sigma, gray_noise)
         
     | 
| 523 | 
         
            +
             
     | 
| 524 | 
         
            +
             
     | 
| 525 | 
         
            +
            def random_add_gaussian_noise(img, sigma_range=(0, 1.0), gray_prob=0, clip=True, rounds=False):
         
     | 
| 526 | 
         
            +
                noise = random_generate_gaussian_noise(img, sigma_range, gray_prob)
         
     | 
| 527 | 
         
            +
                out = img + noise
         
     | 
| 528 | 
         
            +
                if clip and rounds:
         
     | 
| 529 | 
         
            +
                    out = np.clip((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 530 | 
         
            +
                elif clip:
         
     | 
| 531 | 
         
            +
                    out = np.clip(out, 0, 1)
         
     | 
| 532 | 
         
            +
                elif rounds:
         
     | 
| 533 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 534 | 
         
            +
                return out
         
     | 
| 535 | 
         
            +
             
     | 
| 536 | 
         
            +
             
     | 
| 537 | 
         
            +
            def random_generate_gaussian_noise_pt(img, sigma_range=(0, 10), gray_prob=0):
         
     | 
| 538 | 
         
            +
                sigma = torch.rand(
         
     | 
| 539 | 
         
            +
                    img.size(0), dtype=img.dtype, device=img.device) * (sigma_range[1] - sigma_range[0]) + sigma_range[0]
         
     | 
| 540 | 
         
            +
                gray_noise = torch.rand(img.size(0), dtype=img.dtype, device=img.device)
         
     | 
| 541 | 
         
            +
                gray_noise = (gray_noise < gray_prob).float()
         
     | 
| 542 | 
         
            +
                return generate_gaussian_noise_pt(img, sigma, gray_noise)
         
     | 
| 543 | 
         
            +
             
     | 
| 544 | 
         
            +
             
     | 
| 545 | 
         
            +
            def random_add_gaussian_noise_pt(img, sigma_range=(0, 1.0), gray_prob=0, clip=True, rounds=False):
         
     | 
| 546 | 
         
            +
                noise = random_generate_gaussian_noise_pt(img, sigma_range, gray_prob)
         
     | 
| 547 | 
         
            +
                out = img + noise
         
     | 
| 548 | 
         
            +
                if clip and rounds:
         
     | 
| 549 | 
         
            +
                    out = torch.clamp((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 550 | 
         
            +
                elif clip:
         
     | 
| 551 | 
         
            +
                    out = torch.clamp(out, 0, 1)
         
     | 
| 552 | 
         
            +
                elif rounds:
         
     | 
| 553 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 554 | 
         
            +
                return out
         
     | 
| 555 | 
         
            +
             
     | 
| 556 | 
         
            +
             
     | 
| 557 | 
         
            +
            # ----------------------- Poisson (Shot) Noise ----------------------- #
         
     | 
| 558 | 
         
            +
             
     | 
| 559 | 
         
            +
             
     | 
| 560 | 
         
            +
            def generate_poisson_noise(img, scale=1.0, gray_noise=False):
         
     | 
| 561 | 
         
            +
                """Generate poisson noise.
         
     | 
| 562 | 
         
            +
             
     | 
| 563 | 
         
            +
                Reference: https://github.com/scikit-image/scikit-image/blob/main/skimage/util/noise.py#L37-L219
         
     | 
| 564 | 
         
            +
             
     | 
| 565 | 
         
            +
                Args:
         
     | 
| 566 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 567 | 
         
            +
                    scale (float): Noise scale. Default: 1.0.
         
     | 
| 568 | 
         
            +
                    gray_noise (bool): Whether generate gray noise. Default: False.
         
     | 
| 569 | 
         
            +
             
     | 
| 570 | 
         
            +
                Returns:
         
     | 
| 571 | 
         
            +
                    (Numpy array): Returned noisy image, shape (h, w, c), range[0, 1],
         
     | 
| 572 | 
         
            +
                        float32.
         
     | 
| 573 | 
         
            +
                """
         
     | 
| 574 | 
         
            +
                if gray_noise:
         
     | 
| 575 | 
         
            +
                    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
         
     | 
| 576 | 
         
            +
                # round and clip image for counting vals correctly
         
     | 
| 577 | 
         
            +
                img = np.clip((img * 255.0).round(), 0, 255) / 255.
         
     | 
| 578 | 
         
            +
                vals = len(np.unique(img))
         
     | 
| 579 | 
         
            +
                vals = 2**np.ceil(np.log2(vals))
         
     | 
| 580 | 
         
            +
                out = np.float32(np.random.poisson(img * vals) / float(vals))
         
     | 
| 581 | 
         
            +
                noise = out - img
         
     | 
| 582 | 
         
            +
                if gray_noise:
         
     | 
| 583 | 
         
            +
                    noise = np.repeat(noise[:, :, np.newaxis], 3, axis=2)
         
     | 
| 584 | 
         
            +
                return noise * scale
         
     | 
| 585 | 
         
            +
             
     | 
| 586 | 
         
            +
             
     | 
| 587 | 
         
            +
            def add_poisson_noise(img, scale=1.0, clip=True, rounds=False, gray_noise=False):
         
     | 
| 588 | 
         
            +
                """Add poisson noise.
         
     | 
| 589 | 
         
            +
             
     | 
| 590 | 
         
            +
                Args:
         
     | 
| 591 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 592 | 
         
            +
                    scale (float): Noise scale. Default: 1.0.
         
     | 
| 593 | 
         
            +
                    gray_noise (bool): Whether generate gray noise. Default: False.
         
     | 
| 594 | 
         
            +
             
     | 
| 595 | 
         
            +
                Returns:
         
     | 
| 596 | 
         
            +
                    (Numpy array): Returned noisy image, shape (h, w, c), range[0, 1],
         
     | 
| 597 | 
         
            +
                        float32.
         
     | 
| 598 | 
         
            +
                """
         
     | 
| 599 | 
         
            +
                noise = generate_poisson_noise(img, scale, gray_noise)
         
     | 
| 600 | 
         
            +
                out = img + noise
         
     | 
| 601 | 
         
            +
                if clip and rounds:
         
     | 
| 602 | 
         
            +
                    out = np.clip((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 603 | 
         
            +
                elif clip:
         
     | 
| 604 | 
         
            +
                    out = np.clip(out, 0, 1)
         
     | 
| 605 | 
         
            +
                elif rounds:
         
     | 
| 606 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 607 | 
         
            +
                return out
         
     | 
| 608 | 
         
            +
             
     | 
| 609 | 
         
            +
             
     | 
| 610 | 
         
            +
            def generate_poisson_noise_pt(img, scale=1.0, gray_noise=0):
         
     | 
| 611 | 
         
            +
                """Generate a batch of poisson noise (PyTorch version)
         
     | 
| 612 | 
         
            +
             
     | 
| 613 | 
         
            +
                Args:
         
     | 
| 614 | 
         
            +
                    img (Tensor): Input image, shape (b, c, h, w), range [0, 1], float32.
         
     | 
| 615 | 
         
            +
                    scale (float | Tensor): Noise scale. Number or Tensor with shape (b).
         
     | 
| 616 | 
         
            +
                        Default: 1.0.
         
     | 
| 617 | 
         
            +
                    gray_noise (float | Tensor): 0-1 number or Tensor with shape (b).
         
     | 
| 618 | 
         
            +
                        0 for False, 1 for True. Default: 0.
         
     | 
| 619 | 
         
            +
             
     | 
| 620 | 
         
            +
                Returns:
         
     | 
| 621 | 
         
            +
                    (Tensor): Returned noisy image, shape (b, c, h, w), range[0, 1],
         
     | 
| 622 | 
         
            +
                        float32.
         
     | 
| 623 | 
         
            +
                """
         
     | 
| 624 | 
         
            +
                b, _, h, w = img.size()
         
     | 
| 625 | 
         
            +
                if isinstance(gray_noise, (float, int)):
         
     | 
| 626 | 
         
            +
                    cal_gray_noise = gray_noise > 0
         
     | 
| 627 | 
         
            +
                else:
         
     | 
| 628 | 
         
            +
                    gray_noise = gray_noise.view(b, 1, 1, 1)
         
     | 
| 629 | 
         
            +
                    cal_gray_noise = torch.sum(gray_noise) > 0
         
     | 
| 630 | 
         
            +
                if cal_gray_noise:
         
     | 
| 631 | 
         
            +
                    img_gray = rgb_to_grayscale(img, num_output_channels=1)
         
     | 
| 632 | 
         
            +
                    # round and clip image for counting vals correctly
         
     | 
| 633 | 
         
            +
                    img_gray = torch.clamp((img_gray * 255.0).round(), 0, 255) / 255.
         
     | 
| 634 | 
         
            +
                    # use for-loop to get the unique values for each sample
         
     | 
| 635 | 
         
            +
                    vals_list = [len(torch.unique(img_gray[i, :, :, :])) for i in range(b)]
         
     | 
| 636 | 
         
            +
                    vals_list = [2**np.ceil(np.log2(vals)) for vals in vals_list]
         
     | 
| 637 | 
         
            +
                    vals = img_gray.new_tensor(vals_list).view(b, 1, 1, 1)
         
     | 
| 638 | 
         
            +
                    out = torch.poisson(img_gray * vals) / vals
         
     | 
| 639 | 
         
            +
                    noise_gray = out - img_gray
         
     | 
| 640 | 
         
            +
                    noise_gray = noise_gray.expand(b, 3, h, w)
         
     | 
| 641 | 
         
            +
             
     | 
| 642 | 
         
            +
                # always calculate color noise
         
     | 
| 643 | 
         
            +
                # round and clip image for counting vals correctly
         
     | 
| 644 | 
         
            +
                img = torch.clamp((img * 255.0).round(), 0, 255) / 255.
         
     | 
| 645 | 
         
            +
                # use for-loop to get the unique values for each sample
         
     | 
| 646 | 
         
            +
                vals_list = [len(torch.unique(img[i, :, :, :])) for i in range(b)]
         
     | 
| 647 | 
         
            +
                vals_list = [2**np.ceil(np.log2(vals)) for vals in vals_list]
         
     | 
| 648 | 
         
            +
                vals = img.new_tensor(vals_list).view(b, 1, 1, 1)
         
     | 
| 649 | 
         
            +
                out = torch.poisson(img * vals) / vals
         
     | 
| 650 | 
         
            +
                noise = out - img
         
     | 
| 651 | 
         
            +
                if cal_gray_noise:
         
     | 
| 652 | 
         
            +
                    noise = noise * (1 - gray_noise) + noise_gray * gray_noise
         
     | 
| 653 | 
         
            +
                if not isinstance(scale, (float, int)):
         
     | 
| 654 | 
         
            +
                    scale = scale.view(b, 1, 1, 1)
         
     | 
| 655 | 
         
            +
                return noise * scale
         
     | 
| 656 | 
         
            +
             
     | 
| 657 | 
         
            +
             
     | 
| 658 | 
         
            +
            def add_poisson_noise_pt(img, scale=1.0, clip=True, rounds=False, gray_noise=0):
         
     | 
| 659 | 
         
            +
                """Add poisson noise to a batch of images (PyTorch version).
         
     | 
| 660 | 
         
            +
             
     | 
| 661 | 
         
            +
                Args:
         
     | 
| 662 | 
         
            +
                    img (Tensor): Input image, shape (b, c, h, w), range [0, 1], float32.
         
     | 
| 663 | 
         
            +
                    scale (float | Tensor): Noise scale. Number or Tensor with shape (b).
         
     | 
| 664 | 
         
            +
                        Default: 1.0.
         
     | 
| 665 | 
         
            +
                    gray_noise (float | Tensor): 0-1 number or Tensor with shape (b).
         
     | 
| 666 | 
         
            +
                        0 for False, 1 for True. Default: 0.
         
     | 
| 667 | 
         
            +
             
     | 
| 668 | 
         
            +
                Returns:
         
     | 
| 669 | 
         
            +
                    (Tensor): Returned noisy image, shape (b, c, h, w), range[0, 1],
         
     | 
| 670 | 
         
            +
                        float32.
         
     | 
| 671 | 
         
            +
                """
         
     | 
| 672 | 
         
            +
                noise = generate_poisson_noise_pt(img, scale, gray_noise)
         
     | 
| 673 | 
         
            +
                out = img + noise
         
     | 
| 674 | 
         
            +
                if clip and rounds:
         
     | 
| 675 | 
         
            +
                    out = torch.clamp((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 676 | 
         
            +
                elif clip:
         
     | 
| 677 | 
         
            +
                    out = torch.clamp(out, 0, 1)
         
     | 
| 678 | 
         
            +
                elif rounds:
         
     | 
| 679 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 680 | 
         
            +
                return out
         
     | 
| 681 | 
         
            +
             
     | 
| 682 | 
         
            +
             
     | 
| 683 | 
         
            +
            # ----------------------- Random Poisson (Shot) Noise ----------------------- #
         
     | 
| 684 | 
         
            +
             
     | 
| 685 | 
         
            +
             
     | 
| 686 | 
         
            +
            def random_generate_poisson_noise(img, scale_range=(0, 1.0), gray_prob=0):
         
     | 
| 687 | 
         
            +
                scale = np.random.uniform(scale_range[0], scale_range[1])
         
     | 
| 688 | 
         
            +
                if np.random.uniform() < gray_prob:
         
     | 
| 689 | 
         
            +
                    gray_noise = True
         
     | 
| 690 | 
         
            +
                else:
         
     | 
| 691 | 
         
            +
                    gray_noise = False
         
     | 
| 692 | 
         
            +
                return generate_poisson_noise(img, scale, gray_noise)
         
     | 
| 693 | 
         
            +
             
     | 
| 694 | 
         
            +
             
     | 
| 695 | 
         
            +
            def random_add_poisson_noise(img, scale_range=(0, 1.0), gray_prob=0, clip=True, rounds=False):
         
     | 
| 696 | 
         
            +
                noise = random_generate_poisson_noise(img, scale_range, gray_prob)
         
     | 
| 697 | 
         
            +
                out = img + noise
         
     | 
| 698 | 
         
            +
                if clip and rounds:
         
     | 
| 699 | 
         
            +
                    out = np.clip((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 700 | 
         
            +
                elif clip:
         
     | 
| 701 | 
         
            +
                    out = np.clip(out, 0, 1)
         
     | 
| 702 | 
         
            +
                elif rounds:
         
     | 
| 703 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 704 | 
         
            +
                return out
         
     | 
| 705 | 
         
            +
             
     | 
| 706 | 
         
            +
             
     | 
| 707 | 
         
            +
            def random_generate_poisson_noise_pt(img, scale_range=(0, 1.0), gray_prob=0):
         
     | 
| 708 | 
         
            +
                scale = torch.rand(
         
     | 
| 709 | 
         
            +
                    img.size(0), dtype=img.dtype, device=img.device) * (scale_range[1] - scale_range[0]) + scale_range[0]
         
     | 
| 710 | 
         
            +
                gray_noise = torch.rand(img.size(0), dtype=img.dtype, device=img.device)
         
     | 
| 711 | 
         
            +
                gray_noise = (gray_noise < gray_prob).float()
         
     | 
| 712 | 
         
            +
                return generate_poisson_noise_pt(img, scale, gray_noise)
         
     | 
| 713 | 
         
            +
             
     | 
| 714 | 
         
            +
             
     | 
| 715 | 
         
            +
            def random_add_poisson_noise_pt(img, scale_range=(0, 1.0), gray_prob=0, clip=True, rounds=False):
         
     | 
| 716 | 
         
            +
                noise = random_generate_poisson_noise_pt(img, scale_range, gray_prob)
         
     | 
| 717 | 
         
            +
                out = img + noise
         
     | 
| 718 | 
         
            +
                if clip and rounds:
         
     | 
| 719 | 
         
            +
                    out = torch.clamp((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 720 | 
         
            +
                elif clip:
         
     | 
| 721 | 
         
            +
                    out = torch.clamp(out, 0, 1)
         
     | 
| 722 | 
         
            +
                elif rounds:
         
     | 
| 723 | 
         
            +
                    out = (out * 255.0).round() / 255.
         
     | 
| 724 | 
         
            +
                return out
         
     | 
| 725 | 
         
            +
             
     | 
| 726 | 
         
            +
             
     | 
| 727 | 
         
            +
            # ------------------------------------------------------------------------ #
         
     | 
| 728 | 
         
            +
            # --------------------------- JPEG compression --------------------------- #
         
     | 
| 729 | 
         
            +
            # ------------------------------------------------------------------------ #
         
     | 
| 730 | 
         
            +
             
     | 
| 731 | 
         
            +
             
     | 
| 732 | 
         
            +
            def add_jpg_compression(img, quality=90):
         
     | 
| 733 | 
         
            +
                """Add JPG compression artifacts.
         
     | 
| 734 | 
         
            +
             
     | 
| 735 | 
         
            +
                Args:
         
     | 
| 736 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 737 | 
         
            +
                    quality (float): JPG compression quality. 0 for lowest quality, 100 for
         
     | 
| 738 | 
         
            +
                        best quality. Default: 90.
         
     | 
| 739 | 
         
            +
             
     | 
| 740 | 
         
            +
                Returns:
         
     | 
| 741 | 
         
            +
                    (Numpy array): Returned image after JPG, shape (h, w, c), range[0, 1],
         
     | 
| 742 | 
         
            +
                        float32.
         
     | 
| 743 | 
         
            +
                """
         
     | 
| 744 | 
         
            +
                img = np.clip(img, 0, 1)
         
     | 
| 745 | 
         
            +
                encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), int(quality)]
         
     | 
| 746 | 
         
            +
                _, encimg = cv2.imencode('.jpg', img * 255., encode_param)
         
     | 
| 747 | 
         
            +
                img = np.float32(cv2.imdecode(encimg, 1)) / 255.
         
     | 
| 748 | 
         
            +
                return img
         
     | 
| 749 | 
         
            +
             
     | 
| 750 | 
         
            +
             
     | 
| 751 | 
         
            +
            def random_add_jpg_compression(img, quality_range=(90, 100)):
         
     | 
| 752 | 
         
            +
                """Randomly add JPG compression artifacts.
         
     | 
| 753 | 
         
            +
             
     | 
| 754 | 
         
            +
                Args:
         
     | 
| 755 | 
         
            +
                    img (Numpy array): Input image, shape (h, w, c), range [0, 1], float32.
         
     | 
| 756 | 
         
            +
                    quality_range (tuple[float] | list[float]): JPG compression quality
         
     | 
| 757 | 
         
            +
                        range. 0 for lowest quality, 100 for best quality.
         
     | 
| 758 | 
         
            +
                        Default: (90, 100).
         
     | 
| 759 | 
         
            +
             
     | 
| 760 | 
         
            +
                Returns:
         
     | 
| 761 | 
         
            +
                    (Numpy array): Returned image after JPG, shape (h, w, c), range[0, 1],
         
     | 
| 762 | 
         
            +
                        float32.
         
     | 
| 763 | 
         
            +
                """
         
     | 
| 764 | 
         
            +
                quality = np.random.uniform(quality_range[0], quality_range[1])
         
     | 
| 765 | 
         
            +
                return add_jpg_compression(img, quality)
         
     | 
    	
        basicsr/data/ffhq_dataset.py
    ADDED
    
    | 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import random
         
     | 
| 2 | 
         
            +
            import time
         
     | 
| 3 | 
         
            +
            from os import path as osp
         
     | 
| 4 | 
         
            +
            from torch.utils import data as data
         
     | 
| 5 | 
         
            +
            from torchvision.transforms.functional import normalize
         
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            from basicsr.data.transforms import augment
         
     | 
| 8 | 
         
            +
            from basicsr.utils import FileClient, get_root_logger, imfrombytes, img2tensor
         
     | 
| 9 | 
         
            +
            from basicsr.utils.registry import DATASET_REGISTRY
         
     | 
| 10 | 
         
            +
             
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
            @DATASET_REGISTRY.register()
         
     | 
| 13 | 
         
            +
            class FFHQDataset(data.Dataset):
         
     | 
| 14 | 
         
            +
                """FFHQ dataset for StyleGAN.
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
                Args:
         
     | 
| 17 | 
         
            +
                    opt (dict): Config for train datasets. It contains the following keys:
         
     | 
| 18 | 
         
            +
                        dataroot_gt (str): Data root path for gt.
         
     | 
| 19 | 
         
            +
                        io_backend (dict): IO backend type and other kwarg.
         
     | 
| 20 | 
         
            +
                        mean (list | tuple): Image mean.
         
     | 
| 21 | 
         
            +
                        std (list | tuple): Image std.
         
     | 
| 22 | 
         
            +
                        use_hflip (bool): Whether to horizontally flip.
         
     | 
| 23 | 
         
            +
             
     | 
| 24 | 
         
            +
                """
         
     | 
| 25 | 
         
            +
             
     | 
| 26 | 
         
            +
                def __init__(self, opt):
         
     | 
| 27 | 
         
            +
                    super(FFHQDataset, self).__init__()
         
     | 
| 28 | 
         
            +
                    self.opt = opt
         
     | 
| 29 | 
         
            +
                    # file client (io backend)
         
     | 
| 30 | 
         
            +
                    self.file_client = None
         
     | 
| 31 | 
         
            +
                    self.io_backend_opt = opt['io_backend']
         
     | 
| 32 | 
         
            +
             
     | 
| 33 | 
         
            +
                    self.gt_folder = opt['dataroot_gt']
         
     | 
| 34 | 
         
            +
                    self.mean = opt['mean']
         
     | 
| 35 | 
         
            +
                    self.std = opt['std']
         
     | 
| 36 | 
         
            +
             
     | 
| 37 | 
         
            +
                    if self.io_backend_opt['type'] == 'lmdb':
         
     | 
| 38 | 
         
            +
                        self.io_backend_opt['db_paths'] = self.gt_folder
         
     | 
| 39 | 
         
            +
                        if not self.gt_folder.endswith('.lmdb'):
         
     | 
| 40 | 
         
            +
                            raise ValueError("'dataroot_gt' should end with '.lmdb', but received {self.gt_folder}")
         
     | 
| 41 | 
         
            +
                        with open(osp.join(self.gt_folder, 'meta_info.txt')) as fin:
         
     | 
| 42 | 
         
            +
                            self.paths = [line.split('.')[0] for line in fin]
         
     | 
| 43 | 
         
            +
                    else:
         
     | 
| 44 | 
         
            +
                        # FFHQ has 70000 images in total
         
     | 
| 45 | 
         
            +
                        self.paths = [osp.join(self.gt_folder, f'{v:08d}.png') for v in range(70000)]
         
     | 
| 46 | 
         
            +
             
     | 
| 47 | 
         
            +
                def __getitem__(self, index):
         
     | 
| 48 | 
         
            +
                    if self.file_client is None:
         
     | 
| 49 | 
         
            +
                        self.file_client = FileClient(self.io_backend_opt.pop('type'), **self.io_backend_opt)
         
     | 
| 50 | 
         
            +
             
     | 
| 51 | 
         
            +
                    # load gt image
         
     | 
| 52 | 
         
            +
                    gt_path = self.paths[index]
         
     | 
| 53 | 
         
            +
                    # avoid errors caused by high latency in reading files
         
     | 
| 54 | 
         
            +
                    retry = 3
         
     | 
| 55 | 
         
            +
                    while retry > 0:
         
     | 
| 56 | 
         
            +
                        try:
         
     | 
| 57 | 
         
            +
                            img_bytes = self.file_client.get(gt_path)
         
     | 
| 58 | 
         
            +
                        except Exception as e:
         
     | 
| 59 | 
         
            +
                            logger = get_root_logger()
         
     | 
| 60 | 
         
            +
                            logger.warning(f'File client error: {e}, remaining retry times: {retry - 1}')
         
     | 
| 61 | 
         
            +
                            # change another file to read
         
     | 
| 62 | 
         
            +
                            index = random.randint(0, self.__len__())
         
     | 
| 63 | 
         
            +
                            gt_path = self.paths[index]
         
     | 
| 64 | 
         
            +
                            time.sleep(1)  # sleep 1s for occasional server congestion
         
     | 
| 65 | 
         
            +
                        else:
         
     | 
| 66 | 
         
            +
                            break
         
     | 
| 67 | 
         
            +
                        finally:
         
     | 
| 68 | 
         
            +
                            retry -= 1
         
     | 
| 69 | 
         
            +
                    img_gt = imfrombytes(img_bytes, float32=True)
         
     | 
| 70 | 
         
            +
             
     | 
| 71 | 
         
            +
                    # random horizontal flip
         
     | 
| 72 | 
         
            +
                    img_gt = augment(img_gt, hflip=self.opt['use_hflip'], rotation=False)
         
     | 
| 73 | 
         
            +
                    # BGR to RGB, HWC to CHW, numpy to tensor
         
     | 
| 74 | 
         
            +
                    img_gt = img2tensor(img_gt, bgr2rgb=True, float32=True)
         
     | 
| 75 | 
         
            +
                    # normalize
         
     | 
| 76 | 
         
            +
                    normalize(img_gt, self.mean, self.std, inplace=True)
         
     | 
| 77 | 
         
            +
                    return {'gt': img_gt, 'gt_path': gt_path}
         
     | 
| 78 | 
         
            +
             
     | 
| 79 | 
         
            +
                def __len__(self):
         
     | 
| 80 | 
         
            +
                    return len(self.paths)
         
     | 
    	
        basicsr/data/meta_info/meta_info_DIV2K800sub_GT.txt
    ADDED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        basicsr/data/meta_info/meta_info_REDS4_test_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,4 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            000 100 (720,1280,3)
         
     | 
| 2 | 
         
            +
            011 100 (720,1280,3)
         
     | 
| 3 | 
         
            +
            015 100 (720,1280,3)
         
     | 
| 4 | 
         
            +
            020 100 (720,1280,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_REDS_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,270 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            000 100 (720,1280,3)
         
     | 
| 2 | 
         
            +
            001 100 (720,1280,3)
         
     | 
| 3 | 
         
            +
            002 100 (720,1280,3)
         
     | 
| 4 | 
         
            +
            003 100 (720,1280,3)
         
     | 
| 5 | 
         
            +
            004 100 (720,1280,3)
         
     | 
| 6 | 
         
            +
            005 100 (720,1280,3)
         
     | 
| 7 | 
         
            +
            006 100 (720,1280,3)
         
     | 
| 8 | 
         
            +
            007 100 (720,1280,3)
         
     | 
| 9 | 
         
            +
            008 100 (720,1280,3)
         
     | 
| 10 | 
         
            +
            009 100 (720,1280,3)
         
     | 
| 11 | 
         
            +
            010 100 (720,1280,3)
         
     | 
| 12 | 
         
            +
            011 100 (720,1280,3)
         
     | 
| 13 | 
         
            +
            012 100 (720,1280,3)
         
     | 
| 14 | 
         
            +
            013 100 (720,1280,3)
         
     | 
| 15 | 
         
            +
            014 100 (720,1280,3)
         
     | 
| 16 | 
         
            +
            015 100 (720,1280,3)
         
     | 
| 17 | 
         
            +
            016 100 (720,1280,3)
         
     | 
| 18 | 
         
            +
            017 100 (720,1280,3)
         
     | 
| 19 | 
         
            +
            018 100 (720,1280,3)
         
     | 
| 20 | 
         
            +
            019 100 (720,1280,3)
         
     | 
| 21 | 
         
            +
            020 100 (720,1280,3)
         
     | 
| 22 | 
         
            +
            021 100 (720,1280,3)
         
     | 
| 23 | 
         
            +
            022 100 (720,1280,3)
         
     | 
| 24 | 
         
            +
            023 100 (720,1280,3)
         
     | 
| 25 | 
         
            +
            024 100 (720,1280,3)
         
     | 
| 26 | 
         
            +
            025 100 (720,1280,3)
         
     | 
| 27 | 
         
            +
            026 100 (720,1280,3)
         
     | 
| 28 | 
         
            +
            027 100 (720,1280,3)
         
     | 
| 29 | 
         
            +
            028 100 (720,1280,3)
         
     | 
| 30 | 
         
            +
            029 100 (720,1280,3)
         
     | 
| 31 | 
         
            +
            030 100 (720,1280,3)
         
     | 
| 32 | 
         
            +
            031 100 (720,1280,3)
         
     | 
| 33 | 
         
            +
            032 100 (720,1280,3)
         
     | 
| 34 | 
         
            +
            033 100 (720,1280,3)
         
     | 
| 35 | 
         
            +
            034 100 (720,1280,3)
         
     | 
| 36 | 
         
            +
            035 100 (720,1280,3)
         
     | 
| 37 | 
         
            +
            036 100 (720,1280,3)
         
     | 
| 38 | 
         
            +
            037 100 (720,1280,3)
         
     | 
| 39 | 
         
            +
            038 100 (720,1280,3)
         
     | 
| 40 | 
         
            +
            039 100 (720,1280,3)
         
     | 
| 41 | 
         
            +
            040 100 (720,1280,3)
         
     | 
| 42 | 
         
            +
            041 100 (720,1280,3)
         
     | 
| 43 | 
         
            +
            042 100 (720,1280,3)
         
     | 
| 44 | 
         
            +
            043 100 (720,1280,3)
         
     | 
| 45 | 
         
            +
            044 100 (720,1280,3)
         
     | 
| 46 | 
         
            +
            045 100 (720,1280,3)
         
     | 
| 47 | 
         
            +
            046 100 (720,1280,3)
         
     | 
| 48 | 
         
            +
            047 100 (720,1280,3)
         
     | 
| 49 | 
         
            +
            048 100 (720,1280,3)
         
     | 
| 50 | 
         
            +
            049 100 (720,1280,3)
         
     | 
| 51 | 
         
            +
            050 100 (720,1280,3)
         
     | 
| 52 | 
         
            +
            051 100 (720,1280,3)
         
     | 
| 53 | 
         
            +
            052 100 (720,1280,3)
         
     | 
| 54 | 
         
            +
            053 100 (720,1280,3)
         
     | 
| 55 | 
         
            +
            054 100 (720,1280,3)
         
     | 
| 56 | 
         
            +
            055 100 (720,1280,3)
         
     | 
| 57 | 
         
            +
            056 100 (720,1280,3)
         
     | 
| 58 | 
         
            +
            057 100 (720,1280,3)
         
     | 
| 59 | 
         
            +
            058 100 (720,1280,3)
         
     | 
| 60 | 
         
            +
            059 100 (720,1280,3)
         
     | 
| 61 | 
         
            +
            060 100 (720,1280,3)
         
     | 
| 62 | 
         
            +
            061 100 (720,1280,3)
         
     | 
| 63 | 
         
            +
            062 100 (720,1280,3)
         
     | 
| 64 | 
         
            +
            063 100 (720,1280,3)
         
     | 
| 65 | 
         
            +
            064 100 (720,1280,3)
         
     | 
| 66 | 
         
            +
            065 100 (720,1280,3)
         
     | 
| 67 | 
         
            +
            066 100 (720,1280,3)
         
     | 
| 68 | 
         
            +
            067 100 (720,1280,3)
         
     | 
| 69 | 
         
            +
            068 100 (720,1280,3)
         
     | 
| 70 | 
         
            +
            069 100 (720,1280,3)
         
     | 
| 71 | 
         
            +
            070 100 (720,1280,3)
         
     | 
| 72 | 
         
            +
            071 100 (720,1280,3)
         
     | 
| 73 | 
         
            +
            072 100 (720,1280,3)
         
     | 
| 74 | 
         
            +
            073 100 (720,1280,3)
         
     | 
| 75 | 
         
            +
            074 100 (720,1280,3)
         
     | 
| 76 | 
         
            +
            075 100 (720,1280,3)
         
     | 
| 77 | 
         
            +
            076 100 (720,1280,3)
         
     | 
| 78 | 
         
            +
            077 100 (720,1280,3)
         
     | 
| 79 | 
         
            +
            078 100 (720,1280,3)
         
     | 
| 80 | 
         
            +
            079 100 (720,1280,3)
         
     | 
| 81 | 
         
            +
            080 100 (720,1280,3)
         
     | 
| 82 | 
         
            +
            081 100 (720,1280,3)
         
     | 
| 83 | 
         
            +
            082 100 (720,1280,3)
         
     | 
| 84 | 
         
            +
            083 100 (720,1280,3)
         
     | 
| 85 | 
         
            +
            084 100 (720,1280,3)
         
     | 
| 86 | 
         
            +
            085 100 (720,1280,3)
         
     | 
| 87 | 
         
            +
            086 100 (720,1280,3)
         
     | 
| 88 | 
         
            +
            087 100 (720,1280,3)
         
     | 
| 89 | 
         
            +
            088 100 (720,1280,3)
         
     | 
| 90 | 
         
            +
            089 100 (720,1280,3)
         
     | 
| 91 | 
         
            +
            090 100 (720,1280,3)
         
     | 
| 92 | 
         
            +
            091 100 (720,1280,3)
         
     | 
| 93 | 
         
            +
            092 100 (720,1280,3)
         
     | 
| 94 | 
         
            +
            093 100 (720,1280,3)
         
     | 
| 95 | 
         
            +
            094 100 (720,1280,3)
         
     | 
| 96 | 
         
            +
            095 100 (720,1280,3)
         
     | 
| 97 | 
         
            +
            096 100 (720,1280,3)
         
     | 
| 98 | 
         
            +
            097 100 (720,1280,3)
         
     | 
| 99 | 
         
            +
            098 100 (720,1280,3)
         
     | 
| 100 | 
         
            +
            099 100 (720,1280,3)
         
     | 
| 101 | 
         
            +
            100 100 (720,1280,3)
         
     | 
| 102 | 
         
            +
            101 100 (720,1280,3)
         
     | 
| 103 | 
         
            +
            102 100 (720,1280,3)
         
     | 
| 104 | 
         
            +
            103 100 (720,1280,3)
         
     | 
| 105 | 
         
            +
            104 100 (720,1280,3)
         
     | 
| 106 | 
         
            +
            105 100 (720,1280,3)
         
     | 
| 107 | 
         
            +
            106 100 (720,1280,3)
         
     | 
| 108 | 
         
            +
            107 100 (720,1280,3)
         
     | 
| 109 | 
         
            +
            108 100 (720,1280,3)
         
     | 
| 110 | 
         
            +
            109 100 (720,1280,3)
         
     | 
| 111 | 
         
            +
            110 100 (720,1280,3)
         
     | 
| 112 | 
         
            +
            111 100 (720,1280,3)
         
     | 
| 113 | 
         
            +
            112 100 (720,1280,3)
         
     | 
| 114 | 
         
            +
            113 100 (720,1280,3)
         
     | 
| 115 | 
         
            +
            114 100 (720,1280,3)
         
     | 
| 116 | 
         
            +
            115 100 (720,1280,3)
         
     | 
| 117 | 
         
            +
            116 100 (720,1280,3)
         
     | 
| 118 | 
         
            +
            117 100 (720,1280,3)
         
     | 
| 119 | 
         
            +
            118 100 (720,1280,3)
         
     | 
| 120 | 
         
            +
            119 100 (720,1280,3)
         
     | 
| 121 | 
         
            +
            120 100 (720,1280,3)
         
     | 
| 122 | 
         
            +
            121 100 (720,1280,3)
         
     | 
| 123 | 
         
            +
            122 100 (720,1280,3)
         
     | 
| 124 | 
         
            +
            123 100 (720,1280,3)
         
     | 
| 125 | 
         
            +
            124 100 (720,1280,3)
         
     | 
| 126 | 
         
            +
            125 100 (720,1280,3)
         
     | 
| 127 | 
         
            +
            126 100 (720,1280,3)
         
     | 
| 128 | 
         
            +
            127 100 (720,1280,3)
         
     | 
| 129 | 
         
            +
            128 100 (720,1280,3)
         
     | 
| 130 | 
         
            +
            129 100 (720,1280,3)
         
     | 
| 131 | 
         
            +
            130 100 (720,1280,3)
         
     | 
| 132 | 
         
            +
            131 100 (720,1280,3)
         
     | 
| 133 | 
         
            +
            132 100 (720,1280,3)
         
     | 
| 134 | 
         
            +
            133 100 (720,1280,3)
         
     | 
| 135 | 
         
            +
            134 100 (720,1280,3)
         
     | 
| 136 | 
         
            +
            135 100 (720,1280,3)
         
     | 
| 137 | 
         
            +
            136 100 (720,1280,3)
         
     | 
| 138 | 
         
            +
            137 100 (720,1280,3)
         
     | 
| 139 | 
         
            +
            138 100 (720,1280,3)
         
     | 
| 140 | 
         
            +
            139 100 (720,1280,3)
         
     | 
| 141 | 
         
            +
            140 100 (720,1280,3)
         
     | 
| 142 | 
         
            +
            141 100 (720,1280,3)
         
     | 
| 143 | 
         
            +
            142 100 (720,1280,3)
         
     | 
| 144 | 
         
            +
            143 100 (720,1280,3)
         
     | 
| 145 | 
         
            +
            144 100 (720,1280,3)
         
     | 
| 146 | 
         
            +
            145 100 (720,1280,3)
         
     | 
| 147 | 
         
            +
            146 100 (720,1280,3)
         
     | 
| 148 | 
         
            +
            147 100 (720,1280,3)
         
     | 
| 149 | 
         
            +
            148 100 (720,1280,3)
         
     | 
| 150 | 
         
            +
            149 100 (720,1280,3)
         
     | 
| 151 | 
         
            +
            150 100 (720,1280,3)
         
     | 
| 152 | 
         
            +
            151 100 (720,1280,3)
         
     | 
| 153 | 
         
            +
            152 100 (720,1280,3)
         
     | 
| 154 | 
         
            +
            153 100 (720,1280,3)
         
     | 
| 155 | 
         
            +
            154 100 (720,1280,3)
         
     | 
| 156 | 
         
            +
            155 100 (720,1280,3)
         
     | 
| 157 | 
         
            +
            156 100 (720,1280,3)
         
     | 
| 158 | 
         
            +
            157 100 (720,1280,3)
         
     | 
| 159 | 
         
            +
            158 100 (720,1280,3)
         
     | 
| 160 | 
         
            +
            159 100 (720,1280,3)
         
     | 
| 161 | 
         
            +
            160 100 (720,1280,3)
         
     | 
| 162 | 
         
            +
            161 100 (720,1280,3)
         
     | 
| 163 | 
         
            +
            162 100 (720,1280,3)
         
     | 
| 164 | 
         
            +
            163 100 (720,1280,3)
         
     | 
| 165 | 
         
            +
            164 100 (720,1280,3)
         
     | 
| 166 | 
         
            +
            165 100 (720,1280,3)
         
     | 
| 167 | 
         
            +
            166 100 (720,1280,3)
         
     | 
| 168 | 
         
            +
            167 100 (720,1280,3)
         
     | 
| 169 | 
         
            +
            168 100 (720,1280,3)
         
     | 
| 170 | 
         
            +
            169 100 (720,1280,3)
         
     | 
| 171 | 
         
            +
            170 100 (720,1280,3)
         
     | 
| 172 | 
         
            +
            171 100 (720,1280,3)
         
     | 
| 173 | 
         
            +
            172 100 (720,1280,3)
         
     | 
| 174 | 
         
            +
            173 100 (720,1280,3)
         
     | 
| 175 | 
         
            +
            174 100 (720,1280,3)
         
     | 
| 176 | 
         
            +
            175 100 (720,1280,3)
         
     | 
| 177 | 
         
            +
            176 100 (720,1280,3)
         
     | 
| 178 | 
         
            +
            177 100 (720,1280,3)
         
     | 
| 179 | 
         
            +
            178 100 (720,1280,3)
         
     | 
| 180 | 
         
            +
            179 100 (720,1280,3)
         
     | 
| 181 | 
         
            +
            180 100 (720,1280,3)
         
     | 
| 182 | 
         
            +
            181 100 (720,1280,3)
         
     | 
| 183 | 
         
            +
            182 100 (720,1280,3)
         
     | 
| 184 | 
         
            +
            183 100 (720,1280,3)
         
     | 
| 185 | 
         
            +
            184 100 (720,1280,3)
         
     | 
| 186 | 
         
            +
            185 100 (720,1280,3)
         
     | 
| 187 | 
         
            +
            186 100 (720,1280,3)
         
     | 
| 188 | 
         
            +
            187 100 (720,1280,3)
         
     | 
| 189 | 
         
            +
            188 100 (720,1280,3)
         
     | 
| 190 | 
         
            +
            189 100 (720,1280,3)
         
     | 
| 191 | 
         
            +
            190 100 (720,1280,3)
         
     | 
| 192 | 
         
            +
            191 100 (720,1280,3)
         
     | 
| 193 | 
         
            +
            192 100 (720,1280,3)
         
     | 
| 194 | 
         
            +
            193 100 (720,1280,3)
         
     | 
| 195 | 
         
            +
            194 100 (720,1280,3)
         
     | 
| 196 | 
         
            +
            195 100 (720,1280,3)
         
     | 
| 197 | 
         
            +
            196 100 (720,1280,3)
         
     | 
| 198 | 
         
            +
            197 100 (720,1280,3)
         
     | 
| 199 | 
         
            +
            198 100 (720,1280,3)
         
     | 
| 200 | 
         
            +
            199 100 (720,1280,3)
         
     | 
| 201 | 
         
            +
            200 100 (720,1280,3)
         
     | 
| 202 | 
         
            +
            201 100 (720,1280,3)
         
     | 
| 203 | 
         
            +
            202 100 (720,1280,3)
         
     | 
| 204 | 
         
            +
            203 100 (720,1280,3)
         
     | 
| 205 | 
         
            +
            204 100 (720,1280,3)
         
     | 
| 206 | 
         
            +
            205 100 (720,1280,3)
         
     | 
| 207 | 
         
            +
            206 100 (720,1280,3)
         
     | 
| 208 | 
         
            +
            207 100 (720,1280,3)
         
     | 
| 209 | 
         
            +
            208 100 (720,1280,3)
         
     | 
| 210 | 
         
            +
            209 100 (720,1280,3)
         
     | 
| 211 | 
         
            +
            210 100 (720,1280,3)
         
     | 
| 212 | 
         
            +
            211 100 (720,1280,3)
         
     | 
| 213 | 
         
            +
            212 100 (720,1280,3)
         
     | 
| 214 | 
         
            +
            213 100 (720,1280,3)
         
     | 
| 215 | 
         
            +
            214 100 (720,1280,3)
         
     | 
| 216 | 
         
            +
            215 100 (720,1280,3)
         
     | 
| 217 | 
         
            +
            216 100 (720,1280,3)
         
     | 
| 218 | 
         
            +
            217 100 (720,1280,3)
         
     | 
| 219 | 
         
            +
            218 100 (720,1280,3)
         
     | 
| 220 | 
         
            +
            219 100 (720,1280,3)
         
     | 
| 221 | 
         
            +
            220 100 (720,1280,3)
         
     | 
| 222 | 
         
            +
            221 100 (720,1280,3)
         
     | 
| 223 | 
         
            +
            222 100 (720,1280,3)
         
     | 
| 224 | 
         
            +
            223 100 (720,1280,3)
         
     | 
| 225 | 
         
            +
            224 100 (720,1280,3)
         
     | 
| 226 | 
         
            +
            225 100 (720,1280,3)
         
     | 
| 227 | 
         
            +
            226 100 (720,1280,3)
         
     | 
| 228 | 
         
            +
            227 100 (720,1280,3)
         
     | 
| 229 | 
         
            +
            228 100 (720,1280,3)
         
     | 
| 230 | 
         
            +
            229 100 (720,1280,3)
         
     | 
| 231 | 
         
            +
            230 100 (720,1280,3)
         
     | 
| 232 | 
         
            +
            231 100 (720,1280,3)
         
     | 
| 233 | 
         
            +
            232 100 (720,1280,3)
         
     | 
| 234 | 
         
            +
            233 100 (720,1280,3)
         
     | 
| 235 | 
         
            +
            234 100 (720,1280,3)
         
     | 
| 236 | 
         
            +
            235 100 (720,1280,3)
         
     | 
| 237 | 
         
            +
            236 100 (720,1280,3)
         
     | 
| 238 | 
         
            +
            237 100 (720,1280,3)
         
     | 
| 239 | 
         
            +
            238 100 (720,1280,3)
         
     | 
| 240 | 
         
            +
            239 100 (720,1280,3)
         
     | 
| 241 | 
         
            +
            240 100 (720,1280,3)
         
     | 
| 242 | 
         
            +
            241 100 (720,1280,3)
         
     | 
| 243 | 
         
            +
            242 100 (720,1280,3)
         
     | 
| 244 | 
         
            +
            243 100 (720,1280,3)
         
     | 
| 245 | 
         
            +
            244 100 (720,1280,3)
         
     | 
| 246 | 
         
            +
            245 100 (720,1280,3)
         
     | 
| 247 | 
         
            +
            246 100 (720,1280,3)
         
     | 
| 248 | 
         
            +
            247 100 (720,1280,3)
         
     | 
| 249 | 
         
            +
            248 100 (720,1280,3)
         
     | 
| 250 | 
         
            +
            249 100 (720,1280,3)
         
     | 
| 251 | 
         
            +
            250 100 (720,1280,3)
         
     | 
| 252 | 
         
            +
            251 100 (720,1280,3)
         
     | 
| 253 | 
         
            +
            252 100 (720,1280,3)
         
     | 
| 254 | 
         
            +
            253 100 (720,1280,3)
         
     | 
| 255 | 
         
            +
            254 100 (720,1280,3)
         
     | 
| 256 | 
         
            +
            255 100 (720,1280,3)
         
     | 
| 257 | 
         
            +
            256 100 (720,1280,3)
         
     | 
| 258 | 
         
            +
            257 100 (720,1280,3)
         
     | 
| 259 | 
         
            +
            258 100 (720,1280,3)
         
     | 
| 260 | 
         
            +
            259 100 (720,1280,3)
         
     | 
| 261 | 
         
            +
            260 100 (720,1280,3)
         
     | 
| 262 | 
         
            +
            261 100 (720,1280,3)
         
     | 
| 263 | 
         
            +
            262 100 (720,1280,3)
         
     | 
| 264 | 
         
            +
            263 100 (720,1280,3)
         
     | 
| 265 | 
         
            +
            264 100 (720,1280,3)
         
     | 
| 266 | 
         
            +
            265 100 (720,1280,3)
         
     | 
| 267 | 
         
            +
            266 100 (720,1280,3)
         
     | 
| 268 | 
         
            +
            267 100 (720,1280,3)
         
     | 
| 269 | 
         
            +
            268 100 (720,1280,3)
         
     | 
| 270 | 
         
            +
            269 100 (720,1280,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_REDSofficial4_test_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,4 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            240 100 (720,1280,3)
         
     | 
| 2 | 
         
            +
            241 100 (720,1280,3)
         
     | 
| 3 | 
         
            +
            246 100 (720,1280,3)
         
     | 
| 4 | 
         
            +
            257 100 (720,1280,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_REDSval_official_test_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            240 100 (720,1280,3)
         
     | 
| 2 | 
         
            +
            241 100 (720,1280,3)
         
     | 
| 3 | 
         
            +
            242 100 (720,1280,3)
         
     | 
| 4 | 
         
            +
            243 100 (720,1280,3)
         
     | 
| 5 | 
         
            +
            244 100 (720,1280,3)
         
     | 
| 6 | 
         
            +
            245 100 (720,1280,3)
         
     | 
| 7 | 
         
            +
            246 100 (720,1280,3)
         
     | 
| 8 | 
         
            +
            247 100 (720,1280,3)
         
     | 
| 9 | 
         
            +
            248 100 (720,1280,3)
         
     | 
| 10 | 
         
            +
            249 100 (720,1280,3)
         
     | 
| 11 | 
         
            +
            250 100 (720,1280,3)
         
     | 
| 12 | 
         
            +
            251 100 (720,1280,3)
         
     | 
| 13 | 
         
            +
            252 100 (720,1280,3)
         
     | 
| 14 | 
         
            +
            253 100 (720,1280,3)
         
     | 
| 15 | 
         
            +
            254 100 (720,1280,3)
         
     | 
| 16 | 
         
            +
            255 100 (720,1280,3)
         
     | 
| 17 | 
         
            +
            256 100 (720,1280,3)
         
     | 
| 18 | 
         
            +
            257 100 (720,1280,3)
         
     | 
| 19 | 
         
            +
            258 100 (720,1280,3)
         
     | 
| 20 | 
         
            +
            259 100 (720,1280,3)
         
     | 
| 21 | 
         
            +
            260 100 (720,1280,3)
         
     | 
| 22 | 
         
            +
            261 100 (720,1280,3)
         
     | 
| 23 | 
         
            +
            262 100 (720,1280,3)
         
     | 
| 24 | 
         
            +
            263 100 (720,1280,3)
         
     | 
| 25 | 
         
            +
            264 100 (720,1280,3)
         
     | 
| 26 | 
         
            +
            265 100 (720,1280,3)
         
     | 
| 27 | 
         
            +
            266 100 (720,1280,3)
         
     | 
| 28 | 
         
            +
            267 100 (720,1280,3)
         
     | 
| 29 | 
         
            +
            268 100 (720,1280,3)
         
     | 
| 30 | 
         
            +
            269 100 (720,1280,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_Vimeo90K_test_GT.txt
    ADDED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        basicsr/data/meta_info/meta_info_Vimeo90K_test_fast_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,1225 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            00001/0625 7 (256,448,3)
         
     | 
| 2 | 
         
            +
            00001/0632 7 (256,448,3)
         
     | 
| 3 | 
         
            +
            00001/0807 7 (256,448,3)
         
     | 
| 4 | 
         
            +
            00001/0832 7 (256,448,3)
         
     | 
| 5 | 
         
            +
            00001/0834 7 (256,448,3)
         
     | 
| 6 | 
         
            +
            00001/0836 7 (256,448,3)
         
     | 
| 7 | 
         
            +
            00002/0004 7 (256,448,3)
         
     | 
| 8 | 
         
            +
            00002/0112 7 (256,448,3)
         
     | 
| 9 | 
         
            +
            00002/0116 7 (256,448,3)
         
     | 
| 10 | 
         
            +
            00002/0123 7 (256,448,3)
         
     | 
| 11 | 
         
            +
            00002/0455 7 (256,448,3)
         
     | 
| 12 | 
         
            +
            00002/0602 7 (256,448,3)
         
     | 
| 13 | 
         
            +
            00002/0976 7 (256,448,3)
         
     | 
| 14 | 
         
            +
            00002/0980 7 (256,448,3)
         
     | 
| 15 | 
         
            +
            00002/0983 7 (256,448,3)
         
     | 
| 16 | 
         
            +
            00002/1000 7 (256,448,3)
         
     | 
| 17 | 
         
            +
            00003/0022 7 (256,448,3)
         
     | 
| 18 | 
         
            +
            00003/0031 7 (256,448,3)
         
     | 
| 19 | 
         
            +
            00003/0035 7 (256,448,3)
         
     | 
| 20 | 
         
            +
            00003/0041 7 (256,448,3)
         
     | 
| 21 | 
         
            +
            00003/0073 7 (256,448,3)
         
     | 
| 22 | 
         
            +
            00003/0107 7 (256,448,3)
         
     | 
| 23 | 
         
            +
            00003/0111 7 (256,448,3)
         
     | 
| 24 | 
         
            +
            00003/0114 7 (256,448,3)
         
     | 
| 25 | 
         
            +
            00003/0117 7 (256,448,3)
         
     | 
| 26 | 
         
            +
            00003/0121 7 (256,448,3)
         
     | 
| 27 | 
         
            +
            00003/0499 7 (256,448,3)
         
     | 
| 28 | 
         
            +
            00003/0501 7 (256,448,3)
         
     | 
| 29 | 
         
            +
            00003/0507 7 (256,448,3)
         
     | 
| 30 | 
         
            +
            00003/0510 7 (256,448,3)
         
     | 
| 31 | 
         
            +
            00003/0517 7 (256,448,3)
         
     | 
| 32 | 
         
            +
            00003/0522 7 (256,448,3)
         
     | 
| 33 | 
         
            +
            00003/0531 7 (256,448,3)
         
     | 
| 34 | 
         
            +
            00003/0533 7 (256,448,3)
         
     | 
| 35 | 
         
            +
            00003/0534 7 (256,448,3)
         
     | 
| 36 | 
         
            +
            00003/0682 7 (256,448,3)
         
     | 
| 37 | 
         
            +
            00003/0687 7 (256,448,3)
         
     | 
| 38 | 
         
            +
            00003/0715 7 (256,448,3)
         
     | 
| 39 | 
         
            +
            00003/0742 7 (256,448,3)
         
     | 
| 40 | 
         
            +
            00003/0751 7 (256,448,3)
         
     | 
| 41 | 
         
            +
            00003/0984 7 (256,448,3)
         
     | 
| 42 | 
         
            +
            00004/0042 7 (256,448,3)
         
     | 
| 43 | 
         
            +
            00004/0165 7 (256,448,3)
         
     | 
| 44 | 
         
            +
            00004/0321 7 (256,448,3)
         
     | 
| 45 | 
         
            +
            00004/0569 7 (256,448,3)
         
     | 
| 46 | 
         
            +
            00004/0572 7 (256,448,3)
         
     | 
| 47 | 
         
            +
            00004/0619 7 (256,448,3)
         
     | 
| 48 | 
         
            +
            00004/0776 7 (256,448,3)
         
     | 
| 49 | 
         
            +
            00004/0780 7 (256,448,3)
         
     | 
| 50 | 
         
            +
            00004/0825 7 (256,448,3)
         
     | 
| 51 | 
         
            +
            00004/0832 7 (256,448,3)
         
     | 
| 52 | 
         
            +
            00004/0853 7 (256,448,3)
         
     | 
| 53 | 
         
            +
            00004/0876 7 (256,448,3)
         
     | 
| 54 | 
         
            +
            00004/0888 7 (256,448,3)
         
     | 
| 55 | 
         
            +
            00005/0015 7 (256,448,3)
         
     | 
| 56 | 
         
            +
            00005/0021 7 (256,448,3)
         
     | 
| 57 | 
         
            +
            00005/0022 7 (256,448,3)
         
     | 
| 58 | 
         
            +
            00005/0024 7 (256,448,3)
         
     | 
| 59 | 
         
            +
            00005/0026 7 (256,448,3)
         
     | 
| 60 | 
         
            +
            00005/0394 7 (256,448,3)
         
     | 
| 61 | 
         
            +
            00005/0403 7 (256,448,3)
         
     | 
| 62 | 
         
            +
            00005/0531 7 (256,448,3)
         
     | 
| 63 | 
         
            +
            00005/0546 7 (256,448,3)
         
     | 
| 64 | 
         
            +
            00005/0554 7 (256,448,3)
         
     | 
| 65 | 
         
            +
            00005/0694 7 (256,448,3)
         
     | 
| 66 | 
         
            +
            00005/0700 7 (256,448,3)
         
     | 
| 67 | 
         
            +
            00005/0740 7 (256,448,3)
         
     | 
| 68 | 
         
            +
            00005/0826 7 (256,448,3)
         
     | 
| 69 | 
         
            +
            00005/0832 7 (256,448,3)
         
     | 
| 70 | 
         
            +
            00005/0834 7 (256,448,3)
         
     | 
| 71 | 
         
            +
            00005/0943 7 (256,448,3)
         
     | 
| 72 | 
         
            +
            00006/0184 7 (256,448,3)
         
     | 
| 73 | 
         
            +
            00006/0205 7 (256,448,3)
         
     | 
| 74 | 
         
            +
            00006/0206 7 (256,448,3)
         
     | 
| 75 | 
         
            +
            00006/0211 7 (256,448,3)
         
     | 
| 76 | 
         
            +
            00006/0271 7 (256,448,3)
         
     | 
| 77 | 
         
            +
            00006/0273 7 (256,448,3)
         
     | 
| 78 | 
         
            +
            00006/0277 7 (256,448,3)
         
     | 
| 79 | 
         
            +
            00006/0283 7 (256,448,3)
         
     | 
| 80 | 
         
            +
            00006/0287 7 (256,448,3)
         
     | 
| 81 | 
         
            +
            00006/0298 7 (256,448,3)
         
     | 
| 82 | 
         
            +
            00006/0310 7 (256,448,3)
         
     | 
| 83 | 
         
            +
            00006/0356 7 (256,448,3)
         
     | 
| 84 | 
         
            +
            00006/0357 7 (256,448,3)
         
     | 
| 85 | 
         
            +
            00006/0544 7 (256,448,3)
         
     | 
| 86 | 
         
            +
            00006/0565 7 (256,448,3)
         
     | 
| 87 | 
         
            +
            00006/0569 7 (256,448,3)
         
     | 
| 88 | 
         
            +
            00006/0573 7 (256,448,3)
         
     | 
| 89 | 
         
            +
            00006/0592 7 (256,448,3)
         
     | 
| 90 | 
         
            +
            00006/0613 7 (256,448,3)
         
     | 
| 91 | 
         
            +
            00006/0633 7 (256,448,3)
         
     | 
| 92 | 
         
            +
            00006/0637 7 (256,448,3)
         
     | 
| 93 | 
         
            +
            00006/0646 7 (256,448,3)
         
     | 
| 94 | 
         
            +
            00006/0649 7 (256,448,3)
         
     | 
| 95 | 
         
            +
            00006/0655 7 (256,448,3)
         
     | 
| 96 | 
         
            +
            00006/0658 7 (256,448,3)
         
     | 
| 97 | 
         
            +
            00006/0662 7 (256,448,3)
         
     | 
| 98 | 
         
            +
            00006/0666 7 (256,448,3)
         
     | 
| 99 | 
         
            +
            00006/0673 7 (256,448,3)
         
     | 
| 100 | 
         
            +
            00007/0248 7 (256,448,3)
         
     | 
| 101 | 
         
            +
            00007/0253 7 (256,448,3)
         
     | 
| 102 | 
         
            +
            00007/0430 7 (256,448,3)
         
     | 
| 103 | 
         
            +
            00007/0434 7 (256,448,3)
         
     | 
| 104 | 
         
            +
            00007/0436 7 (256,448,3)
         
     | 
| 105 | 
         
            +
            00007/0452 7 (256,448,3)
         
     | 
| 106 | 
         
            +
            00007/0464 7 (256,448,3)
         
     | 
| 107 | 
         
            +
            00007/0470 7 (256,448,3)
         
     | 
| 108 | 
         
            +
            00007/0472 7 (256,448,3)
         
     | 
| 109 | 
         
            +
            00007/0483 7 (256,448,3)
         
     | 
| 110 | 
         
            +
            00007/0484 7 (256,448,3)
         
     | 
| 111 | 
         
            +
            00007/0493 7 (256,448,3)
         
     | 
| 112 | 
         
            +
            00007/0508 7 (256,448,3)
         
     | 
| 113 | 
         
            +
            00007/0514 7 (256,448,3)
         
     | 
| 114 | 
         
            +
            00007/0697 7 (256,448,3)
         
     | 
| 115 | 
         
            +
            00007/0698 7 (256,448,3)
         
     | 
| 116 | 
         
            +
            00007/0744 7 (256,448,3)
         
     | 
| 117 | 
         
            +
            00007/0775 7 (256,448,3)
         
     | 
| 118 | 
         
            +
            00007/0786 7 (256,448,3)
         
     | 
| 119 | 
         
            +
            00007/0790 7 (256,448,3)
         
     | 
| 120 | 
         
            +
            00007/0800 7 (256,448,3)
         
     | 
| 121 | 
         
            +
            00007/0833 7 (256,448,3)
         
     | 
| 122 | 
         
            +
            00007/0867 7 (256,448,3)
         
     | 
| 123 | 
         
            +
            00007/0879 7 (256,448,3)
         
     | 
| 124 | 
         
            +
            00007/0899 7 (256,448,3)
         
     | 
| 125 | 
         
            +
            00008/0251 7 (256,448,3)
         
     | 
| 126 | 
         
            +
            00008/0322 7 (256,448,3)
         
     | 
| 127 | 
         
            +
            00008/0971 7 (256,448,3)
         
     | 
| 128 | 
         
            +
            00008/0976 7 (256,448,3)
         
     | 
| 129 | 
         
            +
            00009/0016 7 (256,448,3)
         
     | 
| 130 | 
         
            +
            00009/0036 7 (256,448,3)
         
     | 
| 131 | 
         
            +
            00009/0037 7 (256,448,3)
         
     | 
| 132 | 
         
            +
            00009/0609 7 (256,448,3)
         
     | 
| 133 | 
         
            +
            00009/0812 7 (256,448,3)
         
     | 
| 134 | 
         
            +
            00009/0821 7 (256,448,3)
         
     | 
| 135 | 
         
            +
            00009/0947 7 (256,448,3)
         
     | 
| 136 | 
         
            +
            00009/0952 7 (256,448,3)
         
     | 
| 137 | 
         
            +
            00009/0955 7 (256,448,3)
         
     | 
| 138 | 
         
            +
            00009/0970 7 (256,448,3)
         
     | 
| 139 | 
         
            +
            00010/0072 7 (256,448,3)
         
     | 
| 140 | 
         
            +
            00010/0074 7 (256,448,3)
         
     | 
| 141 | 
         
            +
            00010/0079 7 (256,448,3)
         
     | 
| 142 | 
         
            +
            00010/0085 7 (256,448,3)
         
     | 
| 143 | 
         
            +
            00010/0139 7 (256,448,3)
         
     | 
| 144 | 
         
            +
            00010/0140 7 (256,448,3)
         
     | 
| 145 | 
         
            +
            00010/0183 7 (256,448,3)
         
     | 
| 146 | 
         
            +
            00010/0200 7 (256,448,3)
         
     | 
| 147 | 
         
            +
            00010/0223 7 (256,448,3)
         
     | 
| 148 | 
         
            +
            00010/0305 7 (256,448,3)
         
     | 
| 149 | 
         
            +
            00010/0323 7 (256,448,3)
         
     | 
| 150 | 
         
            +
            00010/0338 7 (256,448,3)
         
     | 
| 151 | 
         
            +
            00010/0342 7 (256,448,3)
         
     | 
| 152 | 
         
            +
            00010/0350 7 (256,448,3)
         
     | 
| 153 | 
         
            +
            00010/0356 7 (256,448,3)
         
     | 
| 154 | 
         
            +
            00010/0362 7 (256,448,3)
         
     | 
| 155 | 
         
            +
            00010/0366 7 (256,448,3)
         
     | 
| 156 | 
         
            +
            00010/0375 7 (256,448,3)
         
     | 
| 157 | 
         
            +
            00010/0404 7 (256,448,3)
         
     | 
| 158 | 
         
            +
            00010/0407 7 (256,448,3)
         
     | 
| 159 | 
         
            +
            00010/0414 7 (256,448,3)
         
     | 
| 160 | 
         
            +
            00010/0418 7 (256,448,3)
         
     | 
| 161 | 
         
            +
            00010/0429 7 (256,448,3)
         
     | 
| 162 | 
         
            +
            00010/0557 7 (256,448,3)
         
     | 
| 163 | 
         
            +
            00010/0564 7 (256,448,3)
         
     | 
| 164 | 
         
            +
            00010/0733 7 (256,448,3)
         
     | 
| 165 | 
         
            +
            00010/0935 7 (256,448,3)
         
     | 
| 166 | 
         
            +
            00010/0939 7 (256,448,3)
         
     | 
| 167 | 
         
            +
            00010/0943 7 (256,448,3)
         
     | 
| 168 | 
         
            +
            00011/0242 7 (256,448,3)
         
     | 
| 169 | 
         
            +
            00011/0259 7 (256,448,3)
         
     | 
| 170 | 
         
            +
            00011/0263 7 (256,448,3)
         
     | 
| 171 | 
         
            +
            00011/0266 7 (256,448,3)
         
     | 
| 172 | 
         
            +
            00011/0278 7 (256,448,3)
         
     | 
| 173 | 
         
            +
            00011/0890 7 (256,448,3)
         
     | 
| 174 | 
         
            +
            00011/0894 7 (256,448,3)
         
     | 
| 175 | 
         
            +
            00011/0903 7 (256,448,3)
         
     | 
| 176 | 
         
            +
            00011/0906 7 (256,448,3)
         
     | 
| 177 | 
         
            +
            00011/0913 7 (256,448,3)
         
     | 
| 178 | 
         
            +
            00012/0011 7 (256,448,3)
         
     | 
| 179 | 
         
            +
            00012/0014 7 (256,448,3)
         
     | 
| 180 | 
         
            +
            00012/0126 7 (256,448,3)
         
     | 
| 181 | 
         
            +
            00012/0127 7 (256,448,3)
         
     | 
| 182 | 
         
            +
            00012/0526 7 (256,448,3)
         
     | 
| 183 | 
         
            +
            00012/0551 7 (256,448,3)
         
     | 
| 184 | 
         
            +
            00012/0896 7 (256,448,3)
         
     | 
| 185 | 
         
            +
            00012/0910 7 (256,448,3)
         
     | 
| 186 | 
         
            +
            00012/0915 7 (256,448,3)
         
     | 
| 187 | 
         
            +
            00013/0167 7 (256,448,3)
         
     | 
| 188 | 
         
            +
            00013/0794 7 (256,448,3)
         
     | 
| 189 | 
         
            +
            00013/0807 7 (256,448,3)
         
     | 
| 190 | 
         
            +
            00013/0846 7 (256,448,3)
         
     | 
| 191 | 
         
            +
            00013/0882 7 (256,448,3)
         
     | 
| 192 | 
         
            +
            00013/0889 7 (256,448,3)
         
     | 
| 193 | 
         
            +
            00013/0910 7 (256,448,3)
         
     | 
| 194 | 
         
            +
            00013/0913 7 (256,448,3)
         
     | 
| 195 | 
         
            +
            00013/0924 7 (256,448,3)
         
     | 
| 196 | 
         
            +
            00013/0931 7 (256,448,3)
         
     | 
| 197 | 
         
            +
            00013/0944 7 (256,448,3)
         
     | 
| 198 | 
         
            +
            00013/0955 7 (256,448,3)
         
     | 
| 199 | 
         
            +
            00013/0962 7 (256,448,3)
         
     | 
| 200 | 
         
            +
            00013/0969 7 (256,448,3)
         
     | 
| 201 | 
         
            +
            00014/0012 7 (256,448,3)
         
     | 
| 202 | 
         
            +
            00014/0025 7 (256,448,3)
         
     | 
| 203 | 
         
            +
            00014/0473 7 (256,448,3)
         
     | 
| 204 | 
         
            +
            00014/0499 7 (256,448,3)
         
     | 
| 205 | 
         
            +
            00014/0524 7 (256,448,3)
         
     | 
| 206 | 
         
            +
            00014/0739 7 (256,448,3)
         
     | 
| 207 | 
         
            +
            00014/0753 7 (256,448,3)
         
     | 
| 208 | 
         
            +
            00014/0771 7 (256,448,3)
         
     | 
| 209 | 
         
            +
            00014/0832 7 (256,448,3)
         
     | 
| 210 | 
         
            +
            00014/0836 7 (256,448,3)
         
     | 
| 211 | 
         
            +
            00014/0838 7 (256,448,3)
         
     | 
| 212 | 
         
            +
            00014/0839 7 (256,448,3)
         
     | 
| 213 | 
         
            +
            00014/0843 7 (256,448,3)
         
     | 
| 214 | 
         
            +
            00014/0846 7 (256,448,3)
         
     | 
| 215 | 
         
            +
            00014/0849 7 (256,448,3)
         
     | 
| 216 | 
         
            +
            00014/0859 7 (256,448,3)
         
     | 
| 217 | 
         
            +
            00014/0880 7 (256,448,3)
         
     | 
| 218 | 
         
            +
            00014/0906 7 (256,448,3)
         
     | 
| 219 | 
         
            +
            00015/0030 7 (256,448,3)
         
     | 
| 220 | 
         
            +
            00015/0067 7 (256,448,3)
         
     | 
| 221 | 
         
            +
            00015/0084 7 (256,448,3)
         
     | 
| 222 | 
         
            +
            00015/0190 7 (256,448,3)
         
     | 
| 223 | 
         
            +
            00015/0575 7 (256,448,3)
         
     | 
| 224 | 
         
            +
            00015/0784 7 (256,448,3)
         
     | 
| 225 | 
         
            +
            00015/0855 7 (256,448,3)
         
     | 
| 226 | 
         
            +
            00015/0904 7 (256,448,3)
         
     | 
| 227 | 
         
            +
            00015/0914 7 (256,448,3)
         
     | 
| 228 | 
         
            +
            00015/0936 7 (256,448,3)
         
     | 
| 229 | 
         
            +
            00015/0939 7 (256,448,3)
         
     | 
| 230 | 
         
            +
            00015/0943 7 (256,448,3)
         
     | 
| 231 | 
         
            +
            00015/0957 7 (256,448,3)
         
     | 
| 232 | 
         
            +
            00016/0131 7 (256,448,3)
         
     | 
| 233 | 
         
            +
            00016/0173 7 (256,448,3)
         
     | 
| 234 | 
         
            +
            00016/0320 7 (256,448,3)
         
     | 
| 235 | 
         
            +
            00016/0328 7 (256,448,3)
         
     | 
| 236 | 
         
            +
            00016/0334 7 (256,448,3)
         
     | 
| 237 | 
         
            +
            00016/0338 7 (256,448,3)
         
     | 
| 238 | 
         
            +
            00016/0339 7 (256,448,3)
         
     | 
| 239 | 
         
            +
            00016/0345 7 (256,448,3)
         
     | 
| 240 | 
         
            +
            00016/0365 7 (256,448,3)
         
     | 
| 241 | 
         
            +
            00016/0584 7 (256,448,3)
         
     | 
| 242 | 
         
            +
            00016/0634 7 (256,448,3)
         
     | 
| 243 | 
         
            +
            00017/0342 7 (256,448,3)
         
     | 
| 244 | 
         
            +
            00017/0346 7 (256,448,3)
         
     | 
| 245 | 
         
            +
            00017/0350 7 (256,448,3)
         
     | 
| 246 | 
         
            +
            00017/0766 7 (256,448,3)
         
     | 
| 247 | 
         
            +
            00017/0786 7 (256,448,3)
         
     | 
| 248 | 
         
            +
            00017/0911 7 (256,448,3)
         
     | 
| 249 | 
         
            +
            00017/0914 7 (256,448,3)
         
     | 
| 250 | 
         
            +
            00018/0217 7 (256,448,3)
         
     | 
| 251 | 
         
            +
            00018/0258 7 (256,448,3)
         
     | 
| 252 | 
         
            +
            00018/0307 7 (256,448,3)
         
     | 
| 253 | 
         
            +
            00018/0480 7 (256,448,3)
         
     | 
| 254 | 
         
            +
            00018/0491 7 (256,448,3)
         
     | 
| 255 | 
         
            +
            00018/0994 7 (256,448,3)
         
     | 
| 256 | 
         
            +
            00018/0995 7 (256,448,3)
         
     | 
| 257 | 
         
            +
            00018/0997 7 (256,448,3)
         
     | 
| 258 | 
         
            +
            00018/1000 7 (256,448,3)
         
     | 
| 259 | 
         
            +
            00019/0007 7 (256,448,3)
         
     | 
| 260 | 
         
            +
            00019/0016 7 (256,448,3)
         
     | 
| 261 | 
         
            +
            00019/0026 7 (256,448,3)
         
     | 
| 262 | 
         
            +
            00019/0030 7 (256,448,3)
         
     | 
| 263 | 
         
            +
            00019/0086 7 (256,448,3)
         
     | 
| 264 | 
         
            +
            00019/0089 7 (256,448,3)
         
     | 
| 265 | 
         
            +
            00019/0111 7 (256,448,3)
         
     | 
| 266 | 
         
            +
            00019/0285 7 (256,448,3)
         
     | 
| 267 | 
         
            +
            00019/0415 7 (256,448,3)
         
     | 
| 268 | 
         
            +
            00019/0434 7 (256,448,3)
         
     | 
| 269 | 
         
            +
            00019/0437 7 (256,448,3)
         
     | 
| 270 | 
         
            +
            00019/0568 7 (256,448,3)
         
     | 
| 271 | 
         
            +
            00019/0570 7 (256,448,3)
         
     | 
| 272 | 
         
            +
            00019/0591 7 (256,448,3)
         
     | 
| 273 | 
         
            +
            00019/0596 7 (256,448,3)
         
     | 
| 274 | 
         
            +
            00019/0603 7 (256,448,3)
         
     | 
| 275 | 
         
            +
            00019/0607 7 (256,448,3)
         
     | 
| 276 | 
         
            +
            00019/0637 7 (256,448,3)
         
     | 
| 277 | 
         
            +
            00019/0644 7 (256,448,3)
         
     | 
| 278 | 
         
            +
            00019/0647 7 (256,448,3)
         
     | 
| 279 | 
         
            +
            00019/0787 7 (256,448,3)
         
     | 
| 280 | 
         
            +
            00019/0993 7 (256,448,3)
         
     | 
| 281 | 
         
            +
            00019/0998 7 (256,448,3)
         
     | 
| 282 | 
         
            +
            00021/0232 7 (256,448,3)
         
     | 
| 283 | 
         
            +
            00021/0255 7 (256,448,3)
         
     | 
| 284 | 
         
            +
            00021/0646 7 (256,448,3)
         
     | 
| 285 | 
         
            +
            00021/0653 7 (256,448,3)
         
     | 
| 286 | 
         
            +
            00021/0657 7 (256,448,3)
         
     | 
| 287 | 
         
            +
            00021/0668 7 (256,448,3)
         
     | 
| 288 | 
         
            +
            00021/0672 7 (256,448,3)
         
     | 
| 289 | 
         
            +
            00021/0725 7 (256,448,3)
         
     | 
| 290 | 
         
            +
            00021/0750 7 (256,448,3)
         
     | 
| 291 | 
         
            +
            00021/0764 7 (256,448,3)
         
     | 
| 292 | 
         
            +
            00021/0821 7 (256,448,3)
         
     | 
| 293 | 
         
            +
            00022/0192 7 (256,448,3)
         
     | 
| 294 | 
         
            +
            00022/0391 7 (256,448,3)
         
     | 
| 295 | 
         
            +
            00022/0514 7 (256,448,3)
         
     | 
| 296 | 
         
            +
            00022/0567 7 (256,448,3)
         
     | 
| 297 | 
         
            +
            00022/0674 7 (256,448,3)
         
     | 
| 298 | 
         
            +
            00022/0686 7 (256,448,3)
         
     | 
| 299 | 
         
            +
            00022/0700 7 (256,448,3)
         
     | 
| 300 | 
         
            +
            00023/0020 7 (256,448,3)
         
     | 
| 301 | 
         
            +
            00023/0024 7 (256,448,3)
         
     | 
| 302 | 
         
            +
            00023/0025 7 (256,448,3)
         
     | 
| 303 | 
         
            +
            00023/0042 7 (256,448,3)
         
     | 
| 304 | 
         
            +
            00023/0050 7 (256,448,3)
         
     | 
| 305 | 
         
            +
            00023/0094 7 (256,448,3)
         
     | 
| 306 | 
         
            +
            00023/0107 7 (256,448,3)
         
     | 
| 307 | 
         
            +
            00023/0635 7 (256,448,3)
         
     | 
| 308 | 
         
            +
            00023/0698 7 (256,448,3)
         
     | 
| 309 | 
         
            +
            00023/0774 7 (256,448,3)
         
     | 
| 310 | 
         
            +
            00023/0795 7 (256,448,3)
         
     | 
| 311 | 
         
            +
            00023/0821 7 (256,448,3)
         
     | 
| 312 | 
         
            +
            00023/0839 7 (256,448,3)
         
     | 
| 313 | 
         
            +
            00023/0846 7 (256,448,3)
         
     | 
| 314 | 
         
            +
            00023/0869 7 (256,448,3)
         
     | 
| 315 | 
         
            +
            00023/0879 7 (256,448,3)
         
     | 
| 316 | 
         
            +
            00023/0887 7 (256,448,3)
         
     | 
| 317 | 
         
            +
            00023/0899 7 (256,448,3)
         
     | 
| 318 | 
         
            +
            00023/0910 7 (256,448,3)
         
     | 
| 319 | 
         
            +
            00023/0920 7 (256,448,3)
         
     | 
| 320 | 
         
            +
            00023/0929 7 (256,448,3)
         
     | 
| 321 | 
         
            +
            00023/0941 7 (256,448,3)
         
     | 
| 322 | 
         
            +
            00023/0942 7 (256,448,3)
         
     | 
| 323 | 
         
            +
            00023/0952 7 (256,448,3)
         
     | 
| 324 | 
         
            +
            00024/0066 7 (256,448,3)
         
     | 
| 325 | 
         
            +
            00024/0072 7 (256,448,3)
         
     | 
| 326 | 
         
            +
            00024/0080 7 (256,448,3)
         
     | 
| 327 | 
         
            +
            00024/0093 7 (256,448,3)
         
     | 
| 328 | 
         
            +
            00024/0107 7 (256,448,3)
         
     | 
| 329 | 
         
            +
            00024/0262 7 (256,448,3)
         
     | 
| 330 | 
         
            +
            00024/0283 7 (256,448,3)
         
     | 
| 331 | 
         
            +
            00024/0294 7 (256,448,3)
         
     | 
| 332 | 
         
            +
            00024/0296 7 (256,448,3)
         
     | 
| 333 | 
         
            +
            00024/0304 7 (256,448,3)
         
     | 
| 334 | 
         
            +
            00024/0315 7 (256,448,3)
         
     | 
| 335 | 
         
            +
            00024/0322 7 (256,448,3)
         
     | 
| 336 | 
         
            +
            00024/0648 7 (256,448,3)
         
     | 
| 337 | 
         
            +
            00024/0738 7 (256,448,3)
         
     | 
| 338 | 
         
            +
            00024/0743 7 (256,448,3)
         
     | 
| 339 | 
         
            +
            00025/0542 7 (256,448,3)
         
     | 
| 340 | 
         
            +
            00025/0769 7 (256,448,3)
         
     | 
| 341 | 
         
            +
            00025/0984 7 (256,448,3)
         
     | 
| 342 | 
         
            +
            00025/0985 7 (256,448,3)
         
     | 
| 343 | 
         
            +
            00025/0989 7 (256,448,3)
         
     | 
| 344 | 
         
            +
            00025/0991 7 (256,448,3)
         
     | 
| 345 | 
         
            +
            00026/0009 7 (256,448,3)
         
     | 
| 346 | 
         
            +
            00026/0013 7 (256,448,3)
         
     | 
| 347 | 
         
            +
            00026/0020 7 (256,448,3)
         
     | 
| 348 | 
         
            +
            00026/0021 7 (256,448,3)
         
     | 
| 349 | 
         
            +
            00026/0025 7 (256,448,3)
         
     | 
| 350 | 
         
            +
            00026/0135 7 (256,448,3)
         
     | 
| 351 | 
         
            +
            00026/0200 7 (256,448,3)
         
     | 
| 352 | 
         
            +
            00026/0297 7 (256,448,3)
         
     | 
| 353 | 
         
            +
            00026/0306 7 (256,448,3)
         
     | 
| 354 | 
         
            +
            00026/0444 7 (256,448,3)
         
     | 
| 355 | 
         
            +
            00026/0450 7 (256,448,3)
         
     | 
| 356 | 
         
            +
            00026/0453 7 (256,448,3)
         
     | 
| 357 | 
         
            +
            00026/0464 7 (256,448,3)
         
     | 
| 358 | 
         
            +
            00026/0486 7 (256,448,3)
         
     | 
| 359 | 
         
            +
            00026/0773 7 (256,448,3)
         
     | 
| 360 | 
         
            +
            00026/0785 7 (256,448,3)
         
     | 
| 361 | 
         
            +
            00026/0836 7 (256,448,3)
         
     | 
| 362 | 
         
            +
            00026/0838 7 (256,448,3)
         
     | 
| 363 | 
         
            +
            00026/0848 7 (256,448,3)
         
     | 
| 364 | 
         
            +
            00026/0885 7 (256,448,3)
         
     | 
| 365 | 
         
            +
            00026/0893 7 (256,448,3)
         
     | 
| 366 | 
         
            +
            00026/0939 7 (256,448,3)
         
     | 
| 367 | 
         
            +
            00026/0942 7 (256,448,3)
         
     | 
| 368 | 
         
            +
            00027/0092 7 (256,448,3)
         
     | 
| 369 | 
         
            +
            00027/0112 7 (256,448,3)
         
     | 
| 370 | 
         
            +
            00027/0115 7 (256,448,3)
         
     | 
| 371 | 
         
            +
            00027/0143 7 (256,448,3)
         
     | 
| 372 | 
         
            +
            00027/0175 7 (256,448,3)
         
     | 
| 373 | 
         
            +
            00027/0179 7 (256,448,3)
         
     | 
| 374 | 
         
            +
            00027/0183 7 (256,448,3)
         
     | 
| 375 | 
         
            +
            00027/0197 7 (256,448,3)
         
     | 
| 376 | 
         
            +
            00027/0199 7 (256,448,3)
         
     | 
| 377 | 
         
            +
            00027/0300 7 (256,448,3)
         
     | 
| 378 | 
         
            +
            00028/0015 7 (256,448,3)
         
     | 
| 379 | 
         
            +
            00028/0032 7 (256,448,3)
         
     | 
| 380 | 
         
            +
            00028/0048 7 (256,448,3)
         
     | 
| 381 | 
         
            +
            00028/0068 7 (256,448,3)
         
     | 
| 382 | 
         
            +
            00028/0219 7 (256,448,3)
         
     | 
| 383 | 
         
            +
            00028/0606 7 (256,448,3)
         
     | 
| 384 | 
         
            +
            00028/0626 7 (256,448,3)
         
     | 
| 385 | 
         
            +
            00028/0748 7 (256,448,3)
         
     | 
| 386 | 
         
            +
            00028/0764 7 (256,448,3)
         
     | 
| 387 | 
         
            +
            00028/0772 7 (256,448,3)
         
     | 
| 388 | 
         
            +
            00028/0780 7 (256,448,3)
         
     | 
| 389 | 
         
            +
            00028/0926 7 (256,448,3)
         
     | 
| 390 | 
         
            +
            00028/0947 7 (256,448,3)
         
     | 
| 391 | 
         
            +
            00028/0962 7 (256,448,3)
         
     | 
| 392 | 
         
            +
            00029/0085 7 (256,448,3)
         
     | 
| 393 | 
         
            +
            00029/0281 7 (256,448,3)
         
     | 
| 394 | 
         
            +
            00029/0284 7 (256,448,3)
         
     | 
| 395 | 
         
            +
            00029/0288 7 (256,448,3)
         
     | 
| 396 | 
         
            +
            00029/0294 7 (256,448,3)
         
     | 
| 397 | 
         
            +
            00029/0364 7 (256,448,3)
         
     | 
| 398 | 
         
            +
            00029/0369 7 (256,448,3)
         
     | 
| 399 | 
         
            +
            00029/0421 7 (256,448,3)
         
     | 
| 400 | 
         
            +
            00029/0425 7 (256,448,3)
         
     | 
| 401 | 
         
            +
            00029/0550 7 (256,448,3)
         
     | 
| 402 | 
         
            +
            00030/0014 7 (256,448,3)
         
     | 
| 403 | 
         
            +
            00030/0101 7 (256,448,3)
         
     | 
| 404 | 
         
            +
            00030/0143 7 (256,448,3)
         
     | 
| 405 | 
         
            +
            00030/0351 7 (256,448,3)
         
     | 
| 406 | 
         
            +
            00030/0356 7 (256,448,3)
         
     | 
| 407 | 
         
            +
            00030/0371 7 (256,448,3)
         
     | 
| 408 | 
         
            +
            00030/0484 7 (256,448,3)
         
     | 
| 409 | 
         
            +
            00030/0492 7 (256,448,3)
         
     | 
| 410 | 
         
            +
            00030/0503 7 (256,448,3)
         
     | 
| 411 | 
         
            +
            00030/0682 7 (256,448,3)
         
     | 
| 412 | 
         
            +
            00030/0696 7 (256,448,3)
         
     | 
| 413 | 
         
            +
            00030/0735 7 (256,448,3)
         
     | 
| 414 | 
         
            +
            00030/0737 7 (256,448,3)
         
     | 
| 415 | 
         
            +
            00030/0868 7 (256,448,3)
         
     | 
| 416 | 
         
            +
            00031/0161 7 (256,448,3)
         
     | 
| 417 | 
         
            +
            00031/0180 7 (256,448,3)
         
     | 
| 418 | 
         
            +
            00031/0194 7 (256,448,3)
         
     | 
| 419 | 
         
            +
            00031/0253 7 (256,448,3)
         
     | 
| 420 | 
         
            +
            00031/0293 7 (256,448,3)
         
     | 
| 421 | 
         
            +
            00031/0466 7 (256,448,3)
         
     | 
| 422 | 
         
            +
            00031/0477 7 (256,448,3)
         
     | 
| 423 | 
         
            +
            00031/0549 7 (256,448,3)
         
     | 
| 424 | 
         
            +
            00031/0600 7 (256,448,3)
         
     | 
| 425 | 
         
            +
            00031/0617 7 (256,448,3)
         
     | 
| 426 | 
         
            +
            00031/0649 7 (256,448,3)
         
     | 
| 427 | 
         
            +
            00032/0015 7 (256,448,3)
         
     | 
| 428 | 
         
            +
            00032/0020 7 (256,448,3)
         
     | 
| 429 | 
         
            +
            00032/0023 7 (256,448,3)
         
     | 
| 430 | 
         
            +
            00032/0048 7 (256,448,3)
         
     | 
| 431 | 
         
            +
            00032/0056 7 (256,448,3)
         
     | 
| 432 | 
         
            +
            00032/0872 7 (256,448,3)
         
     | 
| 433 | 
         
            +
            00033/0069 7 (256,448,3)
         
     | 
| 434 | 
         
            +
            00033/0073 7 (256,448,3)
         
     | 
| 435 | 
         
            +
            00033/0078 7 (256,448,3)
         
     | 
| 436 | 
         
            +
            00033/0079 7 (256,448,3)
         
     | 
| 437 | 
         
            +
            00033/0086 7 (256,448,3)
         
     | 
| 438 | 
         
            +
            00033/0088 7 (256,448,3)
         
     | 
| 439 | 
         
            +
            00033/0091 7 (256,448,3)
         
     | 
| 440 | 
         
            +
            00033/0096 7 (256,448,3)
         
     | 
| 441 | 
         
            +
            00033/0607 7 (256,448,3)
         
     | 
| 442 | 
         
            +
            00033/0613 7 (256,448,3)
         
     | 
| 443 | 
         
            +
            00033/0616 7 (256,448,3)
         
     | 
| 444 | 
         
            +
            00033/0619 7 (256,448,3)
         
     | 
| 445 | 
         
            +
            00033/0626 7 (256,448,3)
         
     | 
| 446 | 
         
            +
            00033/0628 7 (256,448,3)
         
     | 
| 447 | 
         
            +
            00033/0637 7 (256,448,3)
         
     | 
| 448 | 
         
            +
            00033/0686 7 (256,448,3)
         
     | 
| 449 | 
         
            +
            00033/0842 7 (256,448,3)
         
     | 
| 450 | 
         
            +
            00034/0261 7 (256,448,3)
         
     | 
| 451 | 
         
            +
            00034/0265 7 (256,448,3)
         
     | 
| 452 | 
         
            +
            00034/0269 7 (256,448,3)
         
     | 
| 453 | 
         
            +
            00034/0275 7 (256,448,3)
         
     | 
| 454 | 
         
            +
            00034/0286 7 (256,448,3)
         
     | 
| 455 | 
         
            +
            00034/0294 7 (256,448,3)
         
     | 
| 456 | 
         
            +
            00034/0431 7 (256,448,3)
         
     | 
| 457 | 
         
            +
            00034/0577 7 (256,448,3)
         
     | 
| 458 | 
         
            +
            00034/0685 7 (256,448,3)
         
     | 
| 459 | 
         
            +
            00034/0687 7 (256,448,3)
         
     | 
| 460 | 
         
            +
            00034/0703 7 (256,448,3)
         
     | 
| 461 | 
         
            +
            00034/0715 7 (256,448,3)
         
     | 
| 462 | 
         
            +
            00034/0935 7 (256,448,3)
         
     | 
| 463 | 
         
            +
            00034/0943 7 (256,448,3)
         
     | 
| 464 | 
         
            +
            00034/0963 7 (256,448,3)
         
     | 
| 465 | 
         
            +
            00034/0979 7 (256,448,3)
         
     | 
| 466 | 
         
            +
            00034/0990 7 (256,448,3)
         
     | 
| 467 | 
         
            +
            00035/0129 7 (256,448,3)
         
     | 
| 468 | 
         
            +
            00035/0153 7 (256,448,3)
         
     | 
| 469 | 
         
            +
            00035/0156 7 (256,448,3)
         
     | 
| 470 | 
         
            +
            00035/0474 7 (256,448,3)
         
     | 
| 471 | 
         
            +
            00035/0507 7 (256,448,3)
         
     | 
| 472 | 
         
            +
            00035/0532 7 (256,448,3)
         
     | 
| 473 | 
         
            +
            00035/0560 7 (256,448,3)
         
     | 
| 474 | 
         
            +
            00035/0572 7 (256,448,3)
         
     | 
| 475 | 
         
            +
            00035/0587 7 (256,448,3)
         
     | 
| 476 | 
         
            +
            00035/0588 7 (256,448,3)
         
     | 
| 477 | 
         
            +
            00035/0640 7 (256,448,3)
         
     | 
| 478 | 
         
            +
            00035/0654 7 (256,448,3)
         
     | 
| 479 | 
         
            +
            00035/0655 7 (256,448,3)
         
     | 
| 480 | 
         
            +
            00035/0737 7 (256,448,3)
         
     | 
| 481 | 
         
            +
            00035/0843 7 (256,448,3)
         
     | 
| 482 | 
         
            +
            00035/0932 7 (256,448,3)
         
     | 
| 483 | 
         
            +
            00035/0957 7 (256,448,3)
         
     | 
| 484 | 
         
            +
            00036/0029 7 (256,448,3)
         
     | 
| 485 | 
         
            +
            00036/0266 7 (256,448,3)
         
     | 
| 486 | 
         
            +
            00036/0276 7 (256,448,3)
         
     | 
| 487 | 
         
            +
            00036/0310 7 (256,448,3)
         
     | 
| 488 | 
         
            +
            00036/0314 7 (256,448,3)
         
     | 
| 489 | 
         
            +
            00036/0320 7 (256,448,3)
         
     | 
| 490 | 
         
            +
            00036/0333 7 (256,448,3)
         
     | 
| 491 | 
         
            +
            00036/0348 7 (256,448,3)
         
     | 
| 492 | 
         
            +
            00036/0357 7 (256,448,3)
         
     | 
| 493 | 
         
            +
            00036/0360 7 (256,448,3)
         
     | 
| 494 | 
         
            +
            00036/0368 7 (256,448,3)
         
     | 
| 495 | 
         
            +
            00036/0371 7 (256,448,3)
         
     | 
| 496 | 
         
            +
            00036/0378 7 (256,448,3)
         
     | 
| 497 | 
         
            +
            00036/0391 7 (256,448,3)
         
     | 
| 498 | 
         
            +
            00036/0440 7 (256,448,3)
         
     | 
| 499 | 
         
            +
            00036/0731 7 (256,448,3)
         
     | 
| 500 | 
         
            +
            00036/0733 7 (256,448,3)
         
     | 
| 501 | 
         
            +
            00036/0741 7 (256,448,3)
         
     | 
| 502 | 
         
            +
            00036/0743 7 (256,448,3)
         
     | 
| 503 | 
         
            +
            00036/0927 7 (256,448,3)
         
     | 
| 504 | 
         
            +
            00036/0931 7 (256,448,3)
         
     | 
| 505 | 
         
            +
            00036/0933 7 (256,448,3)
         
     | 
| 506 | 
         
            +
            00036/0938 7 (256,448,3)
         
     | 
| 507 | 
         
            +
            00036/0944 7 (256,448,3)
         
     | 
| 508 | 
         
            +
            00036/0946 7 (256,448,3)
         
     | 
| 509 | 
         
            +
            00036/0951 7 (256,448,3)
         
     | 
| 510 | 
         
            +
            00036/0953 7 (256,448,3)
         
     | 
| 511 | 
         
            +
            00036/0963 7 (256,448,3)
         
     | 
| 512 | 
         
            +
            00036/0964 7 (256,448,3)
         
     | 
| 513 | 
         
            +
            00036/0981 7 (256,448,3)
         
     | 
| 514 | 
         
            +
            00036/0991 7 (256,448,3)
         
     | 
| 515 | 
         
            +
            00037/0072 7 (256,448,3)
         
     | 
| 516 | 
         
            +
            00037/0079 7 (256,448,3)
         
     | 
| 517 | 
         
            +
            00037/0132 7 (256,448,3)
         
     | 
| 518 | 
         
            +
            00037/0135 7 (256,448,3)
         
     | 
| 519 | 
         
            +
            00037/0137 7 (256,448,3)
         
     | 
| 520 | 
         
            +
            00037/0141 7 (256,448,3)
         
     | 
| 521 | 
         
            +
            00037/0229 7 (256,448,3)
         
     | 
| 522 | 
         
            +
            00037/0234 7 (256,448,3)
         
     | 
| 523 | 
         
            +
            00037/0239 7 (256,448,3)
         
     | 
| 524 | 
         
            +
            00037/0242 7 (256,448,3)
         
     | 
| 525 | 
         
            +
            00037/0254 7 (256,448,3)
         
     | 
| 526 | 
         
            +
            00037/0269 7 (256,448,3)
         
     | 
| 527 | 
         
            +
            00037/0276 7 (256,448,3)
         
     | 
| 528 | 
         
            +
            00037/0279 7 (256,448,3)
         
     | 
| 529 | 
         
            +
            00037/0286 7 (256,448,3)
         
     | 
| 530 | 
         
            +
            00037/0345 7 (256,448,3)
         
     | 
| 531 | 
         
            +
            00037/0449 7 (256,448,3)
         
     | 
| 532 | 
         
            +
            00037/0450 7 (256,448,3)
         
     | 
| 533 | 
         
            +
            00037/0820 7 (256,448,3)
         
     | 
| 534 | 
         
            +
            00037/0824 7 (256,448,3)
         
     | 
| 535 | 
         
            +
            00037/0859 7 (256,448,3)
         
     | 
| 536 | 
         
            +
            00037/0899 7 (256,448,3)
         
     | 
| 537 | 
         
            +
            00037/0906 7 (256,448,3)
         
     | 
| 538 | 
         
            +
            00038/0535 7 (256,448,3)
         
     | 
| 539 | 
         
            +
            00038/0572 7 (256,448,3)
         
     | 
| 540 | 
         
            +
            00038/0675 7 (256,448,3)
         
     | 
| 541 | 
         
            +
            00038/0731 7 (256,448,3)
         
     | 
| 542 | 
         
            +
            00038/0732 7 (256,448,3)
         
     | 
| 543 | 
         
            +
            00038/0744 7 (256,448,3)
         
     | 
| 544 | 
         
            +
            00038/0755 7 (256,448,3)
         
     | 
| 545 | 
         
            +
            00039/0002 7 (256,448,3)
         
     | 
| 546 | 
         
            +
            00039/0013 7 (256,448,3)
         
     | 
| 547 | 
         
            +
            00039/0247 7 (256,448,3)
         
     | 
| 548 | 
         
            +
            00039/0489 7 (256,448,3)
         
     | 
| 549 | 
         
            +
            00039/0504 7 (256,448,3)
         
     | 
| 550 | 
         
            +
            00039/0558 7 (256,448,3)
         
     | 
| 551 | 
         
            +
            00039/0686 7 (256,448,3)
         
     | 
| 552 | 
         
            +
            00039/0727 7 (256,448,3)
         
     | 
| 553 | 
         
            +
            00039/0769 7 (256,448,3)
         
     | 
| 554 | 
         
            +
            00040/0081 7 (256,448,3)
         
     | 
| 555 | 
         
            +
            00040/0082 7 (256,448,3)
         
     | 
| 556 | 
         
            +
            00040/0402 7 (256,448,3)
         
     | 
| 557 | 
         
            +
            00040/0407 7 (256,448,3)
         
     | 
| 558 | 
         
            +
            00040/0408 7 (256,448,3)
         
     | 
| 559 | 
         
            +
            00040/0410 7 (256,448,3)
         
     | 
| 560 | 
         
            +
            00040/0411 7 (256,448,3)
         
     | 
| 561 | 
         
            +
            00040/0412 7 (256,448,3)
         
     | 
| 562 | 
         
            +
            00040/0413 7 (256,448,3)
         
     | 
| 563 | 
         
            +
            00040/0415 7 (256,448,3)
         
     | 
| 564 | 
         
            +
            00040/0421 7 (256,448,3)
         
     | 
| 565 | 
         
            +
            00040/0422 7 (256,448,3)
         
     | 
| 566 | 
         
            +
            00040/0426 7 (256,448,3)
         
     | 
| 567 | 
         
            +
            00040/0438 7 (256,448,3)
         
     | 
| 568 | 
         
            +
            00040/0439 7 (256,448,3)
         
     | 
| 569 | 
         
            +
            00040/0440 7 (256,448,3)
         
     | 
| 570 | 
         
            +
            00040/0443 7 (256,448,3)
         
     | 
| 571 | 
         
            +
            00040/0457 7 (256,448,3)
         
     | 
| 572 | 
         
            +
            00040/0459 7 (256,448,3)
         
     | 
| 573 | 
         
            +
            00040/0725 7 (256,448,3)
         
     | 
| 574 | 
         
            +
            00040/0727 7 (256,448,3)
         
     | 
| 575 | 
         
            +
            00040/0936 7 (256,448,3)
         
     | 
| 576 | 
         
            +
            00040/0959 7 (256,448,3)
         
     | 
| 577 | 
         
            +
            00040/0964 7 (256,448,3)
         
     | 
| 578 | 
         
            +
            00040/0968 7 (256,448,3)
         
     | 
| 579 | 
         
            +
            00040/0974 7 (256,448,3)
         
     | 
| 580 | 
         
            +
            00040/0978 7 (256,448,3)
         
     | 
| 581 | 
         
            +
            00040/0979 7 (256,448,3)
         
     | 
| 582 | 
         
            +
            00040/0989 7 (256,448,3)
         
     | 
| 583 | 
         
            +
            00040/0993 7 (256,448,3)
         
     | 
| 584 | 
         
            +
            00040/0994 7 (256,448,3)
         
     | 
| 585 | 
         
            +
            00040/0997 7 (256,448,3)
         
     | 
| 586 | 
         
            +
            00041/0001 7 (256,448,3)
         
     | 
| 587 | 
         
            +
            00041/0007 7 (256,448,3)
         
     | 
| 588 | 
         
            +
            00041/0019 7 (256,448,3)
         
     | 
| 589 | 
         
            +
            00041/0040 7 (256,448,3)
         
     | 
| 590 | 
         
            +
            00041/0350 7 (256,448,3)
         
     | 
| 591 | 
         
            +
            00041/0357 7 (256,448,3)
         
     | 
| 592 | 
         
            +
            00041/0393 7 (256,448,3)
         
     | 
| 593 | 
         
            +
            00041/0890 7 (256,448,3)
         
     | 
| 594 | 
         
            +
            00041/0909 7 (256,448,3)
         
     | 
| 595 | 
         
            +
            00041/0915 7 (256,448,3)
         
     | 
| 596 | 
         
            +
            00041/0933 7 (256,448,3)
         
     | 
| 597 | 
         
            +
            00042/0017 7 (256,448,3)
         
     | 
| 598 | 
         
            +
            00042/0332 7 (256,448,3)
         
     | 
| 599 | 
         
            +
            00042/0346 7 (256,448,3)
         
     | 
| 600 | 
         
            +
            00042/0350 7 (256,448,3)
         
     | 
| 601 | 
         
            +
            00042/0356 7 (256,448,3)
         
     | 
| 602 | 
         
            +
            00042/0382 7 (256,448,3)
         
     | 
| 603 | 
         
            +
            00042/0389 7 (256,448,3)
         
     | 
| 604 | 
         
            +
            00042/0539 7 (256,448,3)
         
     | 
| 605 | 
         
            +
            00042/0546 7 (256,448,3)
         
     | 
| 606 | 
         
            +
            00042/0550 7 (256,448,3)
         
     | 
| 607 | 
         
            +
            00042/0553 7 (256,448,3)
         
     | 
| 608 | 
         
            +
            00042/0555 7 (256,448,3)
         
     | 
| 609 | 
         
            +
            00042/0560 7 (256,448,3)
         
     | 
| 610 | 
         
            +
            00042/0570 7 (256,448,3)
         
     | 
| 611 | 
         
            +
            00043/0119 7 (256,448,3)
         
     | 
| 612 | 
         
            +
            00043/0122 7 (256,448,3)
         
     | 
| 613 | 
         
            +
            00043/0168 7 (256,448,3)
         
     | 
| 614 | 
         
            +
            00043/0274 7 (256,448,3)
         
     | 
| 615 | 
         
            +
            00043/0304 7 (256,448,3)
         
     | 
| 616 | 
         
            +
            00043/0731 7 (256,448,3)
         
     | 
| 617 | 
         
            +
            00043/0735 7 (256,448,3)
         
     | 
| 618 | 
         
            +
            00043/0739 7 (256,448,3)
         
     | 
| 619 | 
         
            +
            00043/0740 7 (256,448,3)
         
     | 
| 620 | 
         
            +
            00044/0212 7 (256,448,3)
         
     | 
| 621 | 
         
            +
            00044/0432 7 (256,448,3)
         
     | 
| 622 | 
         
            +
            00044/0934 7 (256,448,3)
         
     | 
| 623 | 
         
            +
            00044/0940 7 (256,448,3)
         
     | 
| 624 | 
         
            +
            00044/0987 7 (256,448,3)
         
     | 
| 625 | 
         
            +
            00045/0004 7 (256,448,3)
         
     | 
| 626 | 
         
            +
            00045/0009 7 (256,448,3)
         
     | 
| 627 | 
         
            +
            00045/0011 7 (256,448,3)
         
     | 
| 628 | 
         
            +
            00045/0019 7 (256,448,3)
         
     | 
| 629 | 
         
            +
            00045/0023 7 (256,448,3)
         
     | 
| 630 | 
         
            +
            00045/0289 7 (256,448,3)
         
     | 
| 631 | 
         
            +
            00045/0760 7 (256,448,3)
         
     | 
| 632 | 
         
            +
            00045/0779 7 (256,448,3)
         
     | 
| 633 | 
         
            +
            00045/0816 7 (256,448,3)
         
     | 
| 634 | 
         
            +
            00045/0820 7 (256,448,3)
         
     | 
| 635 | 
         
            +
            00046/0132 7 (256,448,3)
         
     | 
| 636 | 
         
            +
            00046/0350 7 (256,448,3)
         
     | 
| 637 | 
         
            +
            00046/0356 7 (256,448,3)
         
     | 
| 638 | 
         
            +
            00046/0357 7 (256,448,3)
         
     | 
| 639 | 
         
            +
            00046/0379 7 (256,448,3)
         
     | 
| 640 | 
         
            +
            00046/0410 7 (256,448,3)
         
     | 
| 641 | 
         
            +
            00046/0412 7 (256,448,3)
         
     | 
| 642 | 
         
            +
            00046/0481 7 (256,448,3)
         
     | 
| 643 | 
         
            +
            00046/0497 7 (256,448,3)
         
     | 
| 644 | 
         
            +
            00046/0510 7 (256,448,3)
         
     | 
| 645 | 
         
            +
            00046/0515 7 (256,448,3)
         
     | 
| 646 | 
         
            +
            00046/0529 7 (256,448,3)
         
     | 
| 647 | 
         
            +
            00046/0544 7 (256,448,3)
         
     | 
| 648 | 
         
            +
            00046/0545 7 (256,448,3)
         
     | 
| 649 | 
         
            +
            00046/0552 7 (256,448,3)
         
     | 
| 650 | 
         
            +
            00046/0559 7 (256,448,3)
         
     | 
| 651 | 
         
            +
            00046/0589 7 (256,448,3)
         
     | 
| 652 | 
         
            +
            00046/0642 7 (256,448,3)
         
     | 
| 653 | 
         
            +
            00046/0724 7 (256,448,3)
         
     | 
| 654 | 
         
            +
            00046/0758 7 (256,448,3)
         
     | 
| 655 | 
         
            +
            00046/0930 7 (256,448,3)
         
     | 
| 656 | 
         
            +
            00046/0953 7 (256,448,3)
         
     | 
| 657 | 
         
            +
            00047/0013 7 (256,448,3)
         
     | 
| 658 | 
         
            +
            00047/0014 7 (256,448,3)
         
     | 
| 659 | 
         
            +
            00047/0017 7 (256,448,3)
         
     | 
| 660 | 
         
            +
            00047/0076 7 (256,448,3)
         
     | 
| 661 | 
         
            +
            00047/0151 7 (256,448,3)
         
     | 
| 662 | 
         
            +
            00047/0797 7 (256,448,3)
         
     | 
| 663 | 
         
            +
            00048/0014 7 (256,448,3)
         
     | 
| 664 | 
         
            +
            00048/0021 7 (256,448,3)
         
     | 
| 665 | 
         
            +
            00048/0026 7 (256,448,3)
         
     | 
| 666 | 
         
            +
            00048/0030 7 (256,448,3)
         
     | 
| 667 | 
         
            +
            00048/0039 7 (256,448,3)
         
     | 
| 668 | 
         
            +
            00048/0045 7 (256,448,3)
         
     | 
| 669 | 
         
            +
            00048/0049 7 (256,448,3)
         
     | 
| 670 | 
         
            +
            00048/0145 7 (256,448,3)
         
     | 
| 671 | 
         
            +
            00048/0188 7 (256,448,3)
         
     | 
| 672 | 
         
            +
            00048/0302 7 (256,448,3)
         
     | 
| 673 | 
         
            +
            00048/0361 7 (256,448,3)
         
     | 
| 674 | 
         
            +
            00048/0664 7 (256,448,3)
         
     | 
| 675 | 
         
            +
            00048/0672 7 (256,448,3)
         
     | 
| 676 | 
         
            +
            00048/0681 7 (256,448,3)
         
     | 
| 677 | 
         
            +
            00048/0689 7 (256,448,3)
         
     | 
| 678 | 
         
            +
            00048/0690 7 (256,448,3)
         
     | 
| 679 | 
         
            +
            00048/0691 7 (256,448,3)
         
     | 
| 680 | 
         
            +
            00048/0711 7 (256,448,3)
         
     | 
| 681 | 
         
            +
            00049/0085 7 (256,448,3)
         
     | 
| 682 | 
         
            +
            00049/0810 7 (256,448,3)
         
     | 
| 683 | 
         
            +
            00049/0858 7 (256,448,3)
         
     | 
| 684 | 
         
            +
            00049/0865 7 (256,448,3)
         
     | 
| 685 | 
         
            +
            00049/0871 7 (256,448,3)
         
     | 
| 686 | 
         
            +
            00049/0903 7 (256,448,3)
         
     | 
| 687 | 
         
            +
            00049/0928 7 (256,448,3)
         
     | 
| 688 | 
         
            +
            00050/0092 7 (256,448,3)
         
     | 
| 689 | 
         
            +
            00050/0101 7 (256,448,3)
         
     | 
| 690 | 
         
            +
            00050/0108 7 (256,448,3)
         
     | 
| 691 | 
         
            +
            00050/0112 7 (256,448,3)
         
     | 
| 692 | 
         
            +
            00050/0120 7 (256,448,3)
         
     | 
| 693 | 
         
            +
            00050/0128 7 (256,448,3)
         
     | 
| 694 | 
         
            +
            00050/0383 7 (256,448,3)
         
     | 
| 695 | 
         
            +
            00050/0395 7 (256,448,3)
         
     | 
| 696 | 
         
            +
            00050/0405 7 (256,448,3)
         
     | 
| 697 | 
         
            +
            00050/0632 7 (256,448,3)
         
     | 
| 698 | 
         
            +
            00050/0648 7 (256,448,3)
         
     | 
| 699 | 
         
            +
            00050/0649 7 (256,448,3)
         
     | 
| 700 | 
         
            +
            00050/0659 7 (256,448,3)
         
     | 
| 701 | 
         
            +
            00050/0699 7 (256,448,3)
         
     | 
| 702 | 
         
            +
            00050/0708 7 (256,448,3)
         
     | 
| 703 | 
         
            +
            00050/0716 7 (256,448,3)
         
     | 
| 704 | 
         
            +
            00050/0758 7 (256,448,3)
         
     | 
| 705 | 
         
            +
            00050/0761 7 (256,448,3)
         
     | 
| 706 | 
         
            +
            00051/0572 7 (256,448,3)
         
     | 
| 707 | 
         
            +
            00052/0163 7 (256,448,3)
         
     | 
| 708 | 
         
            +
            00052/0242 7 (256,448,3)
         
     | 
| 709 | 
         
            +
            00052/0260 7 (256,448,3)
         
     | 
| 710 | 
         
            +
            00052/0322 7 (256,448,3)
         
     | 
| 711 | 
         
            +
            00052/0333 7 (256,448,3)
         
     | 
| 712 | 
         
            +
            00052/0806 7 (256,448,3)
         
     | 
| 713 | 
         
            +
            00052/0813 7 (256,448,3)
         
     | 
| 714 | 
         
            +
            00052/0821 7 (256,448,3)
         
     | 
| 715 | 
         
            +
            00052/0830 7 (256,448,3)
         
     | 
| 716 | 
         
            +
            00052/0914 7 (256,448,3)
         
     | 
| 717 | 
         
            +
            00052/0923 7 (256,448,3)
         
     | 
| 718 | 
         
            +
            00052/0959 7 (256,448,3)
         
     | 
| 719 | 
         
            +
            00053/0288 7 (256,448,3)
         
     | 
| 720 | 
         
            +
            00053/0290 7 (256,448,3)
         
     | 
| 721 | 
         
            +
            00053/0323 7 (256,448,3)
         
     | 
| 722 | 
         
            +
            00053/0337 7 (256,448,3)
         
     | 
| 723 | 
         
            +
            00053/0340 7 (256,448,3)
         
     | 
| 724 | 
         
            +
            00053/0437 7 (256,448,3)
         
     | 
| 725 | 
         
            +
            00053/0595 7 (256,448,3)
         
     | 
| 726 | 
         
            +
            00053/0739 7 (256,448,3)
         
     | 
| 727 | 
         
            +
            00053/0761 7 (256,448,3)
         
     | 
| 728 | 
         
            +
            00054/0014 7 (256,448,3)
         
     | 
| 729 | 
         
            +
            00054/0017 7 (256,448,3)
         
     | 
| 730 | 
         
            +
            00054/0178 7 (256,448,3)
         
     | 
| 731 | 
         
            +
            00054/0183 7 (256,448,3)
         
     | 
| 732 | 
         
            +
            00054/0196 7 (256,448,3)
         
     | 
| 733 | 
         
            +
            00054/0205 7 (256,448,3)
         
     | 
| 734 | 
         
            +
            00054/0214 7 (256,448,3)
         
     | 
| 735 | 
         
            +
            00054/0289 7 (256,448,3)
         
     | 
| 736 | 
         
            +
            00054/0453 7 (256,448,3)
         
     | 
| 737 | 
         
            +
            00054/0498 7 (256,448,3)
         
     | 
| 738 | 
         
            +
            00054/0502 7 (256,448,3)
         
     | 
| 739 | 
         
            +
            00054/0514 7 (256,448,3)
         
     | 
| 740 | 
         
            +
            00054/0773 7 (256,448,3)
         
     | 
| 741 | 
         
            +
            00055/0001 7 (256,448,3)
         
     | 
| 742 | 
         
            +
            00055/0115 7 (256,448,3)
         
     | 
| 743 | 
         
            +
            00055/0118 7 (256,448,3)
         
     | 
| 744 | 
         
            +
            00055/0171 7 (256,448,3)
         
     | 
| 745 | 
         
            +
            00055/0214 7 (256,448,3)
         
     | 
| 746 | 
         
            +
            00055/0354 7 (256,448,3)
         
     | 
| 747 | 
         
            +
            00055/0449 7 (256,448,3)
         
     | 
| 748 | 
         
            +
            00055/0473 7 (256,448,3)
         
     | 
| 749 | 
         
            +
            00055/0649 7 (256,448,3)
         
     | 
| 750 | 
         
            +
            00055/0800 7 (256,448,3)
         
     | 
| 751 | 
         
            +
            00055/0803 7 (256,448,3)
         
     | 
| 752 | 
         
            +
            00055/0990 7 (256,448,3)
         
     | 
| 753 | 
         
            +
            00056/0041 7 (256,448,3)
         
     | 
| 754 | 
         
            +
            00056/0120 7 (256,448,3)
         
     | 
| 755 | 
         
            +
            00056/0293 7 (256,448,3)
         
     | 
| 756 | 
         
            +
            00056/0357 7 (256,448,3)
         
     | 
| 757 | 
         
            +
            00056/0506 7 (256,448,3)
         
     | 
| 758 | 
         
            +
            00056/0561 7 (256,448,3)
         
     | 
| 759 | 
         
            +
            00056/0567 7 (256,448,3)
         
     | 
| 760 | 
         
            +
            00056/0575 7 (256,448,3)
         
     | 
| 761 | 
         
            +
            00057/0175 7 (256,448,3)
         
     | 
| 762 | 
         
            +
            00057/0495 7 (256,448,3)
         
     | 
| 763 | 
         
            +
            00057/0498 7 (256,448,3)
         
     | 
| 764 | 
         
            +
            00057/0506 7 (256,448,3)
         
     | 
| 765 | 
         
            +
            00057/0612 7 (256,448,3)
         
     | 
| 766 | 
         
            +
            00057/0620 7 (256,448,3)
         
     | 
| 767 | 
         
            +
            00057/0623 7 (256,448,3)
         
     | 
| 768 | 
         
            +
            00057/0635 7 (256,448,3)
         
     | 
| 769 | 
         
            +
            00057/0773 7 (256,448,3)
         
     | 
| 770 | 
         
            +
            00057/0778 7 (256,448,3)
         
     | 
| 771 | 
         
            +
            00057/0867 7 (256,448,3)
         
     | 
| 772 | 
         
            +
            00057/0976 7 (256,448,3)
         
     | 
| 773 | 
         
            +
            00057/0980 7 (256,448,3)
         
     | 
| 774 | 
         
            +
            00057/0985 7 (256,448,3)
         
     | 
| 775 | 
         
            +
            00057/0992 7 (256,448,3)
         
     | 
| 776 | 
         
            +
            00058/0009 7 (256,448,3)
         
     | 
| 777 | 
         
            +
            00058/0076 7 (256,448,3)
         
     | 
| 778 | 
         
            +
            00058/0078 7 (256,448,3)
         
     | 
| 779 | 
         
            +
            00058/0279 7 (256,448,3)
         
     | 
| 780 | 
         
            +
            00058/0283 7 (256,448,3)
         
     | 
| 781 | 
         
            +
            00058/0286 7 (256,448,3)
         
     | 
| 782 | 
         
            +
            00058/0350 7 (256,448,3)
         
     | 
| 783 | 
         
            +
            00058/0380 7 (256,448,3)
         
     | 
| 784 | 
         
            +
            00061/0132 7 (256,448,3)
         
     | 
| 785 | 
         
            +
            00061/0141 7 (256,448,3)
         
     | 
| 786 | 
         
            +
            00061/0156 7 (256,448,3)
         
     | 
| 787 | 
         
            +
            00061/0159 7 (256,448,3)
         
     | 
| 788 | 
         
            +
            00061/0168 7 (256,448,3)
         
     | 
| 789 | 
         
            +
            00061/0170 7 (256,448,3)
         
     | 
| 790 | 
         
            +
            00061/0186 7 (256,448,3)
         
     | 
| 791 | 
         
            +
            00061/0219 7 (256,448,3)
         
     | 
| 792 | 
         
            +
            00061/0227 7 (256,448,3)
         
     | 
| 793 | 
         
            +
            00061/0238 7 (256,448,3)
         
     | 
| 794 | 
         
            +
            00061/0256 7 (256,448,3)
         
     | 
| 795 | 
         
            +
            00061/0303 7 (256,448,3)
         
     | 
| 796 | 
         
            +
            00061/0312 7 (256,448,3)
         
     | 
| 797 | 
         
            +
            00061/0313 7 (256,448,3)
         
     | 
| 798 | 
         
            +
            00061/0325 7 (256,448,3)
         
     | 
| 799 | 
         
            +
            00061/0367 7 (256,448,3)
         
     | 
| 800 | 
         
            +
            00061/0369 7 (256,448,3)
         
     | 
| 801 | 
         
            +
            00061/0387 7 (256,448,3)
         
     | 
| 802 | 
         
            +
            00061/0396 7 (256,448,3)
         
     | 
| 803 | 
         
            +
            00061/0486 7 (256,448,3)
         
     | 
| 804 | 
         
            +
            00061/0895 7 (256,448,3)
         
     | 
| 805 | 
         
            +
            00061/0897 7 (256,448,3)
         
     | 
| 806 | 
         
            +
            00062/0846 7 (256,448,3)
         
     | 
| 807 | 
         
            +
            00063/0156 7 (256,448,3)
         
     | 
| 808 | 
         
            +
            00063/0184 7 (256,448,3)
         
     | 
| 809 | 
         
            +
            00063/0191 7 (256,448,3)
         
     | 
| 810 | 
         
            +
            00063/0334 7 (256,448,3)
         
     | 
| 811 | 
         
            +
            00063/0350 7 (256,448,3)
         
     | 
| 812 | 
         
            +
            00063/0499 7 (256,448,3)
         
     | 
| 813 | 
         
            +
            00063/0878 7 (256,448,3)
         
     | 
| 814 | 
         
            +
            00064/0004 7 (256,448,3)
         
     | 
| 815 | 
         
            +
            00064/0264 7 (256,448,3)
         
     | 
| 816 | 
         
            +
            00064/0735 7 (256,448,3)
         
     | 
| 817 | 
         
            +
            00064/0738 7 (256,448,3)
         
     | 
| 818 | 
         
            +
            00065/0105 7 (256,448,3)
         
     | 
| 819 | 
         
            +
            00065/0169 7 (256,448,3)
         
     | 
| 820 | 
         
            +
            00065/0305 7 (256,448,3)
         
     | 
| 821 | 
         
            +
            00065/0324 7 (256,448,3)
         
     | 
| 822 | 
         
            +
            00065/0353 7 (256,448,3)
         
     | 
| 823 | 
         
            +
            00065/0520 7 (256,448,3)
         
     | 
| 824 | 
         
            +
            00065/0533 7 (256,448,3)
         
     | 
| 825 | 
         
            +
            00065/0545 7 (256,448,3)
         
     | 
| 826 | 
         
            +
            00065/0551 7 (256,448,3)
         
     | 
| 827 | 
         
            +
            00065/0568 7 (256,448,3)
         
     | 
| 828 | 
         
            +
            00065/0603 7 (256,448,3)
         
     | 
| 829 | 
         
            +
            00065/0884 7 (256,448,3)
         
     | 
| 830 | 
         
            +
            00065/0988 7 (256,448,3)
         
     | 
| 831 | 
         
            +
            00066/0002 7 (256,448,3)
         
     | 
| 832 | 
         
            +
            00066/0011 7 (256,448,3)
         
     | 
| 833 | 
         
            +
            00066/0031 7 (256,448,3)
         
     | 
| 834 | 
         
            +
            00066/0037 7 (256,448,3)
         
     | 
| 835 | 
         
            +
            00066/0136 7 (256,448,3)
         
     | 
| 836 | 
         
            +
            00066/0137 7 (256,448,3)
         
     | 
| 837 | 
         
            +
            00066/0150 7 (256,448,3)
         
     | 
| 838 | 
         
            +
            00066/0166 7 (256,448,3)
         
     | 
| 839 | 
         
            +
            00066/0178 7 (256,448,3)
         
     | 
| 840 | 
         
            +
            00066/0357 7 (256,448,3)
         
     | 
| 841 | 
         
            +
            00066/0428 7 (256,448,3)
         
     | 
| 842 | 
         
            +
            00066/0483 7 (256,448,3)
         
     | 
| 843 | 
         
            +
            00066/0600 7 (256,448,3)
         
     | 
| 844 | 
         
            +
            00066/0863 7 (256,448,3)
         
     | 
| 845 | 
         
            +
            00066/0873 7 (256,448,3)
         
     | 
| 846 | 
         
            +
            00066/0875 7 (256,448,3)
         
     | 
| 847 | 
         
            +
            00066/0899 7 (256,448,3)
         
     | 
| 848 | 
         
            +
            00067/0020 7 (256,448,3)
         
     | 
| 849 | 
         
            +
            00067/0025 7 (256,448,3)
         
     | 
| 850 | 
         
            +
            00067/0132 7 (256,448,3)
         
     | 
| 851 | 
         
            +
            00067/0492 7 (256,448,3)
         
     | 
| 852 | 
         
            +
            00067/0726 7 (256,448,3)
         
     | 
| 853 | 
         
            +
            00067/0734 7 (256,448,3)
         
     | 
| 854 | 
         
            +
            00067/0744 7 (256,448,3)
         
     | 
| 855 | 
         
            +
            00067/0754 7 (256,448,3)
         
     | 
| 856 | 
         
            +
            00067/0779 7 (256,448,3)
         
     | 
| 857 | 
         
            +
            00068/0078 7 (256,448,3)
         
     | 
| 858 | 
         
            +
            00068/0083 7 (256,448,3)
         
     | 
| 859 | 
         
            +
            00068/0113 7 (256,448,3)
         
     | 
| 860 | 
         
            +
            00068/0117 7 (256,448,3)
         
     | 
| 861 | 
         
            +
            00068/0121 7 (256,448,3)
         
     | 
| 862 | 
         
            +
            00068/0206 7 (256,448,3)
         
     | 
| 863 | 
         
            +
            00068/0261 7 (256,448,3)
         
     | 
| 864 | 
         
            +
            00068/0321 7 (256,448,3)
         
     | 
| 865 | 
         
            +
            00068/0354 7 (256,448,3)
         
     | 
| 866 | 
         
            +
            00068/0380 7 (256,448,3)
         
     | 
| 867 | 
         
            +
            00068/0419 7 (256,448,3)
         
     | 
| 868 | 
         
            +
            00068/0547 7 (256,448,3)
         
     | 
| 869 | 
         
            +
            00068/0561 7 (256,448,3)
         
     | 
| 870 | 
         
            +
            00068/0565 7 (256,448,3)
         
     | 
| 871 | 
         
            +
            00068/0583 7 (256,448,3)
         
     | 
| 872 | 
         
            +
            00068/0599 7 (256,448,3)
         
     | 
| 873 | 
         
            +
            00068/0739 7 (256,448,3)
         
     | 
| 874 | 
         
            +
            00068/0743 7 (256,448,3)
         
     | 
| 875 | 
         
            +
            00068/0754 7 (256,448,3)
         
     | 
| 876 | 
         
            +
            00068/0812 7 (256,448,3)
         
     | 
| 877 | 
         
            +
            00069/0178 7 (256,448,3)
         
     | 
| 878 | 
         
            +
            00070/0025 7 (256,448,3)
         
     | 
| 879 | 
         
            +
            00070/0030 7 (256,448,3)
         
     | 
| 880 | 
         
            +
            00070/0036 7 (256,448,3)
         
     | 
| 881 | 
         
            +
            00070/0042 7 (256,448,3)
         
     | 
| 882 | 
         
            +
            00070/0078 7 (256,448,3)
         
     | 
| 883 | 
         
            +
            00070/0079 7 (256,448,3)
         
     | 
| 884 | 
         
            +
            00070/0362 7 (256,448,3)
         
     | 
| 885 | 
         
            +
            00071/0195 7 (256,448,3)
         
     | 
| 886 | 
         
            +
            00071/0210 7 (256,448,3)
         
     | 
| 887 | 
         
            +
            00071/0211 7 (256,448,3)
         
     | 
| 888 | 
         
            +
            00071/0221 7 (256,448,3)
         
     | 
| 889 | 
         
            +
            00071/0352 7 (256,448,3)
         
     | 
| 890 | 
         
            +
            00071/0354 7 (256,448,3)
         
     | 
| 891 | 
         
            +
            00071/0366 7 (256,448,3)
         
     | 
| 892 | 
         
            +
            00071/0454 7 (256,448,3)
         
     | 
| 893 | 
         
            +
            00071/0464 7 (256,448,3)
         
     | 
| 894 | 
         
            +
            00071/0487 7 (256,448,3)
         
     | 
| 895 | 
         
            +
            00071/0502 7 (256,448,3)
         
     | 
| 896 | 
         
            +
            00071/0561 7 (256,448,3)
         
     | 
| 897 | 
         
            +
            00071/0676 7 (256,448,3)
         
     | 
| 898 | 
         
            +
            00071/0808 7 (256,448,3)
         
     | 
| 899 | 
         
            +
            00071/0813 7 (256,448,3)
         
     | 
| 900 | 
         
            +
            00071/0836 7 (256,448,3)
         
     | 
| 901 | 
         
            +
            00072/0286 7 (256,448,3)
         
     | 
| 902 | 
         
            +
            00072/0290 7 (256,448,3)
         
     | 
| 903 | 
         
            +
            00072/0298 7 (256,448,3)
         
     | 
| 904 | 
         
            +
            00072/0302 7 (256,448,3)
         
     | 
| 905 | 
         
            +
            00072/0333 7 (256,448,3)
         
     | 
| 906 | 
         
            +
            00072/0590 7 (256,448,3)
         
     | 
| 907 | 
         
            +
            00072/0793 7 (256,448,3)
         
     | 
| 908 | 
         
            +
            00072/0803 7 (256,448,3)
         
     | 
| 909 | 
         
            +
            00072/0833 7 (256,448,3)
         
     | 
| 910 | 
         
            +
            00073/0049 7 (256,448,3)
         
     | 
| 911 | 
         
            +
            00073/0050 7 (256,448,3)
         
     | 
| 912 | 
         
            +
            00073/0388 7 (256,448,3)
         
     | 
| 913 | 
         
            +
            00073/0480 7 (256,448,3)
         
     | 
| 914 | 
         
            +
            00073/0485 7 (256,448,3)
         
     | 
| 915 | 
         
            +
            00073/0611 7 (256,448,3)
         
     | 
| 916 | 
         
            +
            00073/0616 7 (256,448,3)
         
     | 
| 917 | 
         
            +
            00073/0714 7 (256,448,3)
         
     | 
| 918 | 
         
            +
            00073/0724 7 (256,448,3)
         
     | 
| 919 | 
         
            +
            00073/0730 7 (256,448,3)
         
     | 
| 920 | 
         
            +
            00074/0034 7 (256,448,3)
         
     | 
| 921 | 
         
            +
            00074/0228 7 (256,448,3)
         
     | 
| 922 | 
         
            +
            00074/0239 7 (256,448,3)
         
     | 
| 923 | 
         
            +
            00074/0275 7 (256,448,3)
         
     | 
| 924 | 
         
            +
            00074/0527 7 (256,448,3)
         
     | 
| 925 | 
         
            +
            00074/0620 7 (256,448,3)
         
     | 
| 926 | 
         
            +
            00074/0764 7 (256,448,3)
         
     | 
| 927 | 
         
            +
            00074/0849 7 (256,448,3)
         
     | 
| 928 | 
         
            +
            00074/0893 7 (256,448,3)
         
     | 
| 929 | 
         
            +
            00075/0333 7 (256,448,3)
         
     | 
| 930 | 
         
            +
            00075/0339 7 (256,448,3)
         
     | 
| 931 | 
         
            +
            00075/0347 7 (256,448,3)
         
     | 
| 932 | 
         
            +
            00075/0399 7 (256,448,3)
         
     | 
| 933 | 
         
            +
            00075/0478 7 (256,448,3)
         
     | 
| 934 | 
         
            +
            00075/0494 7 (256,448,3)
         
     | 
| 935 | 
         
            +
            00075/0678 7 (256,448,3)
         
     | 
| 936 | 
         
            +
            00075/0688 7 (256,448,3)
         
     | 
| 937 | 
         
            +
            00075/0706 7 (256,448,3)
         
     | 
| 938 | 
         
            +
            00075/0709 7 (256,448,3)
         
     | 
| 939 | 
         
            +
            00075/0748 7 (256,448,3)
         
     | 
| 940 | 
         
            +
            00075/0769 7 (256,448,3)
         
     | 
| 941 | 
         
            +
            00075/0777 7 (256,448,3)
         
     | 
| 942 | 
         
            +
            00075/0781 7 (256,448,3)
         
     | 
| 943 | 
         
            +
            00076/0151 7 (256,448,3)
         
     | 
| 944 | 
         
            +
            00076/0159 7 (256,448,3)
         
     | 
| 945 | 
         
            +
            00076/0164 7 (256,448,3)
         
     | 
| 946 | 
         
            +
            00076/0265 7 (256,448,3)
         
     | 
| 947 | 
         
            +
            00076/0269 7 (256,448,3)
         
     | 
| 948 | 
         
            +
            00076/0433 7 (256,448,3)
         
     | 
| 949 | 
         
            +
            00076/0813 7 (256,448,3)
         
     | 
| 950 | 
         
            +
            00076/0817 7 (256,448,3)
         
     | 
| 951 | 
         
            +
            00076/0818 7 (256,448,3)
         
     | 
| 952 | 
         
            +
            00076/0827 7 (256,448,3)
         
     | 
| 953 | 
         
            +
            00076/0874 7 (256,448,3)
         
     | 
| 954 | 
         
            +
            00076/0880 7 (256,448,3)
         
     | 
| 955 | 
         
            +
            00076/0891 7 (256,448,3)
         
     | 
| 956 | 
         
            +
            00076/0894 7 (256,448,3)
         
     | 
| 957 | 
         
            +
            00076/0909 7 (256,448,3)
         
     | 
| 958 | 
         
            +
            00076/0913 7 (256,448,3)
         
     | 
| 959 | 
         
            +
            00076/0926 7 (256,448,3)
         
     | 
| 960 | 
         
            +
            00076/0962 7 (256,448,3)
         
     | 
| 961 | 
         
            +
            00076/0973 7 (256,448,3)
         
     | 
| 962 | 
         
            +
            00076/0986 7 (256,448,3)
         
     | 
| 963 | 
         
            +
            00077/0617 7 (256,448,3)
         
     | 
| 964 | 
         
            +
            00077/0623 7 (256,448,3)
         
     | 
| 965 | 
         
            +
            00077/0628 7 (256,448,3)
         
     | 
| 966 | 
         
            +
            00077/0629 7 (256,448,3)
         
     | 
| 967 | 
         
            +
            00077/0631 7 (256,448,3)
         
     | 
| 968 | 
         
            +
            00077/0639 7 (256,448,3)
         
     | 
| 969 | 
         
            +
            00077/0982 7 (256,448,3)
         
     | 
| 970 | 
         
            +
            00077/0984 7 (256,448,3)
         
     | 
| 971 | 
         
            +
            00077/0995 7 (256,448,3)
         
     | 
| 972 | 
         
            +
            00077/0998 7 (256,448,3)
         
     | 
| 973 | 
         
            +
            00078/0001 7 (256,448,3)
         
     | 
| 974 | 
         
            +
            00078/0015 7 (256,448,3)
         
     | 
| 975 | 
         
            +
            00078/0157 7 (256,448,3)
         
     | 
| 976 | 
         
            +
            00078/0161 7 (256,448,3)
         
     | 
| 977 | 
         
            +
            00078/0175 7 (256,448,3)
         
     | 
| 978 | 
         
            +
            00078/0178 7 (256,448,3)
         
     | 
| 979 | 
         
            +
            00078/0189 7 (256,448,3)
         
     | 
| 980 | 
         
            +
            00078/0192 7 (256,448,3)
         
     | 
| 981 | 
         
            +
            00078/0229 7 (256,448,3)
         
     | 
| 982 | 
         
            +
            00078/0237 7 (256,448,3)
         
     | 
| 983 | 
         
            +
            00078/0241 7 (256,448,3)
         
     | 
| 984 | 
         
            +
            00078/0249 7 (256,448,3)
         
     | 
| 985 | 
         
            +
            00078/0251 7 (256,448,3)
         
     | 
| 986 | 
         
            +
            00078/0254 7 (256,448,3)
         
     | 
| 987 | 
         
            +
            00078/0258 7 (256,448,3)
         
     | 
| 988 | 
         
            +
            00078/0311 7 (256,448,3)
         
     | 
| 989 | 
         
            +
            00078/0603 7 (256,448,3)
         
     | 
| 990 | 
         
            +
            00078/0607 7 (256,448,3)
         
     | 
| 991 | 
         
            +
            00078/0824 7 (256,448,3)
         
     | 
| 992 | 
         
            +
            00079/0045 7 (256,448,3)
         
     | 
| 993 | 
         
            +
            00079/0048 7 (256,448,3)
         
     | 
| 994 | 
         
            +
            00079/0054 7 (256,448,3)
         
     | 
| 995 | 
         
            +
            00080/0050 7 (256,448,3)
         
     | 
| 996 | 
         
            +
            00080/0488 7 (256,448,3)
         
     | 
| 997 | 
         
            +
            00080/0494 7 (256,448,3)
         
     | 
| 998 | 
         
            +
            00080/0496 7 (256,448,3)
         
     | 
| 999 | 
         
            +
            00080/0499 7 (256,448,3)
         
     | 
| 1000 | 
         
            +
            00080/0502 7 (256,448,3)
         
     | 
| 1001 | 
         
            +
            00080/0510 7 (256,448,3)
         
     | 
| 1002 | 
         
            +
            00080/0534 7 (256,448,3)
         
     | 
| 1003 | 
         
            +
            00080/0558 7 (256,448,3)
         
     | 
| 1004 | 
         
            +
            00080/0571 7 (256,448,3)
         
     | 
| 1005 | 
         
            +
            00080/0709 7 (256,448,3)
         
     | 
| 1006 | 
         
            +
            00080/0882 7 (256,448,3)
         
     | 
| 1007 | 
         
            +
            00081/0322 7 (256,448,3)
         
     | 
| 1008 | 
         
            +
            00081/0428 7 (256,448,3)
         
     | 
| 1009 | 
         
            +
            00081/0700 7 (256,448,3)
         
     | 
| 1010 | 
         
            +
            00081/0706 7 (256,448,3)
         
     | 
| 1011 | 
         
            +
            00081/0707 7 (256,448,3)
         
     | 
| 1012 | 
         
            +
            00081/0937 7 (256,448,3)
         
     | 
| 1013 | 
         
            +
            00082/0021 7 (256,448,3)
         
     | 
| 1014 | 
         
            +
            00082/0424 7 (256,448,3)
         
     | 
| 1015 | 
         
            +
            00082/0794 7 (256,448,3)
         
     | 
| 1016 | 
         
            +
            00082/0807 7 (256,448,3)
         
     | 
| 1017 | 
         
            +
            00082/0810 7 (256,448,3)
         
     | 
| 1018 | 
         
            +
            00082/0824 7 (256,448,3)
         
     | 
| 1019 | 
         
            +
            00083/0129 7 (256,448,3)
         
     | 
| 1020 | 
         
            +
            00083/0131 7 (256,448,3)
         
     | 
| 1021 | 
         
            +
            00083/0249 7 (256,448,3)
         
     | 
| 1022 | 
         
            +
            00083/0250 7 (256,448,3)
         
     | 
| 1023 | 
         
            +
            00083/0656 7 (256,448,3)
         
     | 
| 1024 | 
         
            +
            00083/0812 7 (256,448,3)
         
     | 
| 1025 | 
         
            +
            00083/0819 7 (256,448,3)
         
     | 
| 1026 | 
         
            +
            00083/0824 7 (256,448,3)
         
     | 
| 1027 | 
         
            +
            00083/0827 7 (256,448,3)
         
     | 
| 1028 | 
         
            +
            00083/0841 7 (256,448,3)
         
     | 
| 1029 | 
         
            +
            00083/0963 7 (256,448,3)
         
     | 
| 1030 | 
         
            +
            00084/0047 7 (256,448,3)
         
     | 
| 1031 | 
         
            +
            00084/0319 7 (256,448,3)
         
     | 
| 1032 | 
         
            +
            00084/0334 7 (256,448,3)
         
     | 
| 1033 | 
         
            +
            00084/0363 7 (256,448,3)
         
     | 
| 1034 | 
         
            +
            00084/0493 7 (256,448,3)
         
     | 
| 1035 | 
         
            +
            00084/0655 7 (256,448,3)
         
     | 
| 1036 | 
         
            +
            00084/0752 7 (256,448,3)
         
     | 
| 1037 | 
         
            +
            00084/0813 7 (256,448,3)
         
     | 
| 1038 | 
         
            +
            00084/0886 7 (256,448,3)
         
     | 
| 1039 | 
         
            +
            00084/0948 7 (256,448,3)
         
     | 
| 1040 | 
         
            +
            00084/0976 7 (256,448,3)
         
     | 
| 1041 | 
         
            +
            00085/0512 7 (256,448,3)
         
     | 
| 1042 | 
         
            +
            00085/0641 7 (256,448,3)
         
     | 
| 1043 | 
         
            +
            00085/0653 7 (256,448,3)
         
     | 
| 1044 | 
         
            +
            00085/0655 7 (256,448,3)
         
     | 
| 1045 | 
         
            +
            00085/0697 7 (256,448,3)
         
     | 
| 1046 | 
         
            +
            00085/0698 7 (256,448,3)
         
     | 
| 1047 | 
         
            +
            00085/0700 7 (256,448,3)
         
     | 
| 1048 | 
         
            +
            00085/0703 7 (256,448,3)
         
     | 
| 1049 | 
         
            +
            00085/0705 7 (256,448,3)
         
     | 
| 1050 | 
         
            +
            00085/0709 7 (256,448,3)
         
     | 
| 1051 | 
         
            +
            00085/0713 7 (256,448,3)
         
     | 
| 1052 | 
         
            +
            00085/0739 7 (256,448,3)
         
     | 
| 1053 | 
         
            +
            00085/0750 7 (256,448,3)
         
     | 
| 1054 | 
         
            +
            00085/0763 7 (256,448,3)
         
     | 
| 1055 | 
         
            +
            00085/0765 7 (256,448,3)
         
     | 
| 1056 | 
         
            +
            00085/0769 7 (256,448,3)
         
     | 
| 1057 | 
         
            +
            00085/0863 7 (256,448,3)
         
     | 
| 1058 | 
         
            +
            00085/0868 7 (256,448,3)
         
     | 
| 1059 | 
         
            +
            00085/0927 7 (256,448,3)
         
     | 
| 1060 | 
         
            +
            00085/0936 7 (256,448,3)
         
     | 
| 1061 | 
         
            +
            00085/0965 7 (256,448,3)
         
     | 
| 1062 | 
         
            +
            00085/0969 7 (256,448,3)
         
     | 
| 1063 | 
         
            +
            00085/0974 7 (256,448,3)
         
     | 
| 1064 | 
         
            +
            00085/0981 7 (256,448,3)
         
     | 
| 1065 | 
         
            +
            00085/0982 7 (256,448,3)
         
     | 
| 1066 | 
         
            +
            00085/1000 7 (256,448,3)
         
     | 
| 1067 | 
         
            +
            00086/0003 7 (256,448,3)
         
     | 
| 1068 | 
         
            +
            00086/0009 7 (256,448,3)
         
     | 
| 1069 | 
         
            +
            00086/0011 7 (256,448,3)
         
     | 
| 1070 | 
         
            +
            00086/0028 7 (256,448,3)
         
     | 
| 1071 | 
         
            +
            00086/0032 7 (256,448,3)
         
     | 
| 1072 | 
         
            +
            00086/0034 7 (256,448,3)
         
     | 
| 1073 | 
         
            +
            00086/0035 7 (256,448,3)
         
     | 
| 1074 | 
         
            +
            00086/0042 7 (256,448,3)
         
     | 
| 1075 | 
         
            +
            00086/0064 7 (256,448,3)
         
     | 
| 1076 | 
         
            +
            00086/0066 7 (256,448,3)
         
     | 
| 1077 | 
         
            +
            00086/0095 7 (256,448,3)
         
     | 
| 1078 | 
         
            +
            00086/0099 7 (256,448,3)
         
     | 
| 1079 | 
         
            +
            00086/0101 7 (256,448,3)
         
     | 
| 1080 | 
         
            +
            00086/0104 7 (256,448,3)
         
     | 
| 1081 | 
         
            +
            00086/0115 7 (256,448,3)
         
     | 
| 1082 | 
         
            +
            00086/0116 7 (256,448,3)
         
     | 
| 1083 | 
         
            +
            00086/0284 7 (256,448,3)
         
     | 
| 1084 | 
         
            +
            00086/0291 7 (256,448,3)
         
     | 
| 1085 | 
         
            +
            00086/0295 7 (256,448,3)
         
     | 
| 1086 | 
         
            +
            00086/0302 7 (256,448,3)
         
     | 
| 1087 | 
         
            +
            00086/0318 7 (256,448,3)
         
     | 
| 1088 | 
         
            +
            00086/0666 7 (256,448,3)
         
     | 
| 1089 | 
         
            +
            00086/0797 7 (256,448,3)
         
     | 
| 1090 | 
         
            +
            00086/0851 7 (256,448,3)
         
     | 
| 1091 | 
         
            +
            00086/0855 7 (256,448,3)
         
     | 
| 1092 | 
         
            +
            00086/0874 7 (256,448,3)
         
     | 
| 1093 | 
         
            +
            00086/0878 7 (256,448,3)
         
     | 
| 1094 | 
         
            +
            00086/0881 7 (256,448,3)
         
     | 
| 1095 | 
         
            +
            00086/0883 7 (256,448,3)
         
     | 
| 1096 | 
         
            +
            00086/0896 7 (256,448,3)
         
     | 
| 1097 | 
         
            +
            00086/0899 7 (256,448,3)
         
     | 
| 1098 | 
         
            +
            00086/0903 7 (256,448,3)
         
     | 
| 1099 | 
         
            +
            00086/0989 7 (256,448,3)
         
     | 
| 1100 | 
         
            +
            00087/0008 7 (256,448,3)
         
     | 
| 1101 | 
         
            +
            00087/0429 7 (256,448,3)
         
     | 
| 1102 | 
         
            +
            00087/0511 7 (256,448,3)
         
     | 
| 1103 | 
         
            +
            00088/0241 7 (256,448,3)
         
     | 
| 1104 | 
         
            +
            00088/0319 7 (256,448,3)
         
     | 
| 1105 | 
         
            +
            00088/0323 7 (256,448,3)
         
     | 
| 1106 | 
         
            +
            00088/0411 7 (256,448,3)
         
     | 
| 1107 | 
         
            +
            00088/0427 7 (256,448,3)
         
     | 
| 1108 | 
         
            +
            00088/0452 7 (256,448,3)
         
     | 
| 1109 | 
         
            +
            00088/0463 7 (256,448,3)
         
     | 
| 1110 | 
         
            +
            00088/0476 7 (256,448,3)
         
     | 
| 1111 | 
         
            +
            00088/0496 7 (256,448,3)
         
     | 
| 1112 | 
         
            +
            00088/0559 7 (256,448,3)
         
     | 
| 1113 | 
         
            +
            00089/0058 7 (256,448,3)
         
     | 
| 1114 | 
         
            +
            00089/0061 7 (256,448,3)
         
     | 
| 1115 | 
         
            +
            00089/0069 7 (256,448,3)
         
     | 
| 1116 | 
         
            +
            00089/0077 7 (256,448,3)
         
     | 
| 1117 | 
         
            +
            00089/0096 7 (256,448,3)
         
     | 
| 1118 | 
         
            +
            00089/0099 7 (256,448,3)
         
     | 
| 1119 | 
         
            +
            00089/0100 7 (256,448,3)
         
     | 
| 1120 | 
         
            +
            00089/0211 7 (256,448,3)
         
     | 
| 1121 | 
         
            +
            00089/0380 7 (256,448,3)
         
     | 
| 1122 | 
         
            +
            00089/0381 7 (256,448,3)
         
     | 
| 1123 | 
         
            +
            00089/0384 7 (256,448,3)
         
     | 
| 1124 | 
         
            +
            00089/0390 7 (256,448,3)
         
     | 
| 1125 | 
         
            +
            00089/0393 7 (256,448,3)
         
     | 
| 1126 | 
         
            +
            00089/0394 7 (256,448,3)
         
     | 
| 1127 | 
         
            +
            00089/0395 7 (256,448,3)
         
     | 
| 1128 | 
         
            +
            00089/0406 7 (256,448,3)
         
     | 
| 1129 | 
         
            +
            00089/0410 7 (256,448,3)
         
     | 
| 1130 | 
         
            +
            00089/0412 7 (256,448,3)
         
     | 
| 1131 | 
         
            +
            00089/0703 7 (256,448,3)
         
     | 
| 1132 | 
         
            +
            00089/0729 7 (256,448,3)
         
     | 
| 1133 | 
         
            +
            00089/0930 7 (256,448,3)
         
     | 
| 1134 | 
         
            +
            00089/0952 7 (256,448,3)
         
     | 
| 1135 | 
         
            +
            00090/0062 7 (256,448,3)
         
     | 
| 1136 | 
         
            +
            00090/0101 7 (256,448,3)
         
     | 
| 1137 | 
         
            +
            00090/0213 7 (256,448,3)
         
     | 
| 1138 | 
         
            +
            00090/0216 7 (256,448,3)
         
     | 
| 1139 | 
         
            +
            00090/0268 7 (256,448,3)
         
     | 
| 1140 | 
         
            +
            00090/0406 7 (256,448,3)
         
     | 
| 1141 | 
         
            +
            00090/0411 7 (256,448,3)
         
     | 
| 1142 | 
         
            +
            00090/0442 7 (256,448,3)
         
     | 
| 1143 | 
         
            +
            00090/0535 7 (256,448,3)
         
     | 
| 1144 | 
         
            +
            00090/0542 7 (256,448,3)
         
     | 
| 1145 | 
         
            +
            00090/0571 7 (256,448,3)
         
     | 
| 1146 | 
         
            +
            00090/0934 7 (256,448,3)
         
     | 
| 1147 | 
         
            +
            00090/0938 7 (256,448,3)
         
     | 
| 1148 | 
         
            +
            00090/0947 7 (256,448,3)
         
     | 
| 1149 | 
         
            +
            00091/0066 7 (256,448,3)
         
     | 
| 1150 | 
         
            +
            00091/0448 7 (256,448,3)
         
     | 
| 1151 | 
         
            +
            00091/0451 7 (256,448,3)
         
     | 
| 1152 | 
         
            +
            00091/0454 7 (256,448,3)
         
     | 
| 1153 | 
         
            +
            00091/0457 7 (256,448,3)
         
     | 
| 1154 | 
         
            +
            00091/0467 7 (256,448,3)
         
     | 
| 1155 | 
         
            +
            00091/0470 7 (256,448,3)
         
     | 
| 1156 | 
         
            +
            00091/0477 7 (256,448,3)
         
     | 
| 1157 | 
         
            +
            00091/0583 7 (256,448,3)
         
     | 
| 1158 | 
         
            +
            00091/0981 7 (256,448,3)
         
     | 
| 1159 | 
         
            +
            00091/0994 7 (256,448,3)
         
     | 
| 1160 | 
         
            +
            00092/0112 7 (256,448,3)
         
     | 
| 1161 | 
         
            +
            00092/0119 7 (256,448,3)
         
     | 
| 1162 | 
         
            +
            00092/0129 7 (256,448,3)
         
     | 
| 1163 | 
         
            +
            00092/0146 7 (256,448,3)
         
     | 
| 1164 | 
         
            +
            00092/0149 7 (256,448,3)
         
     | 
| 1165 | 
         
            +
            00092/0608 7 (256,448,3)
         
     | 
| 1166 | 
         
            +
            00092/0643 7 (256,448,3)
         
     | 
| 1167 | 
         
            +
            00092/0646 7 (256,448,3)
         
     | 
| 1168 | 
         
            +
            00092/0766 7 (256,448,3)
         
     | 
| 1169 | 
         
            +
            00092/0768 7 (256,448,3)
         
     | 
| 1170 | 
         
            +
            00092/0779 7 (256,448,3)
         
     | 
| 1171 | 
         
            +
            00093/0081 7 (256,448,3)
         
     | 
| 1172 | 
         
            +
            00093/0085 7 (256,448,3)
         
     | 
| 1173 | 
         
            +
            00093/0135 7 (256,448,3)
         
     | 
| 1174 | 
         
            +
            00093/0241 7 (256,448,3)
         
     | 
| 1175 | 
         
            +
            00093/0277 7 (256,448,3)
         
     | 
| 1176 | 
         
            +
            00093/0283 7 (256,448,3)
         
     | 
| 1177 | 
         
            +
            00093/0320 7 (256,448,3)
         
     | 
| 1178 | 
         
            +
            00093/0598 7 (256,448,3)
         
     | 
| 1179 | 
         
            +
            00094/0159 7 (256,448,3)
         
     | 
| 1180 | 
         
            +
            00094/0253 7 (256,448,3)
         
     | 
| 1181 | 
         
            +
            00094/0265 7 (256,448,3)
         
     | 
| 1182 | 
         
            +
            00094/0267 7 (256,448,3)
         
     | 
| 1183 | 
         
            +
            00094/0269 7 (256,448,3)
         
     | 
| 1184 | 
         
            +
            00094/0281 7 (256,448,3)
         
     | 
| 1185 | 
         
            +
            00094/0293 7 (256,448,3)
         
     | 
| 1186 | 
         
            +
            00094/0404 7 (256,448,3)
         
     | 
| 1187 | 
         
            +
            00094/0593 7 (256,448,3)
         
     | 
| 1188 | 
         
            +
            00094/0612 7 (256,448,3)
         
     | 
| 1189 | 
         
            +
            00094/0638 7 (256,448,3)
         
     | 
| 1190 | 
         
            +
            00094/0656 7 (256,448,3)
         
     | 
| 1191 | 
         
            +
            00094/0668 7 (256,448,3)
         
     | 
| 1192 | 
         
            +
            00094/0786 7 (256,448,3)
         
     | 
| 1193 | 
         
            +
            00094/0870 7 (256,448,3)
         
     | 
| 1194 | 
         
            +
            00094/0897 7 (256,448,3)
         
     | 
| 1195 | 
         
            +
            00094/0900 7 (256,448,3)
         
     | 
| 1196 | 
         
            +
            00094/0944 7 (256,448,3)
         
     | 
| 1197 | 
         
            +
            00094/0946 7 (256,448,3)
         
     | 
| 1198 | 
         
            +
            00094/0952 7 (256,448,3)
         
     | 
| 1199 | 
         
            +
            00094/0969 7 (256,448,3)
         
     | 
| 1200 | 
         
            +
            00094/0973 7 (256,448,3)
         
     | 
| 1201 | 
         
            +
            00094/0981 7 (256,448,3)
         
     | 
| 1202 | 
         
            +
            00095/0088 7 (256,448,3)
         
     | 
| 1203 | 
         
            +
            00095/0125 7 (256,448,3)
         
     | 
| 1204 | 
         
            +
            00095/0130 7 (256,448,3)
         
     | 
| 1205 | 
         
            +
            00095/0142 7 (256,448,3)
         
     | 
| 1206 | 
         
            +
            00095/0151 7 (256,448,3)
         
     | 
| 1207 | 
         
            +
            00095/0180 7 (256,448,3)
         
     | 
| 1208 | 
         
            +
            00095/0192 7 (256,448,3)
         
     | 
| 1209 | 
         
            +
            00095/0194 7 (256,448,3)
         
     | 
| 1210 | 
         
            +
            00095/0195 7 (256,448,3)
         
     | 
| 1211 | 
         
            +
            00095/0204 7 (256,448,3)
         
     | 
| 1212 | 
         
            +
            00095/0245 7 (256,448,3)
         
     | 
| 1213 | 
         
            +
            00095/0315 7 (256,448,3)
         
     | 
| 1214 | 
         
            +
            00095/0321 7 (256,448,3)
         
     | 
| 1215 | 
         
            +
            00095/0324 7 (256,448,3)
         
     | 
| 1216 | 
         
            +
            00095/0327 7 (256,448,3)
         
     | 
| 1217 | 
         
            +
            00095/0730 7 (256,448,3)
         
     | 
| 1218 | 
         
            +
            00095/0731 7 (256,448,3)
         
     | 
| 1219 | 
         
            +
            00095/0741 7 (256,448,3)
         
     | 
| 1220 | 
         
            +
            00095/0948 7 (256,448,3)
         
     | 
| 1221 | 
         
            +
            00096/0407 7 (256,448,3)
         
     | 
| 1222 | 
         
            +
            00096/0420 7 (256,448,3)
         
     | 
| 1223 | 
         
            +
            00096/0435 7 (256,448,3)
         
     | 
| 1224 | 
         
            +
            00096/0682 7 (256,448,3)
         
     | 
| 1225 | 
         
            +
            00096/0865 7 (256,448,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_Vimeo90K_test_medium_GT.txt
    ADDED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        basicsr/data/meta_info/meta_info_Vimeo90K_test_slow_GT.txt
    ADDED
    
    | 
         @@ -0,0 +1,1613 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            00001/0266 7 (256,448,3)
         
     | 
| 2 | 
         
            +
            00001/0268 7 (256,448,3)
         
     | 
| 3 | 
         
            +
            00001/0275 7 (256,448,3)
         
     | 
| 4 | 
         
            +
            00001/0278 7 (256,448,3)
         
     | 
| 5 | 
         
            +
            00001/0287 7 (256,448,3)
         
     | 
| 6 | 
         
            +
            00001/0291 7 (256,448,3)
         
     | 
| 7 | 
         
            +
            00001/0627 7 (256,448,3)
         
     | 
| 8 | 
         
            +
            00001/0636 7 (256,448,3)
         
     | 
| 9 | 
         
            +
            00001/0804 7 (256,448,3)
         
     | 
| 10 | 
         
            +
            00001/0837 7 (256,448,3)
         
     | 
| 11 | 
         
            +
            00001/0849 7 (256,448,3)
         
     | 
| 12 | 
         
            +
            00001/0851 7 (256,448,3)
         
     | 
| 13 | 
         
            +
            00001/0852 7 (256,448,3)
         
     | 
| 14 | 
         
            +
            00001/0986 7 (256,448,3)
         
     | 
| 15 | 
         
            +
            00001/0991 7 (256,448,3)
         
     | 
| 16 | 
         
            +
            00002/0007 7 (256,448,3)
         
     | 
| 17 | 
         
            +
            00002/0008 7 (256,448,3)
         
     | 
| 18 | 
         
            +
            00002/0016 7 (256,448,3)
         
     | 
| 19 | 
         
            +
            00002/0036 7 (256,448,3)
         
     | 
| 20 | 
         
            +
            00002/0091 7 (256,448,3)
         
     | 
| 21 | 
         
            +
            00002/0093 7 (256,448,3)
         
     | 
| 22 | 
         
            +
            00002/0209 7 (256,448,3)
         
     | 
| 23 | 
         
            +
            00002/0235 7 (256,448,3)
         
     | 
| 24 | 
         
            +
            00002/0236 7 (256,448,3)
         
     | 
| 25 | 
         
            +
            00002/0241 7 (256,448,3)
         
     | 
| 26 | 
         
            +
            00002/0466 7 (256,448,3)
         
     | 
| 27 | 
         
            +
            00002/0504 7 (256,448,3)
         
     | 
| 28 | 
         
            +
            00002/0960 7 (256,448,3)
         
     | 
| 29 | 
         
            +
            00002/0961 7 (256,448,3)
         
     | 
| 30 | 
         
            +
            00002/0964 7 (256,448,3)
         
     | 
| 31 | 
         
            +
            00003/0007 7 (256,448,3)
         
     | 
| 32 | 
         
            +
            00003/0069 7 (256,448,3)
         
     | 
| 33 | 
         
            +
            00003/0345 7 (256,448,3)
         
     | 
| 34 | 
         
            +
            00003/0347 7 (256,448,3)
         
     | 
| 35 | 
         
            +
            00003/0372 7 (256,448,3)
         
     | 
| 36 | 
         
            +
            00003/0525 7 (256,448,3)
         
     | 
| 37 | 
         
            +
            00003/0652 7 (256,448,3)
         
     | 
| 38 | 
         
            +
            00003/0667 7 (256,448,3)
         
     | 
| 39 | 
         
            +
            00003/0669 7 (256,448,3)
         
     | 
| 40 | 
         
            +
            00003/0706 7 (256,448,3)
         
     | 
| 41 | 
         
            +
            00003/0713 7 (256,448,3)
         
     | 
| 42 | 
         
            +
            00003/0721 7 (256,448,3)
         
     | 
| 43 | 
         
            +
            00003/0747 7 (256,448,3)
         
     | 
| 44 | 
         
            +
            00003/0829 7 (256,448,3)
         
     | 
| 45 | 
         
            +
            00003/0916 7 (256,448,3)
         
     | 
| 46 | 
         
            +
            00003/0918 7 (256,448,3)
         
     | 
| 47 | 
         
            +
            00003/0924 7 (256,448,3)
         
     | 
| 48 | 
         
            +
            00003/0926 7 (256,448,3)
         
     | 
| 49 | 
         
            +
            00003/0927 7 (256,448,3)
         
     | 
| 50 | 
         
            +
            00004/0288 7 (256,448,3)
         
     | 
| 51 | 
         
            +
            00004/0303 7 (256,448,3)
         
     | 
| 52 | 
         
            +
            00004/0307 7 (256,448,3)
         
     | 
| 53 | 
         
            +
            00004/0628 7 (256,448,3)
         
     | 
| 54 | 
         
            +
            00004/0713 7 (256,448,3)
         
     | 
| 55 | 
         
            +
            00004/0715 7 (256,448,3)
         
     | 
| 56 | 
         
            +
            00004/0719 7 (256,448,3)
         
     | 
| 57 | 
         
            +
            00004/0727 7 (256,448,3)
         
     | 
| 58 | 
         
            +
            00004/0821 7 (256,448,3)
         
     | 
| 59 | 
         
            +
            00005/0006 7 (256,448,3)
         
     | 
| 60 | 
         
            +
            00005/0007 7 (256,448,3)
         
     | 
| 61 | 
         
            +
            00005/0012 7 (256,448,3)
         
     | 
| 62 | 
         
            +
            00005/0013 7 (256,448,3)
         
     | 
| 63 | 
         
            +
            00005/0040 7 (256,448,3)
         
     | 
| 64 | 
         
            +
            00005/0055 7 (256,448,3)
         
     | 
| 65 | 
         
            +
            00005/0119 7 (256,448,3)
         
     | 
| 66 | 
         
            +
            00005/0130 7 (256,448,3)
         
     | 
| 67 | 
         
            +
            00005/0185 7 (256,448,3)
         
     | 
| 68 | 
         
            +
            00005/0198 7 (256,448,3)
         
     | 
| 69 | 
         
            +
            00005/0270 7 (256,448,3)
         
     | 
| 70 | 
         
            +
            00005/0541 7 (256,448,3)
         
     | 
| 71 | 
         
            +
            00005/0560 7 (256,448,3)
         
     | 
| 72 | 
         
            +
            00005/0660 7 (256,448,3)
         
     | 
| 73 | 
         
            +
            00005/0682 7 (256,448,3)
         
     | 
| 74 | 
         
            +
            00005/0683 7 (256,448,3)
         
     | 
| 75 | 
         
            +
            00005/0688 7 (256,448,3)
         
     | 
| 76 | 
         
            +
            00005/0706 7 (256,448,3)
         
     | 
| 77 | 
         
            +
            00005/0728 7 (256,448,3)
         
     | 
| 78 | 
         
            +
            00005/0732 7 (256,448,3)
         
     | 
| 79 | 
         
            +
            00005/0739 7 (256,448,3)
         
     | 
| 80 | 
         
            +
            00005/0804 7 (256,448,3)
         
     | 
| 81 | 
         
            +
            00005/0805 7 (256,448,3)
         
     | 
| 82 | 
         
            +
            00005/0827 7 (256,448,3)
         
     | 
| 83 | 
         
            +
            00005/0828 7 (256,448,3)
         
     | 
| 84 | 
         
            +
            00005/0857 7 (256,448,3)
         
     | 
| 85 | 
         
            +
            00005/0861 7 (256,448,3)
         
     | 
| 86 | 
         
            +
            00005/0862 7 (256,448,3)
         
     | 
| 87 | 
         
            +
            00005/0868 7 (256,448,3)
         
     | 
| 88 | 
         
            +
            00005/0872 7 (256,448,3)
         
     | 
| 89 | 
         
            +
            00005/0933 7 (256,448,3)
         
     | 
| 90 | 
         
            +
            00005/0958 7 (256,448,3)
         
     | 
| 91 | 
         
            +
            00005/0960 7 (256,448,3)
         
     | 
| 92 | 
         
            +
            00006/0087 7 (256,448,3)
         
     | 
| 93 | 
         
            +
            00006/0090 7 (256,448,3)
         
     | 
| 94 | 
         
            +
            00006/0351 7 (256,448,3)
         
     | 
| 95 | 
         
            +
            00006/0353 7 (256,448,3)
         
     | 
| 96 | 
         
            +
            00006/0558 7 (256,448,3)
         
     | 
| 97 | 
         
            +
            00006/0588 7 (256,448,3)
         
     | 
| 98 | 
         
            +
            00006/0619 7 (256,448,3)
         
     | 
| 99 | 
         
            +
            00006/0621 7 (256,448,3)
         
     | 
| 100 | 
         
            +
            00006/0748 7 (256,448,3)
         
     | 
| 101 | 
         
            +
            00006/0796 7 (256,448,3)
         
     | 
| 102 | 
         
            +
            00006/0805 7 (256,448,3)
         
     | 
| 103 | 
         
            +
            00006/0807 7 (256,448,3)
         
     | 
| 104 | 
         
            +
            00007/0236 7 (256,448,3)
         
     | 
| 105 | 
         
            +
            00007/0240 7 (256,448,3)
         
     | 
| 106 | 
         
            +
            00007/0243 7 (256,448,3)
         
     | 
| 107 | 
         
            +
            00007/0246 7 (256,448,3)
         
     | 
| 108 | 
         
            +
            00007/0247 7 (256,448,3)
         
     | 
| 109 | 
         
            +
            00007/0252 7 (256,448,3)
         
     | 
| 110 | 
         
            +
            00007/0322 7 (256,448,3)
         
     | 
| 111 | 
         
            +
            00007/0458 7 (256,448,3)
         
     | 
| 112 | 
         
            +
            00007/0492 7 (256,448,3)
         
     | 
| 113 | 
         
            +
            00007/0658 7 (256,448,3)
         
     | 
| 114 | 
         
            +
            00007/0717 7 (256,448,3)
         
     | 
| 115 | 
         
            +
            00007/0722 7 (256,448,3)
         
     | 
| 116 | 
         
            +
            00007/0725 7 (256,448,3)
         
     | 
| 117 | 
         
            +
            00007/0740 7 (256,448,3)
         
     | 
| 118 | 
         
            +
            00007/0748 7 (256,448,3)
         
     | 
| 119 | 
         
            +
            00007/0749 7 (256,448,3)
         
     | 
| 120 | 
         
            +
            00007/0759 7 (256,448,3)
         
     | 
| 121 | 
         
            +
            00007/0772 7 (256,448,3)
         
     | 
| 122 | 
         
            +
            00007/0783 7 (256,448,3)
         
     | 
| 123 | 
         
            +
            00007/0787 7 (256,448,3)
         
     | 
| 124 | 
         
            +
            00007/0883 7 (256,448,3)
         
     | 
| 125 | 
         
            +
            00008/0033 7 (256,448,3)
         
     | 
| 126 | 
         
            +
            00008/0035 7 (256,448,3)
         
     | 
| 127 | 
         
            +
            00008/0091 7 (256,448,3)
         
     | 
| 128 | 
         
            +
            00008/0154 7 (256,448,3)
         
     | 
| 129 | 
         
            +
            00008/0966 7 (256,448,3)
         
     | 
| 130 | 
         
            +
            00008/0987 7 (256,448,3)
         
     | 
| 131 | 
         
            +
            00009/0108 7 (256,448,3)
         
     | 
| 132 | 
         
            +
            00009/0607 7 (256,448,3)
         
     | 
| 133 | 
         
            +
            00009/0668 7 (256,448,3)
         
     | 
| 134 | 
         
            +
            00009/0683 7 (256,448,3)
         
     | 
| 135 | 
         
            +
            00009/0941 7 (256,448,3)
         
     | 
| 136 | 
         
            +
            00009/0949 7 (256,448,3)
         
     | 
| 137 | 
         
            +
            00009/0962 7 (256,448,3)
         
     | 
| 138 | 
         
            +
            00009/0972 7 (256,448,3)
         
     | 
| 139 | 
         
            +
            00009/0974 7 (256,448,3)
         
     | 
| 140 | 
         
            +
            00010/0014 7 (256,448,3)
         
     | 
| 141 | 
         
            +
            00010/0018 7 (256,448,3)
         
     | 
| 142 | 
         
            +
            00010/0043 7 (256,448,3)
         
     | 
| 143 | 
         
            +
            00010/0099 7 (256,448,3)
         
     | 
| 144 | 
         
            +
            00010/0252 7 (256,448,3)
         
     | 
| 145 | 
         
            +
            00010/0296 7 (256,448,3)
         
     | 
| 146 | 
         
            +
            00010/0413 7 (256,448,3)
         
     | 
| 147 | 
         
            +
            00010/0422 7 (256,448,3)
         
     | 
| 148 | 
         
            +
            00010/0516 7 (256,448,3)
         
     | 
| 149 | 
         
            +
            00010/0525 7 (256,448,3)
         
     | 
| 150 | 
         
            +
            00010/0556 7 (256,448,3)
         
     | 
| 151 | 
         
            +
            00010/0701 7 (256,448,3)
         
     | 
| 152 | 
         
            +
            00010/0740 7 (256,448,3)
         
     | 
| 153 | 
         
            +
            00010/0772 7 (256,448,3)
         
     | 
| 154 | 
         
            +
            00010/0831 7 (256,448,3)
         
     | 
| 155 | 
         
            +
            00010/0925 7 (256,448,3)
         
     | 
| 156 | 
         
            +
            00011/0013 7 (256,448,3)
         
     | 
| 157 | 
         
            +
            00011/0016 7 (256,448,3)
         
     | 
| 158 | 
         
            +
            00011/0017 7 (256,448,3)
         
     | 
| 159 | 
         
            +
            00011/0249 7 (256,448,3)
         
     | 
| 160 | 
         
            +
            00011/0826 7 (256,448,3)
         
     | 
| 161 | 
         
            +
            00011/0827 7 (256,448,3)
         
     | 
| 162 | 
         
            +
            00011/0831 7 (256,448,3)
         
     | 
| 163 | 
         
            +
            00011/0833 7 (256,448,3)
         
     | 
| 164 | 
         
            +
            00011/0835 7 (256,448,3)
         
     | 
| 165 | 
         
            +
            00011/0998 7 (256,448,3)
         
     | 
| 166 | 
         
            +
            00012/0023 7 (256,448,3)
         
     | 
| 167 | 
         
            +
            00012/0024 7 (256,448,3)
         
     | 
| 168 | 
         
            +
            00012/0027 7 (256,448,3)
         
     | 
| 169 | 
         
            +
            00012/0037 7 (256,448,3)
         
     | 
| 170 | 
         
            +
            00012/0444 7 (256,448,3)
         
     | 
| 171 | 
         
            +
            00012/0445 7 (256,448,3)
         
     | 
| 172 | 
         
            +
            00012/0451 7 (256,448,3)
         
     | 
| 173 | 
         
            +
            00012/0461 7 (256,448,3)
         
     | 
| 174 | 
         
            +
            00012/0521 7 (256,448,3)
         
     | 
| 175 | 
         
            +
            00012/0758 7 (256,448,3)
         
     | 
| 176 | 
         
            +
            00012/0760 7 (256,448,3)
         
     | 
| 177 | 
         
            +
            00012/0771 7 (256,448,3)
         
     | 
| 178 | 
         
            +
            00012/0903 7 (256,448,3)
         
     | 
| 179 | 
         
            +
            00012/0909 7 (256,448,3)
         
     | 
| 180 | 
         
            +
            00013/0581 7 (256,448,3)
         
     | 
| 181 | 
         
            +
            00013/0786 7 (256,448,3)
         
     | 
| 182 | 
         
            +
            00013/0789 7 (256,448,3)
         
     | 
| 183 | 
         
            +
            00013/0791 7 (256,448,3)
         
     | 
| 184 | 
         
            +
            00013/0798 7 (256,448,3)
         
     | 
| 185 | 
         
            +
            00013/0802 7 (256,448,3)
         
     | 
| 186 | 
         
            +
            00013/0820 7 (256,448,3)
         
     | 
| 187 | 
         
            +
            00013/0850 7 (256,448,3)
         
     | 
| 188 | 
         
            +
            00013/0854 7 (256,448,3)
         
     | 
| 189 | 
         
            +
            00013/0894 7 (256,448,3)
         
     | 
| 190 | 
         
            +
            00013/0919 7 (256,448,3)
         
     | 
| 191 | 
         
            +
            00013/0999 7 (256,448,3)
         
     | 
| 192 | 
         
            +
            00014/0001 7 (256,448,3)
         
     | 
| 193 | 
         
            +
            00014/0014 7 (256,448,3)
         
     | 
| 194 | 
         
            +
            00014/0018 7 (256,448,3)
         
     | 
| 195 | 
         
            +
            00014/0244 7 (256,448,3)
         
     | 
| 196 | 
         
            +
            00014/0475 7 (256,448,3)
         
     | 
| 197 | 
         
            +
            00014/0483 7 (256,448,3)
         
     | 
| 198 | 
         
            +
            00014/0680 7 (256,448,3)
         
     | 
| 199 | 
         
            +
            00014/0700 7 (256,448,3)
         
     | 
| 200 | 
         
            +
            00014/0701 7 (256,448,3)
         
     | 
| 201 | 
         
            +
            00014/0706 7 (256,448,3)
         
     | 
| 202 | 
         
            +
            00014/0712 7 (256,448,3)
         
     | 
| 203 | 
         
            +
            00014/0713 7 (256,448,3)
         
     | 
| 204 | 
         
            +
            00014/0717 7 (256,448,3)
         
     | 
| 205 | 
         
            +
            00014/0719 7 (256,448,3)
         
     | 
| 206 | 
         
            +
            00014/0728 7 (256,448,3)
         
     | 
| 207 | 
         
            +
            00014/0734 7 (256,448,3)
         
     | 
| 208 | 
         
            +
            00014/0736 7 (256,448,3)
         
     | 
| 209 | 
         
            +
            00014/0738 7 (256,448,3)
         
     | 
| 210 | 
         
            +
            00014/0742 7 (256,448,3)
         
     | 
| 211 | 
         
            +
            00014/0745 7 (256,448,3)
         
     | 
| 212 | 
         
            +
            00014/0746 7 (256,448,3)
         
     | 
| 213 | 
         
            +
            00014/0750 7 (256,448,3)
         
     | 
| 214 | 
         
            +
            00014/0769 7 (256,448,3)
         
     | 
| 215 | 
         
            +
            00014/0774 7 (256,448,3)
         
     | 
| 216 | 
         
            +
            00014/0781 7 (256,448,3)
         
     | 
| 217 | 
         
            +
            00014/0782 7 (256,448,3)
         
     | 
| 218 | 
         
            +
            00014/0852 7 (256,448,3)
         
     | 
| 219 | 
         
            +
            00014/0853 7 (256,448,3)
         
     | 
| 220 | 
         
            +
            00014/0855 7 (256,448,3)
         
     | 
| 221 | 
         
            +
            00014/0867 7 (256,448,3)
         
     | 
| 222 | 
         
            +
            00014/0876 7 (256,448,3)
         
     | 
| 223 | 
         
            +
            00014/0881 7 (256,448,3)
         
     | 
| 224 | 
         
            +
            00014/0890 7 (256,448,3)
         
     | 
| 225 | 
         
            +
            00014/0914 7 (256,448,3)
         
     | 
| 226 | 
         
            +
            00015/0033 7 (256,448,3)
         
     | 
| 227 | 
         
            +
            00015/0113 7 (256,448,3)
         
     | 
| 228 | 
         
            +
            00015/0125 7 (256,448,3)
         
     | 
| 229 | 
         
            +
            00015/0185 7 (256,448,3)
         
     | 
| 230 | 
         
            +
            00015/0194 7 (256,448,3)
         
     | 
| 231 | 
         
            +
            00015/0202 7 (256,448,3)
         
     | 
| 232 | 
         
            +
            00015/0312 7 (256,448,3)
         
     | 
| 233 | 
         
            +
            00015/0688 7 (256,448,3)
         
     | 
| 234 | 
         
            +
            00015/0698 7 (256,448,3)
         
     | 
| 235 | 
         
            +
            00015/0788 7 (256,448,3)
         
     | 
| 236 | 
         
            +
            00015/0854 7 (256,448,3)
         
     | 
| 237 | 
         
            +
            00015/0863 7 (256,448,3)
         
     | 
| 238 | 
         
            +
            00015/0864 7 (256,448,3)
         
     | 
| 239 | 
         
            +
            00015/0918 7 (256,448,3)
         
     | 
| 240 | 
         
            +
            00015/0931 7 (256,448,3)
         
     | 
| 241 | 
         
            +
            00016/0276 7 (256,448,3)
         
     | 
| 242 | 
         
            +
            00016/0301 7 (256,448,3)
         
     | 
| 243 | 
         
            +
            00016/0306 7 (256,448,3)
         
     | 
| 244 | 
         
            +
            00016/0324 7 (256,448,3)
         
     | 
| 245 | 
         
            +
            00016/0362 7 (256,448,3)
         
     | 
| 246 | 
         
            +
            00016/0364 7 (256,448,3)
         
     | 
| 247 | 
         
            +
            00016/0370 7 (256,448,3)
         
     | 
| 248 | 
         
            +
            00016/0378 7 (256,448,3)
         
     | 
| 249 | 
         
            +
            00016/0379 7 (256,448,3)
         
     | 
| 250 | 
         
            +
            00016/0402 7 (256,448,3)
         
     | 
| 251 | 
         
            +
            00016/0405 7 (256,448,3)
         
     | 
| 252 | 
         
            +
            00016/0418 7 (256,448,3)
         
     | 
| 253 | 
         
            +
            00016/0419 7 (256,448,3)
         
     | 
| 254 | 
         
            +
            00016/0435 7 (256,448,3)
         
     | 
| 255 | 
         
            +
            00016/0501 7 (256,448,3)
         
     | 
| 256 | 
         
            +
            00016/0561 7 (256,448,3)
         
     | 
| 257 | 
         
            +
            00016/0562 7 (256,448,3)
         
     | 
| 258 | 
         
            +
            00016/0569 7 (256,448,3)
         
     | 
| 259 | 
         
            +
            00016/0591 7 (256,448,3)
         
     | 
| 260 | 
         
            +
            00016/0599 7 (256,448,3)
         
     | 
| 261 | 
         
            +
            00016/0711 7 (256,448,3)
         
     | 
| 262 | 
         
            +
            00016/0713 7 (256,448,3)
         
     | 
| 263 | 
         
            +
            00016/0813 7 (256,448,3)
         
     | 
| 264 | 
         
            +
            00016/0953 7 (256,448,3)
         
     | 
| 265 | 
         
            +
            00016/0960 7 (256,448,3)
         
     | 
| 266 | 
         
            +
            00016/0961 7 (256,448,3)
         
     | 
| 267 | 
         
            +
            00017/0519 7 (256,448,3)
         
     | 
| 268 | 
         
            +
            00017/0523 7 (256,448,3)
         
     | 
| 269 | 
         
            +
            00017/0588 7 (256,448,3)
         
     | 
| 270 | 
         
            +
            00017/0608 7 (256,448,3)
         
     | 
| 271 | 
         
            +
            00017/0609 7 (256,448,3)
         
     | 
| 272 | 
         
            +
            00017/0719 7 (256,448,3)
         
     | 
| 273 | 
         
            +
            00017/0721 7 (256,448,3)
         
     | 
| 274 | 
         
            +
            00017/0727 7 (256,448,3)
         
     | 
| 275 | 
         
            +
            00017/0728 7 (256,448,3)
         
     | 
| 276 | 
         
            +
            00017/0769 7 (256,448,3)
         
     | 
| 277 | 
         
            +
            00017/0775 7 (256,448,3)
         
     | 
| 278 | 
         
            +
            00017/0787 7 (256,448,3)
         
     | 
| 279 | 
         
            +
            00017/0797 7 (256,448,3)
         
     | 
| 280 | 
         
            +
            00018/0043 7 (256,448,3)
         
     | 
| 281 | 
         
            +
            00018/0206 7 (256,448,3)
         
     | 
| 282 | 
         
            +
            00018/0209 7 (256,448,3)
         
     | 
| 283 | 
         
            +
            00018/0211 7 (256,448,3)
         
     | 
| 284 | 
         
            +
            00018/0216 7 (256,448,3)
         
     | 
| 285 | 
         
            +
            00018/0220 7 (256,448,3)
         
     | 
| 286 | 
         
            +
            00018/0221 7 (256,448,3)
         
     | 
| 287 | 
         
            +
            00018/0252 7 (256,448,3)
         
     | 
| 288 | 
         
            +
            00018/0260 7 (256,448,3)
         
     | 
| 289 | 
         
            +
            00018/0331 7 (256,448,3)
         
     | 
| 290 | 
         
            +
            00018/0333 7 (256,448,3)
         
     | 
| 291 | 
         
            +
            00018/0447 7 (256,448,3)
         
     | 
| 292 | 
         
            +
            00018/0523 7 (256,448,3)
         
     | 
| 293 | 
         
            +
            00019/0014 7 (256,448,3)
         
     | 
| 294 | 
         
            +
            00019/0015 7 (256,448,3)
         
     | 
| 295 | 
         
            +
            00019/0019 7 (256,448,3)
         
     | 
| 296 | 
         
            +
            00019/0049 7 (256,448,3)
         
     | 
| 297 | 
         
            +
            00019/0109 7 (256,448,3)
         
     | 
| 298 | 
         
            +
            00019/0114 7 (256,448,3)
         
     | 
| 299 | 
         
            +
            00019/0125 7 (256,448,3)
         
     | 
| 300 | 
         
            +
            00019/0137 7 (256,448,3)
         
     | 
| 301 | 
         
            +
            00019/0140 7 (256,448,3)
         
     | 
| 302 | 
         
            +
            00019/0148 7 (256,448,3)
         
     | 
| 303 | 
         
            +
            00019/0153 7 (256,448,3)
         
     | 
| 304 | 
         
            +
            00019/0155 7 (256,448,3)
         
     | 
| 305 | 
         
            +
            00019/0158 7 (256,448,3)
         
     | 
| 306 | 
         
            +
            00019/0159 7 (256,448,3)
         
     | 
| 307 | 
         
            +
            00019/0160 7 (256,448,3)
         
     | 
| 308 | 
         
            +
            00019/0162 7 (256,448,3)
         
     | 
| 309 | 
         
            +
            00019/0279 7 (256,448,3)
         
     | 
| 310 | 
         
            +
            00019/0282 7 (256,448,3)
         
     | 
| 311 | 
         
            +
            00019/0409 7 (256,448,3)
         
     | 
| 312 | 
         
            +
            00019/0427 7 (256,448,3)
         
     | 
| 313 | 
         
            +
            00019/0430 7 (256,448,3)
         
     | 
| 314 | 
         
            +
            00019/0545 7 (256,448,3)
         
     | 
| 315 | 
         
            +
            00019/0555 7 (256,448,3)
         
     | 
| 316 | 
         
            +
            00019/0558 7 (256,448,3)
         
     | 
| 317 | 
         
            +
            00019/0650 7 (256,448,3)
         
     | 
| 318 | 
         
            +
            00019/0681 7 (256,448,3)
         
     | 
| 319 | 
         
            +
            00019/0747 7 (256,448,3)
         
     | 
| 320 | 
         
            +
            00019/0748 7 (256,448,3)
         
     | 
| 321 | 
         
            +
            00019/0749 7 (256,448,3)
         
     | 
| 322 | 
         
            +
            00019/0752 7 (256,448,3)
         
     | 
| 323 | 
         
            +
            00019/0768 7 (256,448,3)
         
     | 
| 324 | 
         
            +
            00019/0772 7 (256,448,3)
         
     | 
| 325 | 
         
            +
            00019/0773 7 (256,448,3)
         
     | 
| 326 | 
         
            +
            00019/0777 7 (256,448,3)
         
     | 
| 327 | 
         
            +
            00019/0795 7 (256,448,3)
         
     | 
| 328 | 
         
            +
            00019/0806 7 (256,448,3)
         
     | 
| 329 | 
         
            +
            00019/0815 7 (256,448,3)
         
     | 
| 330 | 
         
            +
            00019/0840 7 (256,448,3)
         
     | 
| 331 | 
         
            +
            00019/0844 7 (256,448,3)
         
     | 
| 332 | 
         
            +
            00019/0848 7 (256,448,3)
         
     | 
| 333 | 
         
            +
            00019/0853 7 (256,448,3)
         
     | 
| 334 | 
         
            +
            00019/0863 7 (256,448,3)
         
     | 
| 335 | 
         
            +
            00019/0888 7 (256,448,3)
         
     | 
| 336 | 
         
            +
            00019/0894 7 (256,448,3)
         
     | 
| 337 | 
         
            +
            00019/0901 7 (256,448,3)
         
     | 
| 338 | 
         
            +
            00019/0995 7 (256,448,3)
         
     | 
| 339 | 
         
            +
            00021/0030 7 (256,448,3)
         
     | 
| 340 | 
         
            +
            00021/0035 7 (256,448,3)
         
     | 
| 341 | 
         
            +
            00021/0039 7 (256,448,3)
         
     | 
| 342 | 
         
            +
            00021/0041 7 (256,448,3)
         
     | 
| 343 | 
         
            +
            00021/0044 7 (256,448,3)
         
     | 
| 344 | 
         
            +
            00021/0045 7 (256,448,3)
         
     | 
| 345 | 
         
            +
            00021/0264 7 (256,448,3)
         
     | 
| 346 | 
         
            +
            00021/0330 7 (256,448,3)
         
     | 
| 347 | 
         
            +
            00021/0332 7 (256,448,3)
         
     | 
| 348 | 
         
            +
            00021/0333 7 (256,448,3)
         
     | 
| 349 | 
         
            +
            00021/0336 7 (256,448,3)
         
     | 
| 350 | 
         
            +
            00021/0337 7 (256,448,3)
         
     | 
| 351 | 
         
            +
            00021/0338 7 (256,448,3)
         
     | 
| 352 | 
         
            +
            00021/0343 7 (256,448,3)
         
     | 
| 353 | 
         
            +
            00021/0472 7 (256,448,3)
         
     | 
| 354 | 
         
            +
            00021/0667 7 (256,448,3)
         
     | 
| 355 | 
         
            +
            00021/0731 7 (256,448,3)
         
     | 
| 356 | 
         
            +
            00021/0779 7 (256,448,3)
         
     | 
| 357 | 
         
            +
            00021/0805 7 (256,448,3)
         
     | 
| 358 | 
         
            +
            00021/0814 7 (256,448,3)
         
     | 
| 359 | 
         
            +
            00021/0818 7 (256,448,3)
         
     | 
| 360 | 
         
            +
            00021/0874 7 (256,448,3)
         
     | 
| 361 | 
         
            +
            00022/0008 7 (256,448,3)
         
     | 
| 362 | 
         
            +
            00022/0010 7 (256,448,3)
         
     | 
| 363 | 
         
            +
            00022/0231 7 (256,448,3)
         
     | 
| 364 | 
         
            +
            00022/0323 7 (256,448,3)
         
     | 
| 365 | 
         
            +
            00022/0337 7 (256,448,3)
         
     | 
| 366 | 
         
            +
            00022/0359 7 (256,448,3)
         
     | 
| 367 | 
         
            +
            00022/0377 7 (256,448,3)
         
     | 
| 368 | 
         
            +
            00022/0378 7 (256,448,3)
         
     | 
| 369 | 
         
            +
            00022/0385 7 (256,448,3)
         
     | 
| 370 | 
         
            +
            00022/0393 7 (256,448,3)
         
     | 
| 371 | 
         
            +
            00022/0424 7 (256,448,3)
         
     | 
| 372 | 
         
            +
            00022/0582 7 (256,448,3)
         
     | 
| 373 | 
         
            +
            00022/0583 7 (256,448,3)
         
     | 
| 374 | 
         
            +
            00022/0605 7 (256,448,3)
         
     | 
| 375 | 
         
            +
            00022/0632 7 (256,448,3)
         
     | 
| 376 | 
         
            +
            00022/0633 7 (256,448,3)
         
     | 
| 377 | 
         
            +
            00022/0666 7 (256,448,3)
         
     | 
| 378 | 
         
            +
            00022/0671 7 (256,448,3)
         
     | 
| 379 | 
         
            +
            00022/0673 7 (256,448,3)
         
     | 
| 380 | 
         
            +
            00022/0702 7 (256,448,3)
         
     | 
| 381 | 
         
            +
            00022/0852 7 (256,448,3)
         
     | 
| 382 | 
         
            +
            00022/0853 7 (256,448,3)
         
     | 
| 383 | 
         
            +
            00022/0971 7 (256,448,3)
         
     | 
| 384 | 
         
            +
            00023/0037 7 (256,448,3)
         
     | 
| 385 | 
         
            +
            00023/0224 7 (256,448,3)
         
     | 
| 386 | 
         
            +
            00023/0308 7 (256,448,3)
         
     | 
| 387 | 
         
            +
            00023/0393 7 (256,448,3)
         
     | 
| 388 | 
         
            +
            00023/0633 7 (256,448,3)
         
     | 
| 389 | 
         
            +
            00023/0637 7 (256,448,3)
         
     | 
| 390 | 
         
            +
            00023/0638 7 (256,448,3)
         
     | 
| 391 | 
         
            +
            00023/0770 7 (256,448,3)
         
     | 
| 392 | 
         
            +
            00023/0786 7 (256,448,3)
         
     | 
| 393 | 
         
            +
            00023/0898 7 (256,448,3)
         
     | 
| 394 | 
         
            +
            00024/0247 7 (256,448,3)
         
     | 
| 395 | 
         
            +
            00024/0251 7 (256,448,3)
         
     | 
| 396 | 
         
            +
            00024/0267 7 (256,448,3)
         
     | 
| 397 | 
         
            +
            00024/0288 7 (256,448,3)
         
     | 
| 398 | 
         
            +
            00024/0530 7 (256,448,3)
         
     | 
| 399 | 
         
            +
            00024/0569 7 (256,448,3)
         
     | 
| 400 | 
         
            +
            00024/0587 7 (256,448,3)
         
     | 
| 401 | 
         
            +
            00024/0730 7 (256,448,3)
         
     | 
| 402 | 
         
            +
            00024/0736 7 (256,448,3)
         
     | 
| 403 | 
         
            +
            00024/0742 7 (256,448,3)
         
     | 
| 404 | 
         
            +
            00024/0832 7 (256,448,3)
         
     | 
| 405 | 
         
            +
            00024/0936 7 (256,448,3)
         
     | 
| 406 | 
         
            +
            00025/0044 7 (256,448,3)
         
     | 
| 407 | 
         
            +
            00025/0047 7 (256,448,3)
         
     | 
| 408 | 
         
            +
            00025/0540 7 (256,448,3)
         
     | 
| 409 | 
         
            +
            00025/0552 7 (256,448,3)
         
     | 
| 410 | 
         
            +
            00025/0554 7 (256,448,3)
         
     | 
| 411 | 
         
            +
            00025/0559 7 (256,448,3)
         
     | 
| 412 | 
         
            +
            00025/0572 7 (256,448,3)
         
     | 
| 413 | 
         
            +
            00025/0576 7 (256,448,3)
         
     | 
| 414 | 
         
            +
            00025/0699 7 (256,448,3)
         
     | 
| 415 | 
         
            +
            00025/0709 7 (256,448,3)
         
     | 
| 416 | 
         
            +
            00025/0743 7 (256,448,3)
         
     | 
| 417 | 
         
            +
            00025/0767 7 (256,448,3)
         
     | 
| 418 | 
         
            +
            00025/0780 7 (256,448,3)
         
     | 
| 419 | 
         
            +
            00025/0782 7 (256,448,3)
         
     | 
| 420 | 
         
            +
            00025/0784 7 (256,448,3)
         
     | 
| 421 | 
         
            +
            00025/0791 7 (256,448,3)
         
     | 
| 422 | 
         
            +
            00025/0889 7 (256,448,3)
         
     | 
| 423 | 
         
            +
            00025/0890 7 (256,448,3)
         
     | 
| 424 | 
         
            +
            00025/0894 7 (256,448,3)
         
     | 
| 425 | 
         
            +
            00025/0896 7 (256,448,3)
         
     | 
| 426 | 
         
            +
            00025/0898 7 (256,448,3)
         
     | 
| 427 | 
         
            +
            00025/0905 7 (256,448,3)
         
     | 
| 428 | 
         
            +
            00025/0999 7 (256,448,3)
         
     | 
| 429 | 
         
            +
            00026/0003 7 (256,448,3)
         
     | 
| 430 | 
         
            +
            00026/0005 7 (256,448,3)
         
     | 
| 431 | 
         
            +
            00026/0011 7 (256,448,3)
         
     | 
| 432 | 
         
            +
            00026/0017 7 (256,448,3)
         
     | 
| 433 | 
         
            +
            00026/0036 7 (256,448,3)
         
     | 
| 434 | 
         
            +
            00026/0129 7 (256,448,3)
         
     | 
| 435 | 
         
            +
            00026/0131 7 (256,448,3)
         
     | 
| 436 | 
         
            +
            00026/0161 7 (256,448,3)
         
     | 
| 437 | 
         
            +
            00026/0177 7 (256,448,3)
         
     | 
| 438 | 
         
            +
            00026/0178 7 (256,448,3)
         
     | 
| 439 | 
         
            +
            00026/0180 7 (256,448,3)
         
     | 
| 440 | 
         
            +
            00026/0298 7 (256,448,3)
         
     | 
| 441 | 
         
            +
            00026/0307 7 (256,448,3)
         
     | 
| 442 | 
         
            +
            00026/0308 7 (256,448,3)
         
     | 
| 443 | 
         
            +
            00026/0312 7 (256,448,3)
         
     | 
| 444 | 
         
            +
            00026/0352 7 (256,448,3)
         
     | 
| 445 | 
         
            +
            00026/0440 7 (256,448,3)
         
     | 
| 446 | 
         
            +
            00026/0706 7 (256,448,3)
         
     | 
| 447 | 
         
            +
            00026/0708 7 (256,448,3)
         
     | 
| 448 | 
         
            +
            00026/0715 7 (256,448,3)
         
     | 
| 449 | 
         
            +
            00026/0769 7 (256,448,3)
         
     | 
| 450 | 
         
            +
            00026/0777 7 (256,448,3)
         
     | 
| 451 | 
         
            +
            00026/0779 7 (256,448,3)
         
     | 
| 452 | 
         
            +
            00026/0789 7 (256,448,3)
         
     | 
| 453 | 
         
            +
            00026/0924 7 (256,448,3)
         
     | 
| 454 | 
         
            +
            00026/0928 7 (256,448,3)
         
     | 
| 455 | 
         
            +
            00026/0932 7 (256,448,3)
         
     | 
| 456 | 
         
            +
            00026/0935 7 (256,448,3)
         
     | 
| 457 | 
         
            +
            00027/0118 7 (256,448,3)
         
     | 
| 458 | 
         
            +
            00027/0121 7 (256,448,3)
         
     | 
| 459 | 
         
            +
            00027/0155 7 (256,448,3)
         
     | 
| 460 | 
         
            +
            00027/0168 7 (256,448,3)
         
     | 
| 461 | 
         
            +
            00027/0196 7 (256,448,3)
         
     | 
| 462 | 
         
            +
            00027/0289 7 (256,448,3)
         
     | 
| 463 | 
         
            +
            00027/0294 7 (256,448,3)
         
     | 
| 464 | 
         
            +
            00027/0803 7 (256,448,3)
         
     | 
| 465 | 
         
            +
            00028/0016 7 (256,448,3)
         
     | 
| 466 | 
         
            +
            00028/0045 7 (256,448,3)
         
     | 
| 467 | 
         
            +
            00028/0063 7 (256,448,3)
         
     | 
| 468 | 
         
            +
            00028/0601 7 (256,448,3)
         
     | 
| 469 | 
         
            +
            00028/0638 7 (256,448,3)
         
     | 
| 470 | 
         
            +
            00028/0733 7 (256,448,3)
         
     | 
| 471 | 
         
            +
            00028/0736 7 (256,448,3)
         
     | 
| 472 | 
         
            +
            00028/0741 7 (256,448,3)
         
     | 
| 473 | 
         
            +
            00028/0753 7 (256,448,3)
         
     | 
| 474 | 
         
            +
            00028/0770 7 (256,448,3)
         
     | 
| 475 | 
         
            +
            00028/0771 7 (256,448,3)
         
     | 
| 476 | 
         
            +
            00028/0777 7 (256,448,3)
         
     | 
| 477 | 
         
            +
            00028/0950 7 (256,448,3)
         
     | 
| 478 | 
         
            +
            00028/0951 7 (256,448,3)
         
     | 
| 479 | 
         
            +
            00029/0048 7 (256,448,3)
         
     | 
| 480 | 
         
            +
            00029/0060 7 (256,448,3)
         
     | 
| 481 | 
         
            +
            00029/0362 7 (256,448,3)
         
     | 
| 482 | 
         
            +
            00029/0399 7 (256,448,3)
         
     | 
| 483 | 
         
            +
            00029/0404 7 (256,448,3)
         
     | 
| 484 | 
         
            +
            00029/0412 7 (256,448,3)
         
     | 
| 485 | 
         
            +
            00029/0416 7 (256,448,3)
         
     | 
| 486 | 
         
            +
            00029/0418 7 (256,448,3)
         
     | 
| 487 | 
         
            +
            00029/0428 7 (256,448,3)
         
     | 
| 488 | 
         
            +
            00030/0131 7 (256,448,3)
         
     | 
| 489 | 
         
            +
            00030/0135 7 (256,448,3)
         
     | 
| 490 | 
         
            +
            00030/0150 7 (256,448,3)
         
     | 
| 491 | 
         
            +
            00030/0245 7 (256,448,3)
         
     | 
| 492 | 
         
            +
            00030/0339 7 (256,448,3)
         
     | 
| 493 | 
         
            +
            00030/0472 7 (256,448,3)
         
     | 
| 494 | 
         
            +
            00030/0482 7 (256,448,3)
         
     | 
| 495 | 
         
            +
            00030/0500 7 (256,448,3)
         
     | 
| 496 | 
         
            +
            00030/0501 7 (256,448,3)
         
     | 
| 497 | 
         
            +
            00030/0697 7 (256,448,3)
         
     | 
| 498 | 
         
            +
            00030/0707 7 (256,448,3)
         
     | 
| 499 | 
         
            +
            00030/0733 7 (256,448,3)
         
     | 
| 500 | 
         
            +
            00030/0743 7 (256,448,3)
         
     | 
| 501 | 
         
            +
            00030/0747 7 (256,448,3)
         
     | 
| 502 | 
         
            +
            00030/0754 7 (256,448,3)
         
     | 
| 503 | 
         
            +
            00030/0755 7 (256,448,3)
         
     | 
| 504 | 
         
            +
            00030/0759 7 (256,448,3)
         
     | 
| 505 | 
         
            +
            00030/0762 7 (256,448,3)
         
     | 
| 506 | 
         
            +
            00030/0764 7 (256,448,3)
         
     | 
| 507 | 
         
            +
            00030/0767 7 (256,448,3)
         
     | 
| 508 | 
         
            +
            00030/0794 7 (256,448,3)
         
     | 
| 509 | 
         
            +
            00030/0796 7 (256,448,3)
         
     | 
| 510 | 
         
            +
            00030/0799 7 (256,448,3)
         
     | 
| 511 | 
         
            +
            00030/0814 7 (256,448,3)
         
     | 
| 512 | 
         
            +
            00030/0823 7 (256,448,3)
         
     | 
| 513 | 
         
            +
            00030/0829 7 (256,448,3)
         
     | 
| 514 | 
         
            +
            00030/0833 7 (256,448,3)
         
     | 
| 515 | 
         
            +
            00030/0848 7 (256,448,3)
         
     | 
| 516 | 
         
            +
            00030/0853 7 (256,448,3)
         
     | 
| 517 | 
         
            +
            00030/0861 7 (256,448,3)
         
     | 
| 518 | 
         
            +
            00031/0182 7 (256,448,3)
         
     | 
| 519 | 
         
            +
            00031/0275 7 (256,448,3)
         
     | 
| 520 | 
         
            +
            00031/0279 7 (256,448,3)
         
     | 
| 521 | 
         
            +
            00031/0555 7 (256,448,3)
         
     | 
| 522 | 
         
            +
            00031/0648 7 (256,448,3)
         
     | 
| 523 | 
         
            +
            00031/0663 7 (256,448,3)
         
     | 
| 524 | 
         
            +
            00031/0680 7 (256,448,3)
         
     | 
| 525 | 
         
            +
            00031/0880 7 (256,448,3)
         
     | 
| 526 | 
         
            +
            00031/0922 7 (256,448,3)
         
     | 
| 527 | 
         
            +
            00031/0925 7 (256,448,3)
         
     | 
| 528 | 
         
            +
            00031/0928 7 (256,448,3)
         
     | 
| 529 | 
         
            +
            00032/0025 7 (256,448,3)
         
     | 
| 530 | 
         
            +
            00032/0377 7 (256,448,3)
         
     | 
| 531 | 
         
            +
            00032/0378 7 (256,448,3)
         
     | 
| 532 | 
         
            +
            00032/0382 7 (256,448,3)
         
     | 
| 533 | 
         
            +
            00032/0384 7 (256,448,3)
         
     | 
| 534 | 
         
            +
            00032/0386 7 (256,448,3)
         
     | 
| 535 | 
         
            +
            00032/0389 7 (256,448,3)
         
     | 
| 536 | 
         
            +
            00032/0391 7 (256,448,3)
         
     | 
| 537 | 
         
            +
            00032/0393 7 (256,448,3)
         
     | 
| 538 | 
         
            +
            00032/0492 7 (256,448,3)
         
     | 
| 539 | 
         
            +
            00032/0497 7 (256,448,3)
         
     | 
| 540 | 
         
            +
            00032/0505 7 (256,448,3)
         
     | 
| 541 | 
         
            +
            00032/0523 7 (256,448,3)
         
     | 
| 542 | 
         
            +
            00032/0542 7 (256,448,3)
         
     | 
| 543 | 
         
            +
            00032/0544 7 (256,448,3)
         
     | 
| 544 | 
         
            +
            00032/0712 7 (256,448,3)
         
     | 
| 545 | 
         
            +
            00032/0847 7 (256,448,3)
         
     | 
| 546 | 
         
            +
            00032/0850 7 (256,448,3)
         
     | 
| 547 | 
         
            +
            00032/0875 7 (256,448,3)
         
     | 
| 548 | 
         
            +
            00033/0062 7 (256,448,3)
         
     | 
| 549 | 
         
            +
            00033/0063 7 (256,448,3)
         
     | 
| 550 | 
         
            +
            00033/0098 7 (256,448,3)
         
     | 
| 551 | 
         
            +
            00033/0101 7 (256,448,3)
         
     | 
| 552 | 
         
            +
            00033/0105 7 (256,448,3)
         
     | 
| 553 | 
         
            +
            00033/0114 7 (256,448,3)
         
     | 
| 554 | 
         
            +
            00033/0432 7 (256,448,3)
         
     | 
| 555 | 
         
            +
            00033/0441 7 (256,448,3)
         
     | 
| 556 | 
         
            +
            00033/0606 7 (256,448,3)
         
     | 
| 557 | 
         
            +
            00033/0611 7 (256,448,3)
         
     | 
| 558 | 
         
            +
            00033/0634 7 (256,448,3)
         
     | 
| 559 | 
         
            +
            00033/0787 7 (256,448,3)
         
     | 
| 560 | 
         
            +
            00033/0792 7 (256,448,3)
         
     | 
| 561 | 
         
            +
            00033/0802 7 (256,448,3)
         
     | 
| 562 | 
         
            +
            00033/0825 7 (256,448,3)
         
     | 
| 563 | 
         
            +
            00033/0835 7 (256,448,3)
         
     | 
| 564 | 
         
            +
            00034/0249 7 (256,448,3)
         
     | 
| 565 | 
         
            +
            00034/0253 7 (256,448,3)
         
     | 
| 566 | 
         
            +
            00034/0254 7 (256,448,3)
         
     | 
| 567 | 
         
            +
            00034/0282 7 (256,448,3)
         
     | 
| 568 | 
         
            +
            00034/0318 7 (256,448,3)
         
     | 
| 569 | 
         
            +
            00034/0319 7 (256,448,3)
         
     | 
| 570 | 
         
            +
            00034/0323 7 (256,448,3)
         
     | 
| 571 | 
         
            +
            00034/0336 7 (256,448,3)
         
     | 
| 572 | 
         
            +
            00034/0348 7 (256,448,3)
         
     | 
| 573 | 
         
            +
            00034/0356 7 (256,448,3)
         
     | 
| 574 | 
         
            +
            00034/0379 7 (256,448,3)
         
     | 
| 575 | 
         
            +
            00034/0387 7 (256,448,3)
         
     | 
| 576 | 
         
            +
            00034/0575 7 (256,448,3)
         
     | 
| 577 | 
         
            +
            00034/0608 7 (256,448,3)
         
     | 
| 578 | 
         
            +
            00034/0663 7 (256,448,3)
         
     | 
| 579 | 
         
            +
            00034/0811 7 (256,448,3)
         
     | 
| 580 | 
         
            +
            00034/0812 7 (256,448,3)
         
     | 
| 581 | 
         
            +
            00034/0946 7 (256,448,3)
         
     | 
| 582 | 
         
            +
            00034/0948 7 (256,448,3)
         
     | 
| 583 | 
         
            +
            00034/0950 7 (256,448,3)
         
     | 
| 584 | 
         
            +
            00035/0204 7 (256,448,3)
         
     | 
| 585 | 
         
            +
            00035/0243 7 (256,448,3)
         
     | 
| 586 | 
         
            +
            00035/0308 7 (256,448,3)
         
     | 
| 587 | 
         
            +
            00035/0465 7 (256,448,3)
         
     | 
| 588 | 
         
            +
            00035/0478 7 (256,448,3)
         
     | 
| 589 | 
         
            +
            00035/0523 7 (256,448,3)
         
     | 
| 590 | 
         
            +
            00035/0540 7 (256,448,3)
         
     | 
| 591 | 
         
            +
            00035/0544 7 (256,448,3)
         
     | 
| 592 | 
         
            +
            00035/0556 7 (256,448,3)
         
     | 
| 593 | 
         
            +
            00035/0568 7 (256,448,3)
         
     | 
| 594 | 
         
            +
            00035/0570 7 (256,448,3)
         
     | 
| 595 | 
         
            +
            00035/0609 7 (256,448,3)
         
     | 
| 596 | 
         
            +
            00035/0643 7 (256,448,3)
         
     | 
| 597 | 
         
            +
            00035/0644 7 (256,448,3)
         
     | 
| 598 | 
         
            +
            00035/0645 7 (256,448,3)
         
     | 
| 599 | 
         
            +
            00035/0646 7 (256,448,3)
         
     | 
| 600 | 
         
            +
            00035/0650 7 (256,448,3)
         
     | 
| 601 | 
         
            +
            00035/0661 7 (256,448,3)
         
     | 
| 602 | 
         
            +
            00035/0724 7 (256,448,3)
         
     | 
| 603 | 
         
            +
            00035/0725 7 (256,448,3)
         
     | 
| 604 | 
         
            +
            00035/0850 7 (256,448,3)
         
     | 
| 605 | 
         
            +
            00035/0863 7 (256,448,3)
         
     | 
| 606 | 
         
            +
            00035/0870 7 (256,448,3)
         
     | 
| 607 | 
         
            +
            00035/0951 7 (256,448,3)
         
     | 
| 608 | 
         
            +
            00036/0038 7 (256,448,3)
         
     | 
| 609 | 
         
            +
            00036/0062 7 (256,448,3)
         
     | 
| 610 | 
         
            +
            00036/0423 7 (256,448,3)
         
     | 
| 611 | 
         
            +
            00036/0737 7 (256,448,3)
         
     | 
| 612 | 
         
            +
            00036/0750 7 (256,448,3)
         
     | 
| 613 | 
         
            +
            00036/0751 7 (256,448,3)
         
     | 
| 614 | 
         
            +
            00036/0754 7 (256,448,3)
         
     | 
| 615 | 
         
            +
            00036/0929 7 (256,448,3)
         
     | 
| 616 | 
         
            +
            00037/0085 7 (256,448,3)
         
     | 
| 617 | 
         
            +
            00037/0113 7 (256,448,3)
         
     | 
| 618 | 
         
            +
            00037/0130 7 (256,448,3)
         
     | 
| 619 | 
         
            +
            00037/0153 7 (256,448,3)
         
     | 
| 620 | 
         
            +
            00037/0169 7 (256,448,3)
         
     | 
| 621 | 
         
            +
            00037/0263 7 (256,448,3)
         
     | 
| 622 | 
         
            +
            00037/0272 7 (256,448,3)
         
     | 
| 623 | 
         
            +
            00037/0273 7 (256,448,3)
         
     | 
| 624 | 
         
            +
            00037/0275 7 (256,448,3)
         
     | 
| 625 | 
         
            +
            00037/0280 7 (256,448,3)
         
     | 
| 626 | 
         
            +
            00037/0399 7 (256,448,3)
         
     | 
| 627 | 
         
            +
            00037/0456 7 (256,448,3)
         
     | 
| 628 | 
         
            +
            00037/0853 7 (256,448,3)
         
     | 
| 629 | 
         
            +
            00037/0855 7 (256,448,3)
         
     | 
| 630 | 
         
            +
            00037/0856 7 (256,448,3)
         
     | 
| 631 | 
         
            +
            00037/0857 7 (256,448,3)
         
     | 
| 632 | 
         
            +
            00037/0925 7 (256,448,3)
         
     | 
| 633 | 
         
            +
            00037/0947 7 (256,448,3)
         
     | 
| 634 | 
         
            +
            00038/0148 7 (256,448,3)
         
     | 
| 635 | 
         
            +
            00038/0533 7 (256,448,3)
         
     | 
| 636 | 
         
            +
            00038/0534 7 (256,448,3)
         
     | 
| 637 | 
         
            +
            00038/0560 7 (256,448,3)
         
     | 
| 638 | 
         
            +
            00038/0562 7 (256,448,3)
         
     | 
| 639 | 
         
            +
            00038/0566 7 (256,448,3)
         
     | 
| 640 | 
         
            +
            00038/0578 7 (256,448,3)
         
     | 
| 641 | 
         
            +
            00038/0652 7 (256,448,3)
         
     | 
| 642 | 
         
            +
            00038/0674 7 (256,448,3)
         
     | 
| 643 | 
         
            +
            00038/0685 7 (256,448,3)
         
     | 
| 644 | 
         
            +
            00038/0686 7 (256,448,3)
         
     | 
| 645 | 
         
            +
            00038/0692 7 (256,448,3)
         
     | 
| 646 | 
         
            +
            00038/0736 7 (256,448,3)
         
     | 
| 647 | 
         
            +
            00039/0035 7 (256,448,3)
         
     | 
| 648 | 
         
            +
            00039/0105 7 (256,448,3)
         
     | 
| 649 | 
         
            +
            00039/0109 7 (256,448,3)
         
     | 
| 650 | 
         
            +
            00039/0121 7 (256,448,3)
         
     | 
| 651 | 
         
            +
            00039/0128 7 (256,448,3)
         
     | 
| 652 | 
         
            +
            00039/0129 7 (256,448,3)
         
     | 
| 653 | 
         
            +
            00039/0132 7 (256,448,3)
         
     | 
| 654 | 
         
            +
            00039/0137 7 (256,448,3)
         
     | 
| 655 | 
         
            +
            00039/0157 7 (256,448,3)
         
     | 
| 656 | 
         
            +
            00039/0496 7 (256,448,3)
         
     | 
| 657 | 
         
            +
            00039/0502 7 (256,448,3)
         
     | 
| 658 | 
         
            +
            00039/0526 7 (256,448,3)
         
     | 
| 659 | 
         
            +
            00039/0529 7 (256,448,3)
         
     | 
| 660 | 
         
            +
            00039/0682 7 (256,448,3)
         
     | 
| 661 | 
         
            +
            00039/0690 7 (256,448,3)
         
     | 
| 662 | 
         
            +
            00039/0693 7 (256,448,3)
         
     | 
| 663 | 
         
            +
            00039/0703 7 (256,448,3)
         
     | 
| 664 | 
         
            +
            00039/0725 7 (256,448,3)
         
     | 
| 665 | 
         
            +
            00039/0734 7 (256,448,3)
         
     | 
| 666 | 
         
            +
            00040/0518 7 (256,448,3)
         
     | 
| 667 | 
         
            +
            00040/0728 7 (256,448,3)
         
     | 
| 668 | 
         
            +
            00040/0774 7 (256,448,3)
         
     | 
| 669 | 
         
            +
            00040/0812 7 (256,448,3)
         
     | 
| 670 | 
         
            +
            00040/0818 7 (256,448,3)
         
     | 
| 671 | 
         
            +
            00040/0827 7 (256,448,3)
         
     | 
| 672 | 
         
            +
            00040/0914 7 (256,448,3)
         
     | 
| 673 | 
         
            +
            00040/0917 7 (256,448,3)
         
     | 
| 674 | 
         
            +
            00040/0918 7 (256,448,3)
         
     | 
| 675 | 
         
            +
            00040/0924 7 (256,448,3)
         
     | 
| 676 | 
         
            +
            00040/0925 7 (256,448,3)
         
     | 
| 677 | 
         
            +
            00041/0004 7 (256,448,3)
         
     | 
| 678 | 
         
            +
            00041/0006 7 (256,448,3)
         
     | 
| 679 | 
         
            +
            00041/0013 7 (256,448,3)
         
     | 
| 680 | 
         
            +
            00041/0059 7 (256,448,3)
         
     | 
| 681 | 
         
            +
            00041/0110 7 (256,448,3)
         
     | 
| 682 | 
         
            +
            00041/0291 7 (256,448,3)
         
     | 
| 683 | 
         
            +
            00041/0366 7 (256,448,3)
         
     | 
| 684 | 
         
            +
            00041/0388 7 (256,448,3)
         
     | 
| 685 | 
         
            +
            00041/0434 7 (256,448,3)
         
     | 
| 686 | 
         
            +
            00041/0436 7 (256,448,3)
         
     | 
| 687 | 
         
            +
            00041/0450 7 (256,448,3)
         
     | 
| 688 | 
         
            +
            00041/0457 7 (256,448,3)
         
     | 
| 689 | 
         
            +
            00041/0460 7 (256,448,3)
         
     | 
| 690 | 
         
            +
            00041/0468 7 (256,448,3)
         
     | 
| 691 | 
         
            +
            00041/0471 7 (256,448,3)
         
     | 
| 692 | 
         
            +
            00041/0474 7 (256,448,3)
         
     | 
| 693 | 
         
            +
            00041/0809 7 (256,448,3)
         
     | 
| 694 | 
         
            +
            00041/0844 7 (256,448,3)
         
     | 
| 695 | 
         
            +
            00041/0858 7 (256,448,3)
         
     | 
| 696 | 
         
            +
            00041/0874 7 (256,448,3)
         
     | 
| 697 | 
         
            +
            00041/0876 7 (256,448,3)
         
     | 
| 698 | 
         
            +
            00042/0020 7 (256,448,3)
         
     | 
| 699 | 
         
            +
            00042/0205 7 (256,448,3)
         
     | 
| 700 | 
         
            +
            00042/0206 7 (256,448,3)
         
     | 
| 701 | 
         
            +
            00042/0432 7 (256,448,3)
         
     | 
| 702 | 
         
            +
            00042/0563 7 (256,448,3)
         
     | 
| 703 | 
         
            +
            00042/0569 7 (256,448,3)
         
     | 
| 704 | 
         
            +
            00042/0575 7 (256,448,3)
         
     | 
| 705 | 
         
            +
            00042/0576 7 (256,448,3)
         
     | 
| 706 | 
         
            +
            00042/0888 7 (256,448,3)
         
     | 
| 707 | 
         
            +
            00042/0892 7 (256,448,3)
         
     | 
| 708 | 
         
            +
            00042/0943 7 (256,448,3)
         
     | 
| 709 | 
         
            +
            00042/0944 7 (256,448,3)
         
     | 
| 710 | 
         
            +
            00043/0126 7 (256,448,3)
         
     | 
| 711 | 
         
            +
            00043/0130 7 (256,448,3)
         
     | 
| 712 | 
         
            +
            00043/0136 7 (256,448,3)
         
     | 
| 713 | 
         
            +
            00043/0233 7 (256,448,3)
         
     | 
| 714 | 
         
            +
            00043/0235 7 (256,448,3)
         
     | 
| 715 | 
         
            +
            00043/0237 7 (256,448,3)
         
     | 
| 716 | 
         
            +
            00043/0277 7 (256,448,3)
         
     | 
| 717 | 
         
            +
            00043/0301 7 (256,448,3)
         
     | 
| 718 | 
         
            +
            00043/0302 7 (256,448,3)
         
     | 
| 719 | 
         
            +
            00043/0303 7 (256,448,3)
         
     | 
| 720 | 
         
            +
            00043/0308 7 (256,448,3)
         
     | 
| 721 | 
         
            +
            00043/0309 7 (256,448,3)
         
     | 
| 722 | 
         
            +
            00043/0314 7 (256,448,3)
         
     | 
| 723 | 
         
            +
            00043/0713 7 (256,448,3)
         
     | 
| 724 | 
         
            +
            00043/0715 7 (256,448,3)
         
     | 
| 725 | 
         
            +
            00043/0923 7 (256,448,3)
         
     | 
| 726 | 
         
            +
            00044/0095 7 (256,448,3)
         
     | 
| 727 | 
         
            +
            00044/0255 7 (256,448,3)
         
     | 
| 728 | 
         
            +
            00044/0864 7 (256,448,3)
         
     | 
| 729 | 
         
            +
            00044/0892 7 (256,448,3)
         
     | 
| 730 | 
         
            +
            00044/0898 7 (256,448,3)
         
     | 
| 731 | 
         
            +
            00044/0993 7 (256,448,3)
         
     | 
| 732 | 
         
            +
            00044/0995 7 (256,448,3)
         
     | 
| 733 | 
         
            +
            00044/0997 7 (256,448,3)
         
     | 
| 734 | 
         
            +
            00045/0001 7 (256,448,3)
         
     | 
| 735 | 
         
            +
            00045/0006 7 (256,448,3)
         
     | 
| 736 | 
         
            +
            00045/0269 7 (256,448,3)
         
     | 
| 737 | 
         
            +
            00045/0276 7 (256,448,3)
         
     | 
| 738 | 
         
            +
            00045/0280 7 (256,448,3)
         
     | 
| 739 | 
         
            +
            00045/0281 7 (256,448,3)
         
     | 
| 740 | 
         
            +
            00045/0282 7 (256,448,3)
         
     | 
| 741 | 
         
            +
            00045/0284 7 (256,448,3)
         
     | 
| 742 | 
         
            +
            00045/0550 7 (256,448,3)
         
     | 
| 743 | 
         
            +
            00045/0571 7 (256,448,3)
         
     | 
| 744 | 
         
            +
            00045/0629 7 (256,448,3)
         
     | 
| 745 | 
         
            +
            00045/0631 7 (256,448,3)
         
     | 
| 746 | 
         
            +
            00045/0659 7 (256,448,3)
         
     | 
| 747 | 
         
            +
            00045/0693 7 (256,448,3)
         
     | 
| 748 | 
         
            +
            00045/0807 7 (256,448,3)
         
     | 
| 749 | 
         
            +
            00045/0810 7 (256,448,3)
         
     | 
| 750 | 
         
            +
            00045/0826 7 (256,448,3)
         
     | 
| 751 | 
         
            +
            00045/0849 7 (256,448,3)
         
     | 
| 752 | 
         
            +
            00045/0946 7 (256,448,3)
         
     | 
| 753 | 
         
            +
            00045/0987 7 (256,448,3)
         
     | 
| 754 | 
         
            +
            00045/0990 7 (256,448,3)
         
     | 
| 755 | 
         
            +
            00046/0104 7 (256,448,3)
         
     | 
| 756 | 
         
            +
            00046/0477 7 (256,448,3)
         
     | 
| 757 | 
         
            +
            00046/0490 7 (256,448,3)
         
     | 
| 758 | 
         
            +
            00046/0491 7 (256,448,3)
         
     | 
| 759 | 
         
            +
            00046/0509 7 (256,448,3)
         
     | 
| 760 | 
         
            +
            00046/0513 7 (256,448,3)
         
     | 
| 761 | 
         
            +
            00046/0603 7 (256,448,3)
         
     | 
| 762 | 
         
            +
            00046/0723 7 (256,448,3)
         
     | 
| 763 | 
         
            +
            00046/0744 7 (256,448,3)
         
     | 
| 764 | 
         
            +
            00046/0746 7 (256,448,3)
         
     | 
| 765 | 
         
            +
            00046/0750 7 (256,448,3)
         
     | 
| 766 | 
         
            +
            00046/0852 7 (256,448,3)
         
     | 
| 767 | 
         
            +
            00046/0927 7 (256,448,3)
         
     | 
| 768 | 
         
            +
            00046/0928 7 (256,448,3)
         
     | 
| 769 | 
         
            +
            00046/0929 7 (256,448,3)
         
     | 
| 770 | 
         
            +
            00046/0931 7 (256,448,3)
         
     | 
| 771 | 
         
            +
            00046/0936 7 (256,448,3)
         
     | 
| 772 | 
         
            +
            00046/0939 7 (256,448,3)
         
     | 
| 773 | 
         
            +
            00046/0947 7 (256,448,3)
         
     | 
| 774 | 
         
            +
            00046/0948 7 (256,448,3)
         
     | 
| 775 | 
         
            +
            00046/0950 7 (256,448,3)
         
     | 
| 776 | 
         
            +
            00046/0955 7 (256,448,3)
         
     | 
| 777 | 
         
            +
            00046/0961 7 (256,448,3)
         
     | 
| 778 | 
         
            +
            00047/0023 7 (256,448,3)
         
     | 
| 779 | 
         
            +
            00047/0029 7 (256,448,3)
         
     | 
| 780 | 
         
            +
            00047/0035 7 (256,448,3)
         
     | 
| 781 | 
         
            +
            00047/0058 7 (256,448,3)
         
     | 
| 782 | 
         
            +
            00047/0061 7 (256,448,3)
         
     | 
| 783 | 
         
            +
            00047/0065 7 (256,448,3)
         
     | 
| 784 | 
         
            +
            00047/0068 7 (256,448,3)
         
     | 
| 785 | 
         
            +
            00047/0072 7 (256,448,3)
         
     | 
| 786 | 
         
            +
            00047/0074 7 (256,448,3)
         
     | 
| 787 | 
         
            +
            00047/0148 7 (256,448,3)
         
     | 
| 788 | 
         
            +
            00047/0594 7 (256,448,3)
         
     | 
| 789 | 
         
            +
            00047/0782 7 (256,448,3)
         
     | 
| 790 | 
         
            +
            00047/0787 7 (256,448,3)
         
     | 
| 791 | 
         
            +
            00047/0860 7 (256,448,3)
         
     | 
| 792 | 
         
            +
            00047/0889 7 (256,448,3)
         
     | 
| 793 | 
         
            +
            00047/0893 7 (256,448,3)
         
     | 
| 794 | 
         
            +
            00047/0894 7 (256,448,3)
         
     | 
| 795 | 
         
            +
            00047/0902 7 (256,448,3)
         
     | 
| 796 | 
         
            +
            00047/0975 7 (256,448,3)
         
     | 
| 797 | 
         
            +
            00047/0995 7 (256,448,3)
         
     | 
| 798 | 
         
            +
            00048/0033 7 (256,448,3)
         
     | 
| 799 | 
         
            +
            00048/0113 7 (256,448,3)
         
     | 
| 800 | 
         
            +
            00048/0115 7 (256,448,3)
         
     | 
| 801 | 
         
            +
            00048/0120 7 (256,448,3)
         
     | 
| 802 | 
         
            +
            00048/0129 7 (256,448,3)
         
     | 
| 803 | 
         
            +
            00048/0136 7 (256,448,3)
         
     | 
| 804 | 
         
            +
            00048/0327 7 (256,448,3)
         
     | 
| 805 | 
         
            +
            00048/0329 7 (256,448,3)
         
     | 
| 806 | 
         
            +
            00048/0341 7 (256,448,3)
         
     | 
| 807 | 
         
            +
            00048/0343 7 (256,448,3)
         
     | 
| 808 | 
         
            +
            00048/0345 7 (256,448,3)
         
     | 
| 809 | 
         
            +
            00048/0346 7 (256,448,3)
         
     | 
| 810 | 
         
            +
            00048/0355 7 (256,448,3)
         
     | 
| 811 | 
         
            +
            00048/0359 7 (256,448,3)
         
     | 
| 812 | 
         
            +
            00048/0363 7 (256,448,3)
         
     | 
| 813 | 
         
            +
            00048/0378 7 (256,448,3)
         
     | 
| 814 | 
         
            +
            00048/0386 7 (256,448,3)
         
     | 
| 815 | 
         
            +
            00048/0387 7 (256,448,3)
         
     | 
| 816 | 
         
            +
            00048/0388 7 (256,448,3)
         
     | 
| 817 | 
         
            +
            00048/0428 7 (256,448,3)
         
     | 
| 818 | 
         
            +
            00048/0439 7 (256,448,3)
         
     | 
| 819 | 
         
            +
            00048/0507 7 (256,448,3)
         
     | 
| 820 | 
         
            +
            00048/0510 7 (256,448,3)
         
     | 
| 821 | 
         
            +
            00048/0512 7 (256,448,3)
         
     | 
| 822 | 
         
            +
            00048/0514 7 (256,448,3)
         
     | 
| 823 | 
         
            +
            00048/0539 7 (256,448,3)
         
     | 
| 824 | 
         
            +
            00048/0542 7 (256,448,3)
         
     | 
| 825 | 
         
            +
            00048/0544 7 (256,448,3)
         
     | 
| 826 | 
         
            +
            00048/0631 7 (256,448,3)
         
     | 
| 827 | 
         
            +
            00048/0632 7 (256,448,3)
         
     | 
| 828 | 
         
            +
            00048/0636 7 (256,448,3)
         
     | 
| 829 | 
         
            +
            00048/0640 7 (256,448,3)
         
     | 
| 830 | 
         
            +
            00048/0644 7 (256,448,3)
         
     | 
| 831 | 
         
            +
            00048/0653 7 (256,448,3)
         
     | 
| 832 | 
         
            +
            00048/0655 7 (256,448,3)
         
     | 
| 833 | 
         
            +
            00048/0658 7 (256,448,3)
         
     | 
| 834 | 
         
            +
            00048/0667 7 (256,448,3)
         
     | 
| 835 | 
         
            +
            00048/0688 7 (256,448,3)
         
     | 
| 836 | 
         
            +
            00048/0708 7 (256,448,3)
         
     | 
| 837 | 
         
            +
            00049/0005 7 (256,448,3)
         
     | 
| 838 | 
         
            +
            00049/0074 7 (256,448,3)
         
     | 
| 839 | 
         
            +
            00049/0077 7 (256,448,3)
         
     | 
| 840 | 
         
            +
            00049/0084 7 (256,448,3)
         
     | 
| 841 | 
         
            +
            00049/0516 7 (256,448,3)
         
     | 
| 842 | 
         
            +
            00049/0800 7 (256,448,3)
         
     | 
| 843 | 
         
            +
            00049/0900 7 (256,448,3)
         
     | 
| 844 | 
         
            +
            00050/0607 7 (256,448,3)
         
     | 
| 845 | 
         
            +
            00050/0661 7 (256,448,3)
         
     | 
| 846 | 
         
            +
            00050/0665 7 (256,448,3)
         
     | 
| 847 | 
         
            +
            00050/0685 7 (256,448,3)
         
     | 
| 848 | 
         
            +
            00050/0711 7 (256,448,3)
         
     | 
| 849 | 
         
            +
            00051/0068 7 (256,448,3)
         
     | 
| 850 | 
         
            +
            00051/0069 7 (256,448,3)
         
     | 
| 851 | 
         
            +
            00051/0076 7 (256,448,3)
         
     | 
| 852 | 
         
            +
            00051/0569 7 (256,448,3)
         
     | 
| 853 | 
         
            +
            00051/0801 7 (256,448,3)
         
     | 
| 854 | 
         
            +
            00051/0927 7 (256,448,3)
         
     | 
| 855 | 
         
            +
            00051/0945 7 (256,448,3)
         
     | 
| 856 | 
         
            +
            00051/0952 7 (256,448,3)
         
     | 
| 857 | 
         
            +
            00051/0976 7 (256,448,3)
         
     | 
| 858 | 
         
            +
            00051/0985 7 (256,448,3)
         
     | 
| 859 | 
         
            +
            00052/0012 7 (256,448,3)
         
     | 
| 860 | 
         
            +
            00052/0015 7 (256,448,3)
         
     | 
| 861 | 
         
            +
            00052/0052 7 (256,448,3)
         
     | 
| 862 | 
         
            +
            00052/0056 7 (256,448,3)
         
     | 
| 863 | 
         
            +
            00052/0060 7 (256,448,3)
         
     | 
| 864 | 
         
            +
            00052/0157 7 (256,448,3)
         
     | 
| 865 | 
         
            +
            00052/0265 7 (256,448,3)
         
     | 
| 866 | 
         
            +
            00052/0788 7 (256,448,3)
         
     | 
| 867 | 
         
            +
            00052/0790 7 (256,448,3)
         
     | 
| 868 | 
         
            +
            00052/0793 7 (256,448,3)
         
     | 
| 869 | 
         
            +
            00052/0816 7 (256,448,3)
         
     | 
| 870 | 
         
            +
            00052/0824 7 (256,448,3)
         
     | 
| 871 | 
         
            +
            00052/0918 7 (256,448,3)
         
     | 
| 872 | 
         
            +
            00052/0933 7 (256,448,3)
         
     | 
| 873 | 
         
            +
            00052/0947 7 (256,448,3)
         
     | 
| 874 | 
         
            +
            00053/0232 7 (256,448,3)
         
     | 
| 875 | 
         
            +
            00053/0277 7 (256,448,3)
         
     | 
| 876 | 
         
            +
            00053/0362 7 (256,448,3)
         
     | 
| 877 | 
         
            +
            00053/0577 7 (256,448,3)
         
     | 
| 878 | 
         
            +
            00053/0609 7 (256,448,3)
         
     | 
| 879 | 
         
            +
            00053/0612 7 (256,448,3)
         
     | 
| 880 | 
         
            +
            00053/0628 7 (256,448,3)
         
     | 
| 881 | 
         
            +
            00053/0629 7 (256,448,3)
         
     | 
| 882 | 
         
            +
            00053/0633 7 (256,448,3)
         
     | 
| 883 | 
         
            +
            00053/0659 7 (256,448,3)
         
     | 
| 884 | 
         
            +
            00053/0667 7 (256,448,3)
         
     | 
| 885 | 
         
            +
            00053/0671 7 (256,448,3)
         
     | 
| 886 | 
         
            +
            00053/0797 7 (256,448,3)
         
     | 
| 887 | 
         
            +
            00053/0804 7 (256,448,3)
         
     | 
| 888 | 
         
            +
            00053/0807 7 (256,448,3)
         
     | 
| 889 | 
         
            +
            00053/0952 7 (256,448,3)
         
     | 
| 890 | 
         
            +
            00053/0970 7 (256,448,3)
         
     | 
| 891 | 
         
            +
            00053/0981 7 (256,448,3)
         
     | 
| 892 | 
         
            +
            00053/0999 7 (256,448,3)
         
     | 
| 893 | 
         
            +
            00054/0003 7 (256,448,3)
         
     | 
| 894 | 
         
            +
            00054/0013 7 (256,448,3)
         
     | 
| 895 | 
         
            +
            00054/0020 7 (256,448,3)
         
     | 
| 896 | 
         
            +
            00054/0022 7 (256,448,3)
         
     | 
| 897 | 
         
            +
            00054/0023 7 (256,448,3)
         
     | 
| 898 | 
         
            +
            00054/0044 7 (256,448,3)
         
     | 
| 899 | 
         
            +
            00054/0051 7 (256,448,3)
         
     | 
| 900 | 
         
            +
            00054/0063 7 (256,448,3)
         
     | 
| 901 | 
         
            +
            00054/0065 7 (256,448,3)
         
     | 
| 902 | 
         
            +
            00054/0145 7 (256,448,3)
         
     | 
| 903 | 
         
            +
            00054/0153 7 (256,448,3)
         
     | 
| 904 | 
         
            +
            00054/0203 7 (256,448,3)
         
     | 
| 905 | 
         
            +
            00054/0325 7 (256,448,3)
         
     | 
| 906 | 
         
            +
            00054/0445 7 (256,448,3)
         
     | 
| 907 | 
         
            +
            00054/0448 7 (256,448,3)
         
     | 
| 908 | 
         
            +
            00054/0456 7 (256,448,3)
         
     | 
| 909 | 
         
            +
            00054/0457 7 (256,448,3)
         
     | 
| 910 | 
         
            +
            00054/0519 7 (256,448,3)
         
     | 
| 911 | 
         
            +
            00054/0524 7 (256,448,3)
         
     | 
| 912 | 
         
            +
            00054/0530 7 (256,448,3)
         
     | 
| 913 | 
         
            +
            00054/0532 7 (256,448,3)
         
     | 
| 914 | 
         
            +
            00054/0535 7 (256,448,3)
         
     | 
| 915 | 
         
            +
            00054/0574 7 (256,448,3)
         
     | 
| 916 | 
         
            +
            00054/0760 7 (256,448,3)
         
     | 
| 917 | 
         
            +
            00054/0767 7 (256,448,3)
         
     | 
| 918 | 
         
            +
            00054/0837 7 (256,448,3)
         
     | 
| 919 | 
         
            +
            00055/0011 7 (256,448,3)
         
     | 
| 920 | 
         
            +
            00055/0109 7 (256,448,3)
         
     | 
| 921 | 
         
            +
            00055/0111 7 (256,448,3)
         
     | 
| 922 | 
         
            +
            00055/0117 7 (256,448,3)
         
     | 
| 923 | 
         
            +
            00055/0119 7 (256,448,3)
         
     | 
| 924 | 
         
            +
            00055/0182 7 (256,448,3)
         
     | 
| 925 | 
         
            +
            00055/0192 7 (256,448,3)
         
     | 
| 926 | 
         
            +
            00055/0193 7 (256,448,3)
         
     | 
| 927 | 
         
            +
            00055/0200 7 (256,448,3)
         
     | 
| 928 | 
         
            +
            00055/0204 7 (256,448,3)
         
     | 
| 929 | 
         
            +
            00055/0207 7 (256,448,3)
         
     | 
| 930 | 
         
            +
            00055/0212 7 (256,448,3)
         
     | 
| 931 | 
         
            +
            00055/0213 7 (256,448,3)
         
     | 
| 932 | 
         
            +
            00055/0348 7 (256,448,3)
         
     | 
| 933 | 
         
            +
            00055/0423 7 (256,448,3)
         
     | 
| 934 | 
         
            +
            00055/0427 7 (256,448,3)
         
     | 
| 935 | 
         
            +
            00055/0456 7 (256,448,3)
         
     | 
| 936 | 
         
            +
            00055/0489 7 (256,448,3)
         
     | 
| 937 | 
         
            +
            00055/0689 7 (256,448,3)
         
     | 
| 938 | 
         
            +
            00055/0753 7 (256,448,3)
         
     | 
| 939 | 
         
            +
            00055/0802 7 (256,448,3)
         
     | 
| 940 | 
         
            +
            00055/0844 7 (256,448,3)
         
     | 
| 941 | 
         
            +
            00055/0850 7 (256,448,3)
         
     | 
| 942 | 
         
            +
            00055/0982 7 (256,448,3)
         
     | 
| 943 | 
         
            +
            00055/0993 7 (256,448,3)
         
     | 
| 944 | 
         
            +
            00056/0113 7 (256,448,3)
         
     | 
| 945 | 
         
            +
            00056/0148 7 (256,448,3)
         
     | 
| 946 | 
         
            +
            00056/0151 7 (256,448,3)
         
     | 
| 947 | 
         
            +
            00056/0316 7 (256,448,3)
         
     | 
| 948 | 
         
            +
            00056/0379 7 (256,448,3)
         
     | 
| 949 | 
         
            +
            00056/0380 7 (256,448,3)
         
     | 
| 950 | 
         
            +
            00056/0385 7 (256,448,3)
         
     | 
| 951 | 
         
            +
            00056/0505 7 (256,448,3)
         
     | 
| 952 | 
         
            +
            00056/0579 7 (256,448,3)
         
     | 
| 953 | 
         
            +
            00057/0254 7 (256,448,3)
         
     | 
| 954 | 
         
            +
            00057/0264 7 (256,448,3)
         
     | 
| 955 | 
         
            +
            00057/0272 7 (256,448,3)
         
     | 
| 956 | 
         
            +
            00057/0403 7 (256,448,3)
         
     | 
| 957 | 
         
            +
            00057/0501 7 (256,448,3)
         
     | 
| 958 | 
         
            +
            00057/0503 7 (256,448,3)
         
     | 
| 959 | 
         
            +
            00057/0884 7 (256,448,3)
         
     | 
| 960 | 
         
            +
            00058/0026 7 (256,448,3)
         
     | 
| 961 | 
         
            +
            00058/0029 7 (256,448,3)
         
     | 
| 962 | 
         
            +
            00058/0104 7 (256,448,3)
         
     | 
| 963 | 
         
            +
            00058/0124 7 (256,448,3)
         
     | 
| 964 | 
         
            +
            00058/0162 7 (256,448,3)
         
     | 
| 965 | 
         
            +
            00058/0288 7 (256,448,3)
         
     | 
| 966 | 
         
            +
            00058/0289 7 (256,448,3)
         
     | 
| 967 | 
         
            +
            00058/0323 7 (256,448,3)
         
     | 
| 968 | 
         
            +
            00058/0328 7 (256,448,3)
         
     | 
| 969 | 
         
            +
            00058/0329 7 (256,448,3)
         
     | 
| 970 | 
         
            +
            00058/0337 7 (256,448,3)
         
     | 
| 971 | 
         
            +
            00058/0367 7 (256,448,3)
         
     | 
| 972 | 
         
            +
            00058/0383 7 (256,448,3)
         
     | 
| 973 | 
         
            +
            00058/0395 7 (256,448,3)
         
     | 
| 974 | 
         
            +
            00060/0178 7 (256,448,3)
         
     | 
| 975 | 
         
            +
            00060/0182 7 (256,448,3)
         
     | 
| 976 | 
         
            +
            00061/0001 7 (256,448,3)
         
     | 
| 977 | 
         
            +
            00061/0003 7 (256,448,3)
         
     | 
| 978 | 
         
            +
            00061/0006 7 (256,448,3)
         
     | 
| 979 | 
         
            +
            00061/0443 7 (256,448,3)
         
     | 
| 980 | 
         
            +
            00061/0586 7 (256,448,3)
         
     | 
| 981 | 
         
            +
            00061/0587 7 (256,448,3)
         
     | 
| 982 | 
         
            +
            00061/0774 7 (256,448,3)
         
     | 
| 983 | 
         
            +
            00061/0789 7 (256,448,3)
         
     | 
| 984 | 
         
            +
            00061/0815 7 (256,448,3)
         
     | 
| 985 | 
         
            +
            00061/0817 7 (256,448,3)
         
     | 
| 986 | 
         
            +
            00061/0826 7 (256,448,3)
         
     | 
| 987 | 
         
            +
            00061/0829 7 (256,448,3)
         
     | 
| 988 | 
         
            +
            00061/0830 7 (256,448,3)
         
     | 
| 989 | 
         
            +
            00061/0832 7 (256,448,3)
         
     | 
| 990 | 
         
            +
            00061/0833 7 (256,448,3)
         
     | 
| 991 | 
         
            +
            00061/0836 7 (256,448,3)
         
     | 
| 992 | 
         
            +
            00061/0837 7 (256,448,3)
         
     | 
| 993 | 
         
            +
            00061/0839 7 (256,448,3)
         
     | 
| 994 | 
         
            +
            00061/0843 7 (256,448,3)
         
     | 
| 995 | 
         
            +
            00061/0849 7 (256,448,3)
         
     | 
| 996 | 
         
            +
            00061/0859 7 (256,448,3)
         
     | 
| 997 | 
         
            +
            00061/0861 7 (256,448,3)
         
     | 
| 998 | 
         
            +
            00061/0868 7 (256,448,3)
         
     | 
| 999 | 
         
            +
            00061/0877 7 (256,448,3)
         
     | 
| 1000 | 
         
            +
            00061/0889 7 (256,448,3)
         
     | 
| 1001 | 
         
            +
            00061/0905 7 (256,448,3)
         
     | 
| 1002 | 
         
            +
            00062/0115 7 (256,448,3)
         
     | 
| 1003 | 
         
            +
            00062/0118 7 (256,448,3)
         
     | 
| 1004 | 
         
            +
            00062/0125 7 (256,448,3)
         
     | 
| 1005 | 
         
            +
            00062/0134 7 (256,448,3)
         
     | 
| 1006 | 
         
            +
            00062/0142 7 (256,448,3)
         
     | 
| 1007 | 
         
            +
            00062/0400 7 (256,448,3)
         
     | 
| 1008 | 
         
            +
            00062/0457 7 (256,448,3)
         
     | 
| 1009 | 
         
            +
            00062/0459 7 (256,448,3)
         
     | 
| 1010 | 
         
            +
            00062/0560 7 (256,448,3)
         
     | 
| 1011 | 
         
            +
            00062/0650 7 (256,448,3)
         
     | 
| 1012 | 
         
            +
            00062/0655 7 (256,448,3)
         
     | 
| 1013 | 
         
            +
            00062/0715 7 (256,448,3)
         
     | 
| 1014 | 
         
            +
            00062/0847 7 (256,448,3)
         
     | 
| 1015 | 
         
            +
            00062/0905 7 (256,448,3)
         
     | 
| 1016 | 
         
            +
            00062/0981 7 (256,448,3)
         
     | 
| 1017 | 
         
            +
            00063/0177 7 (256,448,3)
         
     | 
| 1018 | 
         
            +
            00063/0230 7 (256,448,3)
         
     | 
| 1019 | 
         
            +
            00063/0253 7 (256,448,3)
         
     | 
| 1020 | 
         
            +
            00063/0257 7 (256,448,3)
         
     | 
| 1021 | 
         
            +
            00063/0326 7 (256,448,3)
         
     | 
| 1022 | 
         
            +
            00063/0530 7 (256,448,3)
         
     | 
| 1023 | 
         
            +
            00063/0677 7 (256,448,3)
         
     | 
| 1024 | 
         
            +
            00063/0759 7 (256,448,3)
         
     | 
| 1025 | 
         
            +
            00063/0761 7 (256,448,3)
         
     | 
| 1026 | 
         
            +
            00063/0777 7 (256,448,3)
         
     | 
| 1027 | 
         
            +
            00063/0842 7 (256,448,3)
         
     | 
| 1028 | 
         
            +
            00063/0900 7 (256,448,3)
         
     | 
| 1029 | 
         
            +
            00064/0014 7 (256,448,3)
         
     | 
| 1030 | 
         
            +
            00064/0028 7 (256,448,3)
         
     | 
| 1031 | 
         
            +
            00064/0029 7 (256,448,3)
         
     | 
| 1032 | 
         
            +
            00064/0030 7 (256,448,3)
         
     | 
| 1033 | 
         
            +
            00064/0037 7 (256,448,3)
         
     | 
| 1034 | 
         
            +
            00064/0044 7 (256,448,3)
         
     | 
| 1035 | 
         
            +
            00064/0280 7 (256,448,3)
         
     | 
| 1036 | 
         
            +
            00064/0285 7 (256,448,3)
         
     | 
| 1037 | 
         
            +
            00064/0286 7 (256,448,3)
         
     | 
| 1038 | 
         
            +
            00064/0291 7 (256,448,3)
         
     | 
| 1039 | 
         
            +
            00064/0300 7 (256,448,3)
         
     | 
| 1040 | 
         
            +
            00064/0303 7 (256,448,3)
         
     | 
| 1041 | 
         
            +
            00064/0308 7 (256,448,3)
         
     | 
| 1042 | 
         
            +
            00064/0314 7 (256,448,3)
         
     | 
| 1043 | 
         
            +
            00064/0316 7 (256,448,3)
         
     | 
| 1044 | 
         
            +
            00064/0317 7 (256,448,3)
         
     | 
| 1045 | 
         
            +
            00064/0323 7 (256,448,3)
         
     | 
| 1046 | 
         
            +
            00064/0435 7 (256,448,3)
         
     | 
| 1047 | 
         
            +
            00064/0733 7 (256,448,3)
         
     | 
| 1048 | 
         
            +
            00064/0848 7 (256,448,3)
         
     | 
| 1049 | 
         
            +
            00064/0868 7 (256,448,3)
         
     | 
| 1050 | 
         
            +
            00064/0888 7 (256,448,3)
         
     | 
| 1051 | 
         
            +
            00064/0898 7 (256,448,3)
         
     | 
| 1052 | 
         
            +
            00065/0116 7 (256,448,3)
         
     | 
| 1053 | 
         
            +
            00065/0121 7 (256,448,3)
         
     | 
| 1054 | 
         
            +
            00065/0122 7 (256,448,3)
         
     | 
| 1055 | 
         
            +
            00065/0124 7 (256,448,3)
         
     | 
| 1056 | 
         
            +
            00065/0125 7 (256,448,3)
         
     | 
| 1057 | 
         
            +
            00065/0126 7 (256,448,3)
         
     | 
| 1058 | 
         
            +
            00065/0136 7 (256,448,3)
         
     | 
| 1059 | 
         
            +
            00065/0146 7 (256,448,3)
         
     | 
| 1060 | 
         
            +
            00065/0147 7 (256,448,3)
         
     | 
| 1061 | 
         
            +
            00065/0163 7 (256,448,3)
         
     | 
| 1062 | 
         
            +
            00065/0170 7 (256,448,3)
         
     | 
| 1063 | 
         
            +
            00065/0175 7 (256,448,3)
         
     | 
| 1064 | 
         
            +
            00065/0176 7 (256,448,3)
         
     | 
| 1065 | 
         
            +
            00065/0180 7 (256,448,3)
         
     | 
| 1066 | 
         
            +
            00065/0184 7 (256,448,3)
         
     | 
| 1067 | 
         
            +
            00065/0186 7 (256,448,3)
         
     | 
| 1068 | 
         
            +
            00065/0332 7 (256,448,3)
         
     | 
| 1069 | 
         
            +
            00065/0343 7 (256,448,3)
         
     | 
| 1070 | 
         
            +
            00065/0365 7 (256,448,3)
         
     | 
| 1071 | 
         
            +
            00065/0393 7 (256,448,3)
         
     | 
| 1072 | 
         
            +
            00065/0394 7 (256,448,3)
         
     | 
| 1073 | 
         
            +
            00065/0442 7 (256,448,3)
         
     | 
| 1074 | 
         
            +
            00065/0459 7 (256,448,3)
         
     | 
| 1075 | 
         
            +
            00065/0462 7 (256,448,3)
         
     | 
| 1076 | 
         
            +
            00065/0476 7 (256,448,3)
         
     | 
| 1077 | 
         
            +
            00065/0483 7 (256,448,3)
         
     | 
| 1078 | 
         
            +
            00065/0590 7 (256,448,3)
         
     | 
| 1079 | 
         
            +
            00065/0593 7 (256,448,3)
         
     | 
| 1080 | 
         
            +
            00065/0595 7 (256,448,3)
         
     | 
| 1081 | 
         
            +
            00065/0774 7 (256,448,3)
         
     | 
| 1082 | 
         
            +
            00065/0947 7 (256,448,3)
         
     | 
| 1083 | 
         
            +
            00065/0985 7 (256,448,3)
         
     | 
| 1084 | 
         
            +
            00065/0986 7 (256,448,3)
         
     | 
| 1085 | 
         
            +
            00066/0015 7 (256,448,3)
         
     | 
| 1086 | 
         
            +
            00066/0043 7 (256,448,3)
         
     | 
| 1087 | 
         
            +
            00066/0131 7 (256,448,3)
         
     | 
| 1088 | 
         
            +
            00066/0157 7 (256,448,3)
         
     | 
| 1089 | 
         
            +
            00066/0169 7 (256,448,3)
         
     | 
| 1090 | 
         
            +
            00066/0374 7 (256,448,3)
         
     | 
| 1091 | 
         
            +
            00066/0382 7 (256,448,3)
         
     | 
| 1092 | 
         
            +
            00066/0481 7 (256,448,3)
         
     | 
| 1093 | 
         
            +
            00066/0482 7 (256,448,3)
         
     | 
| 1094 | 
         
            +
            00066/0491 7 (256,448,3)
         
     | 
| 1095 | 
         
            +
            00066/0493 7 (256,448,3)
         
     | 
| 1096 | 
         
            +
            00066/0494 7 (256,448,3)
         
     | 
| 1097 | 
         
            +
            00066/0496 7 (256,448,3)
         
     | 
| 1098 | 
         
            +
            00066/0680 7 (256,448,3)
         
     | 
| 1099 | 
         
            +
            00066/0700 7 (256,448,3)
         
     | 
| 1100 | 
         
            +
            00066/0887 7 (256,448,3)
         
     | 
| 1101 | 
         
            +
            00066/0910 7 (256,448,3)
         
     | 
| 1102 | 
         
            +
            00066/0918 7 (256,448,3)
         
     | 
| 1103 | 
         
            +
            00067/0024 7 (256,448,3)
         
     | 
| 1104 | 
         
            +
            00067/0059 7 (256,448,3)
         
     | 
| 1105 | 
         
            +
            00067/0408 7 (256,448,3)
         
     | 
| 1106 | 
         
            +
            00067/0414 7 (256,448,3)
         
     | 
| 1107 | 
         
            +
            00067/0417 7 (256,448,3)
         
     | 
| 1108 | 
         
            +
            00067/0419 7 (256,448,3)
         
     | 
| 1109 | 
         
            +
            00067/0423 7 (256,448,3)
         
     | 
| 1110 | 
         
            +
            00067/0441 7 (256,448,3)
         
     | 
| 1111 | 
         
            +
            00067/0467 7 (256,448,3)
         
     | 
| 1112 | 
         
            +
            00067/0471 7 (256,448,3)
         
     | 
| 1113 | 
         
            +
            00067/0487 7 (256,448,3)
         
     | 
| 1114 | 
         
            +
            00067/0494 7 (256,448,3)
         
     | 
| 1115 | 
         
            +
            00067/0497 7 (256,448,3)
         
     | 
| 1116 | 
         
            +
            00067/0513 7 (256,448,3)
         
     | 
| 1117 | 
         
            +
            00067/0521 7 (256,448,3)
         
     | 
| 1118 | 
         
            +
            00068/0111 7 (256,448,3)
         
     | 
| 1119 | 
         
            +
            00068/0123 7 (256,448,3)
         
     | 
| 1120 | 
         
            +
            00068/0126 7 (256,448,3)
         
     | 
| 1121 | 
         
            +
            00068/0129 7 (256,448,3)
         
     | 
| 1122 | 
         
            +
            00068/0270 7 (256,448,3)
         
     | 
| 1123 | 
         
            +
            00068/0330 7 (256,448,3)
         
     | 
| 1124 | 
         
            +
            00068/0407 7 (256,448,3)
         
     | 
| 1125 | 
         
            +
            00068/0428 7 (256,448,3)
         
     | 
| 1126 | 
         
            +
            00068/0544 7 (256,448,3)
         
     | 
| 1127 | 
         
            +
            00068/0635 7 (256,448,3)
         
     | 
| 1128 | 
         
            +
            00068/0637 7 (256,448,3)
         
     | 
| 1129 | 
         
            +
            00068/0736 7 (256,448,3)
         
     | 
| 1130 | 
         
            +
            00068/0738 7 (256,448,3)
         
     | 
| 1131 | 
         
            +
            00068/0747 7 (256,448,3)
         
     | 
| 1132 | 
         
            +
            00068/0748 7 (256,448,3)
         
     | 
| 1133 | 
         
            +
            00068/0749 7 (256,448,3)
         
     | 
| 1134 | 
         
            +
            00068/0762 7 (256,448,3)
         
     | 
| 1135 | 
         
            +
            00068/0815 7 (256,448,3)
         
     | 
| 1136 | 
         
            +
            00068/0981 7 (256,448,3)
         
     | 
| 1137 | 
         
            +
            00068/0982 7 (256,448,3)
         
     | 
| 1138 | 
         
            +
            00069/0187 7 (256,448,3)
         
     | 
| 1139 | 
         
            +
            00069/0191 7 (256,448,3)
         
     | 
| 1140 | 
         
            +
            00070/0001 7 (256,448,3)
         
     | 
| 1141 | 
         
            +
            00070/0003 7 (256,448,3)
         
     | 
| 1142 | 
         
            +
            00070/0340 7 (256,448,3)
         
     | 
| 1143 | 
         
            +
            00070/0341 7 (256,448,3)
         
     | 
| 1144 | 
         
            +
            00070/0342 7 (256,448,3)
         
     | 
| 1145 | 
         
            +
            00070/0347 7 (256,448,3)
         
     | 
| 1146 | 
         
            +
            00070/0372 7 (256,448,3)
         
     | 
| 1147 | 
         
            +
            00070/0383 7 (256,448,3)
         
     | 
| 1148 | 
         
            +
            00070/0389 7 (256,448,3)
         
     | 
| 1149 | 
         
            +
            00070/0728 7 (256,448,3)
         
     | 
| 1150 | 
         
            +
            00070/0813 7 (256,448,3)
         
     | 
| 1151 | 
         
            +
            00070/0814 7 (256,448,3)
         
     | 
| 1152 | 
         
            +
            00070/0823 7 (256,448,3)
         
     | 
| 1153 | 
         
            +
            00070/0840 7 (256,448,3)
         
     | 
| 1154 | 
         
            +
            00070/0843 7 (256,448,3)
         
     | 
| 1155 | 
         
            +
            00070/0861 7 (256,448,3)
         
     | 
| 1156 | 
         
            +
            00071/0111 7 (256,448,3)
         
     | 
| 1157 | 
         
            +
            00071/0138 7 (256,448,3)
         
     | 
| 1158 | 
         
            +
            00071/0143 7 (256,448,3)
         
     | 
| 1159 | 
         
            +
            00071/0150 7 (256,448,3)
         
     | 
| 1160 | 
         
            +
            00071/0508 7 (256,448,3)
         
     | 
| 1161 | 
         
            +
            00071/0514 7 (256,448,3)
         
     | 
| 1162 | 
         
            +
            00071/0550 7 (256,448,3)
         
     | 
| 1163 | 
         
            +
            00071/0556 7 (256,448,3)
         
     | 
| 1164 | 
         
            +
            00071/0600 7 (256,448,3)
         
     | 
| 1165 | 
         
            +
            00071/0665 7 (256,448,3)
         
     | 
| 1166 | 
         
            +
            00071/0670 7 (256,448,3)
         
     | 
| 1167 | 
         
            +
            00071/0672 7 (256,448,3)
         
     | 
| 1168 | 
         
            +
            00071/0673 7 (256,448,3)
         
     | 
| 1169 | 
         
            +
            00071/0705 7 (256,448,3)
         
     | 
| 1170 | 
         
            +
            00071/0706 7 (256,448,3)
         
     | 
| 1171 | 
         
            +
            00071/0707 7 (256,448,3)
         
     | 
| 1172 | 
         
            +
            00071/0774 7 (256,448,3)
         
     | 
| 1173 | 
         
            +
            00071/0799 7 (256,448,3)
         
     | 
| 1174 | 
         
            +
            00071/0814 7 (256,448,3)
         
     | 
| 1175 | 
         
            +
            00071/0816 7 (256,448,3)
         
     | 
| 1176 | 
         
            +
            00071/0819 7 (256,448,3)
         
     | 
| 1177 | 
         
            +
            00071/0823 7 (256,448,3)
         
     | 
| 1178 | 
         
            +
            00071/0828 7 (256,448,3)
         
     | 
| 1179 | 
         
            +
            00071/0830 7 (256,448,3)
         
     | 
| 1180 | 
         
            +
            00071/0839 7 (256,448,3)
         
     | 
| 1181 | 
         
            +
            00071/0841 7 (256,448,3)
         
     | 
| 1182 | 
         
            +
            00072/0192 7 (256,448,3)
         
     | 
| 1183 | 
         
            +
            00072/0194 7 (256,448,3)
         
     | 
| 1184 | 
         
            +
            00072/0197 7 (256,448,3)
         
     | 
| 1185 | 
         
            +
            00072/0199 7 (256,448,3)
         
     | 
| 1186 | 
         
            +
            00072/0285 7 (256,448,3)
         
     | 
| 1187 | 
         
            +
            00072/0586 7 (256,448,3)
         
     | 
| 1188 | 
         
            +
            00072/0795 7 (256,448,3)
         
     | 
| 1189 | 
         
            +
            00072/0811 7 (256,448,3)
         
     | 
| 1190 | 
         
            +
            00072/0812 7 (256,448,3)
         
     | 
| 1191 | 
         
            +
            00072/0824 7 (256,448,3)
         
     | 
| 1192 | 
         
            +
            00072/0831 7 (256,448,3)
         
     | 
| 1193 | 
         
            +
            00072/0835 7 (256,448,3)
         
     | 
| 1194 | 
         
            +
            00072/0837 7 (256,448,3)
         
     | 
| 1195 | 
         
            +
            00072/0841 7 (256,448,3)
         
     | 
| 1196 | 
         
            +
            00072/0962 7 (256,448,3)
         
     | 
| 1197 | 
         
            +
            00073/0296 7 (256,448,3)
         
     | 
| 1198 | 
         
            +
            00073/0299 7 (256,448,3)
         
     | 
| 1199 | 
         
            +
            00073/0300 7 (256,448,3)
         
     | 
| 1200 | 
         
            +
            00073/0301 7 (256,448,3)
         
     | 
| 1201 | 
         
            +
            00073/0427 7 (256,448,3)
         
     | 
| 1202 | 
         
            +
            00073/0428 7 (256,448,3)
         
     | 
| 1203 | 
         
            +
            00073/0494 7 (256,448,3)
         
     | 
| 1204 | 
         
            +
            00073/0615 7 (256,448,3)
         
     | 
| 1205 | 
         
            +
            00073/0620 7 (256,448,3)
         
     | 
| 1206 | 
         
            +
            00073/0624 7 (256,448,3)
         
     | 
| 1207 | 
         
            +
            00073/0979 7 (256,448,3)
         
     | 
| 1208 | 
         
            +
            00074/0226 7 (256,448,3)
         
     | 
| 1209 | 
         
            +
            00074/0250 7 (256,448,3)
         
     | 
| 1210 | 
         
            +
            00074/0284 7 (256,448,3)
         
     | 
| 1211 | 
         
            +
            00074/0503 7 (256,448,3)
         
     | 
| 1212 | 
         
            +
            00074/0614 7 (256,448,3)
         
     | 
| 1213 | 
         
            +
            00074/0629 7 (256,448,3)
         
     | 
| 1214 | 
         
            +
            00074/0762 7 (256,448,3)
         
     | 
| 1215 | 
         
            +
            00074/0765 7 (256,448,3)
         
     | 
| 1216 | 
         
            +
            00074/0900 7 (256,448,3)
         
     | 
| 1217 | 
         
            +
            00074/0908 7 (256,448,3)
         
     | 
| 1218 | 
         
            +
            00075/0352 7 (256,448,3)
         
     | 
| 1219 | 
         
            +
            00075/0360 7 (256,448,3)
         
     | 
| 1220 | 
         
            +
            00075/0361 7 (256,448,3)
         
     | 
| 1221 | 
         
            +
            00075/0365 7 (256,448,3)
         
     | 
| 1222 | 
         
            +
            00075/0383 7 (256,448,3)
         
     | 
| 1223 | 
         
            +
            00075/0384 7 (256,448,3)
         
     | 
| 1224 | 
         
            +
            00075/0386 7 (256,448,3)
         
     | 
| 1225 | 
         
            +
            00075/0407 7 (256,448,3)
         
     | 
| 1226 | 
         
            +
            00075/0410 7 (256,448,3)
         
     | 
| 1227 | 
         
            +
            00075/0412 7 (256,448,3)
         
     | 
| 1228 | 
         
            +
            00075/0413 7 (256,448,3)
         
     | 
| 1229 | 
         
            +
            00075/0459 7 (256,448,3)
         
     | 
| 1230 | 
         
            +
            00075/0504 7 (256,448,3)
         
     | 
| 1231 | 
         
            +
            00075/0515 7 (256,448,3)
         
     | 
| 1232 | 
         
            +
            00075/0518 7 (256,448,3)
         
     | 
| 1233 | 
         
            +
            00075/0567 7 (256,448,3)
         
     | 
| 1234 | 
         
            +
            00075/0681 7 (256,448,3)
         
     | 
| 1235 | 
         
            +
            00075/0693 7 (256,448,3)
         
     | 
| 1236 | 
         
            +
            00075/0728 7 (256,448,3)
         
     | 
| 1237 | 
         
            +
            00075/0731 7 (256,448,3)
         
     | 
| 1238 | 
         
            +
            00075/0804 7 (256,448,3)
         
     | 
| 1239 | 
         
            +
            00075/0974 7 (256,448,3)
         
     | 
| 1240 | 
         
            +
            00075/0975 7 (256,448,3)
         
     | 
| 1241 | 
         
            +
            00075/0983 7 (256,448,3)
         
     | 
| 1242 | 
         
            +
            00075/0997 7 (256,448,3)
         
     | 
| 1243 | 
         
            +
            00076/0006 7 (256,448,3)
         
     | 
| 1244 | 
         
            +
            00076/0007 7 (256,448,3)
         
     | 
| 1245 | 
         
            +
            00076/0011 7 (256,448,3)
         
     | 
| 1246 | 
         
            +
            00076/0013 7 (256,448,3)
         
     | 
| 1247 | 
         
            +
            00076/0014 7 (256,448,3)
         
     | 
| 1248 | 
         
            +
            00076/0027 7 (256,448,3)
         
     | 
| 1249 | 
         
            +
            00076/0029 7 (256,448,3)
         
     | 
| 1250 | 
         
            +
            00076/0037 7 (256,448,3)
         
     | 
| 1251 | 
         
            +
            00076/0041 7 (256,448,3)
         
     | 
| 1252 | 
         
            +
            00076/0055 7 (256,448,3)
         
     | 
| 1253 | 
         
            +
            00076/0071 7 (256,448,3)
         
     | 
| 1254 | 
         
            +
            00076/0172 7 (256,448,3)
         
     | 
| 1255 | 
         
            +
            00076/0275 7 (256,448,3)
         
     | 
| 1256 | 
         
            +
            00076/0286 7 (256,448,3)
         
     | 
| 1257 | 
         
            +
            00076/0467 7 (256,448,3)
         
     | 
| 1258 | 
         
            +
            00076/0481 7 (256,448,3)
         
     | 
| 1259 | 
         
            +
            00076/0527 7 (256,448,3)
         
     | 
| 1260 | 
         
            +
            00076/0895 7 (256,448,3)
         
     | 
| 1261 | 
         
            +
            00076/0896 7 (256,448,3)
         
     | 
| 1262 | 
         
            +
            00076/0906 7 (256,448,3)
         
     | 
| 1263 | 
         
            +
            00076/0924 7 (256,448,3)
         
     | 
| 1264 | 
         
            +
            00076/0964 7 (256,448,3)
         
     | 
| 1265 | 
         
            +
            00076/0984 7 (256,448,3)
         
     | 
| 1266 | 
         
            +
            00077/0317 7 (256,448,3)
         
     | 
| 1267 | 
         
            +
            00077/0322 7 (256,448,3)
         
     | 
| 1268 | 
         
            +
            00077/0333 7 (256,448,3)
         
     | 
| 1269 | 
         
            +
            00077/0334 7 (256,448,3)
         
     | 
| 1270 | 
         
            +
            00077/0480 7 (256,448,3)
         
     | 
| 1271 | 
         
            +
            00077/0488 7 (256,448,3)
         
     | 
| 1272 | 
         
            +
            00077/0490 7 (256,448,3)
         
     | 
| 1273 | 
         
            +
            00077/0582 7 (256,448,3)
         
     | 
| 1274 | 
         
            +
            00077/0586 7 (256,448,3)
         
     | 
| 1275 | 
         
            +
            00077/0969 7 (256,448,3)
         
     | 
| 1276 | 
         
            +
            00078/0007 7 (256,448,3)
         
     | 
| 1277 | 
         
            +
            00078/0011 7 (256,448,3)
         
     | 
| 1278 | 
         
            +
            00078/0153 7 (256,448,3)
         
     | 
| 1279 | 
         
            +
            00078/0289 7 (256,448,3)
         
     | 
| 1280 | 
         
            +
            00078/0312 7 (256,448,3)
         
     | 
| 1281 | 
         
            +
            00078/0492 7 (256,448,3)
         
     | 
| 1282 | 
         
            +
            00078/0580 7 (256,448,3)
         
     | 
| 1283 | 
         
            +
            00078/0595 7 (256,448,3)
         
     | 
| 1284 | 
         
            +
            00078/0814 7 (256,448,3)
         
     | 
| 1285 | 
         
            +
            00078/0950 7 (256,448,3)
         
     | 
| 1286 | 
         
            +
            00078/0955 7 (256,448,3)
         
     | 
| 1287 | 
         
            +
            00079/0060 7 (256,448,3)
         
     | 
| 1288 | 
         
            +
            00079/0067 7 (256,448,3)
         
     | 
| 1289 | 
         
            +
            00080/0216 7 (256,448,3)
         
     | 
| 1290 | 
         
            +
            00080/0308 7 (256,448,3)
         
     | 
| 1291 | 
         
            +
            00080/0504 7 (256,448,3)
         
     | 
| 1292 | 
         
            +
            00080/0552 7 (256,448,3)
         
     | 
| 1293 | 
         
            +
            00080/0576 7 (256,448,3)
         
     | 
| 1294 | 
         
            +
            00080/0583 7 (256,448,3)
         
     | 
| 1295 | 
         
            +
            00080/0837 7 (256,448,3)
         
     | 
| 1296 | 
         
            +
            00080/0839 7 (256,448,3)
         
     | 
| 1297 | 
         
            +
            00080/0871 7 (256,448,3)
         
     | 
| 1298 | 
         
            +
            00080/0877 7 (256,448,3)
         
     | 
| 1299 | 
         
            +
            00080/0880 7 (256,448,3)
         
     | 
| 1300 | 
         
            +
            00080/0969 7 (256,448,3)
         
     | 
| 1301 | 
         
            +
            00080/0973 7 (256,448,3)
         
     | 
| 1302 | 
         
            +
            00080/0980 7 (256,448,3)
         
     | 
| 1303 | 
         
            +
            00081/0202 7 (256,448,3)
         
     | 
| 1304 | 
         
            +
            00081/0203 7 (256,448,3)
         
     | 
| 1305 | 
         
            +
            00081/0210 7 (256,448,3)
         
     | 
| 1306 | 
         
            +
            00081/0268 7 (256,448,3)
         
     | 
| 1307 | 
         
            +
            00081/0281 7 (256,448,3)
         
     | 
| 1308 | 
         
            +
            00081/0283 7 (256,448,3)
         
     | 
| 1309 | 
         
            +
            00081/0317 7 (256,448,3)
         
     | 
| 1310 | 
         
            +
            00081/0327 7 (256,448,3)
         
     | 
| 1311 | 
         
            +
            00082/0018 7 (256,448,3)
         
     | 
| 1312 | 
         
            +
            00082/0025 7 (256,448,3)
         
     | 
| 1313 | 
         
            +
            00082/0089 7 (256,448,3)
         
     | 
| 1314 | 
         
            +
            00082/0140 7 (256,448,3)
         
     | 
| 1315 | 
         
            +
            00082/0442 7 (256,448,3)
         
     | 
| 1316 | 
         
            +
            00082/0465 7 (256,448,3)
         
     | 
| 1317 | 
         
            +
            00082/0473 7 (256,448,3)
         
     | 
| 1318 | 
         
            +
            00082/0481 7 (256,448,3)
         
     | 
| 1319 | 
         
            +
            00082/0492 7 (256,448,3)
         
     | 
| 1320 | 
         
            +
            00082/0495 7 (256,448,3)
         
     | 
| 1321 | 
         
            +
            00082/0497 7 (256,448,3)
         
     | 
| 1322 | 
         
            +
            00082/0502 7 (256,448,3)
         
     | 
| 1323 | 
         
            +
            00082/0504 7 (256,448,3)
         
     | 
| 1324 | 
         
            +
            00082/0506 7 (256,448,3)
         
     | 
| 1325 | 
         
            +
            00082/0507 7 (256,448,3)
         
     | 
| 1326 | 
         
            +
            00082/0510 7 (256,448,3)
         
     | 
| 1327 | 
         
            +
            00082/0519 7 (256,448,3)
         
     | 
| 1328 | 
         
            +
            00082/0523 7 (256,448,3)
         
     | 
| 1329 | 
         
            +
            00082/0588 7 (256,448,3)
         
     | 
| 1330 | 
         
            +
            00082/0597 7 (256,448,3)
         
     | 
| 1331 | 
         
            +
            00082/0632 7 (256,448,3)
         
     | 
| 1332 | 
         
            +
            00082/0751 7 (256,448,3)
         
     | 
| 1333 | 
         
            +
            00082/0767 7 (256,448,3)
         
     | 
| 1334 | 
         
            +
            00082/0771 7 (256,448,3)
         
     | 
| 1335 | 
         
            +
            00082/0790 7 (256,448,3)
         
     | 
| 1336 | 
         
            +
            00082/0804 7 (256,448,3)
         
     | 
| 1337 | 
         
            +
            00082/0823 7 (256,448,3)
         
     | 
| 1338 | 
         
            +
            00083/0052 7 (256,448,3)
         
     | 
| 1339 | 
         
            +
            00083/0056 7 (256,448,3)
         
     | 
| 1340 | 
         
            +
            00083/0113 7 (256,448,3)
         
     | 
| 1341 | 
         
            +
            00083/0114 7 (256,448,3)
         
     | 
| 1342 | 
         
            +
            00083/0122 7 (256,448,3)
         
     | 
| 1343 | 
         
            +
            00083/0137 7 (256,448,3)
         
     | 
| 1344 | 
         
            +
            00083/0270 7 (256,448,3)
         
     | 
| 1345 | 
         
            +
            00083/0295 7 (256,448,3)
         
     | 
| 1346 | 
         
            +
            00083/0303 7 (256,448,3)
         
     | 
| 1347 | 
         
            +
            00083/0308 7 (256,448,3)
         
     | 
| 1348 | 
         
            +
            00083/0586 7 (256,448,3)
         
     | 
| 1349 | 
         
            +
            00083/0592 7 (256,448,3)
         
     | 
| 1350 | 
         
            +
            00083/0640 7 (256,448,3)
         
     | 
| 1351 | 
         
            +
            00083/0648 7 (256,448,3)
         
     | 
| 1352 | 
         
            +
            00083/0654 7 (256,448,3)
         
     | 
| 1353 | 
         
            +
            00083/0662 7 (256,448,3)
         
     | 
| 1354 | 
         
            +
            00083/0666 7 (256,448,3)
         
     | 
| 1355 | 
         
            +
            00083/0668 7 (256,448,3)
         
     | 
| 1356 | 
         
            +
            00083/0669 7 (256,448,3)
         
     | 
| 1357 | 
         
            +
            00083/0675 7 (256,448,3)
         
     | 
| 1358 | 
         
            +
            00083/0679 7 (256,448,3)
         
     | 
| 1359 | 
         
            +
            00083/0681 7 (256,448,3)
         
     | 
| 1360 | 
         
            +
            00083/0682 7 (256,448,3)
         
     | 
| 1361 | 
         
            +
            00083/0694 7 (256,448,3)
         
     | 
| 1362 | 
         
            +
            00083/0695 7 (256,448,3)
         
     | 
| 1363 | 
         
            +
            00083/0697 7 (256,448,3)
         
     | 
| 1364 | 
         
            +
            00083/0704 7 (256,448,3)
         
     | 
| 1365 | 
         
            +
            00083/0713 7 (256,448,3)
         
     | 
| 1366 | 
         
            +
            00083/0721 7 (256,448,3)
         
     | 
| 1367 | 
         
            +
            00083/0855 7 (256,448,3)
         
     | 
| 1368 | 
         
            +
            00084/0109 7 (256,448,3)
         
     | 
| 1369 | 
         
            +
            00084/0113 7 (256,448,3)
         
     | 
| 1370 | 
         
            +
            00084/0306 7 (256,448,3)
         
     | 
| 1371 | 
         
            +
            00084/0442 7 (256,448,3)
         
     | 
| 1372 | 
         
            +
            00084/0669 7 (256,448,3)
         
     | 
| 1373 | 
         
            +
            00084/0679 7 (256,448,3)
         
     | 
| 1374 | 
         
            +
            00084/0685 7 (256,448,3)
         
     | 
| 1375 | 
         
            +
            00084/0691 7 (256,448,3)
         
     | 
| 1376 | 
         
            +
            00084/0768 7 (256,448,3)
         
     | 
| 1377 | 
         
            +
            00084/0817 7 (256,448,3)
         
     | 
| 1378 | 
         
            +
            00085/0027 7 (256,448,3)
         
     | 
| 1379 | 
         
            +
            00085/0035 7 (256,448,3)
         
     | 
| 1380 | 
         
            +
            00085/0038 7 (256,448,3)
         
     | 
| 1381 | 
         
            +
            00085/0223 7 (256,448,3)
         
     | 
| 1382 | 
         
            +
            00085/0233 7 (256,448,3)
         
     | 
| 1383 | 
         
            +
            00085/0281 7 (256,448,3)
         
     | 
| 1384 | 
         
            +
            00085/0287 7 (256,448,3)
         
     | 
| 1385 | 
         
            +
            00085/0313 7 (256,448,3)
         
     | 
| 1386 | 
         
            +
            00085/0521 7 (256,448,3)
         
     | 
| 1387 | 
         
            +
            00085/0848 7 (256,448,3)
         
     | 
| 1388 | 
         
            +
            00085/0855 7 (256,448,3)
         
     | 
| 1389 | 
         
            +
            00085/0865 7 (256,448,3)
         
     | 
| 1390 | 
         
            +
            00085/0952 7 (256,448,3)
         
     | 
| 1391 | 
         
            +
            00085/0964 7 (256,448,3)
         
     | 
| 1392 | 
         
            +
            00085/0973 7 (256,448,3)
         
     | 
| 1393 | 
         
            +
            00085/0986 7 (256,448,3)
         
     | 
| 1394 | 
         
            +
            00085/0993 7 (256,448,3)
         
     | 
| 1395 | 
         
            +
            00086/0070 7 (256,448,3)
         
     | 
| 1396 | 
         
            +
            00086/0075 7 (256,448,3)
         
     | 
| 1397 | 
         
            +
            00086/0094 7 (256,448,3)
         
     | 
| 1398 | 
         
            +
            00086/0103 7 (256,448,3)
         
     | 
| 1399 | 
         
            +
            00086/0112 7 (256,448,3)
         
     | 
| 1400 | 
         
            +
            00086/0288 7 (256,448,3)
         
     | 
| 1401 | 
         
            +
            00086/0576 7 (256,448,3)
         
     | 
| 1402 | 
         
            +
            00086/0580 7 (256,448,3)
         
     | 
| 1403 | 
         
            +
            00086/0584 7 (256,448,3)
         
     | 
| 1404 | 
         
            +
            00086/0599 7 (256,448,3)
         
     | 
| 1405 | 
         
            +
            00086/0600 7 (256,448,3)
         
     | 
| 1406 | 
         
            +
            00086/0602 7 (256,448,3)
         
     | 
| 1407 | 
         
            +
            00086/0612 7 (256,448,3)
         
     | 
| 1408 | 
         
            +
            00086/0629 7 (256,448,3)
         
     | 
| 1409 | 
         
            +
            00086/0655 7 (256,448,3)
         
     | 
| 1410 | 
         
            +
            00086/0679 7 (256,448,3)
         
     | 
| 1411 | 
         
            +
            00086/0694 7 (256,448,3)
         
     | 
| 1412 | 
         
            +
            00086/0695 7 (256,448,3)
         
     | 
| 1413 | 
         
            +
            00086/0701 7 (256,448,3)
         
     | 
| 1414 | 
         
            +
            00086/0760 7 (256,448,3)
         
     | 
| 1415 | 
         
            +
            00086/0786 7 (256,448,3)
         
     | 
| 1416 | 
         
            +
            00086/0845 7 (256,448,3)
         
     | 
| 1417 | 
         
            +
            00086/0868 7 (256,448,3)
         
     | 
| 1418 | 
         
            +
            00086/0889 7 (256,448,3)
         
     | 
| 1419 | 
         
            +
            00086/0891 7 (256,448,3)
         
     | 
| 1420 | 
         
            +
            00086/0927 7 (256,448,3)
         
     | 
| 1421 | 
         
            +
            00086/0938 7 (256,448,3)
         
     | 
| 1422 | 
         
            +
            00086/0946 7 (256,448,3)
         
     | 
| 1423 | 
         
            +
            00086/0963 7 (256,448,3)
         
     | 
| 1424 | 
         
            +
            00086/0969 7 (256,448,3)
         
     | 
| 1425 | 
         
            +
            00087/0023 7 (256,448,3)
         
     | 
| 1426 | 
         
            +
            00087/0029 7 (256,448,3)
         
     | 
| 1427 | 
         
            +
            00087/0144 7 (256,448,3)
         
     | 
| 1428 | 
         
            +
            00087/0148 7 (256,448,3)
         
     | 
| 1429 | 
         
            +
            00087/0159 7 (256,448,3)
         
     | 
| 1430 | 
         
            +
            00087/0174 7 (256,448,3)
         
     | 
| 1431 | 
         
            +
            00087/0283 7 (256,448,3)
         
     | 
| 1432 | 
         
            +
            00087/0284 7 (256,448,3)
         
     | 
| 1433 | 
         
            +
            00087/0294 7 (256,448,3)
         
     | 
| 1434 | 
         
            +
            00087/0296 7 (256,448,3)
         
     | 
| 1435 | 
         
            +
            00087/0498 7 (256,448,3)
         
     | 
| 1436 | 
         
            +
            00087/0502 7 (256,448,3)
         
     | 
| 1437 | 
         
            +
            00087/0532 7 (256,448,3)
         
     | 
| 1438 | 
         
            +
            00087/0557 7 (256,448,3)
         
     | 
| 1439 | 
         
            +
            00087/0559 7 (256,448,3)
         
     | 
| 1440 | 
         
            +
            00087/0574 7 (256,448,3)
         
     | 
| 1441 | 
         
            +
            00087/0577 7 (256,448,3)
         
     | 
| 1442 | 
         
            +
            00088/0006 7 (256,448,3)
         
     | 
| 1443 | 
         
            +
            00088/0268 7 (256,448,3)
         
     | 
| 1444 | 
         
            +
            00088/0320 7 (256,448,3)
         
     | 
| 1445 | 
         
            +
            00088/0412 7 (256,448,3)
         
     | 
| 1446 | 
         
            +
            00088/0431 7 (256,448,3)
         
     | 
| 1447 | 
         
            +
            00088/0432 7 (256,448,3)
         
     | 
| 1448 | 
         
            +
            00088/0465 7 (256,448,3)
         
     | 
| 1449 | 
         
            +
            00088/0507 7 (256,448,3)
         
     | 
| 1450 | 
         
            +
            00088/0565 7 (256,448,3)
         
     | 
| 1451 | 
         
            +
            00088/0629 7 (256,448,3)
         
     | 
| 1452 | 
         
            +
            00088/0831 7 (256,448,3)
         
     | 
| 1453 | 
         
            +
            00088/0836 7 (256,448,3)
         
     | 
| 1454 | 
         
            +
            00088/0972 7 (256,448,3)
         
     | 
| 1455 | 
         
            +
            00088/0974 7 (256,448,3)
         
     | 
| 1456 | 
         
            +
            00088/0980 7 (256,448,3)
         
     | 
| 1457 | 
         
            +
            00089/0067 7 (256,448,3)
         
     | 
| 1458 | 
         
            +
            00089/0244 7 (256,448,3)
         
     | 
| 1459 | 
         
            +
            00089/0404 7 (256,448,3)
         
     | 
| 1460 | 
         
            +
            00089/0416 7 (256,448,3)
         
     | 
| 1461 | 
         
            +
            00089/0419 7 (256,448,3)
         
     | 
| 1462 | 
         
            +
            00089/0428 7 (256,448,3)
         
     | 
| 1463 | 
         
            +
            00089/0712 7 (256,448,3)
         
     | 
| 1464 | 
         
            +
            00089/0713 7 (256,448,3)
         
     | 
| 1465 | 
         
            +
            00089/0723 7 (256,448,3)
         
     | 
| 1466 | 
         
            +
            00089/0727 7 (256,448,3)
         
     | 
| 1467 | 
         
            +
            00089/0770 7 (256,448,3)
         
     | 
| 1468 | 
         
            +
            00089/0809 7 (256,448,3)
         
     | 
| 1469 | 
         
            +
            00089/0811 7 (256,448,3)
         
     | 
| 1470 | 
         
            +
            00089/0888 7 (256,448,3)
         
     | 
| 1471 | 
         
            +
            00089/0898 7 (256,448,3)
         
     | 
| 1472 | 
         
            +
            00089/0903 7 (256,448,3)
         
     | 
| 1473 | 
         
            +
            00089/0907 7 (256,448,3)
         
     | 
| 1474 | 
         
            +
            00089/0911 7 (256,448,3)
         
     | 
| 1475 | 
         
            +
            00089/0915 7 (256,448,3)
         
     | 
| 1476 | 
         
            +
            00089/0926 7 (256,448,3)
         
     | 
| 1477 | 
         
            +
            00089/0955 7 (256,448,3)
         
     | 
| 1478 | 
         
            +
            00090/0027 7 (256,448,3)
         
     | 
| 1479 | 
         
            +
            00090/0028 7 (256,448,3)
         
     | 
| 1480 | 
         
            +
            00090/0032 7 (256,448,3)
         
     | 
| 1481 | 
         
            +
            00090/0038 7 (256,448,3)
         
     | 
| 1482 | 
         
            +
            00090/0076 7 (256,448,3)
         
     | 
| 1483 | 
         
            +
            00090/0081 7 (256,448,3)
         
     | 
| 1484 | 
         
            +
            00090/0086 7 (256,448,3)
         
     | 
| 1485 | 
         
            +
            00090/0119 7 (256,448,3)
         
     | 
| 1486 | 
         
            +
            00090/0258 7 (256,448,3)
         
     | 
| 1487 | 
         
            +
            00090/0261 7 (256,448,3)
         
     | 
| 1488 | 
         
            +
            00090/0447 7 (256,448,3)
         
     | 
| 1489 | 
         
            +
            00090/0498 7 (256,448,3)
         
     | 
| 1490 | 
         
            +
            00090/0514 7 (256,448,3)
         
     | 
| 1491 | 
         
            +
            00090/0523 7 (256,448,3)
         
     | 
| 1492 | 
         
            +
            00090/0530 7 (256,448,3)
         
     | 
| 1493 | 
         
            +
            00090/0540 7 (256,448,3)
         
     | 
| 1494 | 
         
            +
            00090/0548 7 (256,448,3)
         
     | 
| 1495 | 
         
            +
            00090/0565 7 (256,448,3)
         
     | 
| 1496 | 
         
            +
            00090/0578 7 (256,448,3)
         
     | 
| 1497 | 
         
            +
            00090/0580 7 (256,448,3)
         
     | 
| 1498 | 
         
            +
            00090/0581 7 (256,448,3)
         
     | 
| 1499 | 
         
            +
            00090/0780 7 (256,448,3)
         
     | 
| 1500 | 
         
            +
            00090/0940 7 (256,448,3)
         
     | 
| 1501 | 
         
            +
            00090/0984 7 (256,448,3)
         
     | 
| 1502 | 
         
            +
            00091/0023 7 (256,448,3)
         
     | 
| 1503 | 
         
            +
            00091/0051 7 (256,448,3)
         
     | 
| 1504 | 
         
            +
            00091/0317 7 (256,448,3)
         
     | 
| 1505 | 
         
            +
            00091/0320 7 (256,448,3)
         
     | 
| 1506 | 
         
            +
            00091/0582 7 (256,448,3)
         
     | 
| 1507 | 
         
            +
            00091/0585 7 (256,448,3)
         
     | 
| 1508 | 
         
            +
            00091/0588 7 (256,448,3)
         
     | 
| 1509 | 
         
            +
            00091/0601 7 (256,448,3)
         
     | 
| 1510 | 
         
            +
            00091/0602 7 (256,448,3)
         
     | 
| 1511 | 
         
            +
            00091/0603 7 (256,448,3)
         
     | 
| 1512 | 
         
            +
            00091/0634 7 (256,448,3)
         
     | 
| 1513 | 
         
            +
            00091/0693 7 (256,448,3)
         
     | 
| 1514 | 
         
            +
            00091/0741 7 (256,448,3)
         
     | 
| 1515 | 
         
            +
            00091/0966 7 (256,448,3)
         
     | 
| 1516 | 
         
            +
            00091/0973 7 (256,448,3)
         
     | 
| 1517 | 
         
            +
            00091/0985 7 (256,448,3)
         
     | 
| 1518 | 
         
            +
            00092/0007 7 (256,448,3)
         
     | 
| 1519 | 
         
            +
            00092/0132 7 (256,448,3)
         
     | 
| 1520 | 
         
            +
            00092/0270 7 (256,448,3)
         
     | 
| 1521 | 
         
            +
            00092/0296 7 (256,448,3)
         
     | 
| 1522 | 
         
            +
            00092/0611 7 (256,448,3)
         
     | 
| 1523 | 
         
            +
            00092/0625 7 (256,448,3)
         
     | 
| 1524 | 
         
            +
            00092/0627 7 (256,448,3)
         
     | 
| 1525 | 
         
            +
            00092/0651 7 (256,448,3)
         
     | 
| 1526 | 
         
            +
            00092/0652 7 (256,448,3)
         
     | 
| 1527 | 
         
            +
            00092/0910 7 (256,448,3)
         
     | 
| 1528 | 
         
            +
            00093/0075 7 (256,448,3)
         
     | 
| 1529 | 
         
            +
            00093/0078 7 (256,448,3)
         
     | 
| 1530 | 
         
            +
            00093/0100 7 (256,448,3)
         
     | 
| 1531 | 
         
            +
            00093/0132 7 (256,448,3)
         
     | 
| 1532 | 
         
            +
            00093/0133 7 (256,448,3)
         
     | 
| 1533 | 
         
            +
            00093/0176 7 (256,448,3)
         
     | 
| 1534 | 
         
            +
            00093/0177 7 (256,448,3)
         
     | 
| 1535 | 
         
            +
            00093/0178 7 (256,448,3)
         
     | 
| 1536 | 
         
            +
            00093/0181 7 (256,448,3)
         
     | 
| 1537 | 
         
            +
            00093/0183 7 (256,448,3)
         
     | 
| 1538 | 
         
            +
            00093/0184 7 (256,448,3)
         
     | 
| 1539 | 
         
            +
            00093/0286 7 (256,448,3)
         
     | 
| 1540 | 
         
            +
            00093/0304 7 (256,448,3)
         
     | 
| 1541 | 
         
            +
            00093/0305 7 (256,448,3)
         
     | 
| 1542 | 
         
            +
            00093/0319 7 (256,448,3)
         
     | 
| 1543 | 
         
            +
            00093/0324 7 (256,448,3)
         
     | 
| 1544 | 
         
            +
            00093/0325 7 (256,448,3)
         
     | 
| 1545 | 
         
            +
            00093/0327 7 (256,448,3)
         
     | 
| 1546 | 
         
            +
            00093/0331 7 (256,448,3)
         
     | 
| 1547 | 
         
            +
            00093/0444 7 (256,448,3)
         
     | 
| 1548 | 
         
            +
            00093/0450 7 (256,448,3)
         
     | 
| 1549 | 
         
            +
            00093/0593 7 (256,448,3)
         
     | 
| 1550 | 
         
            +
            00094/0032 7 (256,448,3)
         
     | 
| 1551 | 
         
            +
            00094/0057 7 (256,448,3)
         
     | 
| 1552 | 
         
            +
            00094/0139 7 (256,448,3)
         
     | 
| 1553 | 
         
            +
            00094/0206 7 (256,448,3)
         
     | 
| 1554 | 
         
            +
            00094/0211 7 (256,448,3)
         
     | 
| 1555 | 
         
            +
            00094/0215 7 (256,448,3)
         
     | 
| 1556 | 
         
            +
            00094/0218 7 (256,448,3)
         
     | 
| 1557 | 
         
            +
            00094/0257 7 (256,448,3)
         
     | 
| 1558 | 
         
            +
            00094/0329 7 (256,448,3)
         
     | 
| 1559 | 
         
            +
            00094/0331 7 (256,448,3)
         
     | 
| 1560 | 
         
            +
            00094/0332 7 (256,448,3)
         
     | 
| 1561 | 
         
            +
            00094/0369 7 (256,448,3)
         
     | 
| 1562 | 
         
            +
            00094/0370 7 (256,448,3)
         
     | 
| 1563 | 
         
            +
            00094/0383 7 (256,448,3)
         
     | 
| 1564 | 
         
            +
            00094/0385 7 (256,448,3)
         
     | 
| 1565 | 
         
            +
            00094/0387 7 (256,448,3)
         
     | 
| 1566 | 
         
            +
            00094/0399 7 (256,448,3)
         
     | 
| 1567 | 
         
            +
            00094/0605 7 (256,448,3)
         
     | 
| 1568 | 
         
            +
            00094/0648 7 (256,448,3)
         
     | 
| 1569 | 
         
            +
            00094/0649 7 (256,448,3)
         
     | 
| 1570 | 
         
            +
            00094/0759 7 (256,448,3)
         
     | 
| 1571 | 
         
            +
            00094/0800 7 (256,448,3)
         
     | 
| 1572 | 
         
            +
            00094/0894 7 (256,448,3)
         
     | 
| 1573 | 
         
            +
            00094/0896 7 (256,448,3)
         
     | 
| 1574 | 
         
            +
            00095/0089 7 (256,448,3)
         
     | 
| 1575 | 
         
            +
            00095/0108 7 (256,448,3)
         
     | 
| 1576 | 
         
            +
            00095/0109 7 (256,448,3)
         
     | 
| 1577 | 
         
            +
            00095/0114 7 (256,448,3)
         
     | 
| 1578 | 
         
            +
            00095/0128 7 (256,448,3)
         
     | 
| 1579 | 
         
            +
            00095/0133 7 (256,448,3)
         
     | 
| 1580 | 
         
            +
            00095/0150 7 (256,448,3)
         
     | 
| 1581 | 
         
            +
            00095/0153 7 (256,448,3)
         
     | 
| 1582 | 
         
            +
            00095/0154 7 (256,448,3)
         
     | 
| 1583 | 
         
            +
            00095/0196 7 (256,448,3)
         
     | 
| 1584 | 
         
            +
            00095/0209 7 (256,448,3)
         
     | 
| 1585 | 
         
            +
            00095/0228 7 (256,448,3)
         
     | 
| 1586 | 
         
            +
            00095/0230 7 (256,448,3)
         
     | 
| 1587 | 
         
            +
            00095/0231 7 (256,448,3)
         
     | 
| 1588 | 
         
            +
            00095/0242 7 (256,448,3)
         
     | 
| 1589 | 
         
            +
            00095/0243 7 (256,448,3)
         
     | 
| 1590 | 
         
            +
            00095/0253 7 (256,448,3)
         
     | 
| 1591 | 
         
            +
            00095/0280 7 (256,448,3)
         
     | 
| 1592 | 
         
            +
            00095/0281 7 (256,448,3)
         
     | 
| 1593 | 
         
            +
            00095/0283 7 (256,448,3)
         
     | 
| 1594 | 
         
            +
            00095/0314 7 (256,448,3)
         
     | 
| 1595 | 
         
            +
            00095/0868 7 (256,448,3)
         
     | 
| 1596 | 
         
            +
            00095/0894 7 (256,448,3)
         
     | 
| 1597 | 
         
            +
            00096/0062 7 (256,448,3)
         
     | 
| 1598 | 
         
            +
            00096/0347 7 (256,448,3)
         
     | 
| 1599 | 
         
            +
            00096/0348 7 (256,448,3)
         
     | 
| 1600 | 
         
            +
            00096/0359 7 (256,448,3)
         
     | 
| 1601 | 
         
            +
            00096/0363 7 (256,448,3)
         
     | 
| 1602 | 
         
            +
            00096/0373 7 (256,448,3)
         
     | 
| 1603 | 
         
            +
            00096/0378 7 (256,448,3)
         
     | 
| 1604 | 
         
            +
            00096/0387 7 (256,448,3)
         
     | 
| 1605 | 
         
            +
            00096/0395 7 (256,448,3)
         
     | 
| 1606 | 
         
            +
            00096/0396 7 (256,448,3)
         
     | 
| 1607 | 
         
            +
            00096/0404 7 (256,448,3)
         
     | 
| 1608 | 
         
            +
            00096/0653 7 (256,448,3)
         
     | 
| 1609 | 
         
            +
            00096/0668 7 (256,448,3)
         
     | 
| 1610 | 
         
            +
            00096/0679 7 (256,448,3)
         
     | 
| 1611 | 
         
            +
            00096/0729 7 (256,448,3)
         
     | 
| 1612 | 
         
            +
            00096/0736 7 (256,448,3)
         
     | 
| 1613 | 
         
            +
            00096/0823 7 (256,448,3)
         
     | 
    	
        basicsr/data/meta_info/meta_info_Vimeo90K_train_GT.txt
    ADDED
    
    | 
         The diff for this file is too large to render. 
		See raw diff 
     | 
| 
         | 
    	
        basicsr/data/paired_image_dataset.py
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from torch.utils import data as data
         
     | 
| 2 | 
         
            +
            from torchvision.transforms.functional import normalize
         
     | 
| 3 | 
         
            +
             
     | 
| 4 | 
         
            +
            from basicsr.data.data_util import paired_paths_from_folder, paired_paths_from_lmdb, paired_paths_from_meta_info_file
         
     | 
| 5 | 
         
            +
            from basicsr.data.transforms import augment, paired_random_crop
         
     | 
| 6 | 
         
            +
            from basicsr.utils import FileClient, bgr2ycbcr, imfrombytes, img2tensor
         
     | 
| 7 | 
         
            +
            from basicsr.utils.registry import DATASET_REGISTRY
         
     | 
| 8 | 
         
            +
             
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            @DATASET_REGISTRY.register()
         
     | 
| 11 | 
         
            +
            class PairedImageDataset(data.Dataset):
         
     | 
| 12 | 
         
            +
                """Paired image dataset for image restoration.
         
     | 
| 13 | 
         
            +
             
     | 
| 14 | 
         
            +
                Read LQ (Low Quality, e.g. LR (Low Resolution), blurry, noisy, etc) and GT image pairs.
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
                There are three modes:
         
     | 
| 17 | 
         
            +
             
     | 
| 18 | 
         
            +
                1. **lmdb**: Use lmdb files. If opt['io_backend'] == lmdb.
         
     | 
| 19 | 
         
            +
                2. **meta_info_file**: Use meta information file to generate paths. \
         
     | 
| 20 | 
         
            +
                    If opt['io_backend'] != lmdb and opt['meta_info_file'] is not None.
         
     | 
| 21 | 
         
            +
                3. **folder**: Scan folders to generate paths. The rest.
         
     | 
| 22 | 
         
            +
             
     | 
| 23 | 
         
            +
                Args:
         
     | 
| 24 | 
         
            +
                    opt (dict): Config for train datasets. It contains the following keys:
         
     | 
| 25 | 
         
            +
                    dataroot_gt (str): Data root path for gt.
         
     | 
| 26 | 
         
            +
                    dataroot_lq (str): Data root path for lq.
         
     | 
| 27 | 
         
            +
                    meta_info_file (str): Path for meta information file.
         
     | 
| 28 | 
         
            +
                    io_backend (dict): IO backend type and other kwarg.
         
     | 
| 29 | 
         
            +
                    filename_tmpl (str): Template for each filename. Note that the template excludes the file extension.
         
     | 
| 30 | 
         
            +
                        Default: '{}'.
         
     | 
| 31 | 
         
            +
                    gt_size (int): Cropped patched size for gt patches.
         
     | 
| 32 | 
         
            +
                    use_hflip (bool): Use horizontal flips.
         
     | 
| 33 | 
         
            +
                    use_rot (bool): Use rotation (use vertical flip and transposing h and w for implementation).
         
     | 
| 34 | 
         
            +
                    scale (bool): Scale, which will be added automatically.
         
     | 
| 35 | 
         
            +
                    phase (str): 'train' or 'val'.
         
     | 
| 36 | 
         
            +
                """
         
     | 
| 37 | 
         
            +
             
     | 
| 38 | 
         
            +
                def __init__(self, opt):
         
     | 
| 39 | 
         
            +
                    super(PairedImageDataset, self).__init__()
         
     | 
| 40 | 
         
            +
                    self.opt = opt
         
     | 
| 41 | 
         
            +
                    # file client (io backend)
         
     | 
| 42 | 
         
            +
                    self.file_client = None
         
     | 
| 43 | 
         
            +
                    self.io_backend_opt = opt['io_backend']
         
     | 
| 44 | 
         
            +
                    self.mean = opt['mean'] if 'mean' in opt else None
         
     | 
| 45 | 
         
            +
                    self.std = opt['std'] if 'std' in opt else None
         
     | 
| 46 | 
         
            +
             
     | 
| 47 | 
         
            +
                    self.gt_folder, self.lq_folder = opt['dataroot_gt'], opt['dataroot_lq']
         
     | 
| 48 | 
         
            +
                    if 'filename_tmpl' in opt:
         
     | 
| 49 | 
         
            +
                        self.filename_tmpl = opt['filename_tmpl']
         
     | 
| 50 | 
         
            +
                    else:
         
     | 
| 51 | 
         
            +
                        self.filename_tmpl = '{}'
         
     | 
| 52 | 
         
            +
             
     | 
| 53 | 
         
            +
                    if self.io_backend_opt['type'] == 'lmdb':
         
     | 
| 54 | 
         
            +
                        self.io_backend_opt['db_paths'] = [self.lq_folder, self.gt_folder]
         
     | 
| 55 | 
         
            +
                        self.io_backend_opt['client_keys'] = ['lq', 'gt']
         
     | 
| 56 | 
         
            +
                        self.paths = paired_paths_from_lmdb([self.lq_folder, self.gt_folder], ['lq', 'gt'])
         
     | 
| 57 | 
         
            +
                    elif 'meta_info_file' in self.opt and self.opt['meta_info_file'] is not None:
         
     | 
| 58 | 
         
            +
                        self.paths = paired_paths_from_meta_info_file([self.lq_folder, self.gt_folder], ['lq', 'gt'],
         
     | 
| 59 | 
         
            +
                                                                      self.opt['meta_info_file'], self.filename_tmpl)
         
     | 
| 60 | 
         
            +
                    else:
         
     | 
| 61 | 
         
            +
                        self.paths = paired_paths_from_folder([self.lq_folder, self.gt_folder], ['lq', 'gt'], self.filename_tmpl)
         
     | 
| 62 | 
         
            +
             
     | 
| 63 | 
         
            +
                def __getitem__(self, index):
         
     | 
| 64 | 
         
            +
                    if self.file_client is None:
         
     | 
| 65 | 
         
            +
                        self.file_client = FileClient(self.io_backend_opt.pop('type'), **self.io_backend_opt)
         
     | 
| 66 | 
         
            +
             
     | 
| 67 | 
         
            +
                    scale = self.opt['scale']
         
     | 
| 68 | 
         
            +
             
     | 
| 69 | 
         
            +
                    # Load gt and lq images. Dimension order: HWC; channel order: BGR;
         
     | 
| 70 | 
         
            +
                    # image range: [0, 1], float32.
         
     | 
| 71 | 
         
            +
                    gt_path = self.paths[index]['gt_path']
         
     | 
| 72 | 
         
            +
                    img_bytes = self.file_client.get(gt_path, 'gt')
         
     | 
| 73 | 
         
            +
                    img_gt = imfrombytes(img_bytes, float32=True)
         
     | 
| 74 | 
         
            +
                    lq_path = self.paths[index]['lq_path']
         
     | 
| 75 | 
         
            +
                    img_bytes = self.file_client.get(lq_path, 'lq')
         
     | 
| 76 | 
         
            +
                    img_lq = imfrombytes(img_bytes, float32=True)
         
     | 
| 77 | 
         
            +
             
     | 
| 78 | 
         
            +
                    # augmentation for training
         
     | 
| 79 | 
         
            +
                    if self.opt['phase'] == 'train':
         
     | 
| 80 | 
         
            +
                        gt_size = self.opt['gt_size']
         
     | 
| 81 | 
         
            +
                        # random crop
         
     | 
| 82 | 
         
            +
                        img_gt, img_lq = paired_random_crop(img_gt, img_lq, gt_size, scale, gt_path)
         
     | 
| 83 | 
         
            +
                        # flip, rotation
         
     | 
| 84 | 
         
            +
                        img_gt, img_lq = augment([img_gt, img_lq], self.opt['use_hflip'], self.opt['use_rot'])
         
     | 
| 85 | 
         
            +
             
     | 
| 86 | 
         
            +
                    # color space transform
         
     | 
| 87 | 
         
            +
                    if 'color' in self.opt and self.opt['color'] == 'y':
         
     | 
| 88 | 
         
            +
                        img_gt = bgr2ycbcr(img_gt, y_only=True)[..., None]
         
     | 
| 89 | 
         
            +
                        img_lq = bgr2ycbcr(img_lq, y_only=True)[..., None]
         
     | 
| 90 | 
         
            +
             
     | 
| 91 | 
         
            +
                    # crop the unmatched GT images during validation or testing, especially for SR benchmark datasets
         
     | 
| 92 | 
         
            +
                    # TODO: It is better to update the datasets, rather than force to crop
         
     | 
| 93 | 
         
            +
                    if self.opt['phase'] != 'train':
         
     | 
| 94 | 
         
            +
                        img_gt = img_gt[0:img_lq.shape[0] * scale, 0:img_lq.shape[1] * scale, :]
         
     | 
| 95 | 
         
            +
             
     | 
| 96 | 
         
            +
                    # BGR to RGB, HWC to CHW, numpy to tensor
         
     | 
| 97 | 
         
            +
                    img_gt, img_lq = img2tensor([img_gt, img_lq], bgr2rgb=True, float32=True)
         
     | 
| 98 | 
         
            +
                    # normalize
         
     | 
| 99 | 
         
            +
                    if self.mean is not None or self.std is not None:
         
     | 
| 100 | 
         
            +
                        normalize(img_lq, self.mean, self.std, inplace=True)
         
     | 
| 101 | 
         
            +
                        normalize(img_gt, self.mean, self.std, inplace=True)
         
     | 
| 102 | 
         
            +
             
     | 
| 103 | 
         
            +
                    return {'lq': img_lq, 'gt': img_gt, 'lq_path': lq_path, 'gt_path': gt_path}
         
     | 
| 104 | 
         
            +
             
     | 
| 105 | 
         
            +
                def __len__(self):
         
     | 
| 106 | 
         
            +
                    return len(self.paths)
         
     | 
    	
        basicsr/data/prefetch_dataloader.py
    ADDED
    
    | 
         @@ -0,0 +1,122 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import queue as Queue
         
     | 
| 2 | 
         
            +
            import threading
         
     | 
| 3 | 
         
            +
            import torch
         
     | 
| 4 | 
         
            +
            from torch.utils.data import DataLoader
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
             
     | 
| 7 | 
         
            +
            class PrefetchGenerator(threading.Thread):
         
     | 
| 8 | 
         
            +
                """A general prefetch generator.
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
                Reference: https://stackoverflow.com/questions/7323664/python-generator-pre-fetch
         
     | 
| 11 | 
         
            +
             
     | 
| 12 | 
         
            +
                Args:
         
     | 
| 13 | 
         
            +
                    generator: Python generator.
         
     | 
| 14 | 
         
            +
                    num_prefetch_queue (int): Number of prefetch queue.
         
     | 
| 15 | 
         
            +
                """
         
     | 
| 16 | 
         
            +
             
     | 
| 17 | 
         
            +
                def __init__(self, generator, num_prefetch_queue):
         
     | 
| 18 | 
         
            +
                    threading.Thread.__init__(self)
         
     | 
| 19 | 
         
            +
                    self.queue = Queue.Queue(num_prefetch_queue)
         
     | 
| 20 | 
         
            +
                    self.generator = generator
         
     | 
| 21 | 
         
            +
                    self.daemon = True
         
     | 
| 22 | 
         
            +
                    self.start()
         
     | 
| 23 | 
         
            +
             
     | 
| 24 | 
         
            +
                def run(self):
         
     | 
| 25 | 
         
            +
                    for item in self.generator:
         
     | 
| 26 | 
         
            +
                        self.queue.put(item)
         
     | 
| 27 | 
         
            +
                    self.queue.put(None)
         
     | 
| 28 | 
         
            +
             
     | 
| 29 | 
         
            +
                def __next__(self):
         
     | 
| 30 | 
         
            +
                    next_item = self.queue.get()
         
     | 
| 31 | 
         
            +
                    if next_item is None:
         
     | 
| 32 | 
         
            +
                        raise StopIteration
         
     | 
| 33 | 
         
            +
                    return next_item
         
     | 
| 34 | 
         
            +
             
     | 
| 35 | 
         
            +
                def __iter__(self):
         
     | 
| 36 | 
         
            +
                    return self
         
     | 
| 37 | 
         
            +
             
     | 
| 38 | 
         
            +
             
     | 
| 39 | 
         
            +
            class PrefetchDataLoader(DataLoader):
         
     | 
| 40 | 
         
            +
                """Prefetch version of dataloader.
         
     | 
| 41 | 
         
            +
             
     | 
| 42 | 
         
            +
                Reference: https://github.com/IgorSusmelj/pytorch-styleguide/issues/5#
         
     | 
| 43 | 
         
            +
             
     | 
| 44 | 
         
            +
                TODO:
         
     | 
| 45 | 
         
            +
                Need to test on single gpu and ddp (multi-gpu). There is a known issue in
         
     | 
| 46 | 
         
            +
                ddp.
         
     | 
| 47 | 
         
            +
             
     | 
| 48 | 
         
            +
                Args:
         
     | 
| 49 | 
         
            +
                    num_prefetch_queue (int): Number of prefetch queue.
         
     | 
| 50 | 
         
            +
                    kwargs (dict): Other arguments for dataloader.
         
     | 
| 51 | 
         
            +
                """
         
     | 
| 52 | 
         
            +
             
     | 
| 53 | 
         
            +
                def __init__(self, num_prefetch_queue, **kwargs):
         
     | 
| 54 | 
         
            +
                    self.num_prefetch_queue = num_prefetch_queue
         
     | 
| 55 | 
         
            +
                    super(PrefetchDataLoader, self).__init__(**kwargs)
         
     | 
| 56 | 
         
            +
             
     | 
| 57 | 
         
            +
                def __iter__(self):
         
     | 
| 58 | 
         
            +
                    return PrefetchGenerator(super().__iter__(), self.num_prefetch_queue)
         
     | 
| 59 | 
         
            +
             
     | 
| 60 | 
         
            +
             
     | 
| 61 | 
         
            +
            class CPUPrefetcher():
         
     | 
| 62 | 
         
            +
                """CPU prefetcher.
         
     | 
| 63 | 
         
            +
             
     | 
| 64 | 
         
            +
                Args:
         
     | 
| 65 | 
         
            +
                    loader: Dataloader.
         
     | 
| 66 | 
         
            +
                """
         
     | 
| 67 | 
         
            +
             
     | 
| 68 | 
         
            +
                def __init__(self, loader):
         
     | 
| 69 | 
         
            +
                    self.ori_loader = loader
         
     | 
| 70 | 
         
            +
                    self.loader = iter(loader)
         
     | 
| 71 | 
         
            +
             
     | 
| 72 | 
         
            +
                def next(self):
         
     | 
| 73 | 
         
            +
                    try:
         
     | 
| 74 | 
         
            +
                        return next(self.loader)
         
     | 
| 75 | 
         
            +
                    except StopIteration:
         
     | 
| 76 | 
         
            +
                        return None
         
     | 
| 77 | 
         
            +
             
     | 
| 78 | 
         
            +
                def reset(self):
         
     | 
| 79 | 
         
            +
                    self.loader = iter(self.ori_loader)
         
     | 
| 80 | 
         
            +
             
     | 
| 81 | 
         
            +
             
     | 
| 82 | 
         
            +
            class CUDAPrefetcher():
         
     | 
| 83 | 
         
            +
                """CUDA prefetcher.
         
     | 
| 84 | 
         
            +
             
     | 
| 85 | 
         
            +
                Reference: https://github.com/NVIDIA/apex/issues/304#
         
     | 
| 86 | 
         
            +
             
     | 
| 87 | 
         
            +
                It may consume more GPU memory.
         
     | 
| 88 | 
         
            +
             
     | 
| 89 | 
         
            +
                Args:
         
     | 
| 90 | 
         
            +
                    loader: Dataloader.
         
     | 
| 91 | 
         
            +
                    opt (dict): Options.
         
     | 
| 92 | 
         
            +
                """
         
     | 
| 93 | 
         
            +
             
     | 
| 94 | 
         
            +
                def __init__(self, loader, opt):
         
     | 
| 95 | 
         
            +
                    self.ori_loader = loader
         
     | 
| 96 | 
         
            +
                    self.loader = iter(loader)
         
     | 
| 97 | 
         
            +
                    self.opt = opt
         
     | 
| 98 | 
         
            +
                    self.stream = torch.cuda.Stream()
         
     | 
| 99 | 
         
            +
                    self.device = torch.device('cuda' if opt['num_gpu'] != 0 else 'cpu')
         
     | 
| 100 | 
         
            +
                    self.preload()
         
     | 
| 101 | 
         
            +
             
     | 
| 102 | 
         
            +
                def preload(self):
         
     | 
| 103 | 
         
            +
                    try:
         
     | 
| 104 | 
         
            +
                        self.batch = next(self.loader)  # self.batch is a dict
         
     | 
| 105 | 
         
            +
                    except StopIteration:
         
     | 
| 106 | 
         
            +
                        self.batch = None
         
     | 
| 107 | 
         
            +
                        return None
         
     | 
| 108 | 
         
            +
                    # put tensors to gpu
         
     | 
| 109 | 
         
            +
                    with torch.cuda.stream(self.stream):
         
     | 
| 110 | 
         
            +
                        for k, v in self.batch.items():
         
     | 
| 111 | 
         
            +
                            if torch.is_tensor(v):
         
     | 
| 112 | 
         
            +
                                self.batch[k] = self.batch[k].to(device=self.device, non_blocking=True)
         
     | 
| 113 | 
         
            +
             
     | 
| 114 | 
         
            +
                def next(self):
         
     | 
| 115 | 
         
            +
                    torch.cuda.current_stream().wait_stream(self.stream)
         
     | 
| 116 | 
         
            +
                    batch = self.batch
         
     | 
| 117 | 
         
            +
                    self.preload()
         
     | 
| 118 | 
         
            +
                    return batch
         
     | 
| 119 | 
         
            +
             
     | 
| 120 | 
         
            +
                def reset(self):
         
     | 
| 121 | 
         
            +
                    self.loader = iter(self.ori_loader)
         
     | 
| 122 | 
         
            +
                    self.preload()
         
     | 
    	
        basicsr/data/realesrgan_dataset.py
    ADDED
    
    | 
         @@ -0,0 +1,384 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import cv2
         
     | 
| 2 | 
         
            +
            import math
         
     | 
| 3 | 
         
            +
            import numpy as np
         
     | 
| 4 | 
         
            +
            import os
         
     | 
| 5 | 
         
            +
            import os.path as osp
         
     | 
| 6 | 
         
            +
            import random
         
     | 
| 7 | 
         
            +
            import time
         
     | 
| 8 | 
         
            +
            import torch
         
     | 
| 9 | 
         
            +
            from pathlib import Path
         
     | 
| 10 | 
         
            +
             
     | 
| 11 | 
         
            +
            import albumentations
         
     | 
| 12 | 
         
            +
             
     | 
| 13 | 
         
            +
            import torch.nn.functional as F
         
     | 
| 14 | 
         
            +
            from torch.utils import data as data
         
     | 
| 15 | 
         
            +
             
     | 
| 16 | 
         
            +
            from basicsr.utils import DiffJPEG
         
     | 
| 17 | 
         
            +
            from basicsr.data.degradations import circular_lowpass_kernel, random_mixed_kernels
         
     | 
| 18 | 
         
            +
            from basicsr.data.transforms import augment
         
     | 
| 19 | 
         
            +
            from basicsr.utils import FileClient, get_root_logger, imfrombytes, img2tensor
         
     | 
| 20 | 
         
            +
            from basicsr.utils.registry import DATASET_REGISTRY
         
     | 
| 21 | 
         
            +
            from basicsr.utils.img_process_util import filter2D
         
     | 
| 22 | 
         
            +
            from basicsr.data.transforms import paired_random_crop, random_crop
         
     | 
| 23 | 
         
            +
            from basicsr.data.degradations import random_add_gaussian_noise_pt, random_add_poisson_noise_pt
         
     | 
| 24 | 
         
            +
             
     | 
| 25 | 
         
            +
            from utils import util_image
         
     | 
| 26 | 
         
            +
             
     | 
| 27 | 
         
            +
            def readline_txt(txt_file):
         
     | 
| 28 | 
         
            +
                txt_file = [txt_file, ] if isinstance(txt_file, str) else txt_file
         
     | 
| 29 | 
         
            +
                out = []
         
     | 
| 30 | 
         
            +
                for txt_file_current in txt_file:
         
     | 
| 31 | 
         
            +
                    with open(txt_file_current, 'r') as ff:
         
     | 
| 32 | 
         
            +
                        out.extend([x[:-1] for x in ff.readlines()])
         
     | 
| 33 | 
         
            +
             
     | 
| 34 | 
         
            +
                return out
         
     | 
| 35 | 
         
            +
             
     | 
| 36 | 
         
            +
            @DATASET_REGISTRY.register(suffix='basicsr')
         
     | 
| 37 | 
         
            +
            class RealESRGANDataset(data.Dataset):
         
     | 
| 38 | 
         
            +
                """Dataset used for Real-ESRGAN model:
         
     | 
| 39 | 
         
            +
                Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data.
         
     | 
| 40 | 
         
            +
             
     | 
| 41 | 
         
            +
                It loads gt (Ground-Truth) images, and augments them.
         
     | 
| 42 | 
         
            +
                It also generates blur kernels and sinc kernels for generating low-quality images.
         
     | 
| 43 | 
         
            +
                Note that the low-quality images are processed in tensors on GPUS for faster processing.
         
     | 
| 44 | 
         
            +
             
     | 
| 45 | 
         
            +
                Args:
         
     | 
| 46 | 
         
            +
                    opt (dict): Config for train datasets. It contains the following keys:
         
     | 
| 47 | 
         
            +
                        dataroot_gt (str): Data root path for gt.
         
     | 
| 48 | 
         
            +
                        meta_info (str): Path for meta information file.
         
     | 
| 49 | 
         
            +
                        io_backend (dict): IO backend type and other kwarg.
         
     | 
| 50 | 
         
            +
                        use_hflip (bool): Use horizontal flips.
         
     | 
| 51 | 
         
            +
                        use_rot (bool): Use rotation (use vertical flip and transposing h and w for implementation).
         
     | 
| 52 | 
         
            +
                        Please see more options in the codes.
         
     | 
| 53 | 
         
            +
                """
         
     | 
| 54 | 
         
            +
             
     | 
| 55 | 
         
            +
                def __init__(self, opt, mode='training'):
         
     | 
| 56 | 
         
            +
                    super(RealESRGANDataset, self).__init__()
         
     | 
| 57 | 
         
            +
                    self.opt = opt
         
     | 
| 58 | 
         
            +
                    self.file_client = None
         
     | 
| 59 | 
         
            +
                    self.io_backend_opt = opt['io_backend']
         
     | 
| 60 | 
         
            +
             
     | 
| 61 | 
         
            +
                    # file client (lmdb io backend)
         
     | 
| 62 | 
         
            +
                    self.image_paths = []
         
     | 
| 63 | 
         
            +
                    self.text_paths = []
         
     | 
| 64 | 
         
            +
                    self.moment_paths = []
         
     | 
| 65 | 
         
            +
                    if opt.get('data_source', None) is not None:
         
     | 
| 66 | 
         
            +
                        for ii in range(len(opt['data_source'])):
         
     | 
| 67 | 
         
            +
                            configs = opt['data_source'].get(f'source{ii+1}')
         
     | 
| 68 | 
         
            +
                            root_path = Path(configs.root_path)
         
     | 
| 69 | 
         
            +
                            im_folder = root_path / configs.image_path
         
     | 
| 70 | 
         
            +
                            im_ext = configs.im_ext
         
     | 
| 71 | 
         
            +
                            image_stems = sorted([x.stem for x in im_folder.glob(f"*.{im_ext}")])
         
     | 
| 72 | 
         
            +
                            if configs.get('length', None) is not None:
         
     | 
| 73 | 
         
            +
                                assert configs.length < len(image_stems)
         
     | 
| 74 | 
         
            +
                                image_stems = image_stems[:configs.length]
         
     | 
| 75 | 
         
            +
             
     | 
| 76 | 
         
            +
                            if configs.get("text_path", None) is not None:
         
     | 
| 77 | 
         
            +
                                text_folder = root_path / configs.text_path
         
     | 
| 78 | 
         
            +
                                text_stems = [x.stem for x in text_folder.glob("*.txt")]
         
     | 
| 79 | 
         
            +
                                image_stems = sorted(list(set(image_stems).intersection(set(text_stems))))
         
     | 
| 80 | 
         
            +
                                self.text_paths.extend([str(text_folder / f"{x}.txt") for x in image_stems])
         
     | 
| 81 | 
         
            +
                            else:
         
     | 
| 82 | 
         
            +
                                self.text_paths.extend([None, ] * len(image_stems))
         
     | 
| 83 | 
         
            +
             
     | 
| 84 | 
         
            +
                            self.image_paths.extend([str(im_folder / f"{x}.{im_ext}") for x in image_stems])
         
     | 
| 85 | 
         
            +
             
     | 
| 86 | 
         
            +
                            if configs.get("moment_path", None) is not None:
         
     | 
| 87 | 
         
            +
                                moment_folder = root_path / configs.moment_path
         
     | 
| 88 | 
         
            +
                                self.moment_paths.extend([str(moment_folder / f"{x}.npy") for x in image_stems])
         
     | 
| 89 | 
         
            +
                            else:
         
     | 
| 90 | 
         
            +
                                self.moment_paths.extend([None, ] * len(image_stems))
         
     | 
| 91 | 
         
            +
             
     | 
| 92 | 
         
            +
                    # blur settings for the first degradation
         
     | 
| 93 | 
         
            +
                    self.blur_kernel_size = opt['blur_kernel_size']
         
     | 
| 94 | 
         
            +
                    self.kernel_list = opt['kernel_list']
         
     | 
| 95 | 
         
            +
                    self.kernel_prob = opt['kernel_prob']  # a list for each kernel probability
         
     | 
| 96 | 
         
            +
                    self.blur_sigma = opt['blur_sigma']
         
     | 
| 97 | 
         
            +
                    self.betag_range = opt['betag_range']  # betag used in generalized Gaussian blur kernels
         
     | 
| 98 | 
         
            +
                    self.betap_range = opt['betap_range']  # betap used in plateau blur kernels
         
     | 
| 99 | 
         
            +
                    self.sinc_prob = opt['sinc_prob']  # the probability for sinc filters
         
     | 
| 100 | 
         
            +
             
     | 
| 101 | 
         
            +
                    # blur settings for the second degradation
         
     | 
| 102 | 
         
            +
                    self.blur_kernel_size2 = opt['blur_kernel_size2']
         
     | 
| 103 | 
         
            +
                    self.kernel_list2 = opt['kernel_list2']
         
     | 
| 104 | 
         
            +
                    self.kernel_prob2 = opt['kernel_prob2']
         
     | 
| 105 | 
         
            +
                    self.blur_sigma2 = opt['blur_sigma2']
         
     | 
| 106 | 
         
            +
                    self.betag_range2 = opt['betag_range2']
         
     | 
| 107 | 
         
            +
                    self.betap_range2 = opt['betap_range2']
         
     | 
| 108 | 
         
            +
                    self.sinc_prob2 = opt['sinc_prob2']
         
     | 
| 109 | 
         
            +
             
     | 
| 110 | 
         
            +
                    # a final sinc filter
         
     | 
| 111 | 
         
            +
                    self.final_sinc_prob = opt['final_sinc_prob']
         
     | 
| 112 | 
         
            +
             
     | 
| 113 | 
         
            +
                    self.kernel_range1 = [x for x in range(3, opt['blur_kernel_size'], 2)]  # kernel size ranges from 7 to 21
         
     | 
| 114 | 
         
            +
                    self.kernel_range2 = [x for x in range(3, opt['blur_kernel_size2'], 2)]  # kernel size ranges from 7 to 21
         
     | 
| 115 | 
         
            +
                    # TODO: kernel range is now hard-coded, should be in the configure file
         
     | 
| 116 | 
         
            +
                    # convolving with pulse tensor brings no blurry effect
         
     | 
| 117 | 
         
            +
                    self.pulse_tensor = torch.zeros(opt['blur_kernel_size2'], opt['blur_kernel_size2']).float()
         
     | 
| 118 | 
         
            +
                    self.pulse_tensor[opt['blur_kernel_size2']//2, opt['blur_kernel_size2']//2] = 1
         
     | 
| 119 | 
         
            +
             
     | 
| 120 | 
         
            +
                    self.mode = mode
         
     | 
| 121 | 
         
            +
             
     | 
| 122 | 
         
            +
                def __getitem__(self, index):
         
     | 
| 123 | 
         
            +
                    if self.file_client is None:
         
     | 
| 124 | 
         
            +
                        self.file_client = FileClient(self.io_backend_opt.pop('type'), **self.io_backend_opt)
         
     | 
| 125 | 
         
            +
             
     | 
| 126 | 
         
            +
                    # -------------------------------- Load gt images -------------------------------- #
         
     | 
| 127 | 
         
            +
                    # Shape: (h, w, c); channel order: BGR; image range: [0, 1], float32.
         
     | 
| 128 | 
         
            +
                    gt_path = self.image_paths[index]
         
     | 
| 129 | 
         
            +
                    # avoid errors caused by high latency in reading files
         
     | 
| 130 | 
         
            +
                    retry = 3
         
     | 
| 131 | 
         
            +
                    while retry > 0:
         
     | 
| 132 | 
         
            +
                        try:
         
     | 
| 133 | 
         
            +
                            img_bytes = self.file_client.get(gt_path, 'gt')
         
     | 
| 134 | 
         
            +
                            img_gt = imfrombytes(img_bytes, float32=True)
         
     | 
| 135 | 
         
            +
                        except:
         
     | 
| 136 | 
         
            +
                            index = random.randint(0, self.__len__())
         
     | 
| 137 | 
         
            +
                            gt_path = self.image_paths[index]
         
     | 
| 138 | 
         
            +
                            time.sleep(1)  # sleep 1s for occasional server congestion
         
     | 
| 139 | 
         
            +
                        finally:
         
     | 
| 140 | 
         
            +
                            retry -= 1
         
     | 
| 141 | 
         
            +
                    if self.mode == 'testing':
         
     | 
| 142 | 
         
            +
                        if not hasattr(self, 'test_aug'):
         
     | 
| 143 | 
         
            +
                            self.test_aug = albumentations.Compose([
         
     | 
| 144 | 
         
            +
                                albumentations.SmallestMaxSize(
         
     | 
| 145 | 
         
            +
                                    max_size=self.opt['gt_size'],
         
     | 
| 146 | 
         
            +
                                    interpolation=cv2.INTER_AREA,
         
     | 
| 147 | 
         
            +
                                    ),
         
     | 
| 148 | 
         
            +
                                albumentations.CenterCrop(self.opt['gt_size'], self.opt['gt_size']),
         
     | 
| 149 | 
         
            +
                                ])
         
     | 
| 150 | 
         
            +
                        img_gt = self.test_aug(image=img_gt)['image']
         
     | 
| 151 | 
         
            +
                    elif self.mode == 'training':
         
     | 
| 152 | 
         
            +
                        # -------------------- Do augmentation for training: flip, rotation -------------------- #
         
     | 
| 153 | 
         
            +
                        if self.opt['use_hflip'] or self.opt['use_rot']:
         
     | 
| 154 | 
         
            +
                            img_gt = augment(img_gt, self.opt['use_hflip'], self.opt['use_rot'])
         
     | 
| 155 | 
         
            +
             
     | 
| 156 | 
         
            +
                        h, w = img_gt.shape[0:2]
         
     | 
| 157 | 
         
            +
                        gt_size = self.opt['gt_size']
         
     | 
| 158 | 
         
            +
             
     | 
| 159 | 
         
            +
                        # resize or pad
         
     | 
| 160 | 
         
            +
                        if not self.opt['random_crop']:
         
     | 
| 161 | 
         
            +
                            if not min(h, w) == gt_size:
         
     | 
| 162 | 
         
            +
                                if not hasattr(self, 'smallest_resizer'):
         
     | 
| 163 | 
         
            +
                                    self.smallest_resizer = util_image.SmallestMaxSize(
         
     | 
| 164 | 
         
            +
                                        max_size=gt_size, pass_resize=False,
         
     | 
| 165 | 
         
            +
                                    )
         
     | 
| 166 | 
         
            +
                                img_gt = self.smallest_resizer(img_gt)
         
     | 
| 167 | 
         
            +
             
     | 
| 168 | 
         
            +
                            # center crop
         
     | 
| 169 | 
         
            +
                            if not hasattr(self, 'center_cropper'):
         
     | 
| 170 | 
         
            +
                                self.center_cropper = albumentations.CenterCrop(gt_size, gt_size)
         
     | 
| 171 | 
         
            +
                            img_gt = self.center_cropper(image=img_gt)['image']
         
     | 
| 172 | 
         
            +
                        else:
         
     | 
| 173 | 
         
            +
                            img_gt = random_crop(img_gt, self.opt['gt_size'])
         
     | 
| 174 | 
         
            +
                    else:
         
     | 
| 175 | 
         
            +
                        raise ValueError(f'Unexpected value {self.mode} for mode parameter')
         
     | 
| 176 | 
         
            +
             
     | 
| 177 | 
         
            +
                    # ------------------------ Generate kernels (used in the first degradation) ------------------------ #
         
     | 
| 178 | 
         
            +
                    kernel_size = random.choice(self.kernel_range1)
         
     | 
| 179 | 
         
            +
                    if np.random.uniform() < self.opt['sinc_prob']:
         
     | 
| 180 | 
         
            +
                        # this sinc filter setting is for kernels ranging from [7, 21]
         
     | 
| 181 | 
         
            +
                        if kernel_size < 13:
         
     | 
| 182 | 
         
            +
                            omega_c = np.random.uniform(np.pi / 3, np.pi)
         
     | 
| 183 | 
         
            +
                        else:
         
     | 
| 184 | 
         
            +
                            omega_c = np.random.uniform(np.pi / 5, np.pi)
         
     | 
| 185 | 
         
            +
                        kernel = circular_lowpass_kernel(omega_c, kernel_size, pad_to=False)
         
     | 
| 186 | 
         
            +
                    else:
         
     | 
| 187 | 
         
            +
                        kernel = random_mixed_kernels(
         
     | 
| 188 | 
         
            +
                            self.kernel_list,
         
     | 
| 189 | 
         
            +
                            self.kernel_prob,
         
     | 
| 190 | 
         
            +
                            kernel_size,
         
     | 
| 191 | 
         
            +
                            self.blur_sigma,
         
     | 
| 192 | 
         
            +
                            self.blur_sigma, [-math.pi, math.pi],
         
     | 
| 193 | 
         
            +
                            self.betag_range,
         
     | 
| 194 | 
         
            +
                            self.betap_range,
         
     | 
| 195 | 
         
            +
                            noise_range=None)
         
     | 
| 196 | 
         
            +
                    # pad kernel
         
     | 
| 197 | 
         
            +
                    pad_size = (self.blur_kernel_size - kernel_size) // 2
         
     | 
| 198 | 
         
            +
                    kernel = np.pad(kernel, ((pad_size, pad_size), (pad_size, pad_size)))
         
     | 
| 199 | 
         
            +
             
     | 
| 200 | 
         
            +
                    # ------------------------ Generate kernels (used in the second degradation) ------------------------ #
         
     | 
| 201 | 
         
            +
                    kernel_size = random.choice(self.kernel_range2)
         
     | 
| 202 | 
         
            +
                    if np.random.uniform() < self.opt['sinc_prob2']:
         
     | 
| 203 | 
         
            +
                        if kernel_size < 13:
         
     | 
| 204 | 
         
            +
                            omega_c = np.random.uniform(np.pi / 3, np.pi)
         
     | 
| 205 | 
         
            +
                        else:
         
     | 
| 206 | 
         
            +
                            omega_c = np.random.uniform(np.pi / 5, np.pi)
         
     | 
| 207 | 
         
            +
                        kernel2 = circular_lowpass_kernel(omega_c, kernel_size, pad_to=False)
         
     | 
| 208 | 
         
            +
                    else:
         
     | 
| 209 | 
         
            +
                        kernel2 = random_mixed_kernels(
         
     | 
| 210 | 
         
            +
                            self.kernel_list2,
         
     | 
| 211 | 
         
            +
                            self.kernel_prob2,
         
     | 
| 212 | 
         
            +
                            kernel_size,
         
     | 
| 213 | 
         
            +
                            self.blur_sigma2,
         
     | 
| 214 | 
         
            +
                            self.blur_sigma2, [-math.pi, math.pi],
         
     | 
| 215 | 
         
            +
                            self.betag_range2,
         
     | 
| 216 | 
         
            +
                            self.betap_range2,
         
     | 
| 217 | 
         
            +
                            noise_range=None)
         
     | 
| 218 | 
         
            +
             
     | 
| 219 | 
         
            +
                    # pad kernel
         
     | 
| 220 | 
         
            +
                    pad_size = (self.blur_kernel_size2 - kernel_size) // 2
         
     | 
| 221 | 
         
            +
                    kernel2 = np.pad(kernel2, ((pad_size, pad_size), (pad_size, pad_size)))
         
     | 
| 222 | 
         
            +
             
     | 
| 223 | 
         
            +
                    # ------------------------------------- the final sinc kernel ------------------------------------- #
         
     | 
| 224 | 
         
            +
                    if np.random.uniform() < self.opt['final_sinc_prob']:
         
     | 
| 225 | 
         
            +
                        kernel_size = random.choice(self.kernel_range2)
         
     | 
| 226 | 
         
            +
                        omega_c = np.random.uniform(np.pi / 3, np.pi)
         
     | 
| 227 | 
         
            +
                        sinc_kernel = circular_lowpass_kernel(omega_c, kernel_size, pad_to=self.blur_kernel_size2)
         
     | 
| 228 | 
         
            +
                        sinc_kernel = torch.FloatTensor(sinc_kernel)
         
     | 
| 229 | 
         
            +
                    else:
         
     | 
| 230 | 
         
            +
                        sinc_kernel = self.pulse_tensor
         
     | 
| 231 | 
         
            +
             
     | 
| 232 | 
         
            +
                    # BGR to RGB, HWC to CHW, numpy to tensor
         
     | 
| 233 | 
         
            +
                    img_gt = img2tensor([img_gt], bgr2rgb=True, float32=True)[0]
         
     | 
| 234 | 
         
            +
                    kernel = torch.FloatTensor(kernel)
         
     | 
| 235 | 
         
            +
                    kernel2 = torch.FloatTensor(kernel2)
         
     | 
| 236 | 
         
            +
             
     | 
| 237 | 
         
            +
                    if self.text_paths[index] is None or self.opt['random_crop']:
         
     | 
| 238 | 
         
            +
                        prompt = ""
         
     | 
| 239 | 
         
            +
                    else:
         
     | 
| 240 | 
         
            +
                        with open(self.text_paths[index], 'r') as ff:
         
     | 
| 241 | 
         
            +
                            prompt = ff.read()
         
     | 
| 242 | 
         
            +
                        if self.opt.max_token_length is not None:
         
     | 
| 243 | 
         
            +
                            prompt = prompt[:self.opt.max_token_length]
         
     | 
| 244 | 
         
            +
             
     | 
| 245 | 
         
            +
                    return_d = {
         
     | 
| 246 | 
         
            +
                            'gt': img_gt,
         
     | 
| 247 | 
         
            +
                            'gt_path': gt_path,
         
     | 
| 248 | 
         
            +
                            'txt': prompt,
         
     | 
| 249 | 
         
            +
                            'kernel1': kernel,
         
     | 
| 250 | 
         
            +
                            'kernel2': kernel2,
         
     | 
| 251 | 
         
            +
                            'sinc_kernel': sinc_kernel,
         
     | 
| 252 | 
         
            +
                            }
         
     | 
| 253 | 
         
            +
                    if self.moment_paths[index] is not None and (not self.opt['random_crop']):
         
     | 
| 254 | 
         
            +
                        return_d['gt_moment'] = np.load(self.moment_paths[index])
         
     | 
| 255 | 
         
            +
             
     | 
| 256 | 
         
            +
                    return return_d
         
     | 
| 257 | 
         
            +
             
     | 
| 258 | 
         
            +
                def __len__(self):
         
     | 
| 259 | 
         
            +
                    return len(self.image_paths)
         
     | 
| 260 | 
         
            +
             
     | 
| 261 | 
         
            +
                def degrade_fun(self, conf_degradation, im_gt, kernel1, kernel2, sinc_kernel):
         
     | 
| 262 | 
         
            +
                    if not hasattr(self, 'jpeger'):
         
     | 
| 263 | 
         
            +
                        self.jpeger = DiffJPEG(differentiable=False)  # simulate JPEG compression artifacts
         
     | 
| 264 | 
         
            +
             
     | 
| 265 | 
         
            +
                    ori_h, ori_w = im_gt.size()[2:4]
         
     | 
| 266 | 
         
            +
                    sf = conf_degradation.sf
         
     | 
| 267 | 
         
            +
             
     | 
| 268 | 
         
            +
                    # ----------------------- The first degradation process ----------------------- #
         
     | 
| 269 | 
         
            +
                    # blur
         
     | 
| 270 | 
         
            +
                    out = filter2D(im_gt, kernel1)
         
     | 
| 271 | 
         
            +
                    # random resize
         
     | 
| 272 | 
         
            +
                    updown_type = random.choices(
         
     | 
| 273 | 
         
            +
                            ['up', 'down', 'keep'],
         
     | 
| 274 | 
         
            +
                            conf_degradation['resize_prob'],
         
     | 
| 275 | 
         
            +
                            )[0]
         
     | 
| 276 | 
         
            +
                    if updown_type == 'up':
         
     | 
| 277 | 
         
            +
                        scale = random.uniform(1, conf_degradation['resize_range'][1])
         
     | 
| 278 | 
         
            +
                    elif updown_type == 'down':
         
     | 
| 279 | 
         
            +
                        scale = random.uniform(conf_degradation['resize_range'][0], 1)
         
     | 
| 280 | 
         
            +
                    else:
         
     | 
| 281 | 
         
            +
                        scale = 1
         
     | 
| 282 | 
         
            +
                    mode = random.choice(['area', 'bilinear', 'bicubic'])
         
     | 
| 283 | 
         
            +
                    out = F.interpolate(out, scale_factor=scale, mode=mode)
         
     | 
| 284 | 
         
            +
                    # add noise
         
     | 
| 285 | 
         
            +
                    gray_noise_prob = conf_degradation['gray_noise_prob']
         
     | 
| 286 | 
         
            +
                    if random.random() < conf_degradation['gaussian_noise_prob']:
         
     | 
| 287 | 
         
            +
                        out = random_add_gaussian_noise_pt(
         
     | 
| 288 | 
         
            +
                            out,
         
     | 
| 289 | 
         
            +
                            sigma_range=conf_degradation['noise_range'],
         
     | 
| 290 | 
         
            +
                            clip=True,
         
     | 
| 291 | 
         
            +
                            rounds=False,
         
     | 
| 292 | 
         
            +
                            gray_prob=gray_noise_prob,
         
     | 
| 293 | 
         
            +
                            )
         
     | 
| 294 | 
         
            +
                    else:
         
     | 
| 295 | 
         
            +
                        out = random_add_poisson_noise_pt(
         
     | 
| 296 | 
         
            +
                            out,
         
     | 
| 297 | 
         
            +
                            scale_range=conf_degradation['poisson_scale_range'],
         
     | 
| 298 | 
         
            +
                            gray_prob=gray_noise_prob,
         
     | 
| 299 | 
         
            +
                            clip=True,
         
     | 
| 300 | 
         
            +
                            rounds=False)
         
     | 
| 301 | 
         
            +
                    # JPEG compression
         
     | 
| 302 | 
         
            +
                    jpeg_p = out.new_zeros(out.size(0)).uniform_(*conf_degradation['jpeg_range'])
         
     | 
| 303 | 
         
            +
                    out = torch.clamp(out, 0, 1)  # clamp to [0, 1], otherwise JPEGer will result in unpleasant artifacts
         
     | 
| 304 | 
         
            +
                    out = self.jpeger(out, quality=jpeg_p)
         
     | 
| 305 | 
         
            +
             
     | 
| 306 | 
         
            +
                    # ----------------------- The second degradation process ----------------------- #
         
     | 
| 307 | 
         
            +
                    # blur
         
     | 
| 308 | 
         
            +
                    if random.random() < conf_degradation['second_order_prob']:
         
     | 
| 309 | 
         
            +
                        if random.random() < conf_degradation['second_blur_prob']:
         
     | 
| 310 | 
         
            +
                            out = filter2D(out, kernel2)
         
     | 
| 311 | 
         
            +
                        # random resize
         
     | 
| 312 | 
         
            +
                        updown_type = random.choices(
         
     | 
| 313 | 
         
            +
                                ['up', 'down', 'keep'],
         
     | 
| 314 | 
         
            +
                                conf_degradation['resize_prob2'],
         
     | 
| 315 | 
         
            +
                                )[0]
         
     | 
| 316 | 
         
            +
                        if updown_type == 'up':
         
     | 
| 317 | 
         
            +
                            scale = random.uniform(1, conf_degradation['resize_range2'][1])
         
     | 
| 318 | 
         
            +
                        elif updown_type == 'down':
         
     | 
| 319 | 
         
            +
                            scale = random.uniform(conf_degradation['resize_range2'][0], 1)
         
     | 
| 320 | 
         
            +
                        else:
         
     | 
| 321 | 
         
            +
                            scale = 1
         
     | 
| 322 | 
         
            +
                        mode = random.choice(['area', 'bilinear', 'bicubic'])
         
     | 
| 323 | 
         
            +
                        out = F.interpolate(
         
     | 
| 324 | 
         
            +
                                out,
         
     | 
| 325 | 
         
            +
                                size=(int(ori_h / sf * scale), int(ori_w / sf * scale)),
         
     | 
| 326 | 
         
            +
                                mode=mode,
         
     | 
| 327 | 
         
            +
                                )
         
     | 
| 328 | 
         
            +
                        # add noise
         
     | 
| 329 | 
         
            +
                        gray_noise_prob = conf_degradation['gray_noise_prob2']
         
     | 
| 330 | 
         
            +
                        if random.random() < conf_degradation['gaussian_noise_prob2']:
         
     | 
| 331 | 
         
            +
                            out = random_add_gaussian_noise_pt(
         
     | 
| 332 | 
         
            +
                                out,
         
     | 
| 333 | 
         
            +
                                sigma_range=conf_degradation['noise_range2'],
         
     | 
| 334 | 
         
            +
                                clip=True,
         
     | 
| 335 | 
         
            +
                                rounds=False,
         
     | 
| 336 | 
         
            +
                                gray_prob=gray_noise_prob,
         
     | 
| 337 | 
         
            +
                                )
         
     | 
| 338 | 
         
            +
                        else:
         
     | 
| 339 | 
         
            +
                            out = random_add_poisson_noise_pt(
         
     | 
| 340 | 
         
            +
                                out,
         
     | 
| 341 | 
         
            +
                                scale_range=conf_degradation['poisson_scale_range2'],
         
     | 
| 342 | 
         
            +
                                gray_prob=gray_noise_prob,
         
     | 
| 343 | 
         
            +
                                clip=True,
         
     | 
| 344 | 
         
            +
                                rounds=False,
         
     | 
| 345 | 
         
            +
                                )
         
     | 
| 346 | 
         
            +
             
     | 
| 347 | 
         
            +
                    # JPEG compression + the final sinc filter
         
     | 
| 348 | 
         
            +
                    # We also need to resize images to desired sizes. We group [resize back + sinc filter] together
         
     | 
| 349 | 
         
            +
                    # as one operation.
         
     | 
| 350 | 
         
            +
                    # We consider two orders:
         
     | 
| 351 | 
         
            +
                    #   1. [resize back + sinc filter] + JPEG compression
         
     | 
| 352 | 
         
            +
                    #   2. JPEG compression + [resize back + sinc filter]
         
     | 
| 353 | 
         
            +
                    # Empirically, we find other combinations (sinc + JPEG + Resize) will introduce twisted lines.
         
     | 
| 354 | 
         
            +
                    if random.random() < 0.5:
         
     | 
| 355 | 
         
            +
                        # resize back + the final sinc filter
         
     | 
| 356 | 
         
            +
                        mode = random.choice(['area', 'bilinear', 'bicubic'])
         
     | 
| 357 | 
         
            +
                        out = F.interpolate(
         
     | 
| 358 | 
         
            +
                                out,
         
     | 
| 359 | 
         
            +
                                size=(ori_h // sf, ori_w // sf),
         
     | 
| 360 | 
         
            +
                                mode=mode,
         
     | 
| 361 | 
         
            +
                                )
         
     | 
| 362 | 
         
            +
                        out = filter2D(out, sinc_kernel)
         
     | 
| 363 | 
         
            +
                        # JPEG compression
         
     | 
| 364 | 
         
            +
                        jpeg_p = out.new_zeros(out.size(0)).uniform_(*conf_degradation['jpeg_range2'])
         
     | 
| 365 | 
         
            +
                        out = torch.clamp(out, 0, 1)
         
     | 
| 366 | 
         
            +
                        out = self.jpeger(out, quality=jpeg_p)
         
     | 
| 367 | 
         
            +
                    else:
         
     | 
| 368 | 
         
            +
                        # JPEG compression
         
     | 
| 369 | 
         
            +
                        jpeg_p = out.new_zeros(out.size(0)).uniform_(*conf_degradation['jpeg_range2'])
         
     | 
| 370 | 
         
            +
                        out = torch.clamp(out, 0, 1)
         
     | 
| 371 | 
         
            +
                        out = self.jpeger(out, quality=jpeg_p)
         
     | 
| 372 | 
         
            +
                        # resize back + the final sinc filter
         
     | 
| 373 | 
         
            +
                        mode = random.choice(['area', 'bilinear', 'bicubic'])
         
     | 
| 374 | 
         
            +
                        out = F.interpolate(
         
     | 
| 375 | 
         
            +
                                out,
         
     | 
| 376 | 
         
            +
                                size=(ori_h // sf, ori_w // sf),
         
     | 
| 377 | 
         
            +
                                mode=mode,
         
     | 
| 378 | 
         
            +
                                )
         
     | 
| 379 | 
         
            +
                        out = filter2D(out, sinc_kernel)
         
     | 
| 380 | 
         
            +
             
     | 
| 381 | 
         
            +
                    # clamp and round
         
     | 
| 382 | 
         
            +
                    im_lq = torch.clamp((out * 255.0).round(), 0, 255) / 255.
         
     | 
| 383 | 
         
            +
             
     | 
| 384 | 
         
            +
                    return {'lq':im_lq.contiguous(), 'gt':im_gt}
         
     |