text:
"""
# `STW105`

1-D layered model of the Earth, containing radial anisotropy,
density and attenuation.

Attenuation is taken from QL6 (Durek and Ekström, 1996).

This version was obtained from:
    https://ds.iris.edu/ds/products/emc-stw105/
The original model is parameterised by radial splines.

## Reference

Kustowski, B., Ekström, G., Dziewoński, A., 2008.
Anisotropic shear-wave velocity structure of the Earth’s mantle: A global model.
J Geophys Res-Sol Ea 113, B06306.
https://doi.org/10.1029/2007JB005169
"""
const STW105 = LinearLayeredModel(
    r = [0., 6824., 13648., 20472., 27296., 34120., 40944.,
         47768., 54592., 61416., 68240., 75064., 81888., 88712.,
         95536., 102360., 109184., 116007., 122831., 129655., 136479.,
         143303., 150127., 156951., 163775., 170599., 177423., 184247.,
         191071., 197895., 204719., 211543., 218367., 225191., 232015.,
         238839., 245663., 252487., 259311., 266135., 272959., 279783.,
         286607., 293431., 300255., 307079., 313903., 320727., 327551.,
         334375., 341199., 348022., 354846., 361670., 368494., 375318.,
         382142., 388966., 395790., 402614., 409438., 416262., 423086.,
         429910., 436734., 443558., 450382., 457206., 464030., 470854.,
         477678., 484502., 491326., 498150., 504974., 511798., 518622.,
         525446., 532270., 539094., 545918., 552742., 559566., 566390.,
         573214., 580037., 586861., 593685., 600509., 607333., 614157.,
         620981., 627805., 634629., 641453., 648277., 655101., 661925.,
         668749., 675573., 682397., 689221., 696045., 702869., 709693.,
         716517., 723341., 730165., 736989., 743813., 750637., 757461.,
         764285., 771109., 777933., 784757., 791581., 798405., 805229.,
         812052., 818876., 825700., 832524., 839348., 846172., 852996.,
         859820., 866644., 873468., 880292., 887116., 893940., 900764.,
         907588., 914412., 921236., 928060., 934884., 941708., 948532.,
         955356., 962180., 969004., 975828., 982652., 989476., 996300.,
         1003124., 1009948., 1016772., 1023596., 1030420., 1037244., 1044067.,
         1050891., 1057715., 1064539., 1071363., 1078187., 1085011., 1091835.,
         1098659., 1105483., 1112307., 1119131., 1125955., 1132779., 1139603.,
         1146427., 1153251., 1160075., 1166899., 1173723., 1180547., 1187371.,
         1194195., 1201019., 1207843., 1214667., 1221491., 1221491., 1234250.,
         1247010., 1259770., 1272530., 1285289., 1298049., 1310809., 1323568.,
         1336328., 1349088., 1361847., 1374607., 1387367., 1400127., 1412886.,
         1425646., 1438406., 1451165., 1463925., 1476685., 1489444., 1502204.,
         1514964., 1527724., 1540483., 1553243., 1566003., 1578762., 1591522.,
         1604282., 1617041., 1629801., 1642561., 1655321., 1668080., 1680840.,
         1693600., 1706359., 1719119., 1731879., 1744638., 1757398., 1770158.,
         1782918., 1795677., 1808437., 1821197., 1833956., 1846716., 1859476.,
         1872235., 1884995., 1897755., 1910515., 1923274., 1936034., 1948794.,
         1961553., 1974313., 1987073., 1999832., 2012592., 2025352., 2038112.,
         2050871., 2063631., 2076391., 2089150., 2101910., 2114670., 2127429.,
         2140189., 2152949., 2165709., 2178468., 2191228., 2203988., 2216747.,
         2229507., 2242267., 2255026., 2267786., 2280546., 2293306., 2306065.,
         2318825., 2331585., 2344344., 2357104., 2369864., 2382623., 2395383.,
         2408143., 2420903., 2433662., 2446422., 2459182., 2471941., 2484701.,
         2497461., 2510220., 2522980., 2535740., 2548500., 2561259., 2574019.,
         2586779., 2599538., 2612298., 2625058., 2637818., 2650577., 2663337.,
         2676097., 2688856., 2701616., 2714376., 2727135., 2739895., 2752655.,
         2765415., 2778174., 2790934., 2803694., 2816453., 2829213., 2841973.,
         2854732., 2867492., 2880252., 2893012., 2905771., 2918531., 2931291.,
         2944050., 2956810., 2969570., 2982329., 2995089., 3007849., 3020609.,
         3033368., 3046128., 3058888., 3071647., 3084407., 3097167., 3109926.,
         3122686., 3135446., 3148206., 3160965., 3173725., 3186485., 3199244.,
         3212004., 3224764., 3237523., 3250283., 3263043., 3275803., 3288562.,
         3301322., 3314082., 3326841., 3339601., 3352361., 3365120., 3377880.,
         3390640., 3403400., 3416159., 3428919., 3441679., 3454438., 3467198.,
         3479958., 3479958., 3489335., 3498713., 3508091., 3517468., 3526846.,
         3536224., 3545601., 3554979., 3564357., 3573734., 3583112., 3592489.,
         3601867., 3611245., 3620622., 3630000., 3630000., 3639471., 3648942.,
         3658413., 3667885., 3677356., 3686827., 3696298., 3705769., 3715240.,
         3724712., 3734183., 3743654., 3753125., 3762596., 3772067., 3781538.,
         3791010., 3800481., 3809952., 3819423., 3828894., 3838365., 3847837.,
         3857308., 3866779., 3876250., 3885721., 3895192., 3904663., 3914135.,
         3923606., 3933077., 3942548., 3952019., 3961490., 3970962., 3980433.,
         3989904., 3999375., 4008846., 4018317., 4027788., 4037260., 4046731.,
         4056202., 4065673., 4075144., 4084615., 4094087., 4103558., 4113029.,
         4122500., 4131971., 4141442., 4150913., 4160385., 4169856., 4179327.,
         4188798., 4198269., 4207740., 4217212., 4226683., 4236154., 4245625.,
         4255096., 4264567., 4274038., 4283510., 4292981., 4302452., 4311923.,
         4321394., 4330865., 4340337., 4349808., 4359279., 4368750., 4378221.,
         4387692., 4397163., 4406635., 4416106., 4425577., 4435048., 4444519.,
         4453990., 4463462., 4472933., 4482404., 4491875., 4501346., 4510817.,
         4520288., 4529760., 4539231., 4548702., 4558173., 4567644., 4577115.,
         4586587., 4596058., 4605529., 4615000., 4624471., 4633942., 4643413.,
         4652885., 4662356., 4671827., 4681298., 4690769., 4700240., 4709712.,
         4719183., 4728654., 4738125., 4747596., 4757067., 4766538., 4776010.,
         4785481., 4794952., 4804423., 4813894., 4823365., 4832837., 4842308.,
         4851779., 4861250., 4870721., 4880192., 4889663., 4899135., 4908606.,
         4918077., 4927548., 4937019., 4946490., 4955962., 4965433., 4974904.,
         4984375., 4993846., 5003317., 5012788., 5022260., 5031731., 5041202.,
         5050673., 5060144., 5069615., 5079087., 5088558., 5098029., 5107500.,
         5116971., 5126442., 5135913., 5145385., 5154856., 5164327., 5173798.,
         5183269., 5192740., 5202212., 5211683., 5221154., 5230625., 5240096.,
         5249567., 5259038., 5268510., 5277981., 5287452., 5296923., 5306394.,
         5315865., 5325337., 5334808., 5344279., 5353750., 5363221., 5372692.,
         5382163., 5391635., 5401106., 5410577., 5420048., 5429519., 5438990.,
         5448462., 5457933., 5467404., 5476875., 5486346., 5495817., 5505288.,
         5514760., 5524231., 5533702., 5543173., 5552644., 5562115., 5571587.,
         5581058., 5590529., 5600000., 5600000., 5607562., 5615125., 5622688.,
         5630250., 5637812., 5645375., 5652938., 5660500., 5668062., 5675625.,
         5683188., 5690750., 5698312., 5705875., 5713438., 5721000., 5721000.,
         5724572., 5728143., 5731714., 5735286., 5738857., 5742428., 5746000.,
         5749572., 5753143., 5756714., 5760286., 5763857., 5767428., 5771000.,
         5771000., 5777334., 5783666., 5790000., 5796334., 5802666., 5809000.,
         5815334., 5821666., 5828000., 5834334., 5840666., 5847000., 5853334.,
         5859666., 5866000., 5872334., 5878666., 5885000., 5891334., 5897666.,
         5904000., 5910334., 5916666., 5923000., 5929334., 5935666., 5942000.,
         5948334., 5954666., 5961000., 5961000., 5967334., 5973666., 5980000.,
         5986334., 5992666., 5999000., 6005334., 6011666., 6018000., 6024334.,
         6030666., 6037000., 6043334., 6049666., 6056000., 6062334., 6068666.,
         6075000., 6081334., 6087666., 6094000., 6100334., 6106666., 6113000.,
         6119334., 6125666., 6132000., 6138334., 6144666., 6151000., 6151000.,
         6157087., 6163174., 6169261., 6175348., 6181435., 6187522., 6193609.,
         6199696., 6205783., 6211870., 6217957., 6224043., 6230130., 6236217.,
         6242304., 6248391., 6254478., 6260565., 6266652., 6272739., 6278826.,
         6284913., 6291000., 6291000., 6294971., 6298943., 6302914., 6306886.,
         6310857., 6314829., 6318800., 6322771., 6326743., 6330714., 6334686.,
         6338657., 6342629., 6346600., 6346600., 6347540., 6348480., 6349420.,
         6350360., 6351300., 6352240., 6353180., 6354120., 6355060., 6356000.,
         6356000., 6357200., 6358400., 6359600., 6360800., 6362000., 6363200.,
         6364400., 6365600., 6366800., 6368000., 6368000., 6368300., 6368600.,
         6368900., 6369200., 6369500., 6369800., 6370100., 6370400., 6370700.,
         6371000.]./1000,
    density = [13088.48, 13088.47, 13088.44, 13088.39, 13088.32, 13088.22, 13088.11,
        13087.98, 13087.83, 13087.66, 13087.46, 13087.25, 13087.02, 13086.76,
        13086.49, 13086.20, 13085.88, 13085.55, 13085.19, 13084.82, 13084.42,
        13084.01, 13083.57, 13083.11, 13082.64, 13082.14, 13081.62, 13081.09,
        13080.53, 13079.95, 13079.35, 13078.73, 13078.09, 13077.44, 13076.76,
        13076.06, 13075.34, 13074.60, 13073.84, 13073.06, 13072.25, 13071.43,
        13070.59, 13069.73, 13068.85, 13067.95, 13067.02, 13066.08, 13065.12,
        13064.13, 13063.13, 13062.10, 13061.06, 13060.00, 13058.91, 13057.81,
        13056.68, 13055.53, 13054.37, 13053.18, 13051.98, 13050.75, 13049.50,
        13048.23, 13046.95, 13045.64, 13044.31, 13042.96, 13041.59, 13040.20,
        13038.79, 13037.36, 13035.91, 13034.44, 13032.95, 13031.44, 13029.91,
        13028.36, 13026.79, 13025.20, 13023.58, 13021.95, 13020.30, 13018.63,
        13016.93, 13015.22, 13013.49, 13011.73, 13009.96, 13008.16, 13006.35,
        13004.51, 13002.66, 13000.78, 12998.88, 12996.97, 12995.03, 12993.07,
        12991.10, 12989.10, 12987.08, 12985.04, 12982.99, 12980.91, 12978.81,
        12976.69, 12974.55, 12972.39, 12970.21, 12968.01, 12965.79, 12963.55,
        12961.29, 12959.01, 12956.70, 12954.38, 12952.04, 12949.68, 12947.29,
        12944.89, 12942.47, 12940.02, 12937.56, 12935.08, 12932.57, 12930.05,
        12927.50, 12924.94, 12922.35, 12919.75, 12917.12, 12914.47, 12911.81,
        12909.12, 12906.41, 12903.68, 12900.94, 12898.17, 12895.38, 12892.57,
        12889.74, 12886.89, 12884.02, 12881.13, 12878.22, 12875.29, 12872.34,
        12869.37, 12866.38, 12863.37, 12860.34, 12857.29, 12854.21, 12851.12,
        12848.01, 12844.88, 12841.72, 12838.55, 12835.35, 12832.14, 12828.91,
        12825.65, 12822.38, 12819.08, 12815.76, 12812.43, 12809.07, 12805.70,
        12802.30, 12798.88, 12795.44, 12791.99, 12788.51, 12785.01, 12781.49,
        12777.95, 12774.40, 12770.82, 12767.22, 12763.60, 12166.35, 12159.77,
        12153.14, 12146.45, 12139.71, 12132.91, 12126.05, 12119.14, 12112.18,
        12105.15, 12098.07, 12090.93, 12083.73, 12076.48, 12069.17, 12061.80,
        12054.37, 12046.88, 12039.33, 12031.72, 12024.05, 12016.33, 12008.54,
        12000.69, 11992.78, 11984.81, 11976.78, 11968.68, 11960.53, 11952.31,
        11944.03, 11935.69, 11927.28, 11918.81, 11910.28, 11901.68, 11893.02,
        11884.30, 11875.51, 11866.66, 11857.74, 11848.75, 11839.70, 11830.58,
        11821.40, 11812.15, 11802.84, 11793.45, 11784.01, 11774.49, 11764.90,
        11755.25, 11745.53, 11735.74, 11725.88, 11715.95, 11705.95, 11695.89,
        11685.75, 11675.54, 11665.26, 11654.92, 11644.50, 11634.01, 11623.44,
        11612.81, 11602.10, 11591.32, 11580.47, 11569.55, 11558.55, 11547.48,
        11536.34, 11525.12, 11513.83, 11502.46, 11491.02, 11479.51, 11467.91,
        11456.25, 11444.50, 11432.69, 11420.79, 11408.82, 11396.77, 11384.64,
        11372.44, 11360.16, 11347.80, 11335.37, 11322.85, 11310.26, 11297.58,
        11284.83, 11272.00, 11259.09, 11246.10, 11233.03, 11219.87, 11206.64,
        11193.33, 11179.93, 11166.45, 11152.89, 11139.25, 11125.53, 11111.72,
        11097.83, 11083.86, 11069.80, 11055.66, 11041.44, 11027.13, 11012.74,
        10998.26, 10983.70, 10969.05, 10954.32, 10939.50, 10924.59, 10909.60,
        10894.52, 10879.35, 10864.10, 10848.76, 10833.33, 10817.81, 10802.21,
        10786.51, 10770.73, 10754.86, 10738.90, 10722.85, 10706.71, 10690.48,
        10674.16, 10657.75, 10641.24, 10624.65, 10607.96, 10591.19, 10574.32,
        10557.36, 10540.30, 10523.16, 10505.92, 10488.58, 10471.15, 10453.63,
        10436.02, 10418.31, 10400.51, 10382.61, 10364.61, 10346.52, 10328.34,
        10310.05, 10291.68, 10273.20, 10254.63, 10235.96, 10217.20, 10198.33,
        10179.37, 10160.31, 10141.15, 10121.90, 10102.54, 10083.09, 10063.53,
        10043.88, 10024.12, 10004.27, 9984.32, 9964.26, 9944.10, 9923.84,
        9903.48, 5566.45, 5561.75, 5557.05, 5552.36, 5547.66, 5542.97,
        5538.28, 5533.59, 5528.90, 5524.21, 5519.53, 5514.85, 5510.16,
        5505.48, 5500.81, 5496.13, 5491.45, 5491.45, 5486.73, 5482.01,
        5477.29, 5472.57, 5467.85, 5463.13, 5458.42, 5453.70, 5448.99,
        5444.27, 5439.56, 5434.85, 5430.13, 5425.42, 5420.71, 5416.00,
        5411.29, 5406.57, 5401.86, 5397.15, 5392.44, 5387.73, 5383.02,
        5378.30, 5373.59, 5368.88, 5364.17, 5359.45, 5354.74, 5350.02,
        5345.31, 5340.59, 5335.87, 5331.16, 5326.44, 5321.72, 5317.00,
        5312.28, 5307.55, 5302.83, 5298.10, 5293.38, 5288.65, 5283.92,
        5279.19, 5274.45, 5269.72, 5264.98, 5260.25, 5255.51, 5250.77,
        5246.02, 5241.28, 5236.53, 5231.78, 5227.03, 5222.27, 5217.52,
        5212.76, 5208.00, 5203.23, 5198.47, 5193.70, 5188.93, 5184.15,
        5179.38, 5174.60, 5169.82, 5165.03, 5160.24, 5155.45, 5150.65,
        5145.86, 5141.06, 5136.25, 5131.44, 5126.63, 5121.82, 5117.00,
        5112.18, 5107.35, 5102.52, 5097.69, 5092.85, 5088.01, 5083.16,
        5078.31, 5073.46, 5068.60, 5063.74, 5058.87, 5054.00, 5049.13,
        5044.25, 5039.36, 5034.47, 5029.58, 5024.68, 5019.78, 5014.87,
        5009.96, 5005.04, 5000.12, 4995.19, 4990.26, 4985.32, 4980.38,
        4975.43, 4970.47, 4965.51, 4960.55, 4955.58, 4950.60, 4945.62,
        4940.63, 4935.64, 4930.64, 4925.63, 4920.62, 4915.60, 4910.58,
        4905.55, 4900.51, 4895.47, 4890.42, 4885.37, 4880.31, 4875.24,
        4870.16, 4865.08, 4859.99, 4854.90, 4849.80, 4844.69, 4839.57,
        4834.45, 4829.32, 4824.18, 4819.04, 4813.88, 4808.73, 4803.56,
        4798.39, 4793.20, 4788.02, 4782.82, 4777.61, 4772.40, 4767.18,
        4761.95, 4756.72, 4751.47, 4746.22, 4740.95, 4735.68, 4730.40,
        4725.10, 4719.80, 4714.48, 4709.15, 4703.81, 4698.44, 4693.08,
        4687.69, 4682.29, 4676.87, 4671.44, 4665.99, 4660.52, 4655.03,
        4649.52, 4644.00, 4638.46, 4632.89, 4627.31, 4621.70, 4616.08,
        4610.44, 4604.76, 4599.08, 4593.36, 4587.63, 4581.86, 4576.07,
        4570.26, 4564.43, 4558.56, 4552.67, 4546.76, 4540.82, 4534.84,
        4528.85, 4522.81, 4516.76, 4510.67, 4504.56, 4498.41, 4492.23,
        4486.02, 4479.78, 4473.51, 4467.20, 4460.87, 4454.49, 4448.08,
        4441.63, 4435.13, 4428.60, 4428.59, 4423.32, 4418.01, 4412.67,
        4407.30, 4401.90, 4396.45, 4390.96, 4385.40, 4379.81, 4374.16,
        4368.47, 4362.72, 4356.92, 4351.08, 4345.18, 4339.24, 4047.01,
        4042.50, 4037.98, 4033.48, 4028.95, 4024.45, 4019.93, 4015.42,
        4010.90, 4006.38, 4001.87, 3997.35, 3992.84, 3988.32, 3983.80,
        3983.80, 3975.79, 3967.77, 3959.76, 3951.75, 3943.73, 3935.71,
        3927.69, 3919.67, 3911.65, 3903.61, 3895.58, 3887.56, 3879.53,
        3871.50, 3863.46, 3855.42, 3847.38, 3839.33, 3831.27, 3823.22,
        3815.16, 3807.09, 3799.01, 3790.94, 3782.85, 3774.78, 3766.66,
        3758.56, 3750.45, 3742.34, 3554.91, 3551.00, 3547.07, 3543.16,
        3539.23, 3535.32, 3531.39, 3527.46, 3523.57, 3519.67, 3515.77,
        3511.91, 3508.06, 3504.21, 3500.39, 3496.58, 3492.80, 3489.05,
        3485.32, 3481.61, 3477.88, 3474.16, 3470.41, 3466.59, 3462.74,
        3458.78, 3454.75, 3450.61, 3446.33, 3441.91, 3437.35, 3437.34,
        3432.81, 3428.15, 3423.37, 3418.47, 3413.47, 3408.35, 3403.15,
        3397.87, 3392.50, 3387.07, 3381.58, 3376.03, 3370.45, 3364.87,
        3359.31, 3353.79, 3348.37, 3343.03, 3337.85, 3332.83, 3328.01,
        3323.39, 3319.04, 3319.03, 3316.33, 3313.75, 3311.30, 3308.97,
        3306.73, 3304.58, 3302.53, 3300.55, 3298.63, 3296.79, 3295.00,
        3293.25, 3291.54, 3289.84, 2900.00, 2900.00, 2900.00, 2900.00,
        2900.00, 2900.00, 2900.00, 2900.00, 2900.00, 2900.00, 2900.00,
        2600.00, 2600.00, 2600.00, 2600.00, 2600.00, 2600.00, 2600.00,
        2600.00, 2600.00, 2600.00, 2600.00, 1020.00, 1020.00, 1020.00,
        1020.00, 1020.00, 1020.00, 1020.00, 1020.00, 1020.00, 1020.00,
        1020.00]./1000,
    vpv = [
        11262.20, 11262.20, 11262.18, 11262.14, 11262.09, 11262.02, 11261.94,
        11261.85, 11261.74, 11261.61, 11261.47, 11261.32, 11261.15, 11260.97,
        11260.77, 11260.56, 11260.34, 11260.09, 11259.84, 11259.57, 11259.28,
        11258.99, 11258.67, 11258.34, 11258.00, 11257.64, 11257.27, 11256.88,
        11256.48, 11256.06, 11255.63, 11255.19, 11254.73, 11254.25, 11253.76,
        11253.26, 11252.74, 11252.21, 11251.66, 11251.10, 11250.52, 11249.93,
        11249.33, 11248.71, 11248.07, 11247.42, 11246.76, 11246.08, 11245.38,
        11244.67, 11243.95, 11243.21, 11242.46, 11241.70, 11240.91, 11240.12,
        11239.31, 11238.48, 11237.64, 11236.79, 11235.92, 11235.04, 11234.14,
        11233.23, 11232.30, 11231.36, 11230.40, 11229.43, 11228.44, 11227.44,
        11226.43, 11225.40, 11224.36, 11223.30, 11222.22, 11221.14, 11220.03,
        11218.92, 11217.78, 11216.64, 11215.48, 11214.30, 11213.11, 11211.91,
        11210.69, 11209.45, 11208.21, 11206.94, 11205.67, 11204.37, 11203.07,
        11201.74, 11200.41, 11199.06, 11197.69, 11196.31, 11194.92, 11193.51,
        11192.09, 11190.65, 11189.19, 11187.73, 11186.24, 11184.75, 11183.24,
        11181.71, 11180.17, 11178.61, 11177.04, 11175.46, 11173.86, 11172.25,
        11170.62, 11168.98, 11167.32, 11165.65, 11163.96, 11162.26, 11160.54,
        11158.81, 11157.07, 11155.31, 11153.54, 11151.75, 11149.94, 11148.13,
        11146.29, 11144.45, 11142.58, 11140.71, 11138.82, 11136.91, 11134.99,
        11133.06, 11131.11, 11129.14, 11127.16, 11125.17, 11123.16, 11121.14,
        11119.10, 11117.05, 11114.99, 11112.90, 11110.81, 11108.70, 11106.57,
        11104.44, 11102.28, 11100.11, 11097.93, 11095.73, 11093.52, 11091.29,
        11089.05, 11086.80, 11084.53, 11082.24, 11079.94, 11077.63, 11075.30,
        11072.95, 11070.59, 11068.22, 11065.83, 11063.43, 11061.02, 11058.58,
        11056.14, 11053.68, 11051.20, 11048.71, 11046.21, 11043.69, 11041.16,
        11038.61, 11036.05, 11033.47, 11030.88, 11028.27, 10355.69, 10348.28,
        10340.85, 10333.39, 10325.91, 10318.40, 10310.87, 10303.30, 10295.71,
        10288.09, 10280.44, 10272.76, 10265.04, 10257.30, 10249.52, 10241.71,
        10233.86, 10225.98, 10218.06, 10210.11, 10202.12, 10194.10, 10186.04,
        10177.94, 10169.79, 10161.61, 10153.39, 10145.13, 10136.83, 10128.48,
        10120.09, 10111.66, 10103.18, 10094.66, 10086.09, 10077.48, 10068.82,
        10060.11, 10051.35, 10042.54, 10033.69, 10024.78, 10015.82, 10006.82,
        9997.75, 9988.64, 9979.47, 9970.25, 9960.97, 9951.64, 9942.25,
        9932.81, 9923.31, 9913.75, 9904.13, 9894.45, 9884.71, 9874.91,
        9865.05, 9855.13, 9845.14, 9835.09, 9824.98, 9814.80, 9804.56,
        9794.25, 9783.87, 9773.43, 9762.92, 9752.34, 9741.69, 9730.97,
        9720.18, 9709.32, 9698.39, 9687.38, 9676.31, 9665.15, 9653.93,
        9642.63, 9631.25, 9619.80, 9608.27, 9596.66, 9584.97, 9573.20,
        9561.36, 9549.43, 9537.43, 9525.34, 9513.17, 9500.91, 9488.57,
        9476.15, 9463.64, 9451.05, 9438.37, 9425.61, 9412.75, 9399.81,
        9386.78, 9373.66, 9360.45, 9347.15, 9333.76, 9320.27, 9306.70,
        9293.03, 9279.26, 9265.40, 9251.45, 9237.40, 9223.25, 9209.00,
        9194.66, 9180.22, 9165.68, 9151.03, 9136.29, 9121.45, 9106.50,
        9091.46, 9076.30, 9061.05, 9045.69, 9030.23, 9014.65, 8998.98,
        8983.19, 8967.30, 8951.30, 8935.19, 8918.97, 8902.64, 8886.20,
        8869.64, 8852.98, 8836.20, 8819.31, 8802.30, 8785.18, 8767.94,
        8750.59, 8733.12, 8715.53, 8697.82, 8680.00, 8662.05, 8643.99,
        8625.80, 8607.49, 8589.06, 8570.51, 8551.83, 8533.03, 8514.10,
        8495.05, 8475.87, 8456.57, 8437.14, 8417.58, 8397.89, 8378.07,
        8358.12, 8338.04, 8317.83, 8297.49, 8277.01, 8256.41, 8235.66,
        8214.79, 8193.77, 8172.62, 8151.34, 8129.92, 8108.36, 8086.66,
        8064.82, 13716.60, 13714.29, 13712.00, 13709.70, 13707.42, 13705.14,
        13702.86, 13700.59, 13698.33, 13696.07, 13693.82, 13691.57, 13689.33,
        13687.09, 13684.86, 13682.63, 13680.41, 13680.41, 13668.90, 13657.43,
        13645.97, 13634.54, 13623.14, 13611.76, 13600.40, 13589.07, 13577.76,
        13566.47, 13555.20, 13543.95, 13532.72, 13521.51, 13510.32, 13499.14,
        13487.99, 13476.85, 13465.73, 13454.63, 13443.54, 13432.46, 13421.41,
        13410.36, 13399.33, 13388.31, 13377.31, 13366.31, 13355.33, 13344.36,
        13333.40, 13322.45, 13311.51, 13300.58, 13289.66, 13278.74, 13267.84,
        13256.93, 13246.04, 13235.15, 13224.27, 13213.39, 13202.51, 13191.64,
        13180.78, 13169.91, 13159.05, 13148.19, 13137.33, 13126.47, 13115.61,
        13104.75, 13093.89, 13083.02, 13072.16, 13061.29, 13050.42, 13039.55,
        13028.67, 13017.78, 13006.90, 12996.00, 12985.10, 12974.19, 12963.28,
        12952.36, 12941.42, 12930.48, 12919.54, 12908.58, 12897.61, 12886.63,
        12875.63, 12864.63, 12853.61, 12842.58, 12831.54, 12820.48, 12809.41,
        12798.32, 12787.22, 12776.10, 12764.96, 12753.81, 12742.63, 12731.44,
        12720.24, 12709.01, 12697.76, 12686.49, 12675.20, 12663.89, 12652.56,
        12641.20, 12629.82, 12618.42, 12606.99, 12595.54, 12584.06, 12572.56,
        12561.03, 12549.48, 12537.89, 12526.28, 12514.64, 12502.98, 12491.28,
        12479.55, 12467.79, 12456.01, 12444.19, 12432.33, 12420.45, 12408.53,
        12396.58, 12384.60, 12372.58, 12360.52, 12348.43, 12336.30, 12324.14,
        12311.94, 12299.70, 12287.42, 12275.11, 12262.75, 12250.35, 12237.92,
        12225.44, 12212.92, 12200.36, 12187.76, 12175.11, 12162.43, 12149.69,
        12136.91, 12124.09, 12111.22, 12098.31, 12085.34, 12072.34, 12059.28,
        12046.17, 12033.02, 12019.82, 12006.56, 11993.26, 11979.90, 11966.50,
        11953.04, 11939.53, 11925.97, 11912.35, 11898.69, 11884.96, 11871.19,
        11857.37, 11843.48, 11829.55, 11815.57, 11801.53, 11787.44, 11773.30,
        11759.10, 11744.85, 11730.55, 11716.18, 11701.78, 11687.31, 11672.80,
        11658.23, 11643.60, 11628.92, 11614.19, 11599.40, 11584.57, 11569.68,
        11554.72, 11539.72, 11524.67, 11509.56, 11494.39, 11479.17, 11463.89,
        11448.55, 11433.17, 11417.73, 11402.23, 11386.68, 11371.07, 11355.41,
        11339.69, 11323.91, 11308.09, 11292.20, 11276.25, 11260.25, 11244.19,
        11228.08, 11211.90, 11195.67, 11179.38, 11163.04, 11146.63, 11130.18,
        11113.67, 11097.11, 11080.51, 11080.51, 11063.01, 11045.22, 11026.82,
        11008.47, 10989.04, 10969.63, 10948.76, 10928.02, 10907.42, 10886.94,
        10866.60, 10846.41, 10826.35, 10806.42, 10786.61, 10766.90, 10278.88,
        10261.87, 10244.84, 10227.82, 10210.80, 10193.78, 10176.77, 10159.74,
        10142.72, 10125.71, 10108.70, 10091.68, 10074.68, 10057.68, 10040.64,
        10040.67, 10010.52, 9980.51, 9950.64, 9920.91, 9891.35, 9861.96,
        9832.79, 9803.79, 9774.98, 9746.41, 9718.08, 9689.96, 9662.10,
        9634.47, 9607.11, 9579.97, 9553.08, 9526.38, 9499.78, 9473.25,
        9446.74, 9420.19, 9393.55, 9366.75, 9339.76, 9312.50, 9284.96,
        9257.04, 9228.73, 9199.94, 8940.94, 8930.61, 8920.22, 8909.68,
        8898.47, 8886.28, 8873.03, 8858.58, 8842.82, 8825.64, 8806.94,
        8786.67, 8764.85, 8741.49, 8716.63, 8690.30, 8662.50, 8633.28,
        8602.66, 8570.81, 8538.06, 8504.66, 8470.92, 8437.13, 8403.52,
        8370.42, 8338.11, 8306.25, 8275.42, 8241.77, 8207.37, 8207.01,
        8174.32, 8141.99, 8110.40, 8079.71, 8050.15, 8021.89, 7995.08,
        7969.97, 7946.70, 7925.45, 7906.44, 7889.80, 7875.56, 7863.64,
        7853.87, 7846.17, 7840.38, 7836.39, 7834.11, 7833.38, 7834.11,
        7836.11, 7839.12, 7839.37, 7841.82, 7844.77, 7848.07, 7851.72,
        7855.75, 7860.14, 7864.89, 7870.01, 7875.49, 7881.33, 7887.54,
        7894.13, 7901.10, 7908.24, 6800.00, 6800.00, 6800.00, 6800.00,
        6800.00, 6800.00, 6800.00, 6800.00, 6800.00, 6800.00, 6800.00,
        5800.00, 5800.00, 5800.00, 5800.00, 5800.00, 5800.00, 5800.00,
        5800.00, 5800.00, 5800.00, 5800.00, 1450.00, 1450.00, 1450.00,
        1450.00, 1450.00, 1450.00, 1450.00, 1450.00, 1450.00, 1450.00,
        1450.00]./1000,
    vsv = [3667.80, 3667.79, 3667.78, 3667.75, 3667.72, 3667.67, 3667.62,
        3667.55, 3667.47, 3667.39, 3667.29, 3667.18, 3667.06, 3666.94,
        3666.80, 3666.65, 3666.49, 3666.32, 3666.15, 3665.96, 3665.76,
        3665.55, 3665.33, 3665.10, 3664.86, 3664.61, 3664.35, 3664.08,
        3663.80, 3663.51, 3663.21, 3662.90, 3662.57, 3662.24, 3661.90,
        3661.55, 3661.19, 3660.81, 3660.43, 3660.04, 3659.64, 3659.22,
        3658.80, 3658.36, 3657.92, 3657.47, 3657.00, 3656.53, 3656.04,
        3655.55, 3655.04, 3654.53, 3654.00, 3653.47, 3652.92, 3652.36,
        3651.80, 3651.22, 3650.63, 3650.04, 3649.43, 3648.81, 3648.19,
        3647.55, 3646.90, 3646.24, 3645.57, 3644.89, 3644.21, 3643.51,
        3642.80, 3642.08, 3641.35, 3640.61, 3639.86, 3639.10, 3638.33,
        3637.55, 3636.76, 3635.96, 3635.14, 3634.32, 3633.49, 3632.65,
        3631.80, 3630.93, 3630.06, 3629.18, 3628.29, 3627.38, 3626.47,
        3625.55, 3624.61, 3623.67, 3622.71, 3621.75, 3620.78, 3619.79,
        3618.80, 3617.79, 3616.78, 3615.75, 3614.71, 3613.67, 3612.61,
        3611.55, 3610.47, 3609.38, 3608.28, 3607.18, 3606.06, 3604.93,
        3603.79, 3602.65, 3601.49, 3600.32, 3599.14, 3597.95, 3596.75,
        3595.54, 3594.32, 3593.10, 3591.86, 3590.61, 3589.34, 3588.07,
        3586.79, 3585.50, 3584.20, 3582.89, 3581.57, 3580.24, 3578.90,
        3577.54, 3576.18, 3574.81, 3573.43, 3572.03, 3570.63, 3569.22,
        3567.79, 3566.36, 3564.91, 3563.46, 3562.00, 3560.52, 3559.04,
        3557.54, 3556.04, 3554.52, 3553.00, 3551.46, 3549.91, 3548.36,
        3546.79, 3545.21, 3543.63, 3542.03, 3540.42, 3538.81, 3537.18,
        3535.54, 3533.89, 3532.23, 3530.57, 3528.89, 3527.20, 3525.50,
        3523.79, 3522.07, 3520.34, 3518.60, 3516.85, 3515.09, 3513.32,
        3511.54, 3509.75, 3507.95, 3506.13, 3504.31, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 7264.66, 7264.75, 7264.85, 7264.94, 7265.03, 7265.12,
        7265.21, 7265.29, 7265.38, 7265.46, 7265.54, 7265.62, 7265.69,
        7265.76, 7265.84, 7265.91, 7265.97, 7265.97, 7261.63, 7257.29,
        7252.97, 7248.64, 7244.33, 7240.01, 7235.71, 7231.41, 7227.12,
        7222.83, 7218.55, 7214.27, 7210.00, 7205.73, 7201.47, 7197.21,
        7192.95, 7188.70, 7184.45, 7180.21, 7175.97, 7171.73, 7167.50,
        7163.27, 7159.04, 7154.81, 7150.59, 7146.37, 7142.15, 7137.93,
        7133.71, 7129.50, 7125.29, 7121.07, 7116.86, 7112.65, 7108.44,
        7104.23, 7100.02, 7095.81, 7091.60, 7087.39, 7083.18, 7078.96,
        7074.75, 7070.54, 7066.32, 7062.10, 7057.88, 7053.66, 7049.44,
        7045.22, 7040.99, 7036.76, 7032.52, 7028.29, 7024.05, 7019.81,
        7015.56, 7011.31, 7007.06, 7002.80, 6998.54, 6994.27, 6990.00,
        6985.72, 6981.44, 6977.15, 6972.86, 6968.57, 6964.26, 6959.95,
        6955.64, 6951.32, 6946.99, 6942.66, 6938.31, 6933.97, 6929.61,
        6925.25, 6920.88, 6916.50, 6912.11, 6907.72, 6903.32, 6898.91,
        6894.49, 6890.06, 6885.62, 6881.17, 6876.72, 6872.25, 6867.78,
        6863.29, 6858.80, 6854.29, 6849.78, 6845.25, 6840.71, 6836.16,
        6831.60, 6827.03, 6822.45, 6817.85, 6813.25, 6808.63, 6804.00,
        6799.35, 6794.70, 6790.03, 6785.34, 6780.65, 6775.94, 6771.22,
        6766.48, 6761.73, 6756.97, 6752.19, 6747.40, 6742.59, 6737.76,
        6732.93, 6728.07, 6723.21, 6718.32, 6713.42, 6708.51, 6703.57,
        6698.62, 6693.66, 6688.68, 6683.68, 6678.66, 6673.63, 6668.58,
        6663.51, 6658.43, 6653.32, 6648.20, 6643.06, 6637.90, 6632.73,
        6627.53, 6622.31, 6617.08, 6611.82, 6606.55, 6601.26, 6595.94,
        6590.61, 6584.91, 6579.51, 6574.11, 6568.67, 6563.22, 6557.74,
        6552.24, 6546.73, 6541.19, 6535.63, 6530.05, 6524.44, 6518.82,
        6513.17, 6507.50, 6501.80, 6496.09, 6490.35, 6484.59, 6478.80,
        6472.99, 6467.16, 6461.30, 6455.42, 6449.51, 6443.58, 6437.63,
        6431.65, 6425.65, 6419.61, 6413.56, 6407.48, 6401.37, 6395.25,
        6389.09, 6382.91, 6376.70, 6370.46, 6364.20, 6357.91, 6351.59,
        6345.25, 6338.88, 6332.49, 6326.05, 6319.60, 6313.13, 6306.62,
        6300.08, 6293.52, 6286.92, 6280.29, 6273.64, 6266.96, 6260.25,
        6253.51, 6246.75, 6239.95, 6239.95, 6219.68, 6200.29, 6181.16,
        6162.04, 6143.01, 6123.98, 6103.71, 6083.53, 6063.45, 6043.44,
        6023.52, 6003.73, 5984.03, 5964.38, 5944.81, 5925.27, 5550.32,
        5541.20, 5532.08, 5522.96, 5513.83, 5504.71, 5495.59, 5486.47,
        5477.35, 5468.22, 5459.10, 5449.97, 5440.84, 5431.71, 5422.57,
        5422.59, 5406.39, 5390.30, 5374.34, 5358.52, 5342.83, 5327.31,
        5311.92, 5296.73, 5281.71, 5266.86, 5252.21, 5237.78, 5223.55,
        5209.54, 5195.72, 5182.10, 5168.69, 5155.42, 5142.22, 5129.05,
        5115.84, 5102.55, 5089.14, 5075.50, 5061.63, 5047.46, 5032.93,
        5018.03, 5002.66, 4986.77, 4802.15, 4798.23, 4794.28, 4790.38,
        4785.95, 4780.83, 4775.01, 4768.45, 4761.12, 4752.97, 4744.01,
        4734.25, 4723.77, 4712.70, 4701.12, 4689.11, 4676.77, 4664.20,
        4651.49, 4638.69, 4625.88, 4613.07, 4600.31, 4587.67, 4575.18,
        4562.88, 4550.85, 4539.08, 4527.67, 4516.65, 4506.09, 4506.00,
        4496.29, 4487.00, 4478.17, 4469.83, 4462.00, 4454.69, 4447.94,
        4441.76, 4436.18, 4431.20, 4426.83, 4423.12, 4420.09, 4417.81,
        4416.30, 4415.67, 4415.93, 4417.15, 4419.42, 4422.78, 4427.25,
        4432.88, 4439.57, 4439.74, 4444.71, 4450.28, 4456.35, 4462.89,
        4469.94, 4477.40, 4485.33, 4493.69, 4502.48, 4511.66, 4521.24,
        4531.23, 4541.57, 4552.08, 3900.00, 3900.00, 3900.00, 3900.00,
        3900.00, 3900.00, 3900.00, 3900.00, 3900.00, 3900.00, 3900.00,
        3200.00, 3200.00, 3200.00, 3200.00, 3200.00, 3200.00, 3200.00,
        3200.00, 3200.00, 3200.00, 3200.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00]./1000,
    Qκ = [1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 1327.6,
        1327.6, 1327.6, 1327.6, 1327.6, 1327.6, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 943.0, 943.0, 943.0, 943.0,
        943.0, 943.0, 943.0, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5, 57822.5,
        57822.5],
    Qμ = [104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 104.0, 104.0,
        104.0, 104.0, 104.0, 104.0, 104.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
        0.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 355.0,
        355.0, 355.0, 355.0, 355.0, 355.0, 355.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 165.0,
        165.0, 165.0, 165.0, 165.0, 165.0, 165.0, 70.0,
        70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0,
        70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0,
        70.0, 70.0, 70.0, 70.0, 70.0, 70.0, 70.0,
        70.0, 70.0, 191.0, 191.0, 191.0, 191.0, 191.0,
        191.0, 191.0, 191.0, 191.0, 191.0, 191.0, 191.0,
        191.0, 191.0, 191.0, 300.0, 300.0, 300.0, 300.0,
        300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0,
        300.0, 300.0, 300.0, 300.0, 300.0, 300.0, 300.0,
        300.0, 300.0, 300.0, 300.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
    vph = [11262.20, 11262.20, 11262.18, 11262.14, 11262.09, 11262.02, 11261.94,
        11261.85, 11261.74, 11261.61, 11261.47, 11261.32, 11261.15, 11260.97,
        11260.77, 11260.56, 11260.34, 11260.09, 11259.84, 11259.57, 11259.28,
        11258.99, 11258.67, 11258.34, 11258.00, 11257.64, 11257.27, 11256.88,
        11256.48, 11256.06, 11255.63, 11255.19, 11254.73, 11254.25, 11253.76,
        11253.26, 11252.74, 11252.21, 11251.66, 11251.10, 11250.52, 11249.93,
        11249.33, 11248.71, 11248.07, 11247.42, 11246.76, 11246.08, 11245.38,
        11244.67, 11243.95, 11243.21, 11242.46, 11241.70, 11240.91, 11240.12,
        11239.31, 11238.48, 11237.64, 11236.79, 11235.92, 11235.04, 11234.14,
        11233.23, 11232.30, 11231.36, 11230.40, 11229.43, 11228.44, 11227.44,
        11226.43, 11225.40, 11224.36, 11223.30, 11222.22, 11221.14, 11220.03,
        11218.92, 11217.78, 11216.64, 11215.48, 11214.30, 11213.11, 11211.91,
        11210.69, 11209.45, 11208.21, 11206.94, 11205.67, 11204.37, 11203.07,
        11201.74, 11200.41, 11199.06, 11197.69, 11196.31, 11194.92, 11193.51,
        11192.09, 11190.65, 11189.19, 11187.73, 11186.24, 11184.75, 11183.24,
        11181.71, 11180.17, 11178.61, 11177.04, 11175.46, 11173.86, 11172.25,
        11170.62, 11168.98, 11167.32, 11165.65, 11163.96, 11162.26, 11160.54,
        11158.81, 11157.07, 11155.31, 11153.54, 11151.75, 11149.94, 11148.13,
        11146.29, 11144.45, 11142.58, 11140.71, 11138.82, 11136.91, 11134.99,
        11133.06, 11131.11, 11129.14, 11127.16, 11125.17, 11123.16, 11121.14,
        11119.10, 11117.05, 11114.99, 11112.90, 11110.81, 11108.70, 11106.57,
        11104.44, 11102.28, 11100.11, 11097.93, 11095.73, 11093.52, 11091.29,
        11089.05, 11086.80, 11084.53, 11082.24, 11079.94, 11077.63, 11075.30,
        11072.95, 11070.59, 11068.22, 11065.83, 11063.43, 11061.02, 11058.58,
        11056.14, 11053.68, 11051.20, 11048.71, 11046.21, 11043.69, 11041.16,
        11038.61, 11036.05, 11033.47, 11030.88, 11028.27, 10355.69, 10348.28,
        10340.85, 10333.39, 10325.91, 10318.40, 10310.87, 10303.30, 10295.71,
        10288.09, 10280.44, 10272.76, 10265.04, 10257.30, 10249.52, 10241.71,
        10233.86, 10225.98, 10218.06, 10210.11, 10202.12, 10194.10, 10186.04,
        10177.94, 10169.79, 10161.61, 10153.39, 10145.13, 10136.83, 10128.48,
        10120.09, 10111.66, 10103.18, 10094.66, 10086.09, 10077.48, 10068.82,
        10060.11, 10051.35, 10042.54, 10033.69, 10024.78, 10015.82, 10006.82,
        9997.75, 9988.64, 9979.47, 9970.25, 9960.97, 9951.64, 9942.25,
        9932.81, 9923.31, 9913.75, 9904.13, 9894.45, 9884.71, 9874.91,
        9865.05, 9855.13, 9845.14, 9835.09, 9824.98, 9814.80, 9804.56,
        9794.25, 9783.87, 9773.43, 9762.92, 9752.34, 9741.69, 9730.97,
        9720.18, 9709.32, 9698.39, 9687.38, 9676.31, 9665.15, 9653.93,
        9642.63, 9631.25, 9619.80, 9608.27, 9596.66, 9584.97, 9573.20,
        9561.36, 9549.43, 9537.43, 9525.34, 9513.17, 9500.91, 9488.57,
        9476.15, 9463.64, 9451.05, 9438.37, 9425.61, 9412.75, 9399.81,
        9386.78, 9373.66, 9360.45, 9347.15, 9333.76, 9320.27, 9306.70,
        9293.03, 9279.26, 9265.40, 9251.45, 9237.40, 9223.25, 9209.00,
        9194.66, 9180.22, 9165.68, 9151.03, 9136.29, 9121.45, 9106.50,
        9091.46, 9076.30, 9061.05, 9045.69, 9030.23, 9014.65, 8998.98,
        8983.19, 8967.30, 8951.30, 8935.19, 8918.97, 8902.64, 8886.20,
        8869.64, 8852.98, 8836.20, 8819.31, 8802.30, 8785.18, 8767.94,
        8750.59, 8733.12, 8715.53, 8697.82, 8680.00, 8662.05, 8643.99,
        8625.80, 8607.49, 8589.06, 8570.51, 8551.83, 8533.03, 8514.10,
        8495.05, 8475.87, 8456.57, 8437.14, 8417.58, 8397.89, 8378.07,
        8358.12, 8338.04, 8317.83, 8297.49, 8277.01, 8256.41, 8235.66,
        8214.79, 8193.77, 8172.62, 8151.34, 8129.92, 8108.36, 8086.66,
        8064.82, 13716.60, 13714.29, 13712.00, 13709.70, 13707.42, 13705.14,
        13702.86, 13700.59, 13698.33, 13696.07, 13693.82, 13691.57, 13689.33,
        13687.09, 13684.86, 13682.63, 13680.41, 13680.41, 13668.90, 13657.43,
        13645.97, 13634.54, 13623.14, 13611.76, 13600.40, 13589.07, 13577.76,
        13566.47, 13555.20, 13543.95, 13532.72, 13521.51, 13510.32, 13499.14,
        13487.99, 13476.85, 13465.73, 13454.63, 13443.54, 13432.46, 13421.41,
        13410.36, 13399.33, 13388.31, 13377.31, 13366.31, 13355.33, 13344.36,
        13333.40, 13322.45, 13311.51, 13300.58, 13289.66, 13278.74, 13267.84,
        13256.93, 13246.04, 13235.15, 13224.27, 13213.39, 13202.51, 13191.64,
        13180.78, 13169.91, 13159.05, 13148.19, 13137.33, 13126.47, 13115.61,
        13104.75, 13093.89, 13083.02, 13072.16, 13061.29, 13050.42, 13039.55,
        13028.67, 13017.78, 13006.90, 12996.00, 12985.10, 12974.19, 12963.28,
        12952.36, 12941.42, 12930.48, 12919.54, 12908.58, 12897.61, 12886.63,
        12875.63, 12864.63, 12853.61, 12842.58, 12831.54, 12820.48, 12809.41,
        12798.32, 12787.22, 12776.10, 12764.96, 12753.81, 12742.63, 12731.44,
        12720.24, 12709.01, 12697.76, 12686.49, 12675.20, 12663.89, 12652.56,
        12641.20, 12629.82, 12618.42, 12606.99, 12595.54, 12584.06, 12572.56,
        12561.03, 12549.48, 12537.89, 12526.28, 12514.64, 12502.98, 12491.28,
        12479.55, 12467.79, 12456.01, 12444.19, 12432.33, 12420.45, 12408.53,
        12396.58, 12384.60, 12372.58, 12360.52, 12348.43, 12336.30, 12324.14,
        12311.94, 12299.70, 12287.42, 12275.11, 12262.75, 12250.35, 12237.92,
        12225.44, 12212.92, 12200.36, 12187.76, 12175.11, 12162.43, 12149.69,
        12136.91, 12124.09, 12111.22, 12098.31, 12085.34, 12072.34, 12059.28,
        12046.17, 12033.02, 12019.82, 12006.56, 11993.26, 11979.90, 11966.50,
        11953.04, 11939.53, 11925.97, 11912.35, 11898.69, 11884.96, 11871.19,
        11857.37, 11843.48, 11829.55, 11815.57, 11801.53, 11787.44, 11773.30,
        11759.10, 11744.85, 11730.55, 11716.18, 11701.78, 11687.31, 11672.80,
        11658.23, 11643.60, 11628.92, 11614.19, 11599.40, 11584.57, 11569.68,
        11554.72, 11539.72, 11524.67, 11509.56, 11494.39, 11479.17, 11463.89,
        11448.55, 11433.17, 11417.73, 11402.23, 11386.68, 11371.07, 11355.41,
        11339.69, 11323.91, 11308.09, 11292.20, 11276.25, 11260.25, 11244.19,
        11228.08, 11211.90, 11195.67, 11179.38, 11163.04, 11146.63, 11130.18,
        11113.67, 11097.11, 11080.51, 11080.51, 11063.01, 11045.22, 11026.82,
        11008.47, 10989.04, 10969.63, 10948.76, 10928.02, 10907.42, 10886.94,
        10866.60, 10846.41, 10826.35, 10806.42, 10786.61, 10766.90, 10278.88,
        10261.87, 10244.84, 10227.82, 10210.80, 10193.78, 10176.77, 10159.74,
        10142.72, 10125.71, 10108.70, 10091.68, 10074.68, 10057.68, 10040.64,
        10040.67, 10010.52, 9980.51, 9950.64, 9920.91, 9891.35, 9861.96,
        9832.79, 9803.79, 9774.98, 9746.41, 9718.08, 9689.96, 9662.10,
        9634.47, 9607.11, 9579.97, 9553.08, 9526.38, 9499.78, 9473.25,
        9446.74, 9420.19, 9393.55, 9366.75, 9339.76, 9312.50, 9284.96,
        9257.04, 9228.73, 9199.94, 8940.94, 8930.61, 8920.22, 8909.68,
        8898.47, 8886.28, 8873.03, 8858.58, 8842.82, 8825.64, 8806.94,
        8786.67, 8764.85, 8741.49, 8716.63, 8690.30, 8662.50, 8633.28,
        8602.66, 8570.81, 8538.06, 8504.66, 8470.92, 8437.13, 8403.52,
        8370.42, 8338.11, 8307.42, 8278.36, 8255.33, 8236.90, 8236.81,
        8222.27, 8210.47, 8201.14, 8193.99, 8188.67, 8184.92, 8182.39,
        8180.79, 8179.83, 8179.17, 8178.54, 8177.64, 8176.30, 8174.55,
        8172.42, 8169.91, 8167.05, 8163.88, 8160.37, 8156.58, 8152.57,
        8148.41, 8144.20, 8144.32, 8141.60, 8139.01, 8136.50, 8134.11,
        8131.82, 8129.66, 8127.60, 8125.65, 8123.87, 8122.23, 8120.74,
        8119.38, 8118.22, 8117.13, 6800.00, 6800.00, 6800.00, 6800.00,
        6800.00, 6800.00, 6800.00, 6800.00, 6800.00, 6800.00, 6800.00,
        5800.00, 5800.00, 5800.00, 5800.00, 5800.00, 5800.00, 5800.00,
        5800.00, 5800.00, 5800.00, 5800.00, 1450.00, 1450.00, 1450.00,
        1450.00, 1450.00, 1450.00, 1450.00, 1450.00, 1450.00, 1450.00,
        1450.00]./1000,
    vsh = [3667.80, 3667.79, 3667.78, 3667.75, 3667.72, 3667.67, 3667.62,
        3667.55, 3667.47, 3667.39, 3667.29, 3667.18, 3667.06, 3666.94,
        3666.80, 3666.65, 3666.49, 3666.32, 3666.15, 3665.96, 3665.76,
        3665.55, 3665.33, 3665.10, 3664.86, 3664.61, 3664.35, 3664.08,
        3663.80, 3663.51, 3663.21, 3662.90, 3662.57, 3662.24, 3661.90,
        3661.55, 3661.19, 3660.81, 3660.43, 3660.04, 3659.64, 3659.22,
        3658.80, 3658.36, 3657.92, 3657.47, 3657.00, 3656.53, 3656.04,
        3655.55, 3655.04, 3654.53, 3654.00, 3653.47, 3652.92, 3652.36,
        3651.80, 3651.22, 3650.63, 3650.04, 3649.43, 3648.81, 3648.19,
        3647.55, 3646.90, 3646.24, 3645.57, 3644.89, 3644.21, 3643.51,
        3642.80, 3642.08, 3641.35, 3640.61, 3639.86, 3639.10, 3638.33,
        3637.55, 3636.76, 3635.96, 3635.14, 3634.32, 3633.49, 3632.65,
        3631.80, 3630.93, 3630.06, 3629.18, 3628.29, 3627.38, 3626.47,
        3625.55, 3624.61, 3623.67, 3622.71, 3621.75, 3620.78, 3619.79,
        3618.80, 3617.79, 3616.78, 3615.75, 3614.71, 3613.67, 3612.61,
        3611.55, 3610.47, 3609.38, 3608.28, 3607.18, 3606.06, 3604.93,
        3603.79, 3602.65, 3601.49, 3600.32, 3599.14, 3597.95, 3596.75,
        3595.54, 3594.32, 3593.10, 3591.86, 3590.61, 3589.34, 3588.07,
        3586.79, 3585.50, 3584.20, 3582.89, 3581.57, 3580.24, 3578.90,
        3577.54, 3576.18, 3574.81, 3573.43, 3572.03, 3570.63, 3569.22,
        3567.79, 3566.36, 3564.91, 3563.46, 3562.00, 3560.52, 3559.04,
        3557.54, 3556.04, 3554.52, 3553.00, 3551.46, 3549.91, 3548.36,
        3546.79, 3545.21, 3543.63, 3542.03, 3540.42, 3538.81, 3537.18,
        3535.54, 3533.89, 3532.23, 3530.57, 3528.89, 3527.20, 3525.50,
        3523.79, 3522.07, 3520.34, 3518.60, 3516.85, 3515.09, 3513.32,
        3511.54, 3509.75, 3507.95, 3506.13, 3504.31, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
        0.00, 7264.66, 7264.75, 7264.85, 7264.94, 7265.03, 7265.12,
        7265.21, 7265.29, 7265.38, 7265.46, 7265.54, 7265.62, 7265.69,
        7265.76, 7265.84, 7265.91, 7265.97, 7265.97, 7261.63, 7257.29,
        7252.97, 7248.64, 7244.33, 7240.01, 7235.71, 7231.41, 7227.12,
        7222.83, 7218.55, 7214.27, 7210.00, 7205.73, 7201.47, 7197.21,
        7192.95, 7188.70, 7184.45, 7180.21, 7175.97, 7171.73, 7167.50,
        7163.27, 7159.04, 7154.81, 7150.59, 7146.37, 7142.15, 7137.93,
        7133.71, 7129.50, 7125.29, 7121.07, 7116.86, 7112.65, 7108.44,
        7104.23, 7100.02, 7095.81, 7091.60, 7087.39, 7083.18, 7078.96,
        7074.75, 7070.54, 7066.32, 7062.10, 7057.88, 7053.66, 7049.44,
        7045.22, 7040.99, 7036.76, 7032.52, 7028.29, 7024.05, 7019.81,
        7015.56, 7011.31, 7007.06, 7002.80, 6998.54, 6994.27, 6990.00,
        6985.72, 6981.44, 6977.15, 6972.86, 6968.57, 6964.26, 6959.95,
        6955.64, 6951.32, 6946.99, 6942.66, 6938.31, 6933.97, 6929.61,
        6925.25, 6920.88, 6916.50, 6912.11, 6907.72, 6903.32, 6898.91,
        6894.49, 6890.06, 6885.62, 6881.17, 6876.72, 6872.25, 6867.78,
        6863.29, 6858.80, 6854.29, 6849.78, 6845.25, 6840.71, 6836.16,
        6831.60, 6827.03, 6822.45, 6817.85, 6813.25, 6808.63, 6804.00,
        6799.35, 6794.70, 6790.03, 6785.34, 6780.65, 6775.94, 6771.22,
        6766.48, 6761.73, 6756.97, 6752.19, 6747.40, 6742.59, 6737.76,
        6732.93, 6728.07, 6723.21, 6718.32, 6713.42, 6708.51, 6703.57,
        6698.62, 6693.66, 6688.68, 6683.68, 6678.66, 6673.63, 6668.58,
        6663.51, 6658.43, 6653.32, 6648.20, 6643.06, 6637.90, 6632.73,
        6627.53, 6622.31, 6617.08, 6611.82, 6606.55, 6601.26, 6595.94,
        6590.61, 6584.91, 6579.51, 6574.11, 6568.67, 6563.22, 6557.74,
        6552.24, 6546.73, 6541.19, 6535.63, 6530.05, 6524.44, 6518.82,
        6513.17, 6507.50, 6501.80, 6496.09, 6490.35, 6484.59, 6478.80,
        6472.99, 6467.16, 6461.30, 6455.42, 6449.51, 6443.58, 6437.63,
        6431.65, 6425.65, 6419.61, 6413.56, 6407.48, 6401.37, 6395.25,
        6389.09, 6382.91, 6376.70, 6370.46, 6364.20, 6357.91, 6351.59,
        6345.25, 6338.88, 6332.49, 6326.05, 6319.60, 6313.13, 6306.62,
        6300.08, 6293.52, 6286.92, 6280.29, 6273.64, 6266.96, 6260.25,
        6253.51, 6246.75, 6239.95, 6239.95, 6219.68, 6200.29, 6181.16,
        6162.04, 6143.01, 6123.98, 6103.71, 6083.53, 6063.45, 6043.44,
        6023.52, 6003.73, 5984.03, 5964.38, 5944.81, 5925.27, 5550.32,
        5541.20, 5532.08, 5522.96, 5513.83, 5504.71, 5495.59, 5486.47,
        5477.35, 5468.22, 5459.10, 5449.97, 5440.84, 5431.71, 5422.57,
        5422.59, 5406.39, 5390.30, 5374.34, 5358.52, 5342.83, 5327.31,
        5311.92, 5296.73, 5281.71, 5266.86, 5252.21, 5237.78, 5223.55,
        5209.54, 5195.72, 5182.10, 5168.69, 5155.42, 5142.22, 5129.05,
        5115.84, 5102.55, 5089.14, 5075.50, 5061.63, 5047.46, 5032.93,
        5018.03, 5002.66, 4986.77, 4803.78, 4800.54, 4797.28, 4793.96,
        4790.18, 4785.78, 4780.71, 4775.00, 4768.58, 4761.41, 4753.51,
        4744.86, 4735.64, 4725.88, 4715.76, 4705.34, 4694.74, 4684.08,
        4673.46, 4662.94, 4652.61, 4642.55, 4632.81, 4623.51, 4614.68,
        4606.39, 4598.73, 4591.76, 4585.56, 4580.21, 4575.75, 4575.74,
        4572.27, 4569.53, 4567.46, 4566.02, 4565.10, 4564.66, 4564.65,
        4564.99, 4565.62, 4566.47, 4567.46, 4568.58, 4569.70, 4570.85,
        4571.91, 4572.83, 4573.60, 4574.16, 4574.44, 4574.42, 4574.04,
        4573.36, 4572.41, 4572.46, 4571.71, 4570.93, 4570.06, 4569.16,
        4568.21, 4567.22, 4566.21, 4565.16, 4564.11, 4563.05, 4562.00,
        4560.94, 4559.94, 4558.94, 3900.00, 3900.00, 3900.00, 3900.00,
        3900.00, 3900.00, 3900.00, 3900.00, 3900.00, 3900.00, 3900.00,
        3200.00, 3200.00, 3200.00, 3200.00, 3200.00, 3200.00, 3200.00,
        3200.00, 3200.00, 3200.00, 3200.00, 0.00, 0.00, 0.00,
        0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00]./1000,
    eta = [1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        0.99999, 0.99997, 0.99995, 0.99994, 0.99990, 0.99986, 0.99980,
        0.99974, 0.99966, 0.99957, 0.99947, 0.99934, 0.99920, 0.99904,
        0.99886, 0.99864, 0.99832, 0.99790, 0.99732, 0.99654, 0.99553,
        0.99426, 0.99268, 0.99075, 0.98843, 0.98571, 0.98255, 0.98250,
        0.97907, 0.97531, 0.97128, 0.96704, 0.96268, 0.95823, 0.95378,
        0.94938, 0.94509, 0.94098, 0.93712, 0.93356, 0.93034, 0.92743,
        0.92483, 0.92251, 0.92046, 0.91867, 0.91711, 0.91577, 0.91465,
        0.91371, 0.91296, 0.91294, 0.91254, 0.91221, 0.91193, 0.91171,
        0.91155, 0.91142, 0.91134, 0.91130, 0.91129, 0.91130, 0.91135,
        0.91140, 0.91147, 0.91155, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000, 1.00000,
        1.00000]
        )


text:
using CUDA
using PaddedViews

function k_index_kernel_fft_2d(data, out,offx, offy)
    dx = (blockIdx().x-1)*blockDim().x + threadIdx().x
    dy = (blockIdx().y-1)*blockDim().y + threadIdx().y
    #dz = (blockIdx().z-1)*blockDim().z + threadIdx().z

    #sx,sy,sz = size(data)
    # if dx > sx || dy > sy || dz > sz
    #     return nothing
    # end
    sx,sy = size(data)
    sx = sx - offx
    sy = sy - offy
    if dx > sx || dy > sy
        return nothing
    end

    out[dx,dy] = data[dx+offx, dy+offy]

    return nothing
end

function k_zeroing_2d(data, offx, offy)
    sx,sy = size(data)
    dx = (blockIdx().x-1)*blockDim().x + threadIdx().x
    dy = threadIdx().y
    if dx <= sx && dy <= offy
        @inbounds data[dx, end-dy+1] = 0
    end
    if dx <= sy && dy <= offx
        @inbounds data[end-dy+1, dx] = 0
    end
    return nothing
end

function cu_offset_result_2d(data, out, offx, offy)
    dims = size(data)
    tx = 32; ty =32
    bx = 1 + dims[1]÷tx
    by = 1 + dims[2]÷ty

    @cuda blocks=(bx,by) threads=(tx,ty) k_index_kernel_fft_2d(data,out,offx,offy)

    @show ty = 2*max(offy,offx)
    @show bx = 1 + max(dims...)÷tx
    @show by = 1
    @cuda blocks=(bx,by) threads=(tx,ty) k_zeroing_2d(out,2offx,2offy)
end

function k_elem_mul_2d!(A, B)
    tx = (blockIdx().x-1)*blockDim().x + threadIdx().x
    ty = (blockIdx().y-1)*blockDim().y + threadIdx().y
    sx,sy = size(A)
    if tx > sx || ty > sy
        return nothing
    end
    @inbounds a = A[tx,ty]
    @inbounds b = B[tx,ty]
    @inbounds A[tx,ty] = a*b
    return nothing
end

function elem_mul_2d!(A,B)
    sx,sy = size(A)
    tx = 32
    ty = 32
    bx = 1 + sx÷tx
    by = 1 + sy÷ty
    @cuda blocks=(bx,by) threads=(tx,ty) k_elem_mul_2d!(A,B)
    nothing
end

function k_cmplx_to_real_2d!(A)
    dx = (blockIdx().x-1)*blockDim().x + threadIdx().x
    dy = (blockIdx().y-1)*blockDim().y + threadIdx().y
    sx,sy = size(A)
    if dx > sx || dy > sy
        return nothing
    end
    a = A[dx,dy]
    A[dx,dy] = a.re
    return nothing
end

function cmplx_to_real_2d!(A)
    sx,sy = size(A)
    tx = 32
    ty = 32
    bx = 1 + sx÷tx
    by = 1 + sy÷ty
    @cuda blocks=(bx,by) threads=(tx,ty) k_cmplx_to_real_2d!(A)
    nothing
end

function fft_stencil_2d(data, template, t_steps=1)
    # template is a 2d square array
    r2 = size(template,1)
    r = 32
    while r < r2
        r += 32
    end
    println("FFT EXTRA RADIUS: ", r)
    r = r + 1
    print(template)
    print((size(data)))
    dx,dy = size(data)
    padded_data = PaddedView(0, data, (1:dx+r-1, 1:dy+r-1), (1:dx,1:dy))
    padded_template = PaddedView(0, template, (1:dx+r-1, 1:dy+r-1,), (1:r2,1:r2))
    ## Initial Upload
    fd = CuArray{CUDA.cuFloatComplex}(padded_data)
    ft = CuArray{CUDA.cuFloatComplex}(padded_template)
    temp = similar(ft)
    CUFFT.fft!(fd)
    CUFFT.fft!(ft)
    elem_mul_2d!(fd,ft)
    ## Time Loop
    CUFFT.ifft!(fd)
    r2 = r2÷2 + 1
    rn = r2:(r2+dx-1)
    return real(Array(fd))[rn,rn]
end

ext: jl


text:
import StatsBase

x, y = rand(100), rand(100)
@test causality(x, y, NearestNeighbourMITest(ηs = 5)) isa Vector
@test causality(x, y, NearestNeighbourMITest(ηs = 2:10)) isa Vector


text:
Parameters(
    hyper=HyperParams(
        Ws = [50,50,50,50,50,50,50],
        BN = [1,2,3,4,5,6],
        B  = 128,
        V  = 1,
        N  = 100,
        γₓ = 10,
        γᵤ = 2e-1,
        δ  = 10,
        k  = 18,
        dₒ = 2
    )
)

max_stars_repo_name: nnoll/seqspace

max_issues_repo_name: nnoll/seqspace

max_forks_repo_name: nnoll/seqspace


text:
module ComputedFieldTypes

export @computed, fulltype

"""
    fulltype(::Type)

Fill in the computed type parameters for `T` (if applicable and possible)
"""
fulltype(T::Type) = T

"""
    @computed type

Allows declaration of a type expression where some of the fields types are arbitrary computed functions of other type parameters.
It's suggested that those expressions be `const` (return the same value for the same inputs), but that is not essential.
"""
macro computed(typeexpr::Expr)
    return esc(_computed(__module__, typeexpr)) # macro hygiene is already handled, so escape everything
end

"""
    find_struct_decl(block::Expr)

Locate a :struct decl inside a :block of expressions.
"""
function find_struct_decl(block::Expr)
    inside = block, (block, 0)
    for i in 1:length(block.args)
        ex, exinside = block.args[i], (block, i)
        if Meta.isexpr(ex, :block)
            ex, exinside = find_struct_decl(ex)
        end
        if Meta.isexpr(ex, :struct)
            inside[1] === block || error("expected a single type expression")
            inside = ex, exinside
        end
    end
    return inside
end

"""
    _computed(__module__::Module, typeexpr::Expr)

the bulk of the work to compute the AST transform
"""
function _computed(__module__::Module, typeexpr::Expr)
    typeexpr = outside = macroexpand(__module__, typeexpr)::Expr # to expand @static
    inside = nothing
    typeexpr.head === :block && ((typeexpr, inside) = find_struct_decl(typeexpr))
    typeexpr.head === :struct || error("expected a type expression")
    if isa(typeexpr.args[2], Expr) && typeexpr.args[2].head == :(<:)
        curly = make_curly(typeexpr.args[2].args[1])
        typeexpr.args[2].args[1] = curly
    else
        curly = make_curly(typeexpr.args[2])
        typeexpr.args[2] = curly
    end
    tname = curly.args[1]::Symbol

    # extract list of declared type variables
    decl_tvars = Symbol[]
    for i in 2:length(curly.args)
        t = curly.args[i]
        if isa(t, Symbol)
            push!(decl_tvars, t)
        elseif isa(t, Expr) && t.head === :(<:) && isa(t.args[1], Symbol)
            push!(decl_tvars, t.args[1])
        else
            error("unexpected type variable expression")
        end
    end

    # compute fields
    fields = (typeexpr.args[3]::Expr).args
    ctors = Expr[] # non-field expressions
    def = Expr[] # definitions for field-type calculations
    fieldnames = Symbol[]
    for f in fields
        if isa(f, Symbol)
            push!(fieldnames, f.args[1]::Symbol)
        elseif isa(f, Expr)
            if f.head === :(::) && isa(f.args[1], Symbol)
                push!(fieldnames, f.args[1]::Symbol)
                f.args[2] = getenv!(f.args[2], curly.args, def)
            elseif f.head !== :line
                push!(ctors, f)
            end
        end
    end

    # rewrite constructors
    if isempty(ctors)
        # normally, Julia would add 3 default constructors here
        # however, two of those are not computable, so we don't add them
        push!(fields, Expr(:function, Expr(:where, Expr(:call, make_Type_expr(tname, decl_tvars), fieldnames...), decl_tvars...),
                           Expr(:block, Expr(:return, Expr(:call, make_new_expr(:new, decl_tvars, def), fieldnames...)))))
    else
        for e in ctors
            rewrite_new!(e, tname, decl_tvars, def)
        end
    end

    # add some extra function declarations for convenience
    typeexpr = Expr(:block, typeexpr, make_fulltype_expr(tname, decl_tvars, def), nothing)
    inside === nothing && return typeexpr
    inside[1].args[inside[2]] = typeexpr
    return outside
end

"""
    make_curly(expr)

given an apply-type expression (`T` or `T{...}`), return `Expr(:curly, T, ...)`
"""
make_curly(@nospecialize curly) = error("expected an apply-type expression")
function make_curly(curly::Expr)
    if curly.head !== :curly || !isa(curly.args[1], Symbol)
        make_curly(nothing)
    end
    return curly
end
function make_curly(curly::Symbol)
    return Expr(:curly, curly)
end

"""
    getenv!(expr, tvars, defs)

replace anything that isn't computable by apply_type
with a dummy type-variable
"""
getenv!(@nospecialize(e), tvars, def) = e
function getenv!(e::Expr, tvars, def)
    if e.head === :curly || e.head === :where || (e.head === :. && e.args[2] isa Symbol)
        e1 = getenv!(e.args[1], tvars, def)
        if e1 isa Symbol && e1 !== e.args[1]
            @assert tvars[end] === e1
            def[end] = e
            return e1
        end
        e.args[1] = e1
        if e.head === :where
            e2 = e.args[2]
            if e2 isa Expr
                if e2.head === :<: || e2.head === :>:
                    bnd = e2.args[2]
                    e2.args[2] = getenv!(bnd, tvars, def)
                elseif e2.head === :comparison && length(e2.args) === 5 && e2.args[2] === :<: && e2.args[4] === :<:
                    lb = e2.args[1]
                    e2.args[1] = getenv!(lb, tvars, def)
                    ub = e2.args[5]
                    e2.args[5] = getenv!(ub, tvars, def)
                end
            end
            return e
        end
        for i = 2:length(e.args)
            e.args[i] = getenv!(e.args[i], tvars, def)
        end
        return e
    else
        v = gensym()
        push!(tvars, v)
        push!(def, e)
        return v
    end
end

"""
    make_Type_expr(tname, decl_tvars)

make the `::Type{T}` expression that is equivalent to the original type declaration
"""
make_Type_expr(tname, decl_tvars) = Expr(:(::), Expr(:curly, Expr(:top, :Type), Expr(:curly, tname, decl_tvars...)))

"""
    make_new_expr(tname, decl_tvars, def)

compute the leaf `T{...}` expression that describes the new type declaration
"""
make_new_expr(tname, decl_tvars, def) = Expr(:curly, tname, decl_tvars..., def...)

"""
    make_fulltype_expr(tname, decl_tvars, def)

compute the leaf `T{def}` expression that is equivalent for the new type declaration
"""
function make_fulltype_expr(tname, decl_tvars, def)
    return Expr(:function, Expr(:where, Expr(:call, Core.GlobalRef(ComputedFieldTypes, :fulltype), make_Type_expr(tname, decl_tvars)),
                                       decl_tvars...),
                           Expr(:block, Expr(:return, make_new_expr(tname, decl_tvars, def))))
end

"""
    rewrite_new!(expr, tname::Symbol, decl_tvars, def)

rewrite the constructors to capture only the intended values
"""
rewrite_new!(@nospecialize(e), tname::Symbol, decl_tvars, def) = nothing
function rewrite_new!(e::Expr, tname::Symbol, decl_tvars, def)
    if e.head !== :line
        for i = 1:length(e.args)
            rewrite_new!(e.args[i], tname, decl_tvars, def)
        end

        # rewrite any calls to `new()` or `new{...}()` to append our dummy type variables
        if e.head === :call && e.args[1] === :new
            curly = Expr(:curly, e.args[1])
            e.args[1] = curly
            push!(curly.args, decl_tvars...)
            push!(curly.args, def...)
        elseif e.head === :call && isa(e.args[1], Expr) && e.args[1].head === :curly && e.args[1].args[1] === :new
            curly = e.args[1]
            length(curly.args) == length(decl_tvars) + 1 || error("too few type parameters specified in \"new{...}\"")
            push!(curly.args, def...)
        end

        # rewrite constructor declarations to explicitly only involve the declared type-variables
        # this involves rewriting `A` as `(::Type{A{T...}}) where {T...}`
        if e.head === :function || (e.head === :(=) && isa(e.args[1], Expr) && e.args[1].head === :call)
            pfname = e.args[1].args
            if isa(pfname[1], Expr) && pfname[1].head === :curly
                pfname = pfname[1].args
            end
            if pfname[1] === tname
                pfname[1] = make_Type_expr(tname, decl_tvars)
                param = e.args[1].args[1]
                if !(isa(param, Expr) && param.head === :curly)
                    param = Expr(:where, e.args[1])
                    e.args[1] = param
                elseif isa(param, Expr) && param.head === :curly
                    vars = param.args[2:end]
                    param = Expr(:where, Expr(:call, e.args[1].args[1].args[1], e.args[1].args[2]))
                    e.args[1] = param
                    append!(param.args, vars)
                end
                append!(param.args, decl_tvars)
            end
        end
    end
    nothing
end

end

max_stars_repo_name: vtjnash/ComputedFieldTypes

max_issues_repo_name: vtjnash/ComputedFieldTypes

max_forks_repo_name: vtjnash/ComputedFieldTypes


text:
# This function includes the whole simulation over the incident data set
function part2_simulation!(districts::DataFrame,
                            incidents::DataFrame,
                            sim_data::DataFrame,
                            ressource_flow::Array{Int64,3},
                            drivingtime::Array{Float64,2},
                            traffic::Array{Float64,2},
                            nearby_radius::Float64,
                            drop_incident::Int64,
                            exchange_reserve::Vector{Int64})
# locations: state the current district ceters
    locations  = Vector{Int64}(vec(sort!(unique(districts[:,:location]))))

# location_dictionary: dictionary to match the locations to columns in the simulation
    location_district = Dict(locations[i] => i for i = 1:length(locations))

# District BAs grouped by department location
    districts_grouped = groupby(districts, [:location])

# card_priorities: number of priorities in the incident data set
# card_districts:  number of districts in the district district layout
# card_incidents:  number of incidents in our simulation
# list of districts:
    card_priorities  = maximum(incidents[:,:priority])
    card_districts   = length(locations)
    card_incidents   = nrow(incidents)

#  incident_queue: array that saves all incidents not fulfilled happening
#  exchange_queue: array that saves the incidents for exchanges
#  queue_used:     states the number of cases in a queue
#  queue_change:   states whether a queue has changed to save unnecessary sorting
#  candidates:     lists all possible candidates and their fit for an exchange
#  cin:            counts the current incident row in our DataFrames
    incident_queue   = Array{Union{Missing,Int},3}(missing,max_queue,card_districts,card_priorities)
    exchange_queue   = Array{Union{Missing,Int64},1}(missing,max_queue*card_districts)
    queue_used       = Array{Int64,2}(undef,card_districts,card_priorities) .= 1
    queue_change     = Array{Bool,2}(undef,card_districts,card_priorities) .= false
    candidates       = Vector{Union{Missing,Float64}}(missing, card_districts)
    patrol_location  = Matrix{Int64}(undef,max_queue,card_districts) .= 0
    patrol_area_time = Matrix{Int64}(undef, size(patrol_location,1), card_districts) .= 0
    patrol_drive     = Vector{Float64}(undef, size(patrol_location,1)) .= 0
    cin              = 1

# sim_start:  epoch (in minutes) of the first incident
# sim_length: epoch (in minutes) ends 5 minutes after the incident_minute
#             of the last incidents in our incidents DataFrame
    sim_start   = minimum(sim_data[:,:incident_minute])
    sim_length  = maximum(sim_data[:,:incident_minute]) + 5

# adjust the start of the incidents to write the results and all steps
# directly to the corresponding row of the ressource_flow matrix
    sim_data[:,:incident_minute] .-= sim_start - 1

#  Starting simulation
    for mnt = 1:(sim_length - sim_start)
        # fill the queues with all new incidents of the corresponding minute
        cin = fill_queues!(sim_data::DataFrame,
                     incidents::DataFrame,
                     location_district::Dict,
                     incident_queue::Array{Union{Missing,Int},3},
                     queue_used::Array{Int64,2},
                     queue_change::Array{Bool,2},
                     cin::Int64,
                     mnt::Int64,
                     card_incidents::Int64,
                     card_priorities::Int64,
                     card_districts::Int64,
                     max_queue::Int64)
        # determine the location of all cars currently on patrol
        determine_patrol_location!(patrol_location,patrol_area_time,drivingtime,ressource_flow,locations,districts_grouped,mnt)

        # start the allocation of ressources to incidents in the own district
        for p = 1:card_priorities
            dispatch = "own_department"
            for k = 1:2
                for i = 1:card_districts
                    for j = 1:max_queue
                        if ismissing(incident_queue[j,i,p]) == false
                            current_incident = incident_queue[j,i,p]
                            # if district has capacity at district center
                            # or if cars are working at the backlog at the district center
                            # and the average car has a backlog below the threshold "backlog_max"
                            # and the incident has at least one missing car
                            if ressource_flow[mnt,i,1] > 0 || (ressource_flow[mnt,i,5] > 0 &&
                               ressource_flow[mnt,i,7] < backlog_max * sum(ressource_flow[mnt,i,1:6])) &&
                               sim_data[current_incident,:cars_missing] > 0
                               fastest_time = 0
                               incident_dispatch!(sim_data::DataFrame,
                                                   incidents::DataFrame,
                                                   ressource_flow::Array{Int64,3},
                                                   drivingtime::Array{Float64,2},
                                                   traffic::Array{Float64,2},
                                                   locations::Vector{Int64},
                                                   current_incident::Int64,
                                                   mnt::Int64,
                                                   i::Int64,
                                                   k::Int64,
                                                   dispatch::String,
                                                   fastest_time::Int64)
                            end
                        else
                            break
                        end
                    end
                end
            end
            # check whether cars on patrol within the own district can serve as backup
            #######
            dispatch = "own_patrol"
            k = 1
            for i = 1:card_districts
                for j = 1:max_queue
                    if ismissing(incident_queue[j,i,p]) == false && ressource_flow[mnt,i,6] > 0
                        current_incident = incident_queue[j,i,p]
                        # if the district has cars currently patroling the own district
                        # and there hasn't been a car dispatched to the incident and the
                        # priority is high enough to warrant a dispatch
                        if ressource_flow[mnt,i,6] > 0 &&
                            sim_data[current_incident,:cars_dispatched] == 0 &&
                            incidents[current_incident,:priority] <= patrol_prio
                            fastest_time = determine_patrol_driving_time(i::Int64,
                                                                            incidents::DataFrame,
                                                                            traffic::Array{Float64,2},
                                                                            patrol_location::Matrix{Int64},
                                                                            patrol_drive::Vector{Float64},
                                                                            drivingtime::Array{Float64,2},
                                                                            current_incident::Int64,
                                                                            max_drive::Float64,
                                                                            mnt::Int64)
                            if fastest_time < patrol_time
                                incident_dispatch!(sim_data::DataFrame,
                                                    incidents::DataFrame,
                                                    ressource_flow::Array{Int64,3},
                                                    drivingtime::Array{Float64,2},
                                                    traffic::Array{Float64,2},
                                                    locations::Vector{Int64},
                                                    current_incident::Int64,
                                                    mnt::Int64,
                                                    i::Int64,
                                                    k::Int64,
                                                    dispatch::String,
                                                    fastest_time::Int64)
                            end
                        end
                    else
                        break
                    end
                end
            end
            # start the exchange of cars to foreign districts to fulfill all incidents
            # faster if an incident happens is within a predefined perimeter. The
            # exchange queue is fulfilled stepwise starting with the hightes priority
            dispatch = "exchange_department"
            if p <= exchange_prio
                # fill the exchange queue with all unfullfilled incidents
                fill_exchange_queue!(sim_data::DataFrame,
                                    incident_queue::Array{Union{Missing,Int64},3},
                                    exchange_queue::Array{Union{Missing,Int64},1},
                                    max_queue::Int64,
                                    card_districts::Int64,
                                    p::Int64)
                # fullfill all incidents possible within the exchange queue
                fulfill_exchange_queue!(incidents::DataFrame,
                                        sim_data::DataFrame,
                                        ressource_flow::Array{Int64,3},
                                        drivingtime::Array{Float64,2},
                                        exchange_queue::Array{Union{Missing,Int64},1},
                                        candidates::Vector{Union{Missing,Float64}},
                                        locations::Vector{Int64},
                                        exchange_reserve::Vector{Int64},
                                        card_districts::Int64,
                                        mnt::Int64,
                                        dispatch::String,
                                        nearby_radius::Float64,
                                        p::Int64)
            end
        end
        # prepare the queues and the ressource_flow for the nest minute
        prepare_next_minute!(sim_data::DataFrame,
                             incidents::DataFrame,
                             ressource_flow::Array{Int64,3},
                             incident_queue::Array{Union{Missing,Int64},3},
                             queue_used::Array{Int64,2},
                             queue_change::Array{Bool,2},
                             mnt::Int64,
                             drop_incident::Int64)
    end
    return sim_data, ressource_flow
end


text:
@testset "OU" begin

using DiffEqNoiseProcess, DiffEqBase, DiffEqMonteCarlo, Test, Statistics
Θ = 1.0
μ = 1.2
σ = 0.3

W = OrnsteinUhlenbeckProcess(Θ,μ,σ,0.0,2.0,1.0)
prob = NoiseProblem(W,(0.0,1.0))
sol = solve(prob;dt=0.1)

t = 1.0
u0 = 2.0
expected_mean = μ + (u0 - μ)*exp(-Θ*t)
expected_variance = (1-exp(-2Θ*t))*σ^2/(2Θ)
monte_prob = MonteCarloProblem(prob;output_func = (sol,i)-> (sol[end],false))
sol = solve(monte_prob;dt=0.1,num_monte=10000)
@test abs(mean(sol) - expected_mean) < 0.04
@test abs(var(sol) - expected_variance) < 0.04

W = OrnsteinUhlenbeckProcess!(Θ,μ,σ,0.0,ones(2),ones(2))
prob = NoiseProblem(W,(0.0,1.0))
sol = solve(prob;dt=0.1)

end