{
  "by": "incident.flights@web-summit.dinis",
  "updated": "2026-11-12T07:00:30Z",
  "label": "fact",
  "source": "this folder",
  "read_utc": "2026-11-12T07:00:30Z",
  "method": "a walk of the folder: each tracked file's sha256, and the map files made from them",
  "snapshots": [
    {"t":"2026-11-11T22:23:41Z","area":"lisbon","aircraft":9,"file":"map/snapshots/2026-11-11/2223-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:23:42Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2223-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:25:17Z","area":"lisbon","aircraft":9,"file":"map/snapshots/2026-11-11/2225-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:25:18Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2225-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:30:15Z","area":"lisbon","aircraft":10,"file":"map/snapshots/2026-11-11/2230-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:30:16Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2230-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:40:16Z","area":"lisbon","aircraft":6,"file":"map/snapshots/2026-11-11/2240-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:40:17Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2240-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:50:15Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2250-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T22:50:15Z","area":"lisbon","aircraft":3,"file":"map/snapshots/2026-11-11/2250-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:00:16Z","area":"lisbon","aircraft":4,"file":"map/snapshots/2026-11-11/2300-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:00:17Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2300-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:04:48Z","area":"lisbon","aircraft":4,"file":"map/snapshots/2026-11-11/2304-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:04:49Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2304-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:10:15Z","area":"lisbon","aircraft":6,"file":"map/snapshots/2026-11-11/2310-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:10:16Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2310-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:20:16Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2320-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:20:16Z","area":"lisbon","aircraft":6,"file":"map/snapshots/2026-11-11/2320-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:30:16Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2330-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:30:16Z","area":"lisbon","aircraft":10,"file":"map/snapshots/2026-11-11/2330-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:40:15Z","area":"lisbon","aircraft":4,"file":"map/snapshots/2026-11-11/2340-lisbon.json","dist_nm":40,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:40:16Z","area":"funchal","aircraft":0,"file":"map/snapshots/2026-11-11/2340-funchal.json","dist_nm":30,"cadence_min":10,"measured":true},
    {"t":"2026-11-11T23:42:09Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-11/2342-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-11T23:42:09Z","area":"lisbon","aircraft":21,"others":11,"file":"map/snapshots/2026-11-11/2342-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-11T23:45:15Z","area":"lisbon","aircraft":22,"others":12,"file":"map/snapshots/2026-11-11/2345-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-11T23:50:16Z","area":"lisbon","aircraft":18,"others":13,"file":"map/snapshots/2026-11-11/2350-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-11T23:55:15Z","area":"lisbon","aircraft":20,"others":10,"file":"map/snapshots/2026-11-11/2355-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:00:16Z","area":"funchal","aircraft":3,"others":0,"file":"map/snapshots/2026-11-12/0000-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T00:00:16Z","area":"lisbon","aircraft":18,"others":12,"file":"map/snapshots/2026-11-12/0000-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:05:16Z","area":"lisbon","aircraft":17,"others":11,"file":"map/snapshots/2026-11-12/0005-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:10:16Z","area":"lisbon","aircraft":17,"others":10,"file":"map/snapshots/2026-11-12/0010-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:15:15Z","area":"lisbon","aircraft":18,"others":8,"file":"map/snapshots/2026-11-12/0015-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:20:15Z","area":"lisbon","aircraft":17,"others":9,"file":"map/snapshots/2026-11-12/0020-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:20:16Z","area":"funchal","aircraft":3,"others":0,"file":"map/snapshots/2026-11-12/0020-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T00:25:16Z","area":"lisbon","aircraft":15,"others":11,"file":"map/snapshots/2026-11-12/0025-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:30:15Z","area":"lisbon","aircraft":16,"others":9,"file":"map/snapshots/2026-11-12/0030-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:35:15Z","area":"lisbon","aircraft":14,"others":10,"file":"map/snapshots/2026-11-12/0035-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:40:15Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0040-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T00:40:15Z","area":"lisbon","aircraft":14,"others":8,"file":"map/snapshots/2026-11-12/0040-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:45:15Z","area":"lisbon","aircraft":13,"others":7,"file":"map/snapshots/2026-11-12/0045-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:50:15Z","area":"lisbon","aircraft":11,"others":8,"file":"map/snapshots/2026-11-12/0050-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T00:55:16Z","area":"lisbon","aircraft":13,"others":7,"file":"map/snapshots/2026-11-12/0055-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:00:16Z","area":"funchal","aircraft":4,"others":0,"file":"map/snapshots/2026-11-12/0100-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T01:00:16Z","area":"lisbon","aircraft":11,"others":9,"file":"map/snapshots/2026-11-12/0100-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:05:16Z","area":"lisbon","aircraft":9,"others":10,"file":"map/snapshots/2026-11-12/0105-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:10:15Z","area":"lisbon","aircraft":11,"others":9,"file":"map/snapshots/2026-11-12/0110-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:15:15Z","area":"lisbon","aircraft":10,"others":9,"file":"map/snapshots/2026-11-12/0115-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:20:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0120-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T01:20:16Z","area":"lisbon","aircraft":9,"others":7,"file":"map/snapshots/2026-11-12/0120-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:25:16Z","area":"lisbon","aircraft":9,"others":7,"file":"map/snapshots/2026-11-12/0125-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:30:15Z","area":"lisbon","aircraft":10,"others":6,"file":"map/snapshots/2026-11-12/0130-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:35:15Z","area":"lisbon","aircraft":7,"others":7,"file":"map/snapshots/2026-11-12/0135-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:40:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0140-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T01:40:16Z","area":"lisbon","aircraft":9,"others":7,"file":"map/snapshots/2026-11-12/0140-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:45:16Z","area":"lisbon","aircraft":8,"others":8,"file":"map/snapshots/2026-11-12/0145-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:50:16Z","area":"lisbon","aircraft":9,"others":7,"file":"map/snapshots/2026-11-12/0150-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T01:55:15Z","area":"lisbon","aircraft":8,"others":8,"file":"map/snapshots/2026-11-12/0155-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:00:15Z","area":"lisbon","aircraft":11,"others":7,"file":"map/snapshots/2026-11-12/0200-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:00:16Z","area":"funchal","aircraft":2,"others":1,"file":"map/snapshots/2026-11-12/0200-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T02:05:15Z","area":"lisbon","aircraft":10,"others":7,"file":"map/snapshots/2026-11-12/0205-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:10:15Z","area":"lisbon","aircraft":11,"others":6,"file":"map/snapshots/2026-11-12/0210-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:15:16Z","area":"lisbon","aircraft":12,"others":7,"file":"map/snapshots/2026-11-12/0215-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:20:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0220-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T02:20:16Z","area":"lisbon","aircraft":12,"others":6,"file":"map/snapshots/2026-11-12/0220-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:25:16Z","area":"lisbon","aircraft":13,"others":5,"file":"map/snapshots/2026-11-12/0225-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:30:16Z","area":"lisbon","aircraft":12,"others":5,"file":"map/snapshots/2026-11-12/0230-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:35:15Z","area":"lisbon","aircraft":11,"others":5,"file":"map/snapshots/2026-11-12/0235-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:40:16Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0240-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T02:40:16Z","area":"lisbon","aircraft":12,"others":6,"file":"map/snapshots/2026-11-12/0240-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:45:15Z","area":"lisbon","aircraft":12,"others":6,"file":"map/snapshots/2026-11-12/0245-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:50:16Z","area":"lisbon","aircraft":14,"others":6,"file":"map/snapshots/2026-11-12/0250-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T02:55:15Z","area":"lisbon","aircraft":12,"others":5,"file":"map/snapshots/2026-11-12/0255-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:00:15Z","area":"lisbon","aircraft":13,"others":6,"file":"map/snapshots/2026-11-12/0300-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:00:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0300-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T03:05:15Z","area":"lisbon","aircraft":11,"others":5,"file":"map/snapshots/2026-11-12/0305-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:10:15Z","area":"lisbon","aircraft":11,"others":5,"file":"map/snapshots/2026-11-12/0310-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:15:16Z","area":"lisbon","aircraft":13,"others":6,"file":"map/snapshots/2026-11-12/0315-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:20:16Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0320-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T03:20:16Z","area":"lisbon","aircraft":12,"others":5,"file":"map/snapshots/2026-11-12/0320-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:25:16Z","area":"lisbon","aircraft":11,"others":6,"file":"map/snapshots/2026-11-12/0325-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:30:16Z","area":"lisbon","aircraft":13,"others":6,"file":"map/snapshots/2026-11-12/0330-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:35:15Z","area":"lisbon","aircraft":14,"others":6,"file":"map/snapshots/2026-11-12/0335-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:40:15Z","area":"funchal","aircraft":2,"others":0,"file":"map/snapshots/2026-11-12/0340-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T03:40:15Z","area":"lisbon","aircraft":11,"others":6,"file":"map/snapshots/2026-11-12/0340-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:45:16Z","area":"lisbon","aircraft":15,"others":6,"file":"map/snapshots/2026-11-12/0345-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:50:15Z","area":"lisbon","aircraft":16,"others":6,"file":"map/snapshots/2026-11-12/0350-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T03:55:15Z","area":"lisbon","aircraft":15,"others":6,"file":"map/snapshots/2026-11-12/0355-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:00:16Z","area":"lisbon","aircraft":14,"others":6,"file":"map/snapshots/2026-11-12/0400-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:00:17Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0400-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T04:05:15Z","area":"lisbon","aircraft":12,"others":6,"file":"map/snapshots/2026-11-12/0405-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:10:15Z","area":"lisbon","aircraft":11,"others":5,"file":"map/snapshots/2026-11-12/0410-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:15:16Z","area":"lisbon","aircraft":9,"others":5,"file":"map/snapshots/2026-11-12/0415-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:20:15Z","area":"lisbon","aircraft":10,"others":5,"file":"map/snapshots/2026-11-12/0420-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:20:16Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0420-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T04:25:15Z","area":"lisbon","aircraft":10,"others":6,"file":"map/snapshots/2026-11-12/0425-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:30:15Z","area":"lisbon","aircraft":7,"others":6,"file":"map/snapshots/2026-11-12/0430-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:35:16Z","area":"lisbon","aircraft":8,"others":7,"file":"map/snapshots/2026-11-12/0435-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:40:15Z","area":"lisbon","aircraft":7,"others":6,"file":"map/snapshots/2026-11-12/0440-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:40:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0440-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T04:45:16Z","area":"lisbon","aircraft":7,"others":6,"file":"map/snapshots/2026-11-12/0445-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:50:15Z","area":"lisbon","aircraft":7,"others":6,"file":"map/snapshots/2026-11-12/0450-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T04:55:16Z","area":"lisbon","aircraft":7,"others":7,"file":"map/snapshots/2026-11-12/0455-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:00:16Z","area":"funchal","aircraft":2,"others":0,"file":"map/snapshots/2026-11-12/0500-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T05:00:16Z","area":"lisbon","aircraft":9,"others":8,"file":"map/snapshots/2026-11-12/0500-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:05:16Z","area":"lisbon","aircraft":15,"others":8,"file":"map/snapshots/2026-11-12/0505-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:10:16Z","area":"lisbon","aircraft":12,"others":8,"file":"map/snapshots/2026-11-12/0510-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:15:15Z","area":"lisbon","aircraft":15,"others":6,"file":"map/snapshots/2026-11-12/0515-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:20:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0520-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T05:20:16Z","area":"lisbon","aircraft":16,"others":6,"file":"map/snapshots/2026-11-12/0520-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:25:15Z","area":"lisbon","aircraft":16,"others":5,"file":"map/snapshots/2026-11-12/0525-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:30:16Z","area":"lisbon","aircraft":21,"others":5,"file":"map/snapshots/2026-11-12/0530-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:35:16Z","area":"lisbon","aircraft":21,"others":5,"file":"map/snapshots/2026-11-12/0535-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:40:15Z","area":"lisbon","aircraft":29,"others":6,"file":"map/snapshots/2026-11-12/0540-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:40:16Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0540-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T05:45:16Z","area":"lisbon","aircraft":29,"others":5,"file":"map/snapshots/2026-11-12/0545-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:50:15Z","area":"lisbon","aircraft":31,"others":5,"file":"map/snapshots/2026-11-12/0550-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T05:55:15Z","area":"lisbon","aircraft":38,"others":6,"file":"map/snapshots/2026-11-12/0555-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:00:16Z","area":"lisbon","aircraft":37,"others":7,"file":"map/snapshots/2026-11-12/0600-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:00:17Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0600-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T06:05:16Z","area":"lisbon","aircraft":45,"others":10,"file":"map/snapshots/2026-11-12/0605-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:10:15Z","area":"lisbon","aircraft":55,"others":11,"file":"map/snapshots/2026-11-12/0610-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:15:15Z","area":"lisbon","aircraft":57,"others":11,"file":"map/snapshots/2026-11-12/0615-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:20:16Z","area":"funchal","aircraft":0,"others":0,"file":"map/snapshots/2026-11-12/0620-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T06:20:16Z","area":"lisbon","aircraft":65,"others":9,"file":"map/snapshots/2026-11-12/0620-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:25:15Z","area":"lisbon","aircraft":67,"others":11,"file":"map/snapshots/2026-11-12/0625-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:30:16Z","area":"lisbon","aircraft":66,"others":12,"file":"map/snapshots/2026-11-12/0630-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:35:16Z","area":"lisbon","aircraft":70,"others":10,"file":"map/snapshots/2026-11-12/0635-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:40:15Z","area":"lisbon","aircraft":70,"others":14,"file":"map/snapshots/2026-11-12/0640-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:40:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0640-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T06:45:16Z","area":"lisbon","aircraft":67,"others":11,"file":"map/snapshots/2026-11-12/0645-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:50:15Z","area":"lisbon","aircraft":69,"others":10,"file":"map/snapshots/2026-11-12/0650-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T06:55:15Z","area":"lisbon","aircraft":72,"others":10,"file":"map/snapshots/2026-11-12/0655-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true},
    {"t":"2026-11-12T07:00:16Z","area":"funchal","aircraft":1,"others":0,"file":"map/snapshots/2026-11-12/0700-funchal.json","dist_nm":150,"cadence_min":20,"measured":true},
    {"t":"2026-11-12T07:00:16Z","area":"lisbon","aircraft":76,"others":10,"file":"map/snapshots/2026-11-12/0700-lisbon.json","dist_nm":250,"cadence_min":5,"measured":true}
  ],
  "tracks": [
    {"hour":"2026-11-11T23:00:00Z","area":"funchal","cadence_min":20,"frames":1,"file":"tracks/funchal/2026-11-11/23.json","aircraft":1},
    {"hour":"2026-11-11T23:00:00Z","area":"lisbon","cadence_min":5,"frames":4,"file":"tracks/lisbon/2026-11-11/23.json","aircraft":27},
    {"hour":"2026-11-12T00:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/00.json","aircraft":5},
    {"hour":"2026-11-12T00:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/00.json","aircraft":33},
    {"hour":"2026-11-12T01:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/01.json","aircraft":6},
    {"hour":"2026-11-12T01:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/01.json","aircraft":22},
    {"hour":"2026-11-12T02:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/02.json","aircraft":3},
    {"hour":"2026-11-12T02:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/02.json","aircraft":27},
    {"hour":"2026-11-12T03:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/03.json","aircraft":3},
    {"hour":"2026-11-12T03:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/03.json","aircraft":31},
    {"hour":"2026-11-12T04:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/04.json","aircraft":1},
    {"hour":"2026-11-12T04:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/04.json","aircraft":23},
    {"hour":"2026-11-12T05:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/05.json","aircraft":3},
    {"hour":"2026-11-12T05:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/05.json","aircraft":61},
    {"hour":"2026-11-12T06:00:00Z","area":"funchal","cadence_min":20,"frames":3,"file":"tracks/funchal/2026-11-12/06.json","aircraft":2},
    {"hour":"2026-11-12T06:00:00Z","area":"lisbon","cadence_min":5,"frames":12,"file":"tracks/lisbon/2026-11-12/06.json","aircraft":143},
    {"hour":"2026-11-12T07:00:00Z","area":"funchal","cadence_min":20,"frames":1,"file":"tracks/funchal/2026-11-12/07.json","aircraft":1},
    {"hour":"2026-11-12T07:00:00Z","area":"lisbon","cadence_min":5,"frames":1,"file":"tracks/lisbon/2026-11-12/07.json","aircraft":76}
  ],
  "wind_hours": [
    {"t":"2026-11-10T12:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/12.json"},
    {"t":"2026-11-10T12:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/12.json"},
    {"t":"2026-11-10T12:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/12.json"},
    {"t":"2026-11-10T12:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/12.json"},
    {"t":"2026-11-10T13:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/13.json"},
    {"t":"2026-11-10T13:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/13.json"},
    {"t":"2026-11-10T13:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/13.json"},
    {"t":"2026-11-10T13:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/13.json"},
    {"t":"2026-11-10T14:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/14.json"},
    {"t":"2026-11-10T14:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/14.json"},
    {"t":"2026-11-10T14:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/14.json"},
    {"t":"2026-11-10T14:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/14.json"},
    {"t":"2026-11-10T15:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/15.json"},
    {"t":"2026-11-10T15:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/15.json"},
    {"t":"2026-11-10T15:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/15.json"},
    {"t":"2026-11-10T15:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/15.json"},
    {"t":"2026-11-10T16:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/16.json"},
    {"t":"2026-11-10T16:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/16.json"},
    {"t":"2026-11-10T16:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/16.json"},
    {"t":"2026-11-10T16:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/16.json"},
    {"t":"2026-11-10T17:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/17.json"},
    {"t":"2026-11-10T17:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/17.json"},
    {"t":"2026-11-10T17:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/17.json"},
    {"t":"2026-11-10T17:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/17.json"},
    {"t":"2026-11-10T18:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/18.json"},
    {"t":"2026-11-10T18:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/18.json"},
    {"t":"2026-11-10T18:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/18.json"},
    {"t":"2026-11-10T18:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/18.json"},
    {"t":"2026-11-10T19:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/19.json"},
    {"t":"2026-11-10T19:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/19.json"},
    {"t":"2026-11-10T19:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/19.json"},
    {"t":"2026-11-10T19:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/19.json"},
    {"t":"2026-11-10T20:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/20.json"},
    {"t":"2026-11-10T20:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/20.json"},
    {"t":"2026-11-10T20:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/20.json"},
    {"t":"2026-11-10T20:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/20.json"},
    {"t":"2026-11-10T21:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/21.json"},
    {"t":"2026-11-10T21:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/21.json"},
    {"t":"2026-11-10T21:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/21.json"},
    {"t":"2026-11-10T21:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/21.json"},
    {"t":"2026-11-10T22:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/22.json"},
    {"t":"2026-11-10T22:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/22.json"},
    {"t":"2026-11-10T22:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/22.json"},
    {"t":"2026-11-10T22:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/22.json"},
    {"t":"2026-11-10T23:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-10/23.json"},
    {"t":"2026-11-10T23:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-10/23.json"},
    {"t":"2026-11-10T23:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-10/23.json"},
    {"t":"2026-11-10T23:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-10/23.json"},
    {"t":"2026-11-11T00:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/00.json"},
    {"t":"2026-11-11T00:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/00.json"},
    {"t":"2026-11-11T00:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/00.json"},
    {"t":"2026-11-11T00:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/00.json"},
    {"t":"2026-11-11T01:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/01.json"},
    {"t":"2026-11-11T01:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/01.json"},
    {"t":"2026-11-11T01:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/01.json"},
    {"t":"2026-11-11T01:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/01.json"},
    {"t":"2026-11-11T02:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/02.json"},
    {"t":"2026-11-11T02:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/02.json"},
    {"t":"2026-11-11T02:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/02.json"},
    {"t":"2026-11-11T02:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/02.json"},
    {"t":"2026-11-11T03:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/03.json"},
    {"t":"2026-11-11T03:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/03.json"},
    {"t":"2026-11-11T03:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/03.json"},
    {"t":"2026-11-11T03:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/03.json"},
    {"t":"2026-11-11T04:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/04.json"},
    {"t":"2026-11-11T04:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/04.json"},
    {"t":"2026-11-11T04:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/04.json"},
    {"t":"2026-11-11T04:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/04.json"},
    {"t":"2026-11-11T05:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/05.json"},
    {"t":"2026-11-11T05:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/05.json"},
    {"t":"2026-11-11T05:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/05.json"},
    {"t":"2026-11-11T05:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/05.json"},
    {"t":"2026-11-11T06:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/06.json"},
    {"t":"2026-11-11T06:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/06.json"},
    {"t":"2026-11-11T06:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/06.json"},
    {"t":"2026-11-11T06:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/06.json"},
    {"t":"2026-11-11T07:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/07.json"},
    {"t":"2026-11-11T07:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/07.json"},
    {"t":"2026-11-11T07:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/07.json"},
    {"t":"2026-11-11T07:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/07.json"},
    {"t":"2026-11-11T08:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/08.json"},
    {"t":"2026-11-11T08:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/08.json"},
    {"t":"2026-11-11T08:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/08.json"},
    {"t":"2026-11-11T08:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/08.json"},
    {"t":"2026-11-11T09:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/09.json"},
    {"t":"2026-11-11T09:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/09.json"},
    {"t":"2026-11-11T09:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/09.json"},
    {"t":"2026-11-11T09:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/09.json"},
    {"t":"2026-11-11T10:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/10.json"},
    {"t":"2026-11-11T10:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/10.json"},
    {"t":"2026-11-11T10:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/10.json"},
    {"t":"2026-11-11T10:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/10.json"},
    {"t":"2026-11-11T11:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/11.json"},
    {"t":"2026-11-11T11:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/11.json"},
    {"t":"2026-11-11T11:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/11.json"},
    {"t":"2026-11-11T11:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/11.json"},
    {"t":"2026-11-11T12:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/12.json"},
    {"t":"2026-11-11T12:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/12.json"},
    {"t":"2026-11-11T12:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/12.json"},
    {"t":"2026-11-11T12:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/12.json"},
    {"t":"2026-11-11T13:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/13.json"},
    {"t":"2026-11-11T13:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/13.json"},
    {"t":"2026-11-11T13:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/13.json"},
    {"t":"2026-11-11T13:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/13.json"},
    {"t":"2026-11-11T14:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/14.json"},
    {"t":"2026-11-11T14:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/14.json"},
    {"t":"2026-11-11T14:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/14.json"},
    {"t":"2026-11-11T14:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/14.json"},
    {"t":"2026-11-11T15:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/15.json"},
    {"t":"2026-11-11T15:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/15.json"},
    {"t":"2026-11-11T15:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/15.json"},
    {"t":"2026-11-11T15:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/15.json"},
    {"t":"2026-11-11T16:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/16.json"},
    {"t":"2026-11-11T16:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/16.json"},
    {"t":"2026-11-11T16:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/16.json"},
    {"t":"2026-11-11T16:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/16.json"},
    {"t":"2026-11-11T17:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/17.json"},
    {"t":"2026-11-11T17:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/17.json"},
    {"t":"2026-11-11T17:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/17.json"},
    {"t":"2026-11-11T17:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/17.json"},
    {"t":"2026-11-11T18:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/18.json"},
    {"t":"2026-11-11T18:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/18.json"},
    {"t":"2026-11-11T18:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/18.json"},
    {"t":"2026-11-11T18:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/18.json"},
    {"t":"2026-11-11T19:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/19.json"},
    {"t":"2026-11-11T19:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/19.json"},
    {"t":"2026-11-11T19:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/19.json"},
    {"t":"2026-11-11T19:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/19.json"},
    {"t":"2026-11-11T20:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/20.json"},
    {"t":"2026-11-11T20:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/20.json"},
    {"t":"2026-11-11T20:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/20.json"},
    {"t":"2026-11-11T20:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/20.json"},
    {"t":"2026-11-11T21:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/21.json"},
    {"t":"2026-11-11T21:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/21.json"},
    {"t":"2026-11-11T21:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/21.json"},
    {"t":"2026-11-11T21:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/21.json"},
    {"t":"2026-11-11T22:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/22.json"},
    {"t":"2026-11-11T22:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/22.json"},
    {"t":"2026-11-11T22:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/22.json"},
    {"t":"2026-11-11T22:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/22.json"},
    {"t":"2026-11-11T23:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-11/23.json"},
    {"t":"2026-11-11T23:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-11/23.json"},
    {"t":"2026-11-11T23:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-11/23.json"},
    {"t":"2026-11-11T23:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-11/23.json"},
    {"t":"2026-11-12T00:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/00.json"},
    {"t":"2026-11-12T00:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/00.json"},
    {"t":"2026-11-12T00:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/00.json"},
    {"t":"2026-11-12T00:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/00.json"},
    {"t":"2026-11-12T01:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/01.json"},
    {"t":"2026-11-12T01:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/01.json"},
    {"t":"2026-11-12T01:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/01.json"},
    {"t":"2026-11-12T01:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/01.json"},
    {"t":"2026-11-12T02:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/02.json"},
    {"t":"2026-11-12T02:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/02.json"},
    {"t":"2026-11-12T02:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/02.json"},
    {"t":"2026-11-12T02:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/02.json"},
    {"t":"2026-11-12T03:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/03.json"},
    {"t":"2026-11-12T03:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/03.json"},
    {"t":"2026-11-12T03:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/03.json"},
    {"t":"2026-11-12T03:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/03.json"},
    {"t":"2026-11-12T04:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/04.json"},
    {"t":"2026-11-12T04:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/04.json"},
    {"t":"2026-11-12T04:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/04.json"},
    {"t":"2026-11-12T04:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/04.json"},
    {"t":"2026-11-12T05:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/05.json"},
    {"t":"2026-11-12T05:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/05.json"},
    {"t":"2026-11-12T05:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/05.json"},
    {"t":"2026-11-12T05:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/05.json"},
    {"t":"2026-11-12T06:00:00Z","area":"lisbon","forecast":false,"file":"map/wind/lisbon/2026-11-12/06.json"},
    {"t":"2026-11-12T06:00:00Z","area":"lisbon-close","forecast":false,"file":"map/wind/lisbon-close/2026-11-12/06.json"},
    {"t":"2026-11-12T06:00:00Z","area":"madeira","forecast":false,"file":"map/wind/madeira/2026-11-12/06.json"},
    {"t":"2026-11-12T06:00:00Z","area":"madeira-close","forecast":false,"file":"map/wind/madeira-close/2026-11-12/06.json"},
    {"t":"2026-11-12T07:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/07.json"},
    {"t":"2026-11-12T07:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/07.json"},
    {"t":"2026-11-12T07:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/07.json"},
    {"t":"2026-11-12T07:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/07.json"},
    {"t":"2026-11-12T08:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/08.json"},
    {"t":"2026-11-12T08:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/08.json"},
    {"t":"2026-11-12T08:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/08.json"},
    {"t":"2026-11-12T08:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/08.json"},
    {"t":"2026-11-12T09:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/09.json"},
    {"t":"2026-11-12T09:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/09.json"},
    {"t":"2026-11-12T09:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/09.json"},
    {"t":"2026-11-12T09:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/09.json"},
    {"t":"2026-11-12T10:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/10.json"},
    {"t":"2026-11-12T10:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/10.json"},
    {"t":"2026-11-12T10:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/10.json"},
    {"t":"2026-11-12T10:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/10.json"},
    {"t":"2026-11-12T11:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/11.json"},
    {"t":"2026-11-12T11:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/11.json"},
    {"t":"2026-11-12T11:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/11.json"},
    {"t":"2026-11-12T11:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/11.json"},
    {"t":"2026-11-12T12:00:00Z","area":"lisbon","forecast":true,"file":"map/wind/lisbon/2026-11-12/12.json"},
    {"t":"2026-11-12T12:00:00Z","area":"lisbon-close","forecast":true,"file":"map/wind/lisbon-close/2026-11-12/12.json"},
    {"t":"2026-11-12T12:00:00Z","area":"madeira","forecast":true,"file":"map/wind/madeira/2026-11-12/12.json"},
    {"t":"2026-11-12T12:00:00Z","area":"madeira-close","forecast":true,"file":"map/wind/madeira-close/2026-11-12/12.json"}
  ],
  "how": "../../../../flights/how.json",
  "runways": "runways.json",
  "crosswind": "crosswind.json",
  "movements": "movements.json",
  "map_files_note": "snapshots[].file, tracks[].file, wind_hours[].file, runways.json and movements.json are written by the build from the tracked files listed in files[] (tools/flights-map.mjs), so they are served beside this index but are not in git and not in api/v1.",
  "about": "Every flights file: what it covers, its size and sha256. Replay: crosswind.json (the airports' wind on each runway, hour by hour, with departures), wind/<area>-<date>.json (the wind field), snapshots/<date>/<HH>.json (airline aircraft every 10 minutes within 40 nm of Lisbon and 30 nm of Madeira, from adsb.lol (ODbL), from 11 November 22:23 UTC), frames/<area>/<date>/<HH>.json (from 11 November about 23:45 UTC: Lisbon 250 nm every 5 minutes, Madeira 150 nm every 20, airline flights plus every other aircraft as an anonymous position; compact rows under a header of fields). Built beside it: map/snapshots/ (one per snapshot or frame) and tracks/<area>/<date>/<HH>.json (each airline flight's measured points in the hour, with first and last seen, altitude, speed, heading and phase now). Read README.md beside it for the shapes.",
  "not_a_warning_service": "Not a warning service. No forecast or advice of ours. Your airline decides whether your flight runs: its site or app has the latest. For warnings follow IPMA and ANEPC.",
  "attribution": [
    "Aircraft positions: adsb.lol (https://adsb.lol), community ADS-B data, licensed under the Open Database License (ODbL) v1.0 (https://opendatacommons.org/licenses/odbl/1-0/). Our snapshots are a derived database offered under the same licence.",
    "The OpenSky Network, https://opensky-network.org (M. Schäfer, M. Strohmeier, V. Lenders, I. Martinovic, M. Wilhelm, \"Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research\", IPSN 2014). Used for research and non-commercial purposes, as its API documentation asks; its full terms page is still for a person to read (transport/sources.md).",
    "Weather data by Open-Meteo.com, https://open-meteo.com, licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Its forecast API with past_days: the model's hourly analysis and short-range forecast, not observations."
  ],
  "readme": "incidents/2026-11-10-storm-charles/data/flights/README.md",
  "files": [
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/crosswind.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/crosswind.json",
      "kind": "crosswind",
      "bytes": 199264,
      "sha256": "bc01d62fa3acc321237913d317945d63f4fbf272fb597d888cb7315ceaa7446b",
      "updated": "2026-11-12T07:00:28Z",
      "covers": {
        "from": "2026-11-10T18:00:00Z",
        "to": "2026-11-12T06:30:00Z",
        "airports": ["LPPT","LPMA"]
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-11/23.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-11/23.json",
      "kind": "aircraft-frames",
      "bytes": 3280,
      "sha256": "e6a92694300b3b8599a17d012ff26e78fcec14a115f12cc9385b8d08cb875949",
      "updated": "2026-11-11T23:42:10Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-11T23:42:09Z",
        "to": "2026-11-11T23:42:09Z",
        "frames": 1,
        "airline_positions": 1,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/00.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/00.json",
      "kind": "aircraft-frames",
      "bytes": 5083,
      "sha256": "1d310b535fc909a56fc74cfde8b090fcf513e812eaf8fb1c95fe18060cbe7c73",
      "updated": "2026-11-12T00:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T00:00:16Z",
        "to": "2026-11-12T00:40:15Z",
        "frames": 3,
        "airline_positions": 6,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/01.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/01.json",
      "kind": "aircraft-frames",
      "bytes": 5104,
      "sha256": "04607d35b766727bd1a35a136aaa56799ef0ba204491accf2701ca208dbdedd4",
      "updated": "2026-11-12T01:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T01:00:16Z",
        "to": "2026-11-12T01:40:16Z",
        "frames": 3,
        "airline_positions": 6,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/02.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/02.json",
      "kind": "aircraft-frames",
      "bytes": 4829,
      "sha256": "1dc0917bc6bf9b5ad4798f76ca14518a04b69a96fe4463c6938255ea11d6c935",
      "updated": "2026-11-12T02:40:17Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T02:00:16Z",
        "to": "2026-11-12T02:40:16Z",
        "frames": 3,
        "airline_positions": 3,
        "other_positions": 1
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/03.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/03.json",
      "kind": "aircraft-frames",
      "bytes": 4776,
      "sha256": "c9f911c57318c1984a81f0c03c466009aa9682754d79ee6320bd47a08c963d80",
      "updated": "2026-11-12T03:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T03:00:16Z",
        "to": "2026-11-12T03:40:15Z",
        "frames": 3,
        "airline_positions": 3,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/04.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/04.json",
      "kind": "aircraft-frames",
      "bytes": 4587,
      "sha256": "02d30501488fb01e818b4f1f0f4509f96ef19ccf2f76515822ebea7d5972c5e0",
      "updated": "2026-11-12T04:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T04:00:17Z",
        "to": "2026-11-12T04:40:16Z",
        "frames": 3,
        "airline_positions": 1,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/05.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/05.json",
      "kind": "aircraft-frames",
      "bytes": 4807,
      "sha256": "8e370565f888559458596e3697f7f659885812bb0b224a5364e0a6d6ee98e7d0",
      "updated": "2026-11-12T05:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T05:00:16Z",
        "to": "2026-11-12T05:40:16Z",
        "frames": 3,
        "airline_positions": 3,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/06.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/06.json",
      "kind": "aircraft-frames",
      "bytes": 4681,
      "sha256": "8c71f7811898cc00663ec67023ac7127e3f0cb0f84a66f65aa689238db79386d",
      "updated": "2026-11-12T06:40:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T06:00:17Z",
        "to": "2026-11-12T06:40:16Z",
        "frames": 3,
        "airline_positions": 2,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/funchal/2026-11-12/07.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/funchal/2026-11-12/07.json",
      "kind": "aircraft-frames",
      "bytes": 3412,
      "sha256": "e70d56a80c81329ed004925c603cb5732b6255706f050733ade3a943a0b18a2d",
      "updated": "2026-11-12T07:00:16Z",
      "covers": {
        "area": "funchal",
        "dist_nm": 150,
        "from": "2026-11-12T07:00:16Z",
        "to": "2026-11-12T07:00:16Z",
        "frames": 1,
        "airline_positions": 1,
        "other_positions": 0
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-11/23.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-11/23.json",
      "kind": "aircraft-frames",
      "bytes": 13823,
      "sha256": "bdb8673d11e91a7dcbe68d566d03ba125504a8b6945cad6f7a02bcb06e89661a",
      "updated": "2026-11-11T23:55:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-11T23:42:09Z",
        "to": "2026-11-11T23:55:15Z",
        "frames": 4,
        "airline_positions": 81,
        "other_positions": 46
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/00.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/00.json",
      "kind": "aircraft-frames",
      "bytes": 29422,
      "sha256": "460a3b966bd74c1dc1e2941e471fb87f86a9601f2ea9af134dcd1fd9552e2609",
      "updated": "2026-11-12T00:55:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T00:00:16Z",
        "to": "2026-11-12T00:55:16Z",
        "frames": 12,
        "airline_positions": 183,
        "other_positions": 110
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/01.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/01.json",
      "kind": "aircraft-frames",
      "bytes": 22952,
      "sha256": "fe417be8812817d9d366f8926f65dd6d46ae557294815b811f2efe30ecbf4035",
      "updated": "2026-11-12T01:55:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T01:00:16Z",
        "to": "2026-11-12T01:55:15Z",
        "frames": 12,
        "airline_positions": 110,
        "other_positions": 94
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/02.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/02.json",
      "kind": "aircraft-frames",
      "bytes": 24243,
      "sha256": "59ec2f4e222862efdf00765236932218b1f32a6fa00254ceac9d63a9c6f6c182",
      "updated": "2026-11-12T02:55:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T02:00:15Z",
        "to": "2026-11-12T02:55:15Z",
        "frames": 12,
        "airline_positions": 142,
        "other_positions": 71
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/03.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/03.json",
      "kind": "aircraft-frames",
      "bytes": 25232,
      "sha256": "dd861d611b6aece101ea6649a3f4e404284829a343375681f765ee0d441bb638",
      "updated": "2026-11-12T03:55:15Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T03:00:15Z",
        "to": "2026-11-12T03:55:15Z",
        "frames": 12,
        "airline_positions": 155,
        "other_positions": 69
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/04.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/04.json",
      "kind": "aircraft-frames",
      "bytes": 21820,
      "sha256": "6459adc7a905742badb5bda5d0e3d1769e83e957fed0ca6d11b47b4f5ef44077",
      "updated": "2026-11-12T04:55:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T04:00:16Z",
        "to": "2026-11-12T04:55:16Z",
        "frames": 12,
        "airline_positions": 109,
        "other_positions": 71
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/05.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/05.json",
      "kind": "aircraft-frames",
      "bytes": 33089,
      "sha256": "2d3510d4c0b85c43fe3fb93dcbb76517aad4a383375975b4766967f25e8a4d67",
      "updated": "2026-11-12T05:55:15Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T05:00:16Z",
        "to": "2026-11-12T05:55:15Z",
        "frames": 12,
        "airline_positions": 252,
        "other_positions": 73
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/06.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/06.json",
      "kind": "aircraft-frames",
      "bytes": 73273,
      "sha256": "2f3b3350538c51d7d338db389fa16145e89541518b42798f61a6b2cb95ed5ed9",
      "updated": "2026-11-12T06:55:15Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T06:00:16Z",
        "to": "2026-11-12T06:55:15Z",
        "frames": 12,
        "airline_positions": 740,
        "other_positions": 126
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/frames/lisbon/2026-11-12/07.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/frames/lisbon/2026-11-12/07.json",
      "kind": "aircraft-frames",
      "bytes": 10313,
      "sha256": "9cbc5b710d55db69376c85b00c05be2ac0871e8e87d208e7ea2f22364bc02183",
      "updated": "2026-11-12T07:00:16Z",
      "covers": {
        "area": "lisbon",
        "dist_nm": 250,
        "from": "2026-11-12T07:00:16Z",
        "to": "2026-11-12T07:00:16Z",
        "frames": 1,
        "airline_positions": 76,
        "other_positions": 10
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-11/22.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-11/22.json",
      "kind": "aircraft-snapshots",
      "bytes": 20504,
      "sha256": "971846bad4123da3fe4148ce842610df99dd69d60583fd368f842e84d388e89c",
      "updated": "2026-11-11T22:50:16Z",
      "covers": {
        "from": "2026-11-11T22:23:42Z",
        "to": "2026-11-11T22:50:15Z",
        "snapshots": 10,
        "ok": 10,
        "airline_positions": 37
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-11/23.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-11/23.json",
      "kind": "aircraft-snapshots",
      "bytes": 27407,
      "sha256": "fcc7500398217d0ee27353d1d7bbb5df9ec3cd760f9e52cecc13df01d16bd8e3",
      "updated": "2026-11-11T23:50:16Z",
      "covers": {
        "from": "2026-11-11T23:00:17Z",
        "to": "2026-11-11T23:50:16Z",
        "snapshots": 15,
        "ok": 15,
        "airline_positions": 41
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/00.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/00.json",
      "kind": "aircraft-snapshots",
      "bytes": 13460,
      "sha256": "621bef7a0dd6c600c335577e06ceb0a299bb9a4326deda1388fda79f01a1892b",
      "updated": "2026-11-12T00:50:15Z",
      "covers": {
        "from": "2026-11-12T00:00:16Z",
        "to": "2026-11-12T00:50:15Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 8
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/01.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/01.json",
      "kind": "aircraft-snapshots",
      "bytes": 12414,
      "sha256": "edcb3df614df088fc9e115bc9dc75050ba1692accb39beda913ea04210ef5ff1",
      "updated": "2026-11-12T01:50:16Z",
      "covers": {
        "from": "2026-11-12T01:00:16Z",
        "to": "2026-11-12T01:50:16Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 4
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/02.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/02.json",
      "kind": "aircraft-snapshots",
      "bytes": 13589,
      "sha256": "5be4a72d64f953b90c6993cb44a6225fed14db9f3c545e604523a6841adec1f6",
      "updated": "2026-11-12T02:50:16Z",
      "covers": {
        "from": "2026-11-12T02:00:16Z",
        "to": "2026-11-12T02:50:16Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 9
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/03.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/03.json",
      "kind": "aircraft-snapshots",
      "bytes": 12394,
      "sha256": "e4833a8ea9099660f778f38d1c414e05e82ee3d695d55753b7ce7ff26fee865b",
      "updated": "2026-11-12T03:50:16Z",
      "covers": {
        "from": "2026-11-12T03:00:16Z",
        "to": "2026-11-12T03:50:15Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 4
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/04.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/04.json",
      "kind": "aircraft-snapshots",
      "bytes": 13567,
      "sha256": "c48b1fb352b236bd21fda36d3e43466a08a03d193e6c18cf817132726bcbaa37",
      "updated": "2026-11-12T04:50:15Z",
      "covers": {
        "from": "2026-11-12T04:00:17Z",
        "to": "2026-11-12T04:50:15Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 9
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/05.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/05.json",
      "kind": "aircraft-snapshots",
      "bytes": 17964,
      "sha256": "a61ee56dfaf71cc89ef05dfb048201af9389d6d6f325d054ea2d2361b0555858",
      "updated": "2026-11-12T05:50:16Z",
      "covers": {
        "from": "2026-11-12T05:00:16Z",
        "to": "2026-11-12T05:50:15Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 27
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/06.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/06.json",
      "kind": "aircraft-snapshots",
      "bytes": 27209,
      "sha256": "b5d88805880b7a89aea7d4a9953b790d3e37f56da375317f278756f584ea0e0b",
      "updated": "2026-11-12T06:50:16Z",
      "covers": {
        "from": "2026-11-12T06:00:17Z",
        "to": "2026-11-12T06:50:15Z",
        "snapshots": 9,
        "ok": 9,
        "airline_positions": 65
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/snapshots/2026-11-12/07.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/snapshots/2026-11-12/07.json",
      "kind": "aircraft-snapshots",
      "bytes": 7370,
      "sha256": "c2c16c6f1662909363011f1267b64e96f1c1dd7823cc707c46288f4e5c2b1b87",
      "updated": "2026-11-12T07:00:16Z",
      "covers": {
        "from": "2026-11-12T07:00:16Z",
        "to": "2026-11-12T07:00:16Z",
        "snapshots": 2,
        "ok": 2,
        "airline_positions": 13
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-11/22.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-11/22.json",
      "kind": "model-summary",
      "bytes": 3139,
      "sha256": "29a95dd64213529200461e41b6d5f188293754fa6a6cfd6a7ea5cd908727c81b",
      "updated": "2026-11-11T23:44:30Z",
      "covers": {
        "hour": "2026-11-11T22:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-11/23.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-11/23.json",
      "kind": "model-summary",
      "bytes": 3103,
      "sha256": "5d8b4ab13e0222f8349f441fcd0d75e07682e86f9860cc74a51641d7cf5bba28",
      "updated": "2026-11-12T00:06:08Z",
      "covers": {
        "hour": "2026-11-11T23:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-12/01.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-12/01.json",
      "kind": "model-summary",
      "bytes": 3000,
      "sha256": "c91dad7cf8ba08833135129358bebd98610026ba33fe8d3e4935d5b7ed8c07d8",
      "updated": "2026-11-12T02:00:44Z",
      "covers": {
        "hour": "2026-11-12T01:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-12/02.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-12/02.json",
      "kind": "model-summary",
      "bytes": 2925,
      "sha256": "05eb7869a0d29d425fa8a48da99207e4418ada3a8db9cae67c48a0d4473e3df0",
      "updated": "2026-11-12T03:00:27Z",
      "covers": {
        "hour": "2026-11-12T02:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-12/03.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-12/03.json",
      "kind": "model-summary",
      "bytes": 2919,
      "sha256": "b5ec3872ebec8fb5faf036a2e8e20a05c293568ef6c0383b6687b58f20227cac",
      "updated": "2026-11-12T04:00:29Z",
      "covers": {
        "hour": "2026-11-12T03:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-12/04.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-12/04.json",
      "kind": "model-summary",
      "bytes": 2972,
      "sha256": "fc415c97abfea17c3f274b378addcfb0a22251ef433f294fe2a56182135f923a",
      "updated": "2026-11-12T05:00:35Z",
      "covers": {
        "hour": "2026-11-12T04:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/summaries/2026-11-12/05.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/summaries/2026-11-12/05.json",
      "kind": "model-summary",
      "bytes": 3078,
      "sha256": "1d61b926eac4ec7e83dda3f8662f87fd7a708b97d39cb150d23e951f4e37db68",
      "updated": "2026-11-12T06:00:49Z",
      "covers": {
        "hour": "2026-11-12T05:00:00Z",
        "passed": true
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-2026-11-10.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-2026-11-10.json",
      "kind": "wind-field",
      "bytes": 95287,
      "sha256": "4dc024f4fe24d32b1b002dcd6be73c18e34b42d040cf5fa5b2cd9330417c571e",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "lisbon",
        "from": "2026-11-10T12:00:00Z",
        "to": "2026-11-10T23:00:00Z",
        "hours": 12,
        "points": 396,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-2026-11-11.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-2026-11-11.json",
      "kind": "wind-field",
      "bytes": 173470,
      "sha256": "635485b37f5bb5371b0d1e248f88e0e83391d0814258f3c9690ffa6d11ce898c",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "lisbon",
        "from": "2026-11-11T00:00:00Z",
        "to": "2026-11-11T23:00:00Z",
        "hours": 24,
        "points": 396,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-2026-11-12.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-2026-11-12.json",
      "kind": "wind-field",
      "bytes": 101875,
      "sha256": "43ec033b605c9633f9f0185e983823fa3998207ef85434e755543c44c316da45",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "lisbon",
        "from": "2026-11-12T00:00:00Z",
        "to": "2026-11-12T12:00:00Z",
        "hours": 13,
        "points": 396,
        "forecast_from": "2026-11-12T07:00:00Z"
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-close-2026-11-10.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-close-2026-11-10.json",
      "kind": "wind-field",
      "bytes": 31807,
      "sha256": "72bb67977fd671ecd8a8d3fed04a5da7e6a5c9926b32f84281cb0e2562cbafaf",
      "updated": "2026-11-12T06:00:29Z",
      "covers": {
        "area": "lisbon-close",
        "from": "2026-11-10T12:00:00Z",
        "to": "2026-11-10T23:00:00Z",
        "hours": 12,
        "points": 121,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-close-2026-11-11.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-close-2026-11-11.json",
      "kind": "wind-field",
      "bytes": 56697,
      "sha256": "458cb00b20c5ba051aeedf095ca9a2934f17d979be86abce921a42029edeaeea",
      "updated": "2026-11-12T06:00:29Z",
      "covers": {
        "area": "lisbon-close",
        "from": "2026-11-11T00:00:00Z",
        "to": "2026-11-11T23:00:00Z",
        "hours": 24,
        "points": 121,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/lisbon-close-2026-11-12.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/lisbon-close-2026-11-12.json",
      "kind": "wind-field",
      "bytes": 33755,
      "sha256": "a899312ba363f07fd6b07980f3baca983de749d32467e85a417c02910ecd0bf2",
      "updated": "2026-11-12T06:00:29Z",
      "covers": {
        "area": "lisbon-close",
        "from": "2026-11-12T00:00:00Z",
        "to": "2026-11-12T12:00:00Z",
        "hours": 13,
        "points": 121,
        "forecast_from": "2026-11-12T07:00:00Z"
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-2026-11-10.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-2026-11-10.json",
      "kind": "wind-field",
      "bytes": 43064,
      "sha256": "f78c12c0f131ee178c3aee4b4d2cff38878c1d51d8e95d5b7218c1740b245b31",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "madeira",
        "from": "2026-11-10T12:00:00Z",
        "to": "2026-11-10T23:00:00Z",
        "hours": 12,
        "points": 168,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-2026-11-11.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-2026-11-11.json",
      "kind": "wind-field",
      "bytes": 78084,
      "sha256": "2089cd812489388abc5bc62bfa2bdeef23b2c0e940868cf382fa968f8eef7ef7",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "madeira",
        "from": "2026-11-11T00:00:00Z",
        "to": "2026-11-11T23:00:00Z",
        "hours": 24,
        "points": 168,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-2026-11-12.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-2026-11-12.json",
      "kind": "wind-field",
      "bytes": 45817,
      "sha256": "d5f065a090ed064bfbe321219ec7e3ad1242778c8930a5c3f640513b4037cefb",
      "updated": "2026-11-12T06:00:28Z",
      "covers": {
        "area": "madeira",
        "from": "2026-11-12T00:00:00Z",
        "to": "2026-11-12T12:00:00Z",
        "hours": 13,
        "points": 168,
        "forecast_from": "2026-11-12T07:00:00Z"
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-close-2026-11-10.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-close-2026-11-10.json",
      "kind": "wind-field",
      "bytes": 9020,
      "sha256": "bedd1cbabd61e19bfcb001dce3a0123414df8575a3e7e170ca785a68568b60b6",
      "updated": "2026-11-12T06:00:48Z",
      "covers": {
        "area": "madeira-close",
        "from": "2026-11-10T12:00:00Z",
        "to": "2026-11-10T23:00:00Z",
        "hours": 12,
        "points": 24,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-close-2026-11-11.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-close-2026-11-11.json",
      "kind": "wind-field",
      "bytes": 14829,
      "sha256": "e9c734d6152108cf9b27323b79033448c8ffaf4b846f6afc1bd2fb9647804860",
      "updated": "2026-11-12T06:00:48Z",
      "covers": {
        "area": "madeira-close",
        "from": "2026-11-11T00:00:00Z",
        "to": "2026-11-11T23:00:00Z",
        "hours": 24,
        "points": 24,
        "forecast_from": null
      }
    },
    {
      "path": "incidents/2026-11-10-storm-charles/data/flights/wind/madeira-close-2026-11-12.json",
      "api": "api/v1/2026-11-10-storm-charles/flights/wind/madeira-close-2026-11-12.json",
      "kind": "wind-field",
      "bytes": 9425,
      "sha256": "82f22095fb874dac0f0ae9ba5fc152e6c62a9e4cae28d677bbf342fd3f18f554",
      "updated": "2026-11-12T06:00:48Z",
      "covers": {
        "area": "madeira-close",
        "from": "2026-11-12T00:00:00Z",
        "to": "2026-11-12T12:00:00Z",
        "hours": 13,
        "points": 24,
        "forecast_from": "2026-11-12T07:00:00Z"
      }
    }
  ]
}
