Comments (20)
@heitzmann Unfortunately the above issue is holding up our migration to 1.1.1 (from 1.0). Was there some other reason to change the boolean code? We have not experienced any errors in gdspy 1.0.
from gdspy.
The problem seems to have been the last update on the external library we use, which introduced the bug on their side. I've updated gdspy again to include the newest version, and the example you provided is working correctly for me.
I'm releasing a bugfix version 1.1.2. Please, let me know if the problem persists and thanks for the report!
from gdspy.
@heitzmann Thanks for your quick fix. We will do the installation and verification of 1.1.2 shortly and will let you know how it goes. Since we rely on gdspy for our production builds, we have almost finished creating an automated testing framework that validates the integrity of all our binary artifacts as we transition from one release of gdspy to the next. This is related to issue #24 and is based on SHA-1 hashing of binary .gds files. Because of the sheer size of our libraries, we are likely to detect a wide range of bugs and inconsistencies between the releases (though not able to pass judgment about the significance of observed differences).
from gdspy.
@heitzmann After testing many geometries, we have concluded that, unfortunately, the offset algorithm still has issues (1.1.2 tested, the issue may have existed previously). It is not a frequent error and does not prevent us from effectively using gdspy but it does occur. The picture below shows the original structures in cyan and the resultant offset operation in black (small offset was applied) - obviously incorrect. Unfortunately, these errors are embedded into large layouts. We are currently working on isolating the issue to a simplest presentable case that can be acted on. I am also testing a few theories about what circumstances trigger this and we will be reporting on this as we tackle this issue.
from gdspy.
@heitzmann Below is an example that illustrates the offset
problem described by @rosivda above. It creates a few waveguide structures, and enlarges them by a small amount. Please note that the exact manifestation of the errors differs, depending on how much of the input structure is included in the example, but you can see an example of the type of errors that we observe in the output file. Thank you for your help with this.
Example of offset error:
import gdspy
import numpy as np
# structure coordinates
poly_stuctures = [
np.array([[-7770.333, 3098.327],
[-7771.369, 3100.531],
[-7772.402, 3102.737],
[-7773.431, 3104.944],
[-7774.456, 3107.153],
[-7775.478, 3109.364],
[-7776.495, 3111.576],
[-7777.509, 3113.791],
[-7778.518, 3116.007],
[-7779.524, 3118.225],
[-7780.526, 3120.444],
[-7781.525, 3122.666],
[-7782.519, 3124.889],
[-7783.509, 3127.113],
[-7784.496, 3129.34 ],
[-7785.479, 3131.568],
[-7786.458, 3133.798],
[-7787.433, 3136.03 ],
[-7788.404, 3138.263],
[-7789.371, 3140.498],
[-7790.334, 3142.735],
[-7791.294, 3144.973],
[-7792.25 , 3147.213],
[-7793.201, 3149.455],
[-7794.149, 3151.698],
[-7795.093, 3153.943],
[-7796.033, 3156.19 ],
[-7796.969, 3158.438],
[-7797.901, 3160.688],
[-7798.829, 3162.939],
[-7799.754, 3165.192],
[-7800.674, 3167.447],
[-7801.591, 3169.703],
[-7802.503, 3171.961],
[-7803.412, 3174.221],
[-7804.317, 3176.482],
[-7805.218, 3178.744],
[-7806.114, 3181.008],
[-7807.007, 3183.274],
[-7807.896, 3185.541],
[-7808.781, 3187.81 ],
[-7809.663, 3190.08 ],
[-7810.54 , 3192.352],
[-7811.413, 3194.626],
[-7812.282, 3196.901],
[-7813.148, 3199.177],
[-7814.009, 3201.455],
[-7814.866, 3203.734],
[-7815.72 , 3206.015],
[-7816.569, 3208.298],
[-7817.415, 3210.581],
[-7818.256, 3212.867],
[-7819.094, 3215.153],
[-7819.927, 3217.442],
[-7820.757, 3219.731],
[-7821.583, 3222.022],
[-7822.404, 3224.315],
[-7823.222, 3226.609],
[-7824.036, 3228.904],
[-7824.845, 3231.201],
[-7825.651, 3233.499],
[-7826.453, 3235.799],
[-7827.25 , 3238.1 ],
[-7828.044, 3240.402],
[-7828.834, 3242.706],
[-7829.62 , 3245.011],
[-7830.401, 3247.317],
[-7831.179, 3249.625],
[-7831.953, 3251.934],
[-7832.722, 3254.245],
[-7833.488, 3256.557],
[-7834.25 , 3258.87 ],
[-7835.007, 3261.184],
[-7835.761, 3263.5 ],
[-7836.51 , 3265.817],
[-7837.256, 3268.136],
[-7837.997, 3270.455],
[-7838.735, 3272.776],
[-7839.468, 3275.099],
[-7840.198, 3277.422],
[-7840.923, 3279.747],
[-7841.644, 3282.073],
[-7842.362, 3284.4 ],
[-7843.075, 3286.729],
[-7843.784, 3289.059],
[-7844.489, 3291.39 ],
[-7845.19 , 3293.722],
[-7845.887, 3296.055],
[-7846.58 , 3298.39 ],
[-7847.269, 3300.726],
[-7847.954, 3303.063],
[-7848.635, 3305.401],
[-7849.312, 3307.74 ],
[-7849.984, 3310.081],
[-7850.653, 3312.423],
[-7851.317, 3314.766],
[-7851.978, 3317.11 ],
[-7852.634, 3319.455],
[-7853.287, 3321.801],
[-7850.01 , 3322.709],
[-7849.359, 3320.368],
[-7848.704, 3318.029],
[-7848.046, 3315.691],
[-7847.383, 3313.353],
[-7846.716, 3311.017],
[-7846.045, 3308.682],
[-7845.37 , 3306.349],
[-7844.69 , 3304.016],
[-7844.007, 3301.685],
[-7843.32 , 3299.355],
[-7842.629, 3297.026],
[-7841.933, 3294.698],
[-7841.234, 3292.371],
[-7840.531, 3290.046],
[-7839.823, 3287.722],
[-7839.112, 3285.399],
[-7838.396, 3283.077],
[-7837.676, 3280.757],
[-7836.953, 3278.438],
[-7836.225, 3276.12 ],
[-7835.494, 3273.803],
[-7834.758, 3271.488],
[-7834.018, 3269.174],
[-7833.274, 3266.861],
[-7832.527, 3264.549],
[-7831.775, 3262.239],
[-7831.019, 3259.93 ],
[-7830.259, 3257.623],
[-7829.496, 3255.317],
[-7828.728, 3253.012],
[-7827.956, 3250.708],
[-7827.18 , 3248.406],
[-7826.4 , 3246.105],
[-7825.617, 3243.806],
[-7824.829, 3241.507],
[-7824.037, 3239.211],
[-7823.241, 3236.915],
[-7822.442, 3234.621],
[-7821.638, 3232.329],
[-7820.83 , 3230.037],
[-7820.018, 3227.748],
[-7819.203, 3225.459],
[-7818.383, 3223.172],
[-7817.559, 3220.887],
[-7816.732, 3218.603],
[-7815.9 , 3216.32 ],
[-7815.065, 3214.039],
[-7814.225, 3211.759],
[-7813.382, 3209.481],
[-7812.534, 3207.204],
[-7811.683, 3204.929],
[-7810.828, 3202.655],
[-7809.968, 3200.382],
[-7809.105, 3198.111],
[-7808.238, 3195.842],
[-7807.367, 3193.574],
[-7806.492, 3191.308],
[-7805.613, 3189.043],
[-7804.73 , 3186.78 ],
[-7803.843, 3184.518],
[-7802.952, 3182.258],
[-7802.058, 3179.999],
[-7801.159, 3177.742],
[-7800.256, 3175.486],
[-7799.35 , 3173.232],
[-7798.44 , 3170.98 ],
[-7797.525, 3168.729],
[-7796.607, 3166.48 ],
[-7795.685, 3164.232],
[-7794.759, 3161.986],
[-7793.829, 3159.742],
[-7792.895, 3157.499],
[-7791.958, 3155.258],
[-7791.016, 3153.019],
[-7790.07 , 3150.781],
[-7789.121, 3148.544],
[-7788.168, 3146.31 ],
[-7787.211, 3144.077],
[-7786.25 , 3141.846],
[-7785.285, 3139.616],
[-7784.316, 3137.388],
[-7783.343, 3135.162],
[-7782.367, 3132.937],
[-7781.386, 3130.715],
[-7780.402, 3128.494],
[-7779.414, 3126.274],
[-7778.422, 3124.056],
[-7777.426, 3121.841],
[-7776.427, 3119.626],
[-7775.423, 3117.414],
[-7774.416, 3115.203],
[-7773.405, 3112.994],
[-7772.39 , 3110.787],
[-7771.371, 3108.581],
[-7770.348, 3106.378],
[-7769.322, 3104.176],
[-7768.291, 3101.976],
[-7767.257, 3099.777]]),
np.array([[-7853.287, 3321.801],
[-7853.935, 3324.149],
[-7854.579, 3326.497],
[-7855.219, 3328.847],
[-7855.855, 3331.198],
[-7856.487, 3333.55 ],
[-7857.115, 3335.903],
[-7857.738, 3338.257],
[-7858.358, 3340.612],
[-7858.974, 3342.968],
[-7859.585, 3345.326],
[-7860.192, 3347.684],
[-7860.796, 3350.043],
[-7861.395, 3352.404],
[-7861.99 , 3354.765],
[-7862.581, 3357.128],
[-7863.168, 3359.492],
[-7863.75 , 3361.856],
[-7864.329, 3364.222],
[-7864.903, 3366.588],
[-7865.474, 3368.956],
[-7866.04 , 3371.324],
[-7866.602, 3373.694],
[-7867.16 , 3376.064],
[-7867.714, 3378.436],
[-7868.264, 3380.808],
[-7868.81 , 3383.182],
[-7869.351, 3385.556],
[-7869.889, 3387.931],
[-7870.422, 3390.308],
[-7870.951, 3392.685],
[-7867.632, 3393.421],
[-7867.104, 3391.049],
[-7866.572, 3388.679],
[-7866.036, 3386.309],
[-7865.495, 3383.941],
[-7864.951, 3381.573],
[-7864.403, 3379.206],
[-7863.85 , 3376.841],
[-7863.293, 3374.476],
[-7862.733, 3372.112],
[-7862.168, 3369.749],
[-7861.599, 3367.387],
[-7861.026, 3365.027],
[-7860.448, 3362.667],
[-7859.867, 3360.308],
[-7859.282, 3357.95 ],
[-7858.692, 3355.593],
[-7858.099, 3353.238],
[-7857.501, 3350.883],
[-7856.899, 3348.529],
[-7856.293, 3346.176],
[-7855.683, 3343.825],
[-7855.069, 3341.474],
[-7854.451, 3339.125],
[-7853.829, 3336.776],
[-7853.203, 3334.429],
[-7852.572, 3332.083],
[-7851.938, 3329.738],
[-7851.299, 3327.394],
[-7850.657, 3325.051],
[-7850.01 , 3322.709]]),
np.array([[-7788.425, 3089.797],
[-7789.476, 3092.032],
[-7790.524, 3094.269],
[-7791.567, 3096.508],
[-7792.607, 3098.749],
[-7793.643, 3100.991],
[-7794.675, 3103.235],
[-7795.703, 3105.481],
[-7796.727, 3107.729],
[-7797.748, 3109.978],
[-7798.764, 3112.23 ],
[-7799.777, 3114.483],
[-7800.785, 3116.737],
[-7801.79 , 3118.994],
[-7802.79 , 3121.252],
[-7803.787, 3123.512],
[-7804.78 , 3125.774],
[-7805.769, 3128.038],
[-7806.754, 3130.303],
[-7807.735, 3132.57 ],
[-7808.712, 3134.838],
[-7809.685, 3137.109],
[-7810.654, 3139.38 ],
[-7811.62 , 3141.654],
[-7812.581, 3143.93 ],
[-7813.538, 3146.207],
[-7814.492, 3148.485],
[-7815.441, 3150.765],
[-7816.387, 3153.047],
[-7817.328, 3155.331],
[-7818.266, 3157.616],
[-7819.199, 3159.903],
[-7820.129, 3162.192],
[-7821.055, 3164.482],
[-7821.976, 3166.773],
[-7822.894, 3169.067],
[-7823.808, 3171.362],
[-7824.717, 3173.658],
[-7825.623, 3175.956],
[-7826.525, 3178.256],
[-7827.422, 3180.557],
[-7828.316, 3182.86 ],
[-7829.206, 3185.164],
[-7830.091, 3187.47 ],
[-7830.973, 3189.777],
[-7831.851, 3192.086],
[-7832.724, 3194.396],
[-7833.594, 3196.708],
[-7834.46 , 3199.022],
[-7835.321, 3201.337],
[-7836.179, 3203.653],
[-7837.032, 3205.971],
[-7837.882, 3208.291],
[-7838.727, 3210.611],
[-7839.569, 3212.934],
[-7840.406, 3215.258],
[-7841.24 , 3217.583],
[-7842.069, 3219.909],
[-7842.894, 3222.238],
[-7843.715, 3224.567],
[-7844.533, 3226.898],
[-7845.346, 3229.231],
[-7846.155, 3231.564],
[-7846.96 , 3233.9 ],
[-7847.761, 3236.236],
[-7848.558, 3238.574],
[-7849.351, 3240.914],
[-7850.139, 3243.254],
[-7850.924, 3245.596],
[-7851.705, 3247.94 ],
[-7852.481, 3250.285],
[-7853.254, 3252.631],
[-7854.022, 3254.978],
[-7854.787, 3257.327],
[-7855.547, 3259.677],
[-7856.303, 3262.029],
[-7857.055, 3264.382],
[-7857.803, 3266.736],
[-7858.547, 3269.091],
[-7859.287, 3271.448],
[-7860.023, 3273.806],
[-7860.754, 3276.165],
[-7861.482, 3278.526],
[-7862.205, 3280.887],
[-7862.924, 3283.25 ],
[-7863.64 , 3285.615],
[-7864.351, 3287.98 ],
[-7865.058, 3290.347],
[-7865.761, 3292.715],
[-7866.459, 3295.084],
[-7867.154, 3297.454],
[-7867.845, 3299.826],
[-7868.531, 3302.199],
[-7869.213, 3304.573],
[-7869.891, 3306.948],
[-7870.565, 3309.324],
[-7871.235, 3311.702],
[-7871.901, 3314.081],
[-7872.563, 3316.46 ],
[-7869.286, 3317.368],
[-7868.626, 3314.994],
[-7867.962, 3312.621],
[-7867.294, 3310.249],
[-7866.621, 3307.879],
[-7865.945, 3305.509],
[-7865.264, 3303.141],
[-7864.579, 3300.774],
[-7863.89 , 3298.408],
[-7863.197, 3296.043],
[-7862.5 , 3293.68 ],
[-7861.799, 3291.317],
[-7861.094, 3288.956],
[-7860.384, 3286.596],
[-7859.671, 3284.238],
[-7858.953, 3281.88 ],
[-7858.232, 3279.524],
[-7857.506, 3277.169],
[-7856.776, 3274.816],
[-7856.042, 3272.463],
[-7855.304, 3270.112],
[-7854.562, 3267.763],
[-7853.816, 3265.414],
[-7853.065, 3263.067],
[-7852.311, 3260.721],
[-7851.553, 3258.377],
[-7850.79 , 3256.033],
[-7850.024, 3253.691],
[-7849.253, 3251.351],
[-7848.478, 3249.012],
[-7847.699, 3246.674],
[-7846.917, 3244.337],
[-7846.13 , 3242.002],
[-7845.339, 3239.668],
[-7844.544, 3237.336],
[-7843.745, 3235.005],
[-7842.942, 3232.675],
[-7842.134, 3230.347],
[-7841.323, 3228.02 ],
[-7840.508, 3225.695],
[-7839.689, 3223.371],
[-7838.865, 3221.048],
[-7838.038, 3218.727],
[-7837.207, 3216.407],
[-7836.371, 3214.089],
[-7835.532, 3211.772],
[-7834.688, 3209.457],
[-7833.841, 3207.143],
[-7832.989, 3204.831],
[-7832.134, 3202.52 ],
[-7831.274, 3200.211],
[-7830.411, 3197.903],
[-7829.543, 3195.596],
[-7828.672, 3193.291],
[-7827.796, 3190.988],
[-7826.916, 3188.686],
[-7826.033, 3186.386],
[-7825.145, 3184.087],
[-7824.254, 3181.79 ],
[-7823.358, 3179.494],
[-7822.459, 3177.2 ],
[-7821.555, 3174.907],
[-7820.648, 3172.617],
[-7819.736, 3170.327],
[-7818.821, 3168.039],
[-7817.901, 3165.753],
[-7816.978, 3163.468],
[-7816.05 , 3161.185],
[-7815.119, 3158.904],
[-7814.184, 3156.624],
[-7813.245, 3154.346],
[-7812.301, 3152.07 ],
[-7811.354, 3149.795],
[-7810.403, 3147.522],
[-7809.448, 3145.25 ],
[-7808.489, 3142.98 ],
[-7807.526, 3140.712],
[-7806.559, 3138.445],
[-7805.588, 3136.18 ],
[-7804.613, 3133.917],
[-7803.635, 3131.656],
[-7802.652, 3129.396],
[-7801.666, 3127.138],
[-7800.675, 3124.882],
[-7799.681, 3122.627],
[-7798.682, 3120.374],
[-7797.68 , 3118.123],
[-7796.674, 3115.874],
[-7795.664, 3113.626],
[-7794.65 , 3111.38 ],
[-7793.632, 3109.136],
[-7792.61 , 3106.894],
[-7791.585, 3104.653],
[-7790.555, 3102.414],
[-7789.522, 3100.177],
[-7788.485, 3097.942],
[-7787.443, 3095.709],
[-7786.398, 3093.477],
[-7785.349, 3091.247]]),
np.array([[-7872.563, 3316.46 ],
[-7873.22 , 3318.841],
[-7873.873, 3321.223],
[-7874.523, 3323.607],
[-7875.168, 3325.991],
[-7875.809, 3328.377],
[-7876.445, 3330.763],
[-7877.078, 3333.151],
[-7877.706, 3335.54 ],
[-7878.331, 3337.929],
[-7878.951, 3340.32 ],
[-7879.567, 3342.712],
[-7880.179, 3345.106],
[-7880.786, 3347.5 ],
[-7881.39 , 3349.895],
[-7881.989, 3352.291],
[-7882.585, 3354.688],
[-7883.176, 3357.087],
[-7883.763, 3359.486],
[-7884.345, 3361.887],
[-7884.924, 3364.288],
[-7885.498, 3366.69 ],
[-7886.068, 3369.094],
[-7886.634, 3371.498],
[-7887.196, 3373.903],
[-7887.754, 3376.31 ],
[-7888.307, 3378.717],
[-7888.856, 3381.125],
[-7889.402, 3383.534],
[-7889.942, 3385.944],
[-7890.479, 3388.356],
[-7887.16 , 3389.091],
[-7886.624, 3386.686],
[-7886.085, 3384.282],
[-7885.541, 3381.878],
[-7884.993, 3379.476],
[-7884.441, 3377.074],
[-7883.885, 3374.674],
[-7883.324, 3372.274],
[-7882.759, 3369.876],
[-7882.191, 3367.478],
[-7881.618, 3365.081],
[-7881.04 , 3362.686],
[-7880.459, 3360.291],
[-7879.874, 3357.898],
[-7879.284, 3355.505],
[-7878.69 , 3353.113],
[-7878.092, 3350.723],
[-7877.49 , 3348.333],
[-7876.884, 3345.945],
[-7876.274, 3343.558],
[-7875.659, 3341.171],
[-7875.04 , 3338.786],
[-7874.418, 3336.402],
[-7873.791, 3334.019],
[-7873.159, 3331.637],
[-7872.524, 3329.256],
[-7871.885, 3326.876],
[-7871.241, 3324.497],
[-7870.594, 3322.12 ],
[-7869.942, 3319.743],
[-7869.286, 3317.368]]),
np.array([[-8670.333, 3058.327],
[-8671.369, 3060.531],
[-8672.402, 3062.737],
[-8673.431, 3064.944],
[-8674.456, 3067.153],
[-8675.478, 3069.364],
[-8676.495, 3071.576],
[-8677.509, 3073.791],
[-8678.518, 3076.007],
[-8679.524, 3078.225],
[-8680.526, 3080.444],
[-8681.525, 3082.666],
[-8682.519, 3084.889],
[-8683.509, 3087.113],
[-8684.496, 3089.34 ],
[-8685.479, 3091.568],
[-8686.458, 3093.798],
[-8687.433, 3096.03 ],
[-8688.404, 3098.263],
[-8689.371, 3100.498],
[-8690.334, 3102.735],
[-8691.294, 3104.973],
[-8692.25 , 3107.213],
[-8693.201, 3109.455],
[-8694.149, 3111.698],
[-8695.093, 3113.943],
[-8696.033, 3116.19 ],
[-8696.969, 3118.438],
[-8697.901, 3120.688],
[-8698.829, 3122.939],
[-8699.754, 3125.192],
[-8700.674, 3127.447],
[-8701.591, 3129.703],
[-8702.503, 3131.961],
[-8703.412, 3134.221],
[-8704.317, 3136.482],
[-8705.218, 3138.744],
[-8706.114, 3141.008],
[-8707.007, 3143.274],
[-8707.896, 3145.541],
[-8708.781, 3147.81 ],
[-8709.663, 3150.08 ],
[-8710.54 , 3152.352],
[-8711.413, 3154.626],
[-8712.282, 3156.901],
[-8713.148, 3159.177],
[-8714.009, 3161.455],
[-8714.866, 3163.734],
[-8715.72 , 3166.015],
[-8716.569, 3168.298],
[-8717.415, 3170.581],
[-8718.256, 3172.867],
[-8719.094, 3175.153],
[-8719.927, 3177.442],
[-8720.757, 3179.731],
[-8721.583, 3182.022],
[-8722.404, 3184.315],
[-8723.222, 3186.609],
[-8724.036, 3188.904],
[-8724.845, 3191.201],
[-8725.651, 3193.499],
[-8726.453, 3195.799],
[-8727.25 , 3198.1 ],
[-8728.044, 3200.402],
[-8728.834, 3202.706],
[-8729.62 , 3205.011],
[-8730.401, 3207.317],
[-8731.179, 3209.625],
[-8731.953, 3211.934],
[-8732.722, 3214.245],
[-8733.488, 3216.557],
[-8734.25 , 3218.87 ],
[-8735.007, 3221.184],
[-8735.761, 3223.5 ],
[-8736.51 , 3225.817],
[-8737.256, 3228.136],
[-8737.997, 3230.455],
[-8738.735, 3232.776],
[-8739.468, 3235.099],
[-8740.198, 3237.422],
[-8740.923, 3239.747],
[-8741.644, 3242.073],
[-8742.362, 3244.4 ],
[-8743.075, 3246.729],
[-8743.784, 3249.059],
[-8744.489, 3251.39 ],
[-8745.19 , 3253.722],
[-8745.887, 3256.055],
[-8746.58 , 3258.39 ],
[-8747.269, 3260.726],
[-8747.954, 3263.063],
[-8748.635, 3265.401],
[-8749.312, 3267.74 ],
[-8749.984, 3270.081],
[-8750.653, 3272.423],
[-8751.317, 3274.766],
[-8751.978, 3277.11 ],
[-8752.634, 3279.455],
[-8753.287, 3281.801],
[-8750.01 , 3282.709],
[-8749.359, 3280.368],
[-8748.704, 3278.029],
[-8748.046, 3275.691],
[-8747.383, 3273.353],
[-8746.716, 3271.017],
[-8746.045, 3268.682],
[-8745.37 , 3266.349],
[-8744.69 , 3264.016],
[-8744.007, 3261.685],
[-8743.32 , 3259.355],
[-8742.629, 3257.026],
[-8741.933, 3254.698],
[-8741.234, 3252.371],
[-8740.531, 3250.046],
[-8739.823, 3247.722],
[-8739.112, 3245.399],
[-8738.396, 3243.077],
[-8737.676, 3240.757],
[-8736.953, 3238.438],
[-8736.225, 3236.12 ],
[-8735.494, 3233.803],
[-8734.758, 3231.488],
[-8734.018, 3229.174],
[-8733.274, 3226.861],
[-8732.527, 3224.549],
[-8731.775, 3222.239],
[-8731.019, 3219.93 ],
[-8730.259, 3217.623],
[-8729.496, 3215.317],
[-8728.728, 3213.012],
[-8727.956, 3210.708],
[-8727.18 , 3208.406],
[-8726.4 , 3206.105],
[-8725.617, 3203.806],
[-8724.829, 3201.507],
[-8724.037, 3199.211],
[-8723.241, 3196.915],
[-8722.442, 3194.621],
[-8721.638, 3192.329],
[-8720.83 , 3190.037],
[-8720.018, 3187.748],
[-8719.203, 3185.459],
[-8718.383, 3183.172],
[-8717.559, 3180.887],
[-8716.732, 3178.603],
[-8715.9 , 3176.32 ],
[-8715.065, 3174.039],
[-8714.225, 3171.759],
[-8713.382, 3169.481],
[-8712.534, 3167.204],
[-8711.683, 3164.929],
[-8710.828, 3162.655],
[-8709.968, 3160.382],
[-8709.105, 3158.111],
[-8708.238, 3155.842],
[-8707.367, 3153.574],
[-8706.492, 3151.308],
[-8705.613, 3149.043],
[-8704.73 , 3146.78 ],
[-8703.843, 3144.518],
[-8702.952, 3142.258],
[-8702.058, 3139.999],
[-8701.159, 3137.742],
[-8700.256, 3135.486],
[-8699.35 , 3133.232],
[-8698.44 , 3130.98 ],
[-8697.525, 3128.729],
[-8696.607, 3126.48 ],
[-8695.685, 3124.232],
[-8694.759, 3121.986],
[-8693.829, 3119.742],
[-8692.895, 3117.499],
[-8691.958, 3115.258],
[-8691.016, 3113.019],
[-8690.07 , 3110.781],
[-8689.121, 3108.544],
[-8688.168, 3106.31 ],
[-8687.211, 3104.077],
[-8686.25 , 3101.846],
[-8685.285, 3099.616],
[-8684.316, 3097.388],
[-8683.343, 3095.162],
[-8682.367, 3092.937],
[-8681.386, 3090.715],
[-8680.402, 3088.494],
[-8679.414, 3086.274],
[-8678.422, 3084.056],
[-8677.426, 3081.841],
[-8676.427, 3079.626],
[-8675.423, 3077.414],
[-8674.416, 3075.203],
[-8673.405, 3072.994],
[-8672.39 , 3070.787],
[-8671.371, 3068.581],
[-8670.348, 3066.378],
[-8669.322, 3064.176],
[-8668.291, 3061.976],
[-8667.257, 3059.777]]),
np.array([[-8753.287, 3281.801],
[-8753.935, 3284.149],
[-8754.579, 3286.497],
[-8755.219, 3288.847],
[-8755.855, 3291.198],
[-8756.487, 3293.55 ],
[-8757.115, 3295.903],
[-8757.738, 3298.257],
[-8758.358, 3300.612],
[-8758.974, 3302.968],
[-8759.585, 3305.326],
[-8760.192, 3307.684],
[-8760.796, 3310.043],
[-8761.395, 3312.404],
[-8761.99 , 3314.765],
[-8762.581, 3317.128],
[-8763.168, 3319.492],
[-8763.75 , 3321.856],
[-8764.329, 3324.222],
[-8764.903, 3326.588],
[-8765.474, 3328.956],
[-8766.04 , 3331.324],
[-8766.602, 3333.694],
[-8767.16 , 3336.064],
[-8767.714, 3338.436],
[-8768.264, 3340.808],
[-8768.81 , 3343.182],
[-8769.351, 3345.556],
[-8769.889, 3347.931],
[-8770.422, 3350.308],
[-8770.951, 3352.685],
[-8767.632, 3353.421],
[-8767.104, 3351.049],
[-8766.572, 3348.679],
[-8766.036, 3346.309],
[-8765.495, 3343.941],
[-8764.951, 3341.573],
[-8764.403, 3339.206],
[-8763.85 , 3336.841],
[-8763.293, 3334.476],
[-8762.733, 3332.112],
[-8762.168, 3329.749],
[-8761.599, 3327.387],
[-8761.026, 3325.027],
[-8760.448, 3322.667],
[-8759.867, 3320.308],
[-8759.282, 3317.95 ],
[-8758.692, 3315.593],
[-8758.099, 3313.238],
[-8757.501, 3310.883],
[-8756.899, 3308.529],
[-8756.293, 3306.176],
[-8755.683, 3303.825],
[-8755.069, 3301.474],
[-8754.451, 3299.125],
[-8753.829, 3296.776],
[-8753.203, 3294.429],
[-8752.572, 3292.083],
[-8751.938, 3289.738],
[-8751.299, 3287.394],
[-8750.657, 3285.051],
[-8750.01 , 3282.709]]),
np.array([[-8688.425, 3049.797],
[-8689.476, 3052.032],
[-8690.524, 3054.269],
[-8691.567, 3056.508],
[-8692.607, 3058.749],
[-8693.643, 3060.991],
[-8694.675, 3063.235],
[-8695.703, 3065.481],
[-8696.727, 3067.729],
[-8697.748, 3069.978],
[-8698.764, 3072.23 ],
[-8699.777, 3074.483],
[-8700.785, 3076.737],
[-8701.79 , 3078.994],
[-8702.79 , 3081.252],
[-8703.787, 3083.512],
[-8704.78 , 3085.774],
[-8705.769, 3088.038],
[-8706.754, 3090.303],
[-8707.735, 3092.57 ],
[-8708.712, 3094.838],
[-8709.685, 3097.109],
[-8710.654, 3099.38 ],
[-8711.62 , 3101.654],
[-8712.581, 3103.93 ],
[-8713.538, 3106.207],
[-8714.492, 3108.485],
[-8715.441, 3110.765],
[-8716.387, 3113.047],
[-8717.328, 3115.331],
[-8718.266, 3117.616],
[-8719.199, 3119.903],
[-8720.129, 3122.192],
[-8721.055, 3124.482],
[-8721.976, 3126.773],
[-8722.894, 3129.067],
[-8723.808, 3131.362],
[-8724.717, 3133.658],
[-8725.623, 3135.956],
[-8726.525, 3138.256],
[-8727.422, 3140.557],
[-8728.316, 3142.86 ],
[-8729.206, 3145.164],
[-8730.091, 3147.47 ],
[-8730.973, 3149.777],
[-8731.851, 3152.086],
[-8732.724, 3154.396],
[-8733.594, 3156.708],
[-8734.46 , 3159.022],
[-8735.321, 3161.337],
[-8736.179, 3163.653],
[-8737.032, 3165.971],
[-8737.882, 3168.291],
[-8738.727, 3170.611],
[-8739.569, 3172.934],
[-8740.406, 3175.258],
[-8741.24 , 3177.583],
[-8742.069, 3179.909],
[-8742.894, 3182.238],
[-8743.715, 3184.567],
[-8744.533, 3186.898],
[-8745.346, 3189.231],
[-8746.155, 3191.564],
[-8746.96 , 3193.9 ],
[-8747.761, 3196.236],
[-8748.558, 3198.574],
[-8749.351, 3200.914],
[-8750.139, 3203.254],
[-8750.924, 3205.596],
[-8751.705, 3207.94 ],
[-8752.481, 3210.285],
[-8753.254, 3212.631],
[-8754.022, 3214.978],
[-8754.787, 3217.327],
[-8755.547, 3219.677],
[-8756.303, 3222.029],
[-8757.055, 3224.382],
[-8757.803, 3226.736],
[-8758.547, 3229.091],
[-8759.287, 3231.448],
[-8760.023, 3233.806],
[-8760.754, 3236.165],
[-8761.482, 3238.526],
[-8762.205, 3240.887],
[-8762.924, 3243.25 ],
[-8763.64 , 3245.615],
[-8764.351, 3247.98 ],
[-8765.058, 3250.347],
[-8765.761, 3252.715],
[-8766.459, 3255.084],
[-8767.154, 3257.454],
[-8767.845, 3259.826],
[-8768.531, 3262.199],
[-8769.213, 3264.573],
[-8769.891, 3266.948],
[-8770.565, 3269.324],
[-8771.235, 3271.702],
[-8771.901, 3274.081],
[-8772.563, 3276.46 ],
[-8769.286, 3277.368],
[-8768.626, 3274.994],
[-8767.962, 3272.621],
[-8767.294, 3270.249],
[-8766.621, 3267.879],
[-8765.945, 3265.509],
[-8765.264, 3263.141],
[-8764.579, 3260.774],
[-8763.89 , 3258.408],
[-8763.197, 3256.043],
[-8762.5 , 3253.68 ],
[-8761.799, 3251.317],
[-8761.094, 3248.956],
[-8760.384, 3246.596],
[-8759.671, 3244.238],
[-8758.953, 3241.88 ],
[-8758.232, 3239.524],
[-8757.506, 3237.169],
[-8756.776, 3234.816],
[-8756.042, 3232.463],
[-8755.304, 3230.112],
[-8754.562, 3227.763],
[-8753.816, 3225.414],
[-8753.065, 3223.067],
[-8752.311, 3220.721],
[-8751.553, 3218.377],
[-8750.79 , 3216.033],
[-8750.024, 3213.691],
[-8749.253, 3211.351],
[-8748.478, 3209.012],
[-8747.699, 3206.674],
[-8746.917, 3204.337],
[-8746.13 , 3202.002],
[-8745.339, 3199.668],
[-8744.544, 3197.336],
[-8743.745, 3195.005],
[-8742.942, 3192.675],
[-8742.134, 3190.347],
[-8741.323, 3188.02 ],
[-8740.508, 3185.695],
[-8739.689, 3183.371],
[-8738.865, 3181.048],
[-8738.038, 3178.727],
[-8737.207, 3176.407],
[-8736.371, 3174.089],
[-8735.532, 3171.772],
[-8734.688, 3169.457],
[-8733.841, 3167.143],
[-8732.989, 3164.831],
[-8732.134, 3162.52 ],
[-8731.274, 3160.211],
[-8730.411, 3157.903],
[-8729.543, 3155.596],
[-8728.672, 3153.291],
[-8727.796, 3150.988],
[-8726.916, 3148.686],
[-8726.033, 3146.386],
[-8725.145, 3144.087],
[-8724.254, 3141.79 ],
[-8723.358, 3139.494],
[-8722.459, 3137.2 ],
[-8721.555, 3134.907],
[-8720.648, 3132.617],
[-8719.736, 3130.327],
[-8718.821, 3128.039],
[-8717.901, 3125.753],
[-8716.978, 3123.468],
[-8716.05 , 3121.185],
[-8715.119, 3118.904],
[-8714.184, 3116.624],
[-8713.245, 3114.346],
[-8712.301, 3112.07 ],
[-8711.354, 3109.795],
[-8710.403, 3107.522],
[-8709.448, 3105.25 ],
[-8708.489, 3102.98 ],
[-8707.526, 3100.712],
[-8706.559, 3098.445],
[-8705.588, 3096.18 ],
[-8704.613, 3093.917],
[-8703.635, 3091.656],
[-8702.652, 3089.396],
[-8701.666, 3087.138],
[-8700.675, 3084.882],
[-8699.681, 3082.627],
[-8698.682, 3080.374],
[-8697.68 , 3078.123],
[-8696.674, 3075.874],
[-8695.664, 3073.626],
[-8694.65 , 3071.38 ],
[-8693.632, 3069.136],
[-8692.61 , 3066.894],
[-8691.585, 3064.653],
[-8690.555, 3062.414],
[-8689.522, 3060.177],
[-8688.485, 3057.942],
[-8687.443, 3055.709],
[-8686.398, 3053.477],
[-8685.349, 3051.247]]),
np.array([[-8772.563, 3276.46 ],
[-8773.22 , 3278.841],
[-8773.873, 3281.223],
[-8774.523, 3283.607],
[-8775.168, 3285.991],
[-8775.809, 3288.377],
[-8776.445, 3290.763],
[-8777.078, 3293.151],
[-8777.706, 3295.54 ],
[-8778.331, 3297.929],
[-8778.951, 3300.32 ],
[-8779.567, 3302.712],
[-8780.179, 3305.106],
[-8780.786, 3307.5 ],
[-8781.39 , 3309.895],
[-8781.989, 3312.291],
[-8782.585, 3314.688],
[-8783.176, 3317.087],
[-8783.763, 3319.486],
[-8784.345, 3321.887],
[-8784.924, 3324.288],
[-8785.498, 3326.69 ],
[-8786.068, 3329.094],
[-8786.634, 3331.498],
[-8787.196, 3333.903],
[-8787.754, 3336.31 ],
[-8788.307, 3338.717],
[-8788.856, 3341.125],
[-8789.402, 3343.534],
[-8789.942, 3345.944],
[-8790.479, 3348.356],
[-8787.16 , 3349.091],
[-8786.624, 3346.686],
[-8786.085, 3344.282],
[-8785.541, 3341.878],
[-8784.993, 3339.476],
[-8784.441, 3337.074],
[-8783.885, 3334.674],
[-8783.324, 3332.274],
[-8782.759, 3329.876],
[-8782.191, 3327.478],
[-8781.618, 3325.081],
[-8781.04 , 3322.686],
[-8780.459, 3320.291],
[-8779.874, 3317.898],
[-8779.284, 3315.505],
[-8778.69 , 3313.113],
[-8778.092, 3310.723],
[-8777.49 , 3308.333],
[-8776.884, 3305.945],
[-8776.274, 3303.558],
[-8775.659, 3301.171],
[-8775.04 , 3298.786],
[-8774.418, 3296.402],
[-8773.791, 3294.019],
[-8773.159, 3291.637],
[-8772.524, 3289.256],
[-8771.885, 3286.876],
[-8771.241, 3284.497],
[-8770.594, 3282.12 ],
[-8769.942, 3279.743],
[-8769.286, 3277.368]]),
np.array([[-9653.287, 3241.801],
[-9653.935, 3244.149],
[-9654.579, 3246.497],
[-9655.219, 3248.847],
[-9655.855, 3251.198],
[-9656.487, 3253.55 ],
[-9657.115, 3255.903],
[-9657.738, 3258.257],
[-9658.358, 3260.612],
[-9658.974, 3262.968],
[-9659.585, 3265.326],
[-9660.192, 3267.684],
[-9660.796, 3270.043],
[-9661.395, 3272.404],
[-9661.99 , 3274.765],
[-9662.581, 3277.128],
[-9663.168, 3279.492],
[-9663.75 , 3281.856],
[-9664.329, 3284.222],
[-9664.903, 3286.588],
[-9665.474, 3288.956],
[-9666.04 , 3291.324],
[-9666.602, 3293.694],
[-9667.16 , 3296.064],
[-9667.714, 3298.436],
[-9668.264, 3300.808],
[-9668.81 , 3303.182],
[-9669.351, 3305.556],
[-9669.889, 3307.931],
[-9670.422, 3310.308],
[-9670.951, 3312.685],
[-9667.632, 3313.421],
[-9667.104, 3311.049],
[-9666.572, 3308.679],
[-9666.036, 3306.309],
[-9665.495, 3303.941],
[-9664.951, 3301.573],
[-9664.403, 3299.206],
[-9663.85 , 3296.841],
[-9663.293, 3294.476],
[-9662.733, 3292.112],
[-9662.168, 3289.749],
[-9661.599, 3287.387],
[-9661.026, 3285.027],
[-9660.448, 3282.667],
[-9659.867, 3280.308],
[-9659.282, 3277.95 ],
[-9658.692, 3275.593],
[-9658.099, 3273.238],
[-9657.501, 3270.883],
[-9656.899, 3268.529],
[-9656.293, 3266.176],
[-9655.683, 3263.825],
[-9655.069, 3261.474],
[-9654.451, 3259.125],
[-9653.829, 3256.776],
[-9653.203, 3254.429],
[-9652.572, 3252.083],
[-9651.938, 3249.738],
[-9651.299, 3247.394],
[-9650.657, 3245.051],
[-9650.01 , 3242.709]]),
np.array([[-9671.257, 3312.617],
[-9671.816, 3315.129],
[-9672.38 , 3317.641],
[-9672.948, 3320.151],
[-9673.52 , 3322.661],
[-9674.097, 3325.169],
[-9674.678, 3327.676],
[-9675.264, 3330.183],
[-9675.854, 3332.688],
[-9676.448, 3335.192],
[-9677.047, 3337.696],
[-9677.65 , 3340.198],
[-9678.257, 3342.699],
[-9678.869, 3345.199],
[-9679.485, 3347.698],
[-9680.105, 3350.196],
[-9680.73 , 3352.693],
[-9681.36 , 3355.189],
[-9681.993, 3357.684],
[-9682.631, 3360.177],
[-9683.273, 3362.67 ],
[-9683.92 , 3365.161],
[-9684.571, 3367.651],
[-9685.226, 3370.14 ],
[-9685.886, 3372.628],
[-9686.55 , 3375.115],
[-9687.218, 3377.6 ],
[-9687.891, 3380.085],
[-9688.568, 3382.568],
[-9689.249, 3385.05 ],
[-9689.935, 3387.531],
[-9690.625, 3390.011],
[-9691.319, 3392.489],
[-9692.018, 3394.966],
[-9692.721, 3397.442],
[-9693.428, 3399.917],
[-9694.14 , 3402.391],
[-9694.856, 3404.863],
[-9695.576, 3407.334],
[-9696.3 , 3409.804],
[-9697.029, 3412.272],
[-9697.762, 3414.739],
[-9698.5 , 3417.205],
[-9699.242, 3419.67 ],
[-9699.988, 3422.133],
[-9700.738, 3424.595],
[-9701.493, 3427.056],
[-9702.252, 3429.516],
[-9703.015, 3431.974],
[-9703.783, 3434.43 ],
[-9704.554, 3436.886],
[-9705.331, 3439.34 ],
[-9706.111, 3441.793],
[-9706.896, 3444.244],
[-9707.685, 3446.694],
[-9708.478, 3449.143],
[-9709.275, 3451.59 ],
[-9710.077, 3454.036],
[-9710.883, 3456.48 ],
[-9711.694, 3458.923],
[-9712.508, 3461.365],
[-9713.327, 3463.805],
[-9714.15 , 3466.243],
[-9714.977, 3468.681],
[-9715.809, 3471.117],
[-9716.645, 3473.551],
[-9717.485, 3475.984],
[-9718.329, 3478.415],
[-9719.178, 3480.845],
[-9720.031, 3483.274],
[-9720.888, 3485.701],
[-9721.749, 3488.126],
[-9722.614, 3490.55 ],
[-9723.484, 3492.973],
[-9724.358, 3495.394],
[-9725.236, 3497.813],
[-9726.119, 3500.231],
[-9727.005, 3502.647],
[-9727.896, 3505.062],
[-9728.791, 3507.475],
[-9729.691, 3509.887],
[-9730.594, 3512.297],
[-9731.502, 3514.705],
[-9732.414, 3517.112],
[-9733.33 , 3519.518],
[-9734.25 , 3521.921],
[-9735.175, 3524.323],
[-9736.103, 3526.724],
[-9737.036, 3529.123],
[-9737.973, 3531.52 ],
[-9738.915, 3533.916],
[-9739.86 , 3536.31 ],
[-9740.81 , 3538.702],
[-9741.763, 3541.092],
[-9742.721, 3543.481],
[-9743.683, 3545.869],
[-9744.65 , 3548.254],
[-9745.62 , 3550.638],
[-9746.595, 3553.02 ],
[-9743.449, 3554.311],
[-9742.472, 3551.923],
[-9741.499, 3549.534],
[-9740.531, 3547.142],
[-9739.567, 3544.75 ],
[-9738.606, 3542.355],
[-9737.65 , 3539.959],
[-9736.699, 3537.561],
[-9735.751, 3535.162],
[-9734.808, 3532.761],
[-9733.868, 3530.358],
[-9732.933, 3527.953],
[-9732.003, 3525.547],
[-9731.076, 3523.14 ],
[-9730.154, 3520.731],
[-9729.235, 3518.32 ],
[-9728.321, 3515.907],
[-9727.412, 3513.493],
[-9726.506, 3511.077],
[-9725.605, 3508.66 ],
[-9724.708, 3506.241],
[-9723.815, 3503.821],
[-9722.926, 3501.399],
[-9722.041, 3498.976],
[-9721.161, 3496.551],
[-9720.285, 3494.124],
[-9719.413, 3491.696],
[-9718.546, 3489.267],
[-9717.683, 3486.836],
[-9716.824, 3484.403],
[-9715.969, 3481.969],
[-9715.118, 3479.533],
[-9714.272, 3477.096],
[-9713.43 , 3474.658],
[-9712.592, 3472.218],
[-9711.759, 3469.776],
[-9710.929, 3467.333],
[-9710.104, 3464.889],
[-9709.284, 3462.443],
[-9708.467, 3459.996],
[-9707.655, 3457.548],
[-9706.847, 3455.098],
[-9706.044, 3452.646],
[-9705.244, 3450.193],
[-9704.449, 3447.739],
[-9703.658, 3445.283],
[-9702.872, 3442.826],
[-9702.09 , 3440.368],
[-9701.312, 3437.908],
[-9700.538, 3435.447],
[-9699.769, 3432.985],
[-9699.004, 3430.521],
[-9698.243, 3428.056],
[-9697.487, 3425.59 ],
[-9696.735, 3423.122],
[-9695.987, 3420.653],
[-9695.243, 3418.182],
[-9694.504, 3415.711],
[-9693.769, 3413.238],
[-9693.039, 3410.764],
[-9692.313, 3408.288],
[-9691.591, 3405.811],
[-9690.873, 3403.333],
[-9690.16 , 3400.854],
[-9689.451, 3398.374],
[-9688.746, 3395.892],
[-9688.046, 3393.409],
[-9687.35 , 3390.925],
[-9686.659, 3388.44 ],
[-9685.971, 3385.953],
[-9685.288, 3383.465],
[-9684.61 , 3380.976],
[-9683.936, 3378.486],
[-9683.266, 3375.995],
[-9682.6 , 3373.502],
[-9681.939, 3371.009],
[-9681.282, 3368.514],
[-9680.63 , 3366.018],
[-9679.982, 3363.521],
[-9679.338, 3361.023],
[-9678.698, 3358.523],
[-9678.063, 3356.023],
[-9677.433, 3353.521],
[-9676.806, 3351.019],
[-9676.185, 3348.515],
[-9675.567, 3346.01 ],
[-9674.954, 3343.504],
[-9674.345, 3340.997],
[-9673.741, 3338.489],
[-9673.141, 3335.98 ],
[-9672.545, 3333.47 ],
[-9671.954, 3330.959],
[-9671.367, 3328.447],
[-9670.784, 3325.934],
[-9670.206, 3323.42 ],
[-9669.632, 3320.904],
[-9669.063, 3318.388],
[-9668.498, 3315.871],
[-9667.937, 3313.353]]),
np.array([[-9672.563, 3236.46 ],
[-9673.22 , 3238.841],
[-9673.873, 3241.223],
[-9674.523, 3243.607],
[-9675.168, 3245.991],
[-9675.809, 3248.377],
[-9676.445, 3250.763],
[-9677.078, 3253.151],
[-9677.706, 3255.54 ],
[-9678.331, 3257.929],
[-9678.951, 3260.32 ],
[-9679.567, 3262.712],
[-9680.179, 3265.106],
[-9680.786, 3267.5 ],
[-9681.39 , 3269.895],
[-9681.989, 3272.291],
[-9682.585, 3274.688],
[-9683.176, 3277.087],
[-9683.763, 3279.486],
[-9684.345, 3281.887],
[-9684.924, 3284.288],
[-9685.498, 3286.69 ],
[-9686.068, 3289.094],
[-9686.634, 3291.498],
[-9687.196, 3293.903],
[-9687.754, 3296.31 ],
[-9688.307, 3298.717],
[-9688.856, 3301.125],
[-9689.402, 3303.534],
[-9689.942, 3305.944],
[-9690.479, 3308.356],
[-9687.16 , 3309.091],
[-9686.624, 3306.686],
[-9686.085, 3304.282],
[-9685.541, 3301.878],
[-9684.993, 3299.476],
[-9684.441, 3297.074],
[-9683.885, 3294.674],
[-9683.324, 3292.274],
[-9682.759, 3289.876],
[-9682.191, 3287.478],
[-9681.618, 3285.081],
[-9681.04 , 3282.686],
[-9680.459, 3280.291],
[-9679.874, 3277.898],
[-9679.284, 3275.505],
[-9678.69 , 3273.113],
[-9678.092, 3270.723],
[-9677.49 , 3268.333],
[-9676.884, 3265.945],
[-9676.274, 3263.558],
[-9675.659, 3261.171],
[-9675.04 , 3258.786],
[-9674.418, 3256.402],
[-9673.791, 3254.019],
[-9673.159, 3251.637],
[-9672.524, 3249.256],
[-9671.885, 3246.876],
[-9671.241, 3244.497],
[-9670.594, 3242.12 ],
[-9669.942, 3239.743],
[-9669.286, 3237.368]]),
np.array([[-9690.789, 3308.287],
[-9691.326, 3310.7 ],
[-9691.867, 3313.112],
[-9692.413, 3315.523],
[-9692.963, 3317.933],
[-9693.517, 3320.343],
[-9694.075, 3322.751],
[-9694.637, 3325.158],
[-9695.204, 3327.565],
[-9695.775, 3329.97 ],
[-9696.35 , 3332.374],
[-9696.929, 3334.778],
[-9697.512, 3337.18 ],
[-9698.1 , 3339.581],
[-9698.692, 3341.981],
[-9699.288, 3344.381],
[-9699.888, 3346.779],
[-9700.492, 3349.176],
[-9701.101, 3351.572],
[-9701.713, 3353.967],
[-9702.33 , 3356.361],
[-9702.951, 3358.754],
[-9703.577, 3361.146],
[-9704.206, 3363.536],
[-9704.84 , 3365.926],
[-9705.477, 3368.314],
[-9706.119, 3370.702],
[-9706.765, 3373.088],
[-9707.416, 3375.473],
[-9708.07 , 3377.857],
[-9708.729, 3380.24 ],
[-9709.391, 3382.621],
[-9710.058, 3385.002],
[-9710.729, 3387.381],
[-9711.404, 3389.759],
[-9712.084, 3392.136],
[-9712.767, 3394.512],
[-9713.455, 3396.886],
[-9714.147, 3399.26 ],
[-9714.843, 3401.632],
[-9715.543, 3404.003],
[-9716.247, 3406.373],
[-9716.955, 3408.741],
[-9717.668, 3411.108],
[-9718.384, 3413.474],
[-9719.105, 3415.839],
[-9719.83 , 3418.202],
[-9720.559, 3420.565],
[-9721.292, 3422.926],
[-9722.029, 3425.285],
[-9722.77 , 3427.644],
[-9723.516, 3430.001],
[-9724.265, 3432.356],
[-9725.019, 3434.711],
[-9725.777, 3437.064],
[-9726.539, 3439.416],
[-9727.305, 3441.766],
[-9728.075, 3444.115],
[-9728.849, 3446.463],
[-9729.627, 3448.81 ],
[-9730.41 , 3451.155],
[-9731.196, 3453.498],
[-9731.987, 3455.841],
[-9732.781, 3458.182],
[-9733.58 , 3460.521],
[-9734.383, 3462.859],
[-9735.19 , 3465.196],
[-9736.001, 3467.531],
[-9736.816, 3469.865],
[-9737.635, 3472.198],
[-9738.458, 3474.529],
[-9739.285, 3476.858],
[-9740.116, 3479.187],
[-9740.952, 3481.513],
[-9741.791, 3483.839],
[-9742.635, 3486.162],
[-9743.482, 3488.485],
[-9744.334, 3490.805],
[-9745.19 , 3493.125],
[-9746.049, 3495.443],
[-9746.913, 3497.759],
[-9747.781, 3500.074],
[-9748.653, 3502.387],
[-9749.528, 3504.699],
[-9750.408, 3507.009],
[-9751.292, 3509.318],
[-9752.18 , 3511.625],
[-9753.072, 3513.93 ],
[-9753.968, 3516.235],
[-9754.868, 3518.537],
[-9755.772, 3520.838],
[-9756.68 , 3523.137],
[-9757.592, 3525.435],
[-9758.508, 3527.731],
[-9759.428, 3530.026],
[-9760.352, 3532.319],
[-9761.281, 3534.61 ],
[-9762.213, 3536.9 ],
[-9763.149, 3539.188],
[-9760.003, 3540.478],
[-9759.065, 3538.184],
[-9758.13 , 3535.889],
[-9757.2 , 3533.592],
[-9756.274, 3531.294],
[-9755.351, 3528.994],
[-9754.433, 3526.692],
[-9753.519, 3524.389],
[-9752.609, 3522.084],
[-9751.703, 3519.778],
[-9750.8 , 3517.47 ],
[-9749.902, 3515.16 ],
[-9749.008, 3512.849],
[-9748.118, 3510.536],
[-9747.232, 3508.222],
[-9746.35 , 3505.906],
[-9745.472, 3503.589],
[-9744.598, 3501.27 ],
[-9743.728, 3498.95 ],
[-9742.862, 3496.628],
[-9742.001, 3494.304],
[-9741.143, 3491.979],
[-9740.289, 3489.653],
[-9739.44 , 3487.325],
[-9738.594, 3484.996],
[-9737.753, 3482.665],
[-9736.915, 3480.333],
[-9736.082, 3477.999],
[-9735.253, 3475.664],
[-9734.428, 3473.327],
[-9733.607, 3470.989],
[-9732.79 , 3468.65 ],
[-9731.977, 3466.309],
[-9731.168, 3463.966],
[-9730.363, 3461.622],
[-9729.563, 3459.277],
[-9728.766, 3456.931],
[-9727.974, 3454.583],
[-9727.185, 3452.234],
[-9726.401, 3449.883],
[-9725.621, 3447.531],
[-9724.845, 3445.177],
[-9724.073, 3442.823],
[-9723.305, 3440.466],
[-9722.541, 3438.109],
[-9721.782, 3435.75 ],
[-9721.026, 3433.39 ],
[-9720.275, 3431.029],
[-9719.528, 3428.666],
[-9718.785, 3426.302],
[-9718.046, 3423.937],
[-9717.311, 3421.57 ],
[-9716.58 , 3419.202],
[-9715.853, 3416.833],
[-9715.131, 3414.463],
[-9714.413, 3412.091],
[-9713.699, 3409.718],
[-9712.989, 3407.344],
[-9712.283, 3404.969],
[-9711.581, 3402.592],
[-9710.883, 3400.214],
[-9710.19 , 3397.835],
[-9709.501, 3395.455],
[-9708.815, 3393.073],
[-9708.134, 3390.691],
[-9707.458, 3388.307],
[-9706.785, 3385.922],
[-9706.117, 3383.536],
[-9705.452, 3381.148],
[-9704.792, 3378.76 ],
[-9704.136, 3376.37 ],
[-9703.484, 3373.979],
[-9702.837, 3371.587],
[-9702.193, 3369.194],
[-9701.554, 3366.8 ],
[-9700.919, 3364.405],
[-9700.288, 3362.008],
[-9699.661, 3359.611],
[-9699.039, 3357.212],
[-9698.42 , 3354.813],
[-9697.806, 3352.412],
[-9697.196, 3350.01 ],
[-9696.59 , 3347.607],
[-9695.989, 3345.203],
[-9695.391, 3342.798],
[-9694.798, 3340.392],
[-9694.209, 3337.985],
[-9693.624, 3335.577],
[-9693.044, 3333.168],
[-9692.467, 3330.758],
[-9691.895, 3328.347],
[-9691.327, 3325.935],
[-9690.763, 3323.522],
[-9690.204, 3321.108],
[-9689.649, 3318.693],
[-9689.097, 3316.277],
[-9688.551, 3313.86 ],
[-9688.008, 3311.442],
[-9687.469, 3309.023]]),
np.array([[-10553.287, 3201.801],
[-10553.935, 3204.149],
[-10554.579, 3206.497],
[-10555.219, 3208.847],
[-10555.855, 3211.198],
[-10556.487, 3213.55 ],
[-10557.115, 3215.903],
[-10557.738, 3218.257],
[-10558.358, 3220.612],
[-10558.974, 3222.968],
[-10559.585, 3225.326],
[-10560.192, 3227.684],
[-10560.796, 3230.043],
[-10561.395, 3232.404],
[-10561.99 , 3234.765],
[-10562.581, 3237.128],
[-10563.168, 3239.492],
[-10563.75 , 3241.856],
[-10564.329, 3244.222],
[-10564.903, 3246.588],
[-10565.474, 3248.956],
[-10566.04 , 3251.324],
[-10566.602, 3253.694],
[-10567.16 , 3256.064],
[-10567.714, 3258.436],
[-10568.264, 3260.808],
[-10568.81 , 3263.182],
[-10569.351, 3265.556],
[-10569.889, 3267.931],
[-10570.422, 3270.308],
[-10570.951, 3272.685],
[-10567.632, 3273.421],
[-10567.104, 3271.049],
[-10566.572, 3268.679],
[-10566.036, 3266.309],
[-10565.495, 3263.941],
[-10564.951, 3261.573],
[-10564.403, 3259.206],
[-10563.85 , 3256.841],
[-10563.293, 3254.476],
[-10562.733, 3252.112],
[-10562.168, 3249.749],
[-10561.599, 3247.387],
[-10561.026, 3245.027],
[-10560.448, 3242.667],
[-10559.867, 3240.308],
[-10559.282, 3237.95 ],
[-10558.692, 3235.593],
[-10558.099, 3233.238],
[-10557.501, 3230.883],
[-10556.899, 3228.529],
[-10556.293, 3226.176],
[-10555.683, 3223.825],
[-10555.069, 3221.474],
[-10554.451, 3219.125],
[-10553.829, 3216.776],
[-10553.203, 3214.429],
[-10552.572, 3212.083],
[-10551.938, 3209.738],
[-10551.299, 3207.394],
[-10550.657, 3205.051],
[-10550.01 , 3202.709]]),
np.array([[-10571.265, 3272.615],
[-10571.795, 3274.997],
[-10572.33 , 3277.378],
[-10572.868, 3279.758],
[-10573.411, 3282.137],
[-10573.958, 3284.515],
[-10574.509, 3286.893],
[-10575.064, 3289.269],
[-10575.623, 3291.644],
[-10576.187, 3294.018],
[-10576.754, 3296.392],
[-10577.326, 3298.764],
[-10577.902, 3301.135],
[-10578.482, 3303.505],
[-10579.066, 3305.875],
[-10579.654, 3308.243],
[-10580.247, 3310.61 ],
[-10580.843, 3312.976],
[-10581.444, 3315.341],
[-10582.048, 3317.706],
[-10582.657, 3320.069],
[-10583.27 , 3322.43 ],
[-10583.888, 3324.791],
[-10584.509, 3327.151],
[-10585.134, 3329.51 ],
[-10585.764, 3331.867],
[-10586.397, 3334.224],
[-10587.035, 3336.579],
[-10587.677, 3338.934],
[-10588.323, 3341.287],
[-10588.973, 3343.639],
[-10589.627, 3345.99 ],
[-10590.285, 3348.339],
[-10590.948, 3350.688],
[-10591.614, 3353.035],
[-10592.285, 3355.382],
[-10592.96 , 3357.727],
[-10593.638, 3360.071],
[-10594.321, 3362.413],
[-10595.008, 3364.755],
[-10595.699, 3367.095],
[-10596.394, 3369.434],
[-10597.093, 3371.772],
[-10597.797, 3374.109],
[-10598.504, 3376.444],
[-10599.215, 3378.779],
[-10599.931, 3381.112],
[-10600.65 , 3383.443],
[-10601.374, 3385.774],
[-10602.102, 3388.103],
[-10602.833, 3390.431],
[-10603.569, 3392.757],
[-10604.309, 3395.083],
[-10605.053, 3397.407],
[-10605.801, 3399.73 ],
[-10606.553, 3402.051],
[-10607.309, 3404.371],
[-10608.069, 3406.69 ],
[-10608.834, 3409.007],
[-10609.602, 3411.324],
[-10610.374, 3413.638],
[-10611.15 , 3415.952],
[-10611.931, 3418.264],
[-10612.715, 3420.575],
[-10613.503, 3422.884],
[-10614.296, 3425.192],
[-10615.092, 3427.498],
[-10615.893, 3429.804],
[-10616.697, 3432.107],
[-10617.506, 3434.41 ],
[-10618.318, 3436.711],
[-10619.135, 3439.01 ],
[-10619.956, 3441.308],
[-10620.78 , 3443.605],
[-10621.609, 3445.9 ],
[-10622.441, 3448.194],
[-10623.278, 3450.486],
[-10624.119, 3452.777],
[-10624.963, 3455.066],
[-10625.812, 3457.354],
[-10626.664, 3459.641],
[-10627.521, 3461.926],
[-10628.382, 3464.209],
[-10629.246, 3466.491],
[-10630.115, 3468.771],
[-10630.987, 3471.05 ],
[-10631.864, 3473.328],
[-10632.744, 3475.604],
[-10633.628, 3477.878],
[-10634.517, 3480.151],
[-10635.409, 3482.422],
[-10636.306, 3484.691],
[-10637.206, 3486.959],
[-10638.11 , 3489.226],
[-10639.018, 3491.491],
[-10639.93 , 3493.754],
[-10640.846, 3496.016],
[-10641.766, 3498.276],
[-10642.69 , 3500.535],
[-10639.545, 3501.825],
[-10638.619, 3499.561],
[-10637.696, 3497.295],
[-10636.778, 3495.028],
[-10635.864, 3492.759],
[-10634.953, 3490.489],
[-10634.047, 3488.217],
[-10633.144, 3485.943],
[-10632.246, 3483.668],
[-10631.351, 3481.391],
[-10630.461, 3479.113],
[-10629.574, 3476.833],
[-10628.692, 3474.552],
[-10627.813, 3472.269],
[-10626.938, 3469.984],
[-10626.068, 3467.698],
[-10625.201, 3465.411],
[-10624.338, 3463.122],
[-10623.48 , 3460.831],
[-10622.625, 3458.54 ],
[-10621.774, 3456.246],
[-10620.928, 3453.951],
[-10620.085, 3451.655],
[-10619.246, 3449.357],
[-10618.412, 3447.057],
[-10617.581, 3444.757],
[-10616.755, 3442.454],
[-10615.932, 3440.151],
[-10615.113, 3437.846],
[-10614.299, 3435.539],
[-10613.488, 3433.231],
[-10612.682, 3430.922],
[-10611.88 , 3428.611],
[-10611.081, 3426.299],
[-10610.287, 3423.985],
[-10609.496, 3421.67 ],
[-10608.71 , 3419.354],
[-10607.928, 3417.036],
[-10607.15 , 3414.717],
[-10606.376, 3412.397],
[-10605.605, 3410.075],
[-10604.839, 3407.752],
[-10604.077, 3405.427],
[-10603.32 , 3403.102],
[-10602.566, 3400.775],
[-10601.816, 3398.446],
[-10601.07 , 3396.117],
[-10600.328, 3393.786],
[-10599.591, 3391.453],
[-10598.857, 3389.12 ],
[-10598.128, 3386.785],
[-10597.402, 3384.449],
[-10596.681, 3382.111],
[-10595.964, 3379.773],
[-10595.251, 3377.433],
[-10594.542, 3375.092],
[-10593.837, 3372.749],
[-10593.136, 3370.406],
[-10592.439, 3368.061],
[-10591.746, 3365.715],
[-10591.058, 3363.368],
[-10590.373, 3361.019],
[-10589.693, 3358.67 ],
[-10589.017, 3356.319],
[-10588.344, 3353.967],
[-10587.676, 3351.614],
[-10587.012, 3349.26 ],
[-10586.352, 3346.904],
[-10585.697, 3344.547],
[-10585.045, 3342.19 ],
[-10584.398, 3339.831],
[-10583.754, 3337.471],
[-10583.115, 3335.11 ],
[-10582.48 , 3332.747],
[-10581.849, 3330.384],
[-10581.222, 3328.02 ],
[-10580.599, 3325.654],
[-10579.98 , 3323.288],
[-10579.366, 3320.92 ],
[-10578.755, 3318.551],
[-10578.149, 3316.181],
[-10577.547, 3313.81 ],
[-10576.949, 3311.438],
[-10576.355, 3309.065],
[-10575.765, 3306.691],
[-10575.18 , 3304.316],
[-10574.598, 3301.94 ],
[-10574.021, 3299.563],
[-10573.448, 3297.185],
[-10572.879, 3294.806],
[-10572.314, 3292.426],
[-10571.754, 3290.045],
[-10571.197, 3287.663],
[-10570.645, 3285.28 ],
[-10570.097, 3282.896],
[-10569.553, 3280.511],
[-10569.013, 3278.126],
[-10568.477, 3275.739],
[-10567.945, 3273.351]]),
np.array([[ -7768.372, 3319.339],
[-10613.225, 3319.339],
[-10613.225, 3322.739],
[ -7768.372, 3322.739]]),
np.array([[-10613.225, 3319.339],
[-10692.121, 3319.339],
[-10692.121, 3322.739],
[-10613.225, 3322.739]]),
np.array([[-8322.304, 3245.166],
[-8324.77 , 3245.852],
[-8327.237, 3246.534],
[-8329.705, 3247.212],
[-8332.174, 3247.885],
[-8334.644, 3248.554],
[-8337.116, 3249.218],
[-8339.589, 3249.878],
[-8342.063, 3250.534],
[-8344.538, 3251.186],
[-8347.014, 3251.833],
[-8349.491, 3252.476],
[-8351.97 , 3253.115],
[-8354.449, 3253.749],
[-8356.93 , 3254.379],
[-8359.412, 3255.005],
[-8361.894, 3255.626],
[-8364.378, 3256.243],
[-8366.863, 3256.856],
[-8369.349, 3257.464],
[-8371.837, 3258.068],
[-8374.325, 3258.668],
[-8376.814, 3259.263],
[-8379.304, 3259.854],
[-8381.795, 3260.441],
[-8384.288, 3261.023],
[-8386.781, 3261.601],
[-8389.275, 3262.175],
[-8391.771, 3262.744],
[-8394.267, 3263.309],
[-8396.764, 3263.869],
[-8399.262, 3264.425],
[-8401.762, 3264.977],
[-8404.262, 3265.525],
[-8406.763, 3266.068],
[-8409.265, 3266.606],
[-8411.768, 3267.141],
[-8414.272, 3267.671],
[-8416.777, 3268.196],
[-8419.283, 3268.717],
[-8421.789, 3269.234],
[-8424.297, 3269.747],
[-8426.805, 3270.255],
[-8429.315, 3270.758],
[-8431.825, 3271.258],
[-8434.336, 3271.753],
[-8436.848, 3272.243],
[-8439.361, 3272.729],
[-8441.874, 3273.211],
[-8444.389, 3273.689],
[-8446.904, 3274.162],
[-8449.42 , 3274.63 ],
[-8451.937, 3275.094],
[-8454.455, 3275.554],
[-8456.974, 3276.01 ],
[-8459.493, 3276.461],
[-8462.013, 3276.907],
[-8464.534, 3277.349],
[-8467.056, 3277.787],
[-8469.578, 3278.221],
[-8472.101, 3278.65 ],
[-8474.625, 3279.074],
[-8477.15 , 3279.495],
[-8479.675, 3279.91 ],
[-8482.202, 3280.322],
[-8484.728, 3280.729],
[-8487.256, 3281.131],
[-8489.784, 3281.53 ],
[-8492.313, 3281.923],
[-8494.843, 3282.313],
[-8497.373, 3282.698],
[-8499.904, 3283.078],
[-8502.436, 3283.454],
[-8504.968, 3283.826],
[-8507.501, 3284.193],
[-8510.034, 3284.556],
[-8512.568, 3284.914],
[-8515.103, 3285.268],
[-8517.639, 3285.618],
[-8520.175, 3285.963],
[-8522.711, 3286.304],
[-8525.249, 3286.64 ],
[-8527.786, 3286.972],
[-8530.325, 3287.299],
[-8532.864, 3287.622],
[-8535.403, 3287.941],
[-8537.943, 3288.255],
[-8540.484, 3288.565],
[-8543.025, 3288.87 ],
[-8545.567, 3289.171],
[-8548.109, 3289.467],
[-8550.652, 3289.759],
[-8553.195, 3290.047],
[-8555.738, 3290.33 ],
[-8558.283, 3290.608],
[-8560.827, 3290.883],
[-8563.372, 3291.152],
[-8565.918, 3291.418],
[-8568.464, 3291.679],
[-8568.121, 3295.061],
[-8565.569, 3294.8 ],
[-8563.017, 3294.534],
[-8560.466, 3294.263],
[-8557.915, 3293.989],
[-8555.365, 3293.709],
[-8552.816, 3293.426],
[-8550.267, 3293.137],
[-8547.718, 3292.845],
[-8545.17 , 3292.548],
[-8542.622, 3292.246],
[-8540.075, 3291.94 ],
[-8537.529, 3291.63 ],
[-8534.983, 3291.315],
[-8532.438, 3290.996],
[-8529.893, 3290.672],
[-8527.348, 3290.344],
[-8524.805, 3290.011],
[-8522.262, 3289.674],
[-8519.719, 3289.332],
[-8517.177, 3288.987],
[-8514.636, 3288.636],
[-8512.095, 3288.281],
[-8509.555, 3287.922],
[-8507.016, 3287.558],
[-8504.477, 3287.19 ],
[-8501.939, 3286.818],
[-8499.401, 3286.441],
[-8496.865, 3286.059],
[-8494.328, 3285.674],
[-8491.793, 3285.283],
[-8489.258, 3284.889],
[-8486.724, 3284.49 ],
[-8484.191, 3284.086],
[-8481.658, 3283.678],
[-8479.126, 3283.266],
[-8476.595, 3282.849],
[-8474.064, 3282.428],
[-8471.534, 3282.002],
[-8469.005, 3281.572],
[-8466.477, 3281.138],
[-8463.95 , 3280.699],
[-8461.423, 3280.256],
[-8458.897, 3279.808],
[-8456.372, 3279.356],
[-8453.847, 3278.899],
[-8451.324, 3278.438],
[-8448.801, 3277.973],
[-8446.279, 3277.503],
[-8443.758, 3277.029],
[-8441.237, 3276.551],
[-8438.718, 3276.068],
[-8436.199, 3275.581],
[-8433.681, 3275.089],
[-8431.165, 3274.593],
[-8428.649, 3274.092],
[-8426.133, 3273.588],
[-8423.619, 3273.078],
[-8421.106, 3272.565],
[-8418.593, 3272.047],
[-8416.082, 3271.524],
[-8413.571, 3270.997],
[-8411.061, 3270.466],
[-8408.552, 3269.931],
[-8406.044, 3269.391],
[-8403.538, 3268.847],
[-8401.032, 3268.298],
[-8398.527, 3267.745],
[-8396.023, 3267.187],
[-8393.519, 3266.626],
[-8391.017, 3266.059],
[-8388.516, 3265.489],
[-8386.016, 3264.914],
[-8383.517, 3264.335],
[-8381.019, 3263.751],
[-8378.522, 3263.163],
[-8376.026, 3262.571],
[-8373.531, 3261.974],
[-8371.037, 3261.373],
[-8368.544, 3260.768],
[-8366.052, 3260.158],
[-8363.562, 3259.544],
[-8361.072, 3258.925],
[-8358.583, 3258.303],
[-8356.096, 3257.675],
[-8353.609, 3257.044],
[-8351.124, 3256.408],
[-8348.64 , 3255.768],
[-8346.157, 3255.124],
[-8343.675, 3254.475],
[-8341.194, 3253.822],
[-8338.714, 3253.164],
[-8336.236, 3252.502],
[-8333.759, 3251.836],
[-8331.282, 3251.166],
[-8328.807, 3250.491],
[-8326.334, 3249.812],
[-8323.861, 3249.129],
[-8321.39 , 3248.441]]),
np.array([[-8568.464, 3291.679],
[-8571.011, 3291.935],
[-8573.558, 3292.187],
[-8576.105, 3292.434],
[-8578.653, 3292.678],
[-8581.201, 3292.916],
[-8583.75 , 3293.15 ],
[-8586.299, 3293.38 ],
[-8588.848, 3293.605],
[-8591.398, 3293.826],
[-8593.948, 3294.043],
[-8596.499, 3294.255],
[-8599.05 , 3294.462],
[-8601.601, 3294.665],
[-8604.153, 3294.864],
[-8606.705, 3295.058],
[-8609.257, 3295.248],
[-8611.81 , 3295.433],
[-8614.363, 3295.613],
[-8616.917, 3295.79 ],
[-8619.47 , 3295.962],
[-8622.024, 3296.129],
[-8624.578, 3296.292],
[-8627.133, 3296.45 ],
[-8629.688, 3296.604],
[-8632.243, 3296.754],
[-8634.798, 3296.899],
[-8637.353, 3297.04 ],
[-8639.909, 3297.176],
[-8642.465, 3297.308],
[-8645.021, 3297.435],
[-8647.578, 3297.558],
[-8650.135, 3297.676],
[-8652.691, 3297.79 ],
[-8655.248, 3297.899],
[-8657.806, 3298.004],
[-8660.363, 3298.105],
[-8662.921, 3298.201],
[-8665.479, 3298.292],
[-8668.036, 3298.379],
[-8670.595, 3298.462],
[-8673.153, 3298.54 ],
[-8675.711, 3298.614],
[-8678.27 , 3298.683],
[-8680.828, 3298.748],
[-8683.387, 3298.808],
[-8685.946, 3298.864],
[-8688.505, 3298.915],
[-8691.063, 3298.962],
[-8693.623, 3299.005],
[-8696.182, 3299.043],
[-8698.741, 3299.076],
[-8701.3 , 3299.105],
[-8703.859, 3299.13 ],
[-8706.419, 3299.15 ],
[-8708.978, 3299.166],
[-8711.537, 3299.177],
[-8714.097, 3299.183],
[-8716.656, 3299.186],
[-8716.656, 3302.586],
[-8714.091, 3302.583],
[-8711.526, 3302.577],
[-8708.96 , 3302.565],
[-8706.395, 3302.55 ],
[-8703.83 , 3302.53 ],
[-8701.264, 3302.505],
[-8698.699, 3302.476],
[-8696.134, 3302.442],
[-8693.569, 3302.404],
[-8691.004, 3302.362],
[-8688.439, 3302.315],
[-8685.874, 3302.263],
[-8683.31 , 3302.207],
[-8680.745, 3302.147],
[-8678.181, 3302.082],
[-8675.616, 3302.013],
[-8673.052, 3301.939],
[-8670.488, 3301.86 ],
[-8667.924, 3301.778],
[-8665.36 , 3301.69 ],
[-8662.796, 3301.598],
[-8660.233, 3301.502],
[-8657.669, 3301.402],
[-8655.106, 3301.296],
[-8652.543, 3301.187],
[-8649.98 , 3301.073],
[-8647.418, 3300.954],
[-8644.855, 3300.831],
[-8642.293, 3300.703],
[-8639.731, 3300.571],
[-8637.17 , 3300.435],
[-8634.608, 3300.294],
[-8632.047, 3300.148],
[-8629.486, 3299.998],
[-8626.925, 3299.844],
[-8624.365, 3299.685],
[-8621.805, 3299.522],
[-8619.245, 3299.354],
[-8616.685, 3299.182],
[-8614.126, 3299.005],
[-8611.567, 3298.824],
[-8609.008, 3298.638],
[-8606.45 , 3298.448],
[-8603.892, 3298.254],
[-8601.335, 3298.055],
[-8598.777, 3297.851],
[-8596.22 , 3297.643],
[-8593.664, 3297.431],
[-8591.108, 3297.214],
[-8588.552, 3296.992],
[-8585.997, 3296.767],
[-8583.442, 3296.536],
[-8580.887, 3296.302],
[-8578.333, 3296.062],
[-8575.779, 3295.819],
[-8573.226, 3295.571],
[-8570.673, 3295.318],
[-8568.121, 3295.061]]),
np.array([[ -8716.656, 3299.339],
[-10613.225, 3299.339],
[-10613.225, 3302.739],
[ -8716.656, 3302.739]]),
np.array([[-10613.225, 3299.339],
[-10692.121, 3299.339],
[-10692.121, 3302.739],
[-10613.225, 3302.739]]),
np.array([[-9252.223, 3222.657],
[-9254.804, 3223.375],
[-9257.386, 3224.089],
[-9259.969, 3224.798],
[-9262.553, 3225.502],
[-9265.138, 3226.203],
[-9267.725, 3226.898],
[-9270.313, 3227.589],
[-9272.902, 3228.276],
[-9275.493, 3228.958],
[-9278.084, 3229.635],
[-9280.677, 3230.308],
[-9283.271, 3230.976],
[-9285.866, 3231.64 ],
[-9288.462, 3232.3 ],
[-9291.059, 3232.954],
[-9293.658, 3233.605],
[-9296.257, 3234.25 ],
[-9298.858, 3234.892],
[-9301.46 , 3235.528],
[-9304.063, 3236.16 ],
[-9306.667, 3236.788],
[-9309.272, 3237.411],
[-9311.878, 3238.029],
[-9314.485, 3238.643],
[-9317.094, 3239.253],
[-9319.703, 3239.858],
[-9322.314, 3240.458],
[-9324.925, 3241.054],
[-9327.538, 3241.645],
[-9330.151, 3242.231],
[-9332.766, 3242.813],
[-9335.381, 3243.391],
[-9337.998, 3243.964],
[-9340.616, 3244.532],
[-9343.234, 3245.096],
[-9345.854, 3245.655],
[-9348.474, 3246.21 ],
[-9351.096, 3246.76 ],
[-9353.718, 3247.305],
[-9356.342, 3247.846],
[-9358.966, 3248.382],
[-9361.591, 3248.914],
[-9364.218, 3249.441],
[-9366.845, 3249.964],
[-9369.473, 3250.482],
[-9372.102, 3250.995],
[-9374.732, 3251.504],
[-9377.362, 3252.008],
[-9379.994, 3252.508],
[-9382.626, 3253.003],
[-9385.26 , 3253.493],
[-9387.894, 3253.979],
[-9390.529, 3254.46 ],
[-9393.165, 3254.937],
[-9395.801, 3255.409],
[-9398.439, 3255.877],
[-9401.077, 3256.339],
[-9403.716, 3256.798],
[-9406.356, 3257.251],
[-9408.997, 3257.7 ],
[-9411.638, 3258.145],
[-9414.281, 3258.584],
[-9416.924, 3259.02 ],
[-9419.567, 3259.45 ],
[-9422.212, 3259.876],
[-9424.857, 3260.297],
[-9427.503, 3260.714],
[-9430.15 , 3261.126],
[-9432.797, 3261.534],
[-9435.445, 3261.937],
[-9438.094, 3262.335],
[-9440.744, 3262.728],
[-9443.394, 3263.117],
[-9446.045, 3263.502],
[-9448.696, 3263.882],
[-9451.348, 3264.257],
[-9454.001, 3264.627],
[-9456.655, 3264.993],
[-9459.309, 3265.354],
[-9461.964, 3265.711],
[-9464.619, 3266.063],
[-9467.275, 3266.41 ],
[-9469.932, 3266.753],
[-9472.589, 3267.091],
[-9475.247, 3267.424],
[-9477.905, 3267.753],
[-9480.564, 3268.077],
[-9483.223, 3268.396],
[-9485.883, 3268.711],
[-9488.544, 3269.021],
[-9491.205, 3269.327],
[-9493.867, 3269.628],
[-9496.529, 3269.924],
[-9499.192, 3270.216],
[-9501.855, 3270.503],
[-9504.518, 3270.785],
[-9507.183, 3271.063],
[-9509.847, 3271.336],
[-9509.504, 3274.718],
[-9506.833, 3274.445],
[-9504.163, 3274.166],
[-9501.493, 3273.884],
[-9498.824, 3273.596],
[-9496.156, 3273.304],
[-9493.488, 3273.007],
[-9490.82 , 3272.705],
[-9488.153, 3272.399],
[-9485.487, 3272.088],
[-9482.821, 3271.773],
[-9480.155, 3271.452],
[-9477.491, 3271.128],
[-9474.826, 3270.798],
[-9472.163, 3270.464],
[-9469.5 , 3270.125],
[-9466.837, 3269.782],
[-9464.175, 3269.434],
[-9461.514, 3269.081],
[-9458.853, 3268.724],
[-9456.193, 3268.361],
[-9453.534, 3267.995],
[-9450.875, 3267.624],
[-9448.217, 3267.248],
[-9445.56 , 3266.867],
[-9442.903, 3266.482],
[-9440.247, 3266.092],
[-9437.592, 3265.698],
[-9434.937, 3265.298],
[-9432.283, 3264.895],
[-9429.63 , 3264.486],
[-9426.977, 3264.073],
[-9424.325, 3263.656],
[-9421.674, 3263.233],
[-9419.024, 3262.806],
[-9416.374, 3262.375],
[-9413.725, 3261.939],
[-9411.077, 3261.498],
[-9408.43 , 3261.053],
[-9405.783, 3260.603],
[-9403.138, 3260.148],
[-9400.493, 3259.689],
[-9397.848, 3259.225],
[-9395.205, 3258.756],
[-9392.563, 3258.283],
[-9389.921, 3257.806],
[-9387.28 , 3257.323],
[-9384.64 , 3256.836],
[-9382.001, 3256.345],
[-9379.363, 3255.849],
[-9376.725, 3255.348],
[-9374.089, 3254.843],
[-9371.453, 3254.333],
[-9368.818, 3253.818],
[-9366.184, 3253.299],
[-9363.551, 3252.775],
[-9360.919, 3252.247],
[-9358.288, 3251.714],
[-9355.658, 3251.177],
[-9353.029, 3250.635],
[-9350.401, 3250.088],
[-9347.773, 3249.537],
[-9345.147, 3248.981],
[-9342.522, 3248.42 ],
[-9339.897, 3247.855],
[-9337.274, 3247.286],
[-9334.651, 3246.712],
[-9332.03 , 3246.133],
[-9329.41 , 3245.549],
[-9326.79 , 3244.962],
[-9324.172, 3244.369],
[-9321.555, 3243.772],
[-9318.938, 3243.17 ],
[-9316.323, 3242.564],
[-9313.709, 3241.954],
[-9311.096, 3241.338],
[-9308.484, 3240.718],
[-9305.873, 3240.094],
[-9303.263, 3239.465],
[-9300.655, 3238.832],
[-9298.047, 3238.193],
[-9295.44 , 3237.551],
[-9292.835, 3236.904],
[-9290.231, 3236.252],
[-9287.628, 3235.596],
[-9285.026, 3234.935],
[-9282.425, 3234.27 ],
[-9279.825, 3233.6 ],
[-9277.227, 3232.925],
[-9274.63 , 3232.246],
[-9272.034, 3231.563],
[-9269.439, 3230.875],
[-9266.845, 3230.182],
[-9264.253, 3229.485],
[-9261.662, 3228.784],
[-9259.072, 3228.077],
[-9256.483, 3227.367],
[-9253.895, 3226.652],
[-9251.309, 3225.932]]),
np.array([[-9509.847, 3271.336],
[-9512.512, 3271.604],
[-9515.178, 3271.868],
[-9517.844, 3272.127],
[-9520.51 , 3272.381],
[-9523.177, 3272.631],
[-9525.845, 3272.876],
[-9528.512, 3273.117],
[-9531.181, 3273.352],
[-9533.849, 3273.583],
[-9536.518, 3273.81 ],
[-9539.188, 3274.032],
[-9541.857, 3274.249],
[-9544.528, 3274.461],
[-9547.198, 3274.669],
[-9549.869, 3274.872],
[-9552.54 , 3275.071],
[-9555.212, 3275.265],
[-9557.884, 3275.454],
[-9560.556, 3275.638],
[-9563.228, 3275.818],
[-9565.901, 3275.994],
[-9568.575, 3276.164],
[-9571.248, 3276.33 ],
[-9573.922, 3276.491],
[-9576.596, 3276.648],
[-9579.27 , 3276.799],
[-9581.945, 3276.947],
[-9584.619, 3277.089],
[-9587.294, 3277.227],
[-9589.97 , 3277.36 ],
[-9592.645, 3277.489],
[-9595.321, 3277.613],
[-9597.997, 3277.732],
[-9600.673, 3277.846],
[-9603.349, 3277.956],
[-9606.026, 3278.061],
[-9608.703, 3278.162],
[-9611.379, 3278.258],
[-9614.057, 3278.349],
[-9616.734, 3278.435],
[-9619.411, 3278.517],
[-9622.089, 3278.594],
[-9624.766, 3278.667],
[-9627.444, 3278.734],
[-9630.122, 3278.797],
[-9632.8 , 3278.856],
[-9635.478, 3278.91 ],
[-9638.156, 3278.959],
[-9640.834, 3279.003],
[-9643.512, 3279.043],
[-9646.191, 3279.078],
[-9648.869, 3279.108],
[-9651.548, 3279.134],
[-9654.226, 3279.155],
[-9656.905, 3279.171],
[-9659.583, 3279.183],
[-9662.262, 3279.19 ],
[-9664.941, 3279.192],
[-9664.941, 3282.592],
[-9662.256, 3282.59 ],
[-9659.571, 3282.583],
[-9656.887, 3282.571],
[-9654.202, 3282.555],
[-9651.518, 3282.534],
[-9648.834, 3282.508],
[-9646.149, 3282.478],
[-9643.465, 3282.443],
[-9640.781, 3282.403],
[-9638.097, 3282.358],
[-9635.412, 3282.309],
[-9632.729, 3282.255],
[-9630.045, 3282.197],
[-9627.361, 3282.133],
[-9624.677, 3282.065],
[-9621.994, 3281.993],
[-9619.31 , 3281.915],
[-9616.627, 3281.833],
[-9613.944, 3281.747],
[-9611.261, 3281.655],
[-9608.578, 3281.559],
[-9605.895, 3281.459],
[-9603.213, 3281.353],
[-9600.531, 3281.243],
[-9597.849, 3281.128],
[-9595.167, 3281.009],
[-9592.485, 3280.885],
[-9589.804, 3280.756],
[-9587.122, 3280.623],
[-9584.441, 3280.485],
[-9581.761, 3280.342],
[-9579.08 , 3280.194],
[-9576.4 , 3280.042],
[-9573.72 , 3279.885],
[-9571.04 , 3279.724],
[-9568.361, 3279.557],
[-9565.682, 3279.386],
[-9563.003, 3279.211],
[-9560.325, 3279.031],
[-9557.647, 3278.846],
[-9554.969, 3278.656],
[-9552.291, 3278.462],
[-9549.614, 3278.263],
[-9546.937, 3278.059],
[-9544.261, 3277.851],
[-9541.585, 3277.638],
[-9538.909, 3277.42 ],
[-9536.234, 3277.198],
[-9533.559, 3276.971],
[-9530.884, 3276.739],
[-9528.21 , 3276.503],
[-9525.537, 3276.262],
[-9522.863, 3276.017],
[-9520.19 , 3275.766],
[-9517.518, 3275.511],
[-9514.846, 3275.252],
[-9512.175, 3274.987],
[-9509.504, 3274.718]]),
np.array([[ -9664.941, 3279.339],
[-10613.225, 3279.339],
[-10613.225, 3282.739],
[ -9664.941, 3282.739]]),
np.array([[-10613.225, 3279.339],
[-10692.121, 3279.339],
[-10692.121, 3282.739],
[-10613.225, 3282.739]])]
# construct the cell structure
cell = gdspy.Cell('CELL')
cell.add(gdspy.PolygonSet(poly_stuctures))
# offset the structure
poly_offset = gdspy.offset(gdspy.CellReference(cell), distance=0.35, layer=1, join_first=True, precision=0.0001)
cell_offset = gdspy.Cell('CELL_OFFSET')
cell_offset.add(poly_offset)
# write the result to gds file
gdspy.write_gds('offset_test_output.gds', cells=[cell, cell_offset])
from gdspy.
Just a small comment - applying various geometrical operations to arbitrary complex layouts is a challenging task. Doing simple things on simple layouts (like sizing a rectangle) is simple, but doing this on geometries containing very small angles, or acute angles, or holes, etc. is non-trivial. The best software for this sort of things, in my opinion, is Calibre (from Mentor Graphics - now part of Siemens).
I tried to do resizing (you call it offsetting) of your example in another tool (klayout) - it avoided the problems that gdspy had (apparently, algorithms bugs), but had some other issues (narrow inward triangular cuts caused by two neighboring edges that are almost parallel).
In one of my previous companies, we had out own computational geometry library, and we had to continuously improve it until all issues were resolved (and new issues were showing up for some new unusual geometries in GDS files).
One unrelated note - you have some (I guess - unintended) jogs at the polygon fracture edges...
from gdspy.
@explorer2011 With regard to building generic algorithms to handle arbitrary geometries – I agree, no mean feat! Gdspy handles the absolute majority of cases correctly, but in some corner cases (roughly, <1 per 100,000 structures), residual issues need to be worked out. We all come from backgrounds where we used various layout tools – and certainly have an option of applying them here as well. From our experience, however, we have not been happier to have built our integrated design framework on top of python/gdspy and have cut out all the other layout dependencies from our workflow. This allowed us to fully automate our design and fabrication cycle and collaborate more effectively in spite of running on different OSs and hardware.
The “jogs” that you may have observed are intended. Our waveguide rendering tool compensates for the displacement of the mode in a curved waveguide relative to the waveguide center. In cases when the curvature of the waveguide changes abruptly, the renderer will produce a kink in the waveguide to align the modes in the waveguides with different curvatures.
from gdspy.
Agreed, simplicity and ease of use is the king...
from gdspy.
It seems that the problem is in fact in the fracture
code, not offset
.
If I use max_points=1e300
the problem stops. I have to check the code and see if I find the bug... I don't know how hard that will be, so it could take a while. @okianus, thanks for the example!
from gdspy.
@heitzmann I have an observation - please take it with a grain of salt. I observe errors occurring only in the regions where a densely sampled structure ( such as a curved waveguide) intersects a very sparsely sampled structure (such as a very elongated rectangle only defined by its corners). @okianus 's example falls into that category.
from gdspy.
I have seen errors with fracturing for issue #9 as well. Unfortunately I still cannot provide test data.
from gdspy.
@heitzmann I would like to add another piece of info. In order for us to overcome the above errors, we introduce a minute inclination in what should have been perfectly horizontal waveguides. This breaks the symmetry and allows gdspy to execute without errors.
from gdspy.
Sorry, I've been quite busy and this is a complex issue probably with the _chop
algorithm for heavily degenerate polygons.
The simplest solution I can think of is to use the boolean C extension library to robustly do the fracturing of the polygons. This adds another precision
setting for all functions depending on fractures, but I guess it's a fair price for having the correct result.
The changes are included in commit 693dfd8 (branch next). I'll leave the issue open until this fix is properly tested.
In the future I might add a _chop
function in C to speed up a little compared to the current version.
from gdspy.
Hi. Was this issue properly resolved and tested?
I've been having problems with GDS designed developed in PICWriter which uses gdspy. Some designs crash the e-beam during writing and I suspect it has something to do with loops in the grating couplers.
from gdspy.
Hi @Miakatt, indeed this has been resolved. The _chop function is performed by the library clipper (C extension, external dependency), in which we haven't found any bugs so far. Do you have any more information on the issue? Or maybe an example gds file where the crash occurs (as minimal as possible, so we can investigate)?
from gdspy.
Hi @heitzmann. I am using a Raith Voyager E-beam. My designs are created in PICWriter (https://github.com/DerekK88/PICwriter) in which I create a cladding layer (1), a top layer (2) and a mask layer (layer 3). Layer 3 is what I write with the E-Beam.
This is done with the PICwriter Toolkit call to build_mask. This function does the boolean operation in gdspy:
if wgt.resist=='+':
cell.add(gdspy.fast_boolean(pWG, pCLAD, 'xor', precision=0.001, max_points=199, layer=fl, datatype=fd))
elif wgt.resist=='-':
cell.add(gdspy.fast_boolean(pWG, pCLAD, 'and', precision=0.001, max_points=199, layer=fl, datatype=fd))
I run the pattern through the Raith consistency check. It shows some errors, but these are usually extremely small features/corners that the E-beam can't write. Our expert says that these errors shouldn't be a problem in practice.
I've included a link GDS of one of the patterns that locked up. It failed on the bottom-most grating coupler. I can't say at exactly which position, but it looked to be at the GC itself, not the waveguide.
https://www.dropbox.com/s/thnkmcm7sil4mhs/GC_Sweep_straight_endfire_lock-up.gds?dl=0
I converted the pattern to ASCII in the Raith software and tried again, but it stopped writing at the same point.
The GDS has 11 grating couplers of varying periodicity. I could provide a single GC, but I know this particular file failed twice. To determine if a more minimalist example also fails will require a lot of work as it only fails during writing in the ebeam.
We're talking to a Raith engineer today, so hopefully they can look in to this too.
from gdspy.
For completeness, I've provided a png of the grating coupler area I think was the point of failure.
I wonder if the issue is due to the joint in the GC, and shortening the grating region may prevent the lock-up.
I shall let you know if we get any useful information from Raith.
from gdspy.
The shapes look fine to me in KLayout... could it be that the problem is in the 4nm strip at the last grating tooth? Or maybe the shape is just too complex for the Raith software... in that case, maybe chop the taper part out, than chop the teeth from the outer cladding to avoid creating holes?
from gdspy.
@Miakatt FYI, I have looked at your coupler layout using our custom .gds viewer. I am not able to observe a problem or what could be causing it. As you may be aware, during ebeam writing, gds file typically gets flattened by the writing software to a base structure that is a trapezoid. We have encountered cases when the flattened structure exploded to several Gb causing the ebeam buffer overflowing. The type of structure that you are showing, unless a part of a much more complex layout, should be ok.
from gdspy.
@heitzmann, @rosivda . Thank you for taking the time to look in to this. I am also able to view the layout in various third party software (KLayout, Layout Editor, MEEP etc) as well as the Raith Voyager viewer/editor. The issue does seem to be related to how the Voyager writing software interprets the .gds file. I wasn't aware of the 'explosive' memory requirements during writing. This is interesting, as the task manager shows a flat 5GB RAM usage, even though there is 32GB available. So, maybe it's a local issue?
I'm told that other users of the E-beam are doing more complex layouts (designed in Matlab) with no issues. I don't know the details of these files as I'm an commercial user of the University's facilities. They may be complex, but very modular/repetitive, and therefore not so complex for the Voyager software to compose.
I will need to look in to this and also see what Raith come back with. For now, it looks like the issue is either with them, or a more local problem. Thank you again for checking the example gds. I will post back when I get more information.
from gdspy.
Related Issues (20)
- RobustPath : Unsupported types for -: 'tuple' and 'tuple' HOT 1
- Use scaling to reduce file size HOT 1
- the direction of polygon in the cellreference is wrong HOT 3
- may be it is a bug for GdsLibrary.new_cell() HOT 6
- 'Cell' object has no attribute 'elements' HOT 1
- gdspy installation in python 3.10. HOT 1
- How can I get the information of the instance?
- Use gdspy in Klayout Macro developement (reopened) HOT 1
- How to read a gds file data and export it as PNG? HOT 1
- gdspy.inside only checks for inside the bbox HOT 1
- GdsLibrary object has no attribute 'cells' HOT 2
- Multiple cells with name: FGCCTE in GDSII file HOT 2
- result of get_bounding_box() for a polygon is wrong HOT 2
- conda install gdspy
- overwrite_duplicate not working with (use_current_library = True) HOT 1
- After gdspy boolean OR operation, help HOT 1
- [0.9.46] Python extension build fails when the PYPI tarball is used HOT 1
- Python tests fail HOT 1
- Merging polygons with gdspy boolean vs Klayout merge produces different results
- [Documentation] What does "intersect, but not cross" mean? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gdspy.